{"version":3,"file":"index.cjs","sources":["../src/lib/clone-rule.js","../src/lib/transform-border.js","../src/lib/transform-border-radius.js","../src/lib/reduce-values.js","../src/lib/transform-directional-shorthands.js","../src/lib/transform-float.js","../src/lib/transform-inset.js","../src/lib/transform-resize.js","../src/lib/match-side.js","../src/lib/match-inset-prefix.js","../src/lib/clone-decl.js","../src/lib/transform-side.js","../src/lib/match-size.js","../src/lib/transform-size.js","../src/lib/transform-text-align.js","../src/lib/split.js","../src/lib/transform-transition.js","../src/lib/has-keyframes-atrule-ancestor.js","../src/index.js"],"sourcesContent":["import postcss from 'postcss';\n\nexport default (decl, dir) => {\n\tconst rule = Object(decl.parent).type === 'rule' ? decl.parent.cloneBefore({\n\t\traws: {},\n\t}).removeAll() : postcss.rule({ selector: '&' });\n\n\trule.assign({'selectors': rule.selectors.map(selector => `${selector}:dir(${dir})`)});\n\n\treturn rule;\n};\n","import cloneRule from './clone-rule';\n\nconst matchLogicalBorderSide = /^border-(block|block-start|block-end|inline|inline-start|inline-end)(-(width|style|color))?$/i;\n\nexport default {\n\t// border-block\n\t'border-block': (decl, values, dir, preserve) => {\n\t\tdecl.cloneBefore({\n\t\t\tprop: `border-top${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\tvalue: values[0],\n\t\t});\n\t\tdecl.cloneBefore({\n\t\t\tprop: `border-bottom${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\tvalue: values[1] || values[0],\n\t\t});\n\t\tclean(decl, preserve);\n\t},\n\n\t// border-block-start\n\t'border-block-start': (decl, values, dir, preserve) => {\n\t\tdecl.cloneBefore({\n\t\t\tprop: `border-top${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t});\n\t\tclean(decl, preserve);\n\t},\n\n\t// border-block-end\n\t'border-block-end': (decl, values, dir, preserve) => {\n\t\tdecl.cloneBefore({\n\t\t\tprop: `border-bottom${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t});\n\t\tclean(decl, preserve);\n\t},\n\n\t// border-inline\n\t'border-inline': (decl, values, dir, preserve) => {\n\t\tconst ltrDecls = () => {\n\t\t\treturn [\n\t\t\t\tdecl.cloneBefore({\n\t\t\t\t\tprop: `border-left${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t\t\tvalue: values[0],\n\t\t\t\t}),\n\t\t\t\tdecl.cloneBefore({\n\t\t\t\t\tprop: `border-right${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t\t\tvalue: values[1] || values[0],\n\t\t\t\t}),\n\t\t\t];\n\t\t};\n\n\t\tconst rtlDecls = () => {\n\t\t\treturn [\n\t\t\t\tdecl.clone({\n\t\t\t\t\tprop: `border-right${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t\t\tvalue: values[0],\n\t\t\t\t}),\n\t\t\t\tdecl.clone({\n\t\t\t\t\tprop: `border-left${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t\t\tvalue: values[1] || values[0],\n\t\t\t\t}),\n\t\t\t];\n\t\t};\n\n\t\tconst isLTR = 1 === values.length || 2 === values.length && values[0] === values[1];\n\t\tif (isLTR || dir === 'ltr') {\n\t\t\tltrDecls();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trtlDecls();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(ltrDecls());\n\t\t\tcloneRule(decl, 'rtl').append(rtlDecls());\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t},\n\n\t// border-inline-start\n\t'border-inline-start': (decl, values, dir, preserve) => {\n\t\tconst ltrDecl = () => {\n\t\t\treturn decl.cloneBefore({\n\t\t\t\tprop: `border-left${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t});\n\t\t};\n\n\t\tconst rtlDecl = () => {\n\t\t\treturn decl.cloneBefore({\n\t\t\t\tprop: `border-right${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t});\n\t\t};\n\n\t\tif (dir === 'ltr') {\n\t\t\tltrDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trtlDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(ltrDecl());\n\t\t\tcloneRule(decl, 'rtl').append(rtlDecl());\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t},\n\n\t// border-inline-end\n\t'border-inline-end': (decl, values, dir, preserve) => {\n\t\tconst ltrDecl = () => {\n\t\t\treturn decl.cloneBefore({\n\t\t\t\tprop: `border-right${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t});\n\t\t};\n\n\t\tconst rtlDecl = () => {\n\t\t\treturn decl.cloneBefore({\n\t\t\t\tprop: `border-left${decl.prop.replace(matchLogicalBorderSide, '$2')}`,\n\t\t\t});\n\t\t};\n\n\t\tif (dir === 'ltr') {\n\t\t\tltrDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trtlDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(ltrDecl());\n\t\t\tcloneRule(decl, 'rtl').append(rtlDecl());\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t},\n};\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","import cloneRule from './clone-rule';\n\nconst logicalRadii = /^(border-)(end-end|end-start|start-end|start-start)(-radius)$/i;\nconst ltrRadii = { 'end-end': 'bottom-right', 'end-start': 'bottom-left', 'start-end': 'top-right', 'start-start': 'top-left' };\nconst rtlRadii = { 'end-end': 'bottom-left', 'end-start': 'bottom-right', 'start-end': 'top-left', 'start-start': 'top-right' };\n\nexport default (decl, values, dir, preserve) => {\n\tif (dir === 'ltr') {\n\t\tlDecl(decl);\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n\n\tif (dir === 'rtl') {\n\t\trDecl(decl);\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n\n\tcloneRule(decl, 'ltr').append(lDecl(decl));\n\tcloneRule(decl, 'rtl').append(rDecl(decl));\n\tclean(decl, preserve);\n};\n\nfunction lDecl(decl) {\n\treturn decl.cloneBefore({\n\t\tprop: decl.prop.replace(logicalRadii, ($, prefix, direction, suffix) => `${prefix}${ltrRadii[direction]}${suffix}`),\n\t});\n}\n\nfunction rDecl(decl) {\n\treturn decl.cloneBefore({\n\t\tprop: decl.prop.replace(logicalRadii, ($, prefix, direction, suffix) => `${prefix}${rtlRadii[direction]}${suffix}`),\n\t});\n}\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","export default values => {\n\tconst reducedValues = values.slice();\n\n\t// reduce [A, B, C, B] to [A, B, C]\n\tif (reducedValues.length === 4 && reducedValues[3] === reducedValues[1]) {\n\t\treducedValues.pop();\n\t}\n\n\t// reduce [A, B, A] to [A, B]\n\tif (reducedValues.length === 3 && reducedValues[2] === reducedValues[0]) {\n\t\treducedValues.pop();\n\t}\n\n\t// reduce [A, A] to [A]\n\tif (reducedValues.length === 2 && reducedValues[1] === reducedValues[0]) {\n\t\treducedValues.pop();\n\t}\n\n\treturn reducedValues;\n};\n","import cloneRule from './clone-rule';\nimport reduceValues from './reduce-values';\n\nexport default (decl, values, dir, preserve) => {\n\tif ('logical' !== values[0]) {\n\t\treturn null;\n\t}\n\n\t// get logical directions as all, inline, block-end, then inline-end\n\tconst [, all, inline, blockEnd, inlineEnd ] = values;\n\n\t// get left-to-right relative directions from logical directions as:\n\t// → top from all\n\t// → right from inline-end, inline, or all\n\t// → bottom from block-end, block, or all\n\t// → left from inline, or all\n\tconst ltrValues = reduceValues([\n\t\tall,\n\t\tinlineEnd || inline || all,\n\t\tblockEnd || all,\n\t\tinline || all,\n\t]);\n\n\tconst ltrDecl = () => {\n\t\treturn decl.cloneBefore({\n\t\t\tvalue: ltrValues.join(' '),\n\t\t});\n\t};\n\n\t// return the ltr values if the values are flow agnostic (where no second inline value was needed)\n\tconst isFlowAgnostic = ltrValues.length < 4;\n\n\tif (isFlowAgnostic || dir === 'ltr') {\n\t\tltrDecl();\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n\n\t// get right-to-left relative directions from logical directions as:\n\t// → top from all\n\t// → right from inline, or all\n\t// → bottom from block-end, block, or all\n\t// → left from inline-end, inline, or all\n\tconst rtlValues = reduceValues([\n\t\tall,\n\t\tinline || all,\n\t\tblockEnd || all,\n\t\tinlineEnd || inline || all,\n\t]);\n\n\tconst rtlDecl = () => {\n\t\treturn decl.cloneBefore({\n\t\t\tvalue: rtlValues.join(' '),\n\t\t});\n\t};\n\n\tif (dir === 'rtl') {\n\t\trtlDecl();\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n\n\tcloneRule(decl, 'ltr').append(ltrDecl());\n\tcloneRule(decl, 'rtl').append(rtlDecl());\n\tclean(decl, preserve);\n};\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","import cloneRule from './clone-rule';\n\nexport default (decl, values, dir, preserve) => {\n\tif (/^inline-start$/i.test(decl.value)) {\n\t\tif (dir === 'ltr') {\n\t\t\tlDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(lDecl(decl));\n\t\t\tcloneRule(decl, 'rtl').append(rDecl(decl));\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t} if (/^inline-end$/i.test(decl.value)) {\n\t\tif (dir === 'ltr') {\n\t\t\trDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\tlDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(rDecl(decl));\n\t\t\tcloneRule(decl, 'rtl').append(lDecl(decl));\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t}\n};\n\nfunction lDecl(decl) {\n\treturn decl.cloneBefore({ value: 'left' });\n}\n\nfunction rDecl(decl) {\n\treturn decl.cloneBefore({ value: 'right' });\n}\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","import cloneRule from './clone-rule';\n\nexport default (decl, values, dir, preserve) => {\n\tif ('logical' !== values[0]) {\n\t\tdecl.cloneBefore({ prop: 'top', value: values[0] });\n\t\tdecl.cloneBefore({ prop: 'right', value: values[1] || values[0] });\n\t\tdecl.cloneBefore({ prop: 'bottom', value: values[2] || values[0] });\n\t\tdecl.cloneBefore({ prop: 'left', value: values[3] || values[1] || values[0] });\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n\n\tconst isLTR = !values[4] || values[4] === values[2];\n\n\tif (isLTR || dir === 'ltr') {\n\t\tlDecl(decl, values);\n\t\tclean(decl, preserve);\n\t\treturn;\n\t} else if (dir === 'rtl') {\n\t\trDecl(decl, values);\n\t\tclean(decl, preserve);\n\t\treturn;\n\t} else {\n\t\tcloneRule(decl, 'ltr').append(lDecl(decl, values));\n\t\tcloneRule(decl, 'rtl').append(rDecl(decl, values));\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n};\n\nfunction lDecl(decl, values) {\n\treturn [\n\t\tdecl.cloneBefore({ prop: 'top', value: values[1] }),\n\t\tdecl.cloneBefore({ prop: 'left', value: values[2] || values[1] }),\n\t\tdecl.cloneBefore({ prop: 'bottom', value: values[3] || values[1] }),\n\t\tdecl.cloneBefore({ prop: 'right', value: values[4] || values[2] || values[1] }),\n\t];\n}\n\nfunction rDecl(decl, values) {\n\treturn [\n\t\tdecl.cloneBefore({ prop: 'top', value: values[1] }),\n\t\tdecl.cloneBefore({ prop: 'right', value: values[2] || values[1] }),\n\t\tdecl.cloneBefore({ prop: 'bottom', value: values[3] || values[1] }),\n\t\tdecl.cloneBefore({ prop: 'left', value: values[4] || values[2] || values[1] }),\n\t];\n}\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","export default (decl, values, dir, preserve) => {\n\tif (/^block$/i.test(decl.value)) {\n\t\tdecl.cloneBefore({ value: 'vertical' });\n\t\tclean(decl, preserve);\n\t\treturn;\n\t} else if (/^inline$/i.test(decl.value)) {\n\t\tdecl.cloneBefore({ value: 'horizontal' });\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n};\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","export default /^(inset|margin|padding)(?:-(block|block-start|block-end|inline|inline-start|inline-end|start|end))$/i;\n","export default /^inset-/i;\n","import matchSide from './match-side';\nimport matchInsetPrefix from './match-inset-prefix';\n\nexport default (decl, suffix, value) => decl.cloneBefore({\n\tprop: `${decl.prop.replace(matchSide, '$1')}${suffix}`.replace(matchInsetPrefix, ''),\n\tvalue,\n});\n","import cloneDeclBefore from './clone-decl';\nimport cloneRule from './clone-rule';\nimport matchSide from './match-side';\n\nimport matchInsetPrefix from './match-inset-prefix';\n\nexport default {\n\t// inset-block, margin-block, padding-block\n\t'block': (decl, values, dir, preserve) => {\n\t\tcloneDeclBefore(decl, '-top', values[0]);\n\t\tcloneDeclBefore(decl, '-bottom', values[1] || values[0]);\n\t\tclean(decl, preserve);\n\t},\n\n\t// inset-block-start, margin-block-start, padding-block-start\n\t'block-start': (decl, values, dir, preserve) => {\n\t\tdecl.cloneBefore({ prop: decl.prop.replace(matchSide, '$1-top').replace(matchInsetPrefix, '') });\n\t\tclean(decl, preserve);\n\t},\n\n\t// inset-block-end, margin-block-end, padding-block-end\n\t'block-end': (decl, values, dir, preserve) => {\n\t\tdecl.cloneBefore({ prop: decl.prop.replace(matchSide, '$1-bottom').replace(matchInsetPrefix, '') });\n\t\tclean(decl, preserve);\n\t},\n\n\t// inset-inline, margin-inline, padding-inline\n\t'inline': (decl, values, dir, preserve) => {\n\t\tconst ltrDecls = () => {\n\t\t\treturn [\n\t\t\t\tcloneDeclBefore(decl, '-left', values[0]),\n\t\t\t\tcloneDeclBefore(decl, '-right', values[1] || values[0]),\n\t\t\t];\n\t\t};\n\n\t\tconst rtlDecls = () => {\n\t\t\treturn [\n\t\t\t\tcloneDeclBefore(decl, '-right', values[0]),\n\t\t\t\tcloneDeclBefore(decl, '-left', values[1] || values[0]),\n\t\t\t];\n\t\t};\n\n\t\tconst isLTR = 1 === values.length || 2 === values.length && values[0] === values[1];\n\t\tif (isLTR || dir === 'ltr') {\n\t\t\tltrDecls();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trtlDecls();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(ltrDecls());\n\t\t\tcloneRule(decl, 'rtl').append(rtlDecls());\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t},\n\n\t// inset-inline-start, margin-inline-start, padding-inline-start\n\t'inline-start': (decl, values, dir, preserve) => {\n\t\tconst ltrDecl = () => {\n\t\t\treturn cloneDeclBefore(decl, '-left', decl.value);\n\t\t};\n\t\tconst rtlDecl = () => {\n\t\t\treturn cloneDeclBefore(decl, '-right', decl.value);\n\t\t};\n\n\t\tif (dir === 'ltr') {\n\t\t\tltrDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trtlDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(ltrDecl());\n\t\t\tcloneRule(decl, 'rtl').append(rtlDecl());\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t},\n\n\t// inset-inline-end, margin-inline-end, padding-inline-end\n\t'inline-end': (decl, values, dir, preserve) => {\n\t\tconst ltrDecl = () => {\n\t\t\treturn cloneDeclBefore(decl, '-right', decl.value);\n\t\t};\n\t\tconst rtlDecl = () => {\n\t\t\treturn cloneDeclBefore(decl, '-left', decl.value);\n\t\t};\n\n\t\tif (dir === 'ltr') {\n\t\t\tltrDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trtlDecl();\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(ltrDecl());\n\t\t\tcloneRule(decl, 'rtl').append(rtlDecl());\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t},\n};\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","export default /^(min-|max-)?(block|inline)-(size)$/i;\n","import matchSize from './match-size';\n\nexport default (decl, values, dir, preserve) => {\n\tdecl.cloneBefore({\n\t\tprop: decl.prop.replace(\n\t\t\tmatchSize,\n\t\t\t($0, minmax, flow) => `${minmax || ''}${'block' === flow ? 'height' : 'width'}`,\n\t\t),\n\t});\n\n\tif (!preserve) {\n\t\tdecl.remove();\n\t}\n};\n","import cloneRule from './clone-rule';\n\nexport default (decl, values, dir, preserve) => {\n\tif (/^start$/i.test(decl.value)) {\n\t\tif (dir === 'ltr') {\n\t\t\tlDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\trDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(lDecl(decl));\n\t\t\tcloneRule(decl, 'rtl').append(rDecl(decl));\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t} else if (/^end$/i.test(decl.value)) {\n\t\tif (dir === 'ltr') {\n\t\t\trDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else if (dir === 'rtl') {\n\t\t\tlDecl(decl);\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t} else {\n\t\t\tcloneRule(decl, 'ltr').append(rDecl(decl));\n\t\t\tcloneRule(decl, 'rtl').append(lDecl(decl));\n\t\t\tclean(decl, preserve);\n\t\t\treturn;\n\t\t}\n\t}\n};\n\nfunction lDecl(decl) {\n\treturn decl.cloneBefore({ value: 'left' });\n}\n\nfunction rDecl(decl) {\n\treturn decl.cloneBefore({ value: 'right' });\n}\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n","export function splitByComma(string, isTrimmed) {\n\treturn splitByRegExp(string, /^,$/, isTrimmed);\n}\n\nexport function splitBySpace(string, isTrimmed) {\n\treturn splitByRegExp(string, /^\\s$/, isTrimmed);\n}\n\nexport function splitBySlash(string, isTrimmed) {\n\treturn splitByRegExp(string, /^\\/$/, isTrimmed);\n}\n\nfunction splitByRegExp(string, re, isTrimmed) {\n\tconst array = [];\n\tlet buffer = '';\n\tlet split = false;\n\tlet func = 0;\n\tlet i = -1;\n\n\twhile (++i < string.length) {\n\t\tconst char = string[i];\n\n\t\tif (char === '(') {\n\t\t\tfunc += 1;\n\t\t} else if (char === ')') {\n\t\t\tif (func > 0) {\n\t\t\t\tfunc -= 1;\n\t\t\t}\n\t\t} else if (func === 0) {\n\t\t\tif (re.test(char)) {\n\t\t\t\tsplit = true;\n\t\t\t}\n\t\t}\n\n\t\tif (split) {\n\t\t\tif (!isTrimmed || buffer.trim()) {\n\t\t\t\tarray.push(isTrimmed ? buffer.trim() : buffer);\n\t\t\t}\n\n\t\t\tif (!isTrimmed) {\n\t\t\t\tarray.push(char);\n\t\t\t}\n\n\t\t\tbuffer = '';\n\t\t\tsplit = false;\n\t\t} else {\n\t\t\tbuffer += char;\n\t\t}\n\t}\n\n\tif (buffer !== '') {\n\t\tarray.push(isTrimmed ? buffer.trim() : buffer);\n\t}\n\n\treturn array;\n}\n","import cloneRule from './clone-rule';\nimport { splitByComma, splitBySpace } from './split';\n\nexport default (decl, notValues, dir, preserve) => {\n\tconst ltrValues = [];\n\tconst rtlValues = [];\n\n\tsplitByComma(decl.value).forEach(value => {\n\t\tlet hasBeenSplit = false;\n\n\t\tsplitBySpace(value).forEach((word, index, words) => {\n\t\t\tif (word in valueMap) {\n\t\t\t\thasBeenSplit = true;\n\n\t\t\t\tvalueMap[word].ltr.forEach(replacement => {\n\t\t\t\t\tconst clone = words.slice();\n\n\t\t\t\t\tclone.splice(index, 1, replacement);\n\n\t\t\t\t\tif (ltrValues.length && !/^,$/.test(ltrValues[ltrValues.length - 1])) {\n\t\t\t\t\t\tltrValues.push(',');\n\t\t\t\t\t}\n\n\t\t\t\t\tltrValues.push(clone.join(''));\n\t\t\t\t});\n\n\t\t\t\tvalueMap[word].rtl.forEach(replacement => {\n\t\t\t\t\tconst clone = words.slice();\n\n\t\t\t\t\tclone.splice(index, 1, replacement);\n\n\t\t\t\t\tif (rtlValues.length && !/^,$/.test(rtlValues[rtlValues.length - 1])) {\n\t\t\t\t\t\trtlValues.push(',');\n\t\t\t\t\t}\n\n\t\t\t\t\trtlValues.push(clone.join(''));\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tif (!hasBeenSplit) {\n\t\t\tltrValues.push(value);\n\t\t\trtlValues.push(value);\n\t\t}\n\t});\n\n\tif (ltrValues.length && dir === 'ltr') {\n\t\tif (preserve) {\n\t\t\tdecl.cloneBefore({});\n\t\t}\n\t\tdecl.assign({ value: ltrValues.join('') });\n\t\treturn;\n\t} else if (rtlValues.length && dir === 'rtl') {\n\t\tif (preserve) {\n\t\t\tdecl.cloneBefore({});\n\t\t}\n\t\tdecl.assign({ value: rtlValues.join('') });\n\t\treturn;\n\t} else if (ltrValues.join('') !== rtlValues.join('')) {\n\n\t\tcloneRule(decl, 'ltr').append(decl.cloneBefore({ value: ltrValues.join('') }));\n\t\tcloneRule(decl, 'rtl').append(decl.cloneBefore({ value: rtlValues.join('') }));\n\t\tclean(decl, preserve);\n\t\treturn;\n\t}\n};\n\nfunction clean(decl, preserve) {\n\tif (!preserve) decl.remove();\n}\n\nconst valueMap = {\n\t// Logical Height and Logical Width\n\t'block-size': { ltr: ['height'], rtl: ['height'] },\n\t'inline-size': { ltr: ['width'], rtl: ['width'] },\n\n\t// Flow-relative Margins\n\t'margin-block-end': { ltr: ['margin-bottom'], rtl: ['margin-bottom'] },\n\t'margin-block-start': { ltr: ['margin-top'], rtl: ['margin-top'] },\n\t'margin-block': { ltr: ['margin-top', 'margin-bottom'], rtl: ['margin-top', 'margin-bottom'] },\n\t'margin-inline-end': { ltr: ['margin-right'], rtl: ['margin-left'] },\n\t'margin-inline-start': { ltr: ['margin-left'], rtl: ['margin-right'] },\n\t'margin-inline': { ltr: ['margin-left', 'margin-right'], rtl: ['margin-left', 'margin-right'] },\n\n\t// Flow-relative Offsets\n\t'inset-block-end': { ltr: ['bottom'], rtl: ['bottom'] },\n\t'inset-block-start': { ltr: ['top'], rtl: ['top'] },\n\t'inset-block': { ltr: ['top', 'bottom'], rtl: ['top', 'bottom'] },\n\t'inset-inline-end': { ltr: ['right'], rtl: ['left'] },\n\t'inset-inline-start': { ltr: ['left'], rtl: ['right'] },\n\t'inset-inline': { ltr: ['left', 'right'], rtl: ['left', 'right'] },\n\t'inset': { ltr: ['top', 'right', 'bottom', 'left'], rtl: ['top', 'right', 'bottom', 'left'] },\n\n\t// Flow-relative Padding\n\t'padding-block-end': { ltr: ['padding-bottom'], rtl: ['padding-bottom'] },\n\t'padding-block-start': { ltr: ['padding-top'], rtl: ['padding-top'] },\n\t'padding-block': { ltr: ['padding-top', 'padding-bottom'], rtl: ['padding-top', 'padding-bottom'] },\n\t'padding-inline-end': { ltr: ['padding-right'], rtl: ['padding-left'] },\n\t'padding-inline-start': { ltr: ['padding-left'], rtl: ['padding-right'] },\n\t'padding-inline': { ltr: ['padding-left', 'padding-right'], rtl: ['padding-left', 'padding-right'] },\n\n\t// Flow-relative Borders\n\t'border-block-color': { ltr: ['border-top-color', 'border-bottom-color'], rtl: ['border-top-color', 'border-bottom-color'] },\n\t'border-block-end-color': { ltr: ['border-bottom-color'], rtl: ['border-bottom-color'] },\n\t'border-block-end-style': { ltr: ['border-bottom-style'], rtl: ['border-bottom-style'] },\n\t'border-block-end-width': { ltr: ['border-bottom-width'], rtl: ['border-bottom-width'] },\n\t'border-block-end': { ltr: ['border-bottom'], rtl: ['border-bottom'] },\n\t'border-block-start-color': { ltr: ['border-top-color'], rtl: ['border-top-color'] },\n\t'border-block-start-style': { ltr: ['border-top-style'], rtl: ['border-top-style'] },\n\t'border-block-start-width': { ltr: ['border-top-width'], rtl: ['border-top-width'] },\n\t'border-block-start': { ltr: ['border-top'], rtl: ['border-top'] },\n\t'border-block-style': { ltr: ['border-top-style', 'border-bottom-style'], rtl: ['border-top-style', 'border-bottom-style'] },\n\t'border-block-width': { ltr: ['border-top-width', 'border-bottom-width'], rtl: ['border-top-width', 'border-bottom-width'] },\n\t'border-block': { ltr: ['border-top', 'border-bottom'], rtl: ['border-top', 'border-bottom'] },\n\t'border-inline-color': { ltr: ['border-left-color', 'border-right-color'], rtl: ['border-left-color', 'border-right-color'] },\n\t'border-inline-end-color': { ltr: ['border-right-color'], rtl: ['border-left-color'] },\n\t'border-inline-end-style': { ltr: ['border-right-style'], rtl: ['border-left-style'] },\n\t'border-inline-end-width': { ltr: ['border-right-width'], rtl: ['border-left-width'] },\n\t'border-inline-end': { ltr: ['border-right'], rtl: ['border-left'] },\n\t'border-inline-start-color': { ltr: ['border-left-color'], rtl: ['border-right-color'] },\n\t'border-inline-start-style': { ltr: ['border-left-style'], rtl: ['border-right-style'] },\n\t'border-inline-start-width': { ltr: ['border-left-width'], rtl: ['border-right-width'] },\n\t'border-inline-start': { ltr: ['border-left'], rtl: ['border-right'] },\n\t'border-inline-style': { ltr: ['border-left-style', 'border-right-style'], rtl: ['border-left-style', 'border-right-style'] },\n\t'border-inline-width': { ltr: ['border-left-width', 'border-right-width'], rtl: ['border-left-width', 'border-right-width'] },\n\t'border-inline': { ltr: ['border-left', 'border-right'], rtl: ['border-left', 'border-right'] },\n\n\t// Flow-relative Corner Rounding\n\t'border-end-end-radius': { ltr: ['border-bottom-right-radius'], rtl: ['border-bottom-left-radius'] },\n\t'border-end-start-radius': { ltr: ['border-bottom-left-radius'], rtl: ['border-bottom-right-radius'] },\n\t'border-start-end-radius': { ltr: ['border-top-right-radius'], rtl: ['border-top-left-radius'] },\n\t'border-start-start-radius': { ltr: ['border-top-left-radius'], rtl: ['border-top-right-radius'] },\n};\n","export function hasKeyframesAtRuleAncestor(node) {\n\tlet parent = node.parent;\n\twhile (parent) {\n\t\tif (parent.type !== 'atrule') {\n\t\t\tparent = parent.parent;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (parent.name === 'keyframes') {\n\t\t\treturn true;\n\t\t}\n\n\t\tparent = parent.parent;\n\t}\n\n\treturn false;\n}\n","import transformBorder from './lib/transform-border';\nimport transformBorderRadius from './lib/transform-border-radius';\nimport transformDirectionalShorthands from './lib/transform-directional-shorthands';\nimport transformFloat from './lib/transform-float';\nimport transformInset from './lib/transform-inset';\nimport transformResize from './lib/transform-resize';\nimport transformSide from './lib/transform-side';\nimport transformSize from './lib/transform-size';\nimport transformTextAlign from './lib/transform-text-align';\nimport transformTransition from './lib/transform-transition';\nimport { splitBySpace } from './lib/split';\nimport { hasKeyframesAtRuleAncestor } from './lib/has-keyframes-atrule-ancestor';\n\n// plugin\nfunction postcssLogicalProperties(opts) {\n\topts = Object(opts);\n\n\tconst preserve = Boolean(opts.preserve);\n\tconst dir = !preserve && typeof opts.dir === 'string'\n\t\t? /^rtl$/i.test(opts.dir)\n\t\t\t? 'rtl'\n\t\t\t: 'ltr'\n\t\t: false;\n\n\tconst makeTransform = (transform) => {\n\t\treturn (decl) => {\n\t\t\tif (hasKeyframesAtRuleAncestor(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst parent = decl.parent;\n\t\t\tconst values = splitBySpace(decl.value, true);\n\t\t\ttransform(decl, values, dir, preserve);\n\t\t\tif (!parent.nodes.length) {\n\t\t\t\tparent.remove();\n\t\t\t}\n\t\t};\n\t};\n\n\tconst makeTransformWithoutSplittingValues = (transform) => {\n\t\treturn (decl) => {\n\t\t\tif (hasKeyframesAtRuleAncestor(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst parent = decl.parent;\n\t\t\tconst values = [decl.value];\n\t\t\ttransform(decl, values, dir, preserve);\n\t\t\tif (!parent.nodes.length) {\n\t\t\t\tparent.remove();\n\t\t\t}\n\t\t};\n\t};\n\n\treturn {\n\t\tpostcssPlugin: 'postcss-logical-properties',\n\t\tDeclaration: {\n\t\t\t// Flow-Relative Values\n\t\t\t'clear': makeTransform(transformFloat),\n\t\t\t'float': makeTransform(transformFloat),\n\t\t\t'resize': makeTransform(transformResize),\n\t\t\t'text-align': makeTransform(transformTextAlign),\n\n\t\t\t// Logical Height and Logical Width\n\t\t\t'block-size': makeTransform(transformSize),\n\t\t\t'max-block-size': makeTransform(transformSize),\n\t\t\t'min-block-size': makeTransform(transformSize),\n\t\t\t'inline-size': makeTransform(transformSize),\n\t\t\t'max-inline-size': makeTransform(transformSize),\n\t\t\t'min-inline-size': makeTransform(transformSize),\n\n\t\t\t// Flow-relative Margins\n\t\t\t'margin': makeTransform(transformDirectionalShorthands),\n\t\t\t'margin-inline': makeTransform(transformSide['inline']),\n\t\t\t'margin-inline-end': makeTransform(transformSide['inline-end']),\n\t\t\t'margin-inline-start': makeTransform(transformSide['inline-start']),\n\t\t\t'margin-block': makeTransform(transformSide['block']),\n\t\t\t'margin-block-end': makeTransform(transformSide['block-end']),\n\t\t\t'margin-block-start': makeTransform(transformSide['block-start']),\n\n\t\t\t// Flow-relative Offsets\n\t\t\t'inset': makeTransform(transformInset),\n\t\t\t'inset-inline': makeTransform(transformSide['inline']),\n\t\t\t'inset-inline-end': makeTransform(transformSide['inline-end']),\n\t\t\t'inset-inline-start': makeTransform(transformSide['inline-start']),\n\t\t\t'inset-block': makeTransform(transformSide['block']),\n\t\t\t'inset-block-end': makeTransform(transformSide['block-end']),\n\t\t\t'inset-block-start': makeTransform(transformSide['block-start']),\n\n\t\t\t// Flow-relative Padding\n\t\t\t'padding': makeTransform(transformDirectionalShorthands),\n\t\t\t'padding-inline': makeTransform(transformSide['inline']),\n\t\t\t'padding-inline-end': makeTransform(transformSide['inline-end']),\n\t\t\t'padding-inline-start': makeTransform(transformSide['inline-start']),\n\t\t\t'padding-block': makeTransform(transformSide['block']),\n\t\t\t'padding-block-end': makeTransform(transformSide['block-end']),\n\t\t\t'padding-block-start': makeTransform(transformSide['block-start']),\n\n\t\t\t// Flow-relative Borders\n\t\t\t'border-block': makeTransformWithoutSplittingValues(transformBorder['border-block']),\n\t\t\t'border-block-color': makeTransform(transformBorder['border-block']),\n\t\t\t'border-block-style': makeTransform(transformBorder['border-block']),\n\t\t\t'border-block-width': makeTransform(transformBorder['border-block']),\n\t\t\t'border-block-end': makeTransformWithoutSplittingValues(transformBorder['border-block-end']),\n\t\t\t'border-block-end-color': makeTransform(transformBorder['border-block-end']),\n\t\t\t'border-block-end-style': makeTransform(transformBorder['border-block-end']),\n\t\t\t'border-block-end-width': makeTransform(transformBorder['border-block-end']),\n\t\t\t'border-block-start': makeTransformWithoutSplittingValues(transformBorder['border-block-start']),\n\t\t\t'border-block-start-color': makeTransform(transformBorder['border-block-start']),\n\t\t\t'border-block-start-style': makeTransform(transformBorder['border-block-start']),\n\t\t\t'border-block-start-width': makeTransform(transformBorder['border-block-start']),\n\t\t\t'border-inline': makeTransformWithoutSplittingValues(transformBorder['border-inline']),\n\t\t\t'border-inline-color': makeTransform(transformBorder['border-inline']),\n\t\t\t'border-inline-style': makeTransform(transformBorder['border-inline']),\n\t\t\t'border-inline-width': makeTransform(transformBorder['border-inline']),\n\t\t\t'border-inline-end': makeTransformWithoutSplittingValues(transformBorder['border-inline-end']),\n\t\t\t'border-inline-end-color': makeTransform(transformBorder['border-inline-end']),\n\t\t\t'border-inline-end-style': makeTransform(transformBorder['border-inline-end']),\n\t\t\t'border-inline-end-width': makeTransform(transformBorder['border-inline-end']),\n\t\t\t'border-inline-start': makeTransformWithoutSplittingValues(transformBorder['border-inline-start']),\n\t\t\t'border-inline-start-color': makeTransform(transformBorder['border-inline-start']),\n\t\t\t'border-inline-start-style': makeTransform(transformBorder['border-inline-start']),\n\t\t\t'border-inline-start-width': makeTransform(transformBorder['border-inline-start']),\n\n\t\t\t// Flow-relative Corner Rounding\n\t\t\t'border-end-end-radius': makeTransform(transformBorderRadius),\n\t\t\t'border-end-start-radius': makeTransform(transformBorderRadius),\n\t\t\t'border-start-end-radius': makeTransform(transformBorderRadius),\n\t\t\t'border-start-start-radius': makeTransform(transformBorderRadius),\n\n\t\t\t// Four-Directional Shorthand Border Properties\n\t\t\t'border-color': makeTransform(transformDirectionalShorthands),\n\t\t\t'border-style': makeTransform(transformDirectionalShorthands),\n\t\t\t'border-width': makeTransform(transformDirectionalShorthands),\n\n\t\t\t// Transition helpers\n\t\t\t'transition': makeTransform(transformTransition),\n\t\t\t'transition-property': makeTransform(transformTransition),\n\t\t},\n\t};\n}\npostcssLogicalProperties.postcss = true;\n\nexport default postcssLogicalProperties;\n"],"names":["decl","dir","rule","Object","parent","type","cloneBefore","raws","removeAll","postcss","selector","assign","selectors","map","matchLogicalBorderSide","values","preserve","prop","replace","value","clean","ltrDecls","rtlDecls","clone","length","cloneRule","append","ltrDecl","rtlDecl","remove","logicalRadii","ltrRadii","rtlRadii","lDecl","rDecl","$","prefix","direction","suffix","reducedValues","slice","pop","all","inline","blockEnd","inlineEnd","ltrValues","reduceValues","join","rtlValues","test","matchSide","matchInsetPrefix","cloneDeclBefore","matchSize","$0","minmax","flow","splitBySpace","string","isTrimmed","splitByRegExp","re","array","buffer","split","func","i","char","trim","push","notValues","forEach","hasBeenSplit","word","index","words","valueMap","ltr","replacement","splice","rtl","hasKeyframesAtRuleAncestor","node","name","postcssLogicalProperties","opts","Boolean","makeTransform","transform","nodes","makeTransformWithoutSplittingValues","postcssPlugin","Declaration","transformFloat","transformResize","transformTextAlign","transformSize","transformDirectionalShorthands","transformSide","transformInset","transformBorder","transformBorderRadius","transformTransition"],"mappings":"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"}