{"version":3,"file":"jss-plugin-default-unit.js","sources":["../src/defaultUnits.js","../src/index.js"],"sourcesContent":["// @flow\n\nimport {hasCSSTOMSupport} from 'jss'\n\nexport const px: string | Function = hasCSSTOMSupport && CSS ? CSS.px : 'px'\nexport const ms: string | Function = hasCSSTOMSupport && CSS ? CSS.ms : 'ms'\nexport const percent: string | Function = hasCSSTOMSupport && CSS ? CSS.percent : '%'\n\n/**\n * Generated jss-plugin-default-unit CSS property units\n *\n * @type object\n */\nexport default {\n // Animation properties\n 'animation-delay': ms,\n 'animation-duration': ms,\n\n // Background properties\n 'background-position': px,\n 'background-position-x': px,\n 'background-position-y': px,\n 'background-size': px,\n\n // Border Properties\n border: px,\n 'border-bottom': px,\n 'border-bottom-left-radius': px,\n 'border-bottom-right-radius': px,\n 'border-bottom-width': px,\n 'border-left': px,\n 'border-left-width': px,\n 'border-radius': px,\n 'border-right': px,\n 'border-right-width': px,\n 'border-top': px,\n 'border-top-left-radius': px,\n 'border-top-right-radius': px,\n 'border-top-width': px,\n 'border-width': px,\n 'border-block': px,\n 'border-block-end': px,\n 'border-block-end-width': px,\n 'border-block-start': px,\n 'border-block-start-width': px,\n 'border-block-width': px,\n 'border-inline': px,\n 'border-inline-end': px,\n 'border-inline-end-width': px,\n 'border-inline-start': px,\n 'border-inline-start-width': px,\n 'border-inline-width': px,\n 'border-start-start-radius': px,\n 'border-start-end-radius': px,\n 'border-end-start-radius': px,\n 'border-end-end-radius': px,\n\n // Margin properties\n margin: px,\n 'margin-bottom': px,\n 'margin-left': px,\n 'margin-right': px,\n 'margin-top': px,\n 'margin-block': px,\n 'margin-block-end': px,\n 'margin-block-start': px,\n 'margin-inline': px,\n 'margin-inline-end': px,\n 'margin-inline-start': px,\n\n // Padding properties\n padding: px,\n 'padding-bottom': px,\n 'padding-left': px,\n 'padding-right': px,\n 'padding-top': px,\n 'padding-block': px,\n 'padding-block-end': px,\n 'padding-block-start': px,\n 'padding-inline': px,\n 'padding-inline-end': px,\n 'padding-inline-start': px,\n\n // Mask properties\n 'mask-position-x': px,\n 'mask-position-y': px,\n 'mask-size': px,\n\n // Width and height properties\n height: px,\n width: px,\n 'min-height': px,\n 'max-height': px,\n 'min-width': px,\n 'max-width': px,\n\n // Position properties\n bottom: px,\n left: px,\n top: px,\n right: px,\n inset: px,\n 'inset-block': px,\n 'inset-block-end': px,\n 'inset-block-start': px,\n 'inset-inline': px,\n 'inset-inline-end': px,\n 'inset-inline-start': px,\n\n // Shadow properties\n 'box-shadow': px,\n 'text-shadow': px,\n\n // Column properties\n 'column-gap': px,\n 'column-rule': px,\n 'column-rule-width': px,\n 'column-width': px,\n\n // Font and text properties\n 'font-size': px,\n 'font-size-delta': px,\n 'letter-spacing': px,\n 'text-decoration-thickness': px,\n 'text-indent': px,\n 'text-stroke': px,\n 'text-stroke-width': px,\n 'word-spacing': px,\n\n // Motion properties\n motion: px,\n 'motion-offset': px,\n\n // Outline properties\n outline: px,\n 'outline-offset': px,\n 'outline-width': px,\n\n // Perspective properties\n perspective: px,\n 'perspective-origin-x': percent,\n 'perspective-origin-y': percent,\n\n // Transform properties\n 'transform-origin': percent,\n 'transform-origin-x': percent,\n 'transform-origin-y': percent,\n 'transform-origin-z': percent,\n\n // Transition properties\n 'transition-delay': ms,\n 'transition-duration': ms,\n\n // Alignment properties\n 'vertical-align': px,\n 'flex-basis': px,\n\n // Some random properties\n 'shape-margin': px,\n size: px,\n gap: px,\n\n // Grid properties\n grid: px,\n 'grid-gap': px,\n 'row-gap': px,\n 'grid-row-gap': px,\n 'grid-column-gap': px,\n 'grid-template-rows': px,\n 'grid-template-columns': px,\n 'grid-auto-rows': px,\n 'grid-auto-columns': px,\n\n // Not existing properties.\n // Used to avoid issues with jss-plugin-expand integration.\n 'box-shadow-x': px,\n 'box-shadow-y': px,\n 'box-shadow-blur': px,\n 'box-shadow-spread': px,\n 'font-line-height': px,\n 'text-shadow-x': px,\n 'text-shadow-y': px,\n 'text-shadow-blur': px\n}\n","// @flow\nimport type {Plugin} from 'jss'\nimport defaultUnits, {px} from './defaultUnits'\n\nexport type Options = {[key: string]: string | ((val: number) => string)}\n\n/**\n * Clones the object and adds a camel cased property version.\n */\nfunction addCamelCasedVersion(obj) {\n const regExp = /(-[a-z])/g\n const replace = str => str[1].toUpperCase()\n const newObj = {}\n for (const key in obj) {\n newObj[key] = obj[key]\n newObj[key.replace(regExp, replace)] = obj[key]\n }\n return newObj\n}\n\nconst units = addCamelCasedVersion(defaultUnits)\n\n/**\n * Recursive deep style passing function\n */\nfunction iterate(prop: string, value: any, options: Options) {\n if (value == null) return value\n\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n value[i] = iterate(prop, value[i], options)\n }\n } else if (typeof value === 'object') {\n if (prop === 'fallbacks') {\n for (const innerProp in value) {\n value[innerProp] = iterate(innerProp, value[innerProp], options)\n }\n } else {\n for (const innerProp in value) {\n value[innerProp] = iterate(`${prop}-${innerProp}`, value[innerProp], options)\n }\n }\n // eslint-disable-next-line no-restricted-globals\n } else if (typeof value === 'number' && isNaN(value) === false) {\n const unit = options[prop] || units[prop]\n\n // Add the unit if available, except for the special case of 0px.\n if (unit && !(value === 0 && unit === px)) {\n return typeof unit === 'function' ? unit(value).toString() : `${value}${unit}`\n }\n\n return value.toString()\n }\n\n return value\n}\n\n/**\n * Add unit to numeric values.\n */\nexport default function defaultUnit(options: Options = {}): Plugin {\n const camelCasedOptions = addCamelCasedVersion(options)\n\n function onProcessStyle(style, rule) {\n if (rule.type !== 'style') return style\n\n for (const prop in style) {\n style[prop] = iterate(prop, style[prop], camelCasedOptions)\n }\n\n return style\n }\n\n function onChangeValue(value, prop) {\n return iterate(prop, value, camelCasedOptions)\n }\n\n return {onProcessStyle, onChangeValue}\n}\n"],"names":["px","hasCSSTOMSupport","CSS","ms","percent","border","margin","padding","height","width","bottom","left","top","right","inset","motion","outline","perspective","size","gap","grid","addCamelCasedVersion","obj","regExp","replace","str","toUpperCase","newObj","key","units","defaultUnits","iterate","prop","value","options","Array","isArray","i","length","innerProp","isNaN","unit","toString","defaultUnit","camelCasedOptions","onProcessStyle","style","rule","type","onChangeValue"],"mappings":"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"}