You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							236 lines
						
					
					
						
							6.4 KiB
						
					
					
				
			
		
		
	
	
							236 lines
						
					
					
						
							6.4 KiB
						
					
					
				| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| var hashString = require('@emotion/hash');
 | |
| var unitless = require('@emotion/unitless');
 | |
| var memoize = require('@emotion/memoize');
 | |
| 
 | |
| function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
 | |
| 
 | |
| var hashString__default = /*#__PURE__*/_interopDefault(hashString);
 | |
| var unitless__default = /*#__PURE__*/_interopDefault(unitless);
 | |
| var memoize__default = /*#__PURE__*/_interopDefault(memoize);
 | |
| 
 | |
| var hyphenateRegex = /[A-Z]|^ms/g;
 | |
| var animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;
 | |
| 
 | |
| var isCustomProperty = function isCustomProperty(property) {
 | |
|   return property.charCodeAt(1) === 45;
 | |
| };
 | |
| 
 | |
| var isProcessableValue = function isProcessableValue(value) {
 | |
|   return value != null && typeof value !== 'boolean';
 | |
| };
 | |
| 
 | |
| var processStyleName = /* #__PURE__ */memoize__default['default'](function (styleName) {
 | |
|   return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();
 | |
| });
 | |
| 
 | |
| var processStyleValue = function processStyleValue(key, value) {
 | |
|   switch (key) {
 | |
|     case 'animation':
 | |
|     case 'animationName':
 | |
|       {
 | |
|         if (typeof value === 'string') {
 | |
|           return value.replace(animationRegex, function (match, p1, p2) {
 | |
|             cursor = {
 | |
|               name: p1,
 | |
|               styles: p2,
 | |
|               next: cursor
 | |
|             };
 | |
|             return p1;
 | |
|           });
 | |
|         }
 | |
|       }
 | |
|   }
 | |
| 
 | |
|   if (unitless__default['default'][key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {
 | |
|     return value + 'px';
 | |
|   }
 | |
| 
 | |
|   return value;
 | |
| };
 | |
| 
 | |
| var noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';
 | |
| 
 | |
| function handleInterpolation(mergedProps, registered, interpolation) {
 | |
|   if (interpolation == null) {
 | |
|     return '';
 | |
|   }
 | |
| 
 | |
|   if (interpolation.__emotion_styles !== undefined) {
 | |
| 
 | |
|     return interpolation;
 | |
|   }
 | |
| 
 | |
|   switch (typeof interpolation) {
 | |
|     case 'boolean':
 | |
|       {
 | |
|         return '';
 | |
|       }
 | |
| 
 | |
|     case 'object':
 | |
|       {
 | |
|         if (interpolation.anim === 1) {
 | |
|           cursor = {
 | |
|             name: interpolation.name,
 | |
|             styles: interpolation.styles,
 | |
|             next: cursor
 | |
|           };
 | |
|           return interpolation.name;
 | |
|         }
 | |
| 
 | |
|         if (interpolation.styles !== undefined) {
 | |
|           var next = interpolation.next;
 | |
| 
 | |
|           if (next !== undefined) {
 | |
|             // not the most efficient thing ever but this is a pretty rare case
 | |
|             // and there will be very few iterations of this generally
 | |
|             while (next !== undefined) {
 | |
|               cursor = {
 | |
|                 name: next.name,
 | |
|                 styles: next.styles,
 | |
|                 next: cursor
 | |
|               };
 | |
|               next = next.next;
 | |
|             }
 | |
|           }
 | |
| 
 | |
|           var styles = interpolation.styles + ";";
 | |
| 
 | |
|           return styles;
 | |
|         }
 | |
| 
 | |
|         return createStringFromObject(mergedProps, registered, interpolation);
 | |
|       }
 | |
| 
 | |
|     case 'function':
 | |
|       {
 | |
|         if (mergedProps !== undefined) {
 | |
|           var previousCursor = cursor;
 | |
|           var result = interpolation(mergedProps);
 | |
|           cursor = previousCursor;
 | |
|           return handleInterpolation(mergedProps, registered, result);
 | |
|         }
 | |
| 
 | |
|         break;
 | |
|       }
 | |
|   } // finalize string values (regular strings and functions interpolated into css calls)
 | |
| 
 | |
| 
 | |
|   if (registered == null) {
 | |
|     return interpolation;
 | |
|   }
 | |
| 
 | |
|   var cached = registered[interpolation];
 | |
|   return cached !== undefined ? cached : interpolation;
 | |
| }
 | |
| 
 | |
| function createStringFromObject(mergedProps, registered, obj) {
 | |
|   var string = '';
 | |
| 
 | |
|   if (Array.isArray(obj)) {
 | |
|     for (var i = 0; i < obj.length; i++) {
 | |
|       string += handleInterpolation(mergedProps, registered, obj[i]) + ";";
 | |
|     }
 | |
|   } else {
 | |
|     for (var _key in obj) {
 | |
|       var value = obj[_key];
 | |
| 
 | |
|       if (typeof value !== 'object') {
 | |
|         if (registered != null && registered[value] !== undefined) {
 | |
|           string += _key + "{" + registered[value] + "}";
 | |
|         } else if (isProcessableValue(value)) {
 | |
|           string += processStyleName(_key) + ":" + processStyleValue(_key, value) + ";";
 | |
|         }
 | |
|       } else {
 | |
|         if (_key === 'NO_COMPONENT_SELECTOR' &&         "production" !== 'production') {
 | |
|           throw new Error(noComponentSelectorMessage);
 | |
|         }
 | |
| 
 | |
|         if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {
 | |
|           for (var _i = 0; _i < value.length; _i++) {
 | |
|             if (isProcessableValue(value[_i])) {
 | |
|               string += processStyleName(_key) + ":" + processStyleValue(_key, value[_i]) + ";";
 | |
|             }
 | |
|           }
 | |
|         } else {
 | |
|           var interpolated = handleInterpolation(mergedProps, registered, value);
 | |
| 
 | |
|           switch (_key) {
 | |
|             case 'animation':
 | |
|             case 'animationName':
 | |
|               {
 | |
|                 string += processStyleName(_key) + ":" + interpolated + ";";
 | |
|                 break;
 | |
|               }
 | |
| 
 | |
|             default:
 | |
|               {
 | |
| 
 | |
|                 string += _key + "{" + interpolated + "}";
 | |
|               }
 | |
|           }
 | |
|         }
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return string;
 | |
| }
 | |
| 
 | |
| var labelPattern = /label:\s*([^\s;\n{]+)\s*(;|$)/g;
 | |
| // keyframes are stored on the SerializedStyles object as a linked list
 | |
| 
 | |
| 
 | |
| var cursor;
 | |
| var serializeStyles = function serializeStyles(args, registered, mergedProps) {
 | |
|   if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {
 | |
|     return args[0];
 | |
|   }
 | |
| 
 | |
|   var stringMode = true;
 | |
|   var styles = '';
 | |
|   cursor = undefined;
 | |
|   var strings = args[0];
 | |
| 
 | |
|   if (strings == null || strings.raw === undefined) {
 | |
|     stringMode = false;
 | |
|     styles += handleInterpolation(mergedProps, registered, strings);
 | |
|   } else {
 | |
| 
 | |
|     styles += strings[0];
 | |
|   } // we start at 1 since we've already handled the first arg
 | |
| 
 | |
| 
 | |
|   for (var i = 1; i < args.length; i++) {
 | |
|     styles += handleInterpolation(mergedProps, registered, args[i]);
 | |
| 
 | |
|     if (stringMode) {
 | |
| 
 | |
|       styles += strings[i];
 | |
|     }
 | |
|   }
 | |
| 
 | |
| 
 | |
|   labelPattern.lastIndex = 0;
 | |
|   var identifierName = '';
 | |
|   var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5
 | |
| 
 | |
|   while ((match = labelPattern.exec(styles)) !== null) {
 | |
|     identifierName += '-' + // $FlowFixMe we know it's not null
 | |
|     match[1];
 | |
|   }
 | |
| 
 | |
|   var name = hashString__default['default'](styles) + identifierName;
 | |
| 
 | |
|   return {
 | |
|     name: name,
 | |
|     styles: styles,
 | |
|     next: cursor
 | |
|   };
 | |
| };
 | |
| 
 | |
| exports.serializeStyles = serializeStyles;
 |