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
			| 
											3 years ago
										 | '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; |