{"version":3,"file":"index.mjs","sources":["../src/index.js"],"sourcesContent":["import postcss from \"postcss\";\nimport { parse } from 'postcss-values-parser';\n\n// var twMarginRegex = /^.-?m(y-[0-9]|x-[0-9]|-px|-[0-9].?[0-9]?)/gmi\n\n// TODO: To support Tailwind need to cover all variants of class names including device eg md:. margin, width, flex, height\n\n// TODO: Test with example repos\n// TODO: Check webComponents option works\n// TODO: Check works with tailwind\n\nmodule.exports = (opts = {}) => {\n\topts = opts || {}\n\n\tconst pf = \"fgp-\";\n\tconst flexGapNotSupported = opts.flexGapNotSupported ? opts.flexGapNotSupported + \" \" : \"\";\n\n\n\tfunction getFlex(decl, obj) {\n\t\tif (decl.prop === \"display\" && decl.value === \"flex\" || decl.prop === \"display\" && decl.value === \"inline-flex\") {\n\t\t\tobj.hasFlex = true;\n\t\t}\n\t}\n\n\tfunction getWidth(decl, obj) {\n\t\tif (decl.prop === \"width\" || decl.prop === \"max-width\" || decl.prop === \"min-width\") {\n\t\t\tobj.hasWidth = true\n\t\t}\n\t\tif (decl.prop === \"height\" || decl.prop === \"max-height\" || decl.prop === \"min-height\") {\n\t\t\tobj.hasHeight = true\n\t\t}\n\t}\n\n\tfunction getGap(decl, obj) {\n\t\tif (decl.prop === \"gap\" || decl.prop === \"column-gap\" || decl.prop === \"row-gap\") {\n\t\t\tobj.hasGap = true;\n\t\t\tif (decl.prop === \"row-gap\") {\n\t\t\t\tobj.gapValues[0] = decl.value\n\t\t\t}\n\n\t\t\tif (decl.prop === \"column-gap\") {\n\t\t\t\tobj.gapValues[1] = decl.value\n\t\t\t}\n\n\t\t\tif (decl.prop === \"gap\") {\n\t\t\t\tobj.gapValues = postcss.list.space(decl.value);\n\t\t\t\tif (obj.gapValues.length === 1) {\n\t\t\t\t\tobj.gapValues.push(obj.gapValues[0]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t}\n\n\tfunction getMargin(decl, obj) {\n\t\tif (decl.prop === \"margin\" || decl.prop === \"margin-left\" || decl.prop === \"margin-top\") {\n\t\t\tvar value;\n\t\t\tobj.hasMargin = true\n\t\t\tif (decl.prop === \"margin-top\") {\n\t\t\t\tif (decl.value === \"0\") {\n\t\t\t\t\tvalue = '0px'\n\t\t\t\t}\n\t\t\t\tobj.marginValues[0] = value\n\t\t\t}\n\n\n\n\t\t\tif (decl.prop === \"margin\") {\n\t\t\t\tobj.marginValues = postcss.list.space(decl.value);\n\n\t\t\t\tif (decl.prop === \"margin-left\") {\n\t\t\t\t\tif (decl.value === \"0\") {\n\t\t\t\t\t\tvalue = '0px'\n\t\t\t\t\t}\n\t\t\t\t\tobj.marginValues[3] = value\n\t\t\t\t}\n\n\t\t\t\tif (obj.marginValues[0] === \"0\") {\n\t\t\t\t\tobj.marginValues[0] = '0px'\n\t\t\t\t}\n\n\t\t\t\tif (obj.marginValues[1] === \"0\") {\n\t\t\t\t\tobj.marginValues[1] = '0px'\n\t\t\t\t}\n\n\t\t\t\tswitch (obj.marginValues.length) {\n\t\t\t\t\tcase 1:\n\t\t\t\t\t\tobj.marginValues.push(obj.marginValues[0]);\n\t\t\t\t\t// falls through\n\t\t\t\t\tcase 2:\n\t\t\t\t\t\tobj.marginValues.push(obj.marginValues[0]);\n\t\t\t\t\t// falls through\n\t\t\t\t\tcase 3:\n\t\t\t\t\t\tobj.marginValues.push(obj.marginValues[1]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction getRules(decl, obj, root) {\n\t\tvar fileName = root.source.input.file\n\t\tobj.rules.orig = decl.parent\n\n\t\tvar selector;\n\n\n\t\t// These are needed to specifiy global scope for CSS modules\n\t\tvar cssModule = \"\";\n\t\tvar cssModuleEnd = \"\"\n\n\t\tif ((fileName && fileName.endsWith(\".module.css\")) && opts.flexGapNotSupported) {\n\t\t\tcssModule = \":global(\"\n\t\t\tcssModuleEnd = \") \"\n\t\t}\n\n\t\t// if (obj.hasGap && obj.hasFlex) {\n\t\tselector = {\n\t\t\tcontainer: `${cssModule}${flexGapNotSupported}${cssModuleEnd}${obj.rules.orig.selector}`,\n\t\t\titem: `${cssModule}${flexGapNotSupported}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((item) => `${item} > *`)\n\t\t\t\t.join(\",\")}`,\n\t\t\treset: `${cssModule}${flexGapNotSupported}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((item) => `${item} > * > *`)\n\t\t\t\t.join(\",\")}`,\n\t\t\titemUniversal: `${cssModule}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((item) => `${item} > *`)\n\t\t\t\t.join(\",\")}`,\n\t\t};\n\n\t\tif (opts.webComponents) {\n\t\t\tselector.item = `${cssModule}${flexGapNotSupported}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((item) => `${item} > *`)\n\t\t\t\t.join(\",\")},\n${cssModule}${flexGapNotSupported}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((item) => `${item} > ::slotted(*)`)\n\t\t\t\t\t.join(\",\")}`;\n\t\t\tselector.itemUniversal = `${cssModule}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t.split(\",\")\n\t\t\t\t.map((item) => `${item} > *`)\n\t\t\t\t.join(\",\")},\n\t\t${cssModule}${flexGapNotSupported}${cssModuleEnd}${obj.rules.orig.selector\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((item) => `${item} > ::slotted(*)`)\n\t\t\t\t\t.join(\",\")}`;\n\t\t}\n\t\t// }\n\n\t\t// if ((opts.tailwindCSS && /^.gap(?=\\b|[0-9])/gmi.test(obj.rules.orig.selector) && !obj.hasFlex) || (obj.hasWidth || obj.hasHeight) || (opts.tailwindCSS && /^.-?m(y-[0-9]|x-[0-9]|-px|-[0-9].?[0-9]?)/gmi.test(obj.rules.orig.selector) && !obj.hasFlex)) {\n\t\t// \tselector = {\n\t\t// \t\tcontainer: `${cssModule}${flexGapNotSupported}${cssModuleEnd}.flex${obj.rules.orig.selector}, ${cssModule}${flexGapNotSupported}${cssModuleEnd}.inline-flex${obj.rules.orig.selector}`,\n\t\t// \t\titem: `${cssModule}${flexGapNotSupported}${cssModuleEnd}.flex${obj.rules.orig.selector} > *, ${cssModule}${flexGapNotSupported}${cssModuleEnd}.inline-flex${obj.rules.orig.selector} > *`,\n\t\t// \t\treset: `${cssModule}${flexGapNotSupported}${cssModuleEnd}.flex${obj.rules.orig.selector} > * > *, ${cssModule}${flexGapNotSupported}${cssModuleEnd}.inline-flex${obj.rules.orig.selector} > * > *`,\n\t\t// \t\tslotted: `${cssModule}${flexGapNotSupported}${cssModuleEnd}.flex${obj.rules.orig.selector} > ::slotted(*), ${cssModule}${flexGapNotSupported}${cssModuleEnd}.inline-flex${obj.rules.orig.selector} > ::slotted(*)`\n\t\t// \t};\n\t\t// }\n\n\t\tobj.rules.container = postcss.rule({ selector: selector.container });\n\t\tobj.rules.item = postcss.rule({ selector: selector.item });\n\t\tobj.rules.itemUniversal = postcss.rule({ selector: selector.itemUniversal });\n\t\tobj.rules.reset = postcss.rule({ selector: selector.reset });\n\n\t\tobj.rules.container.prepend(postcss.comment({ text: 'added by fgp' }))\n\t\tobj.rules.item.prepend(postcss.comment({ text: 'added by fgp' }))\n\t\tobj.rules.itemUniversal.prepend(postcss.comment({ text: 'added by fgp' }))\n\t\tobj.rules.reset.prepend(postcss.comment({ text: 'added by fgp' }))\n\t}\n\n\tfunction addRootSelector(root, rule) {\n\t\tvar fileName = root.source.input.file\n\n\t\t// This avoids adding :root selector to module files used by Next.js\n\t\tif (!(fileName && (fileName.endsWith(\".module.css\") || fileName.endsWith(\".module.scss\") || fileName.endsWith(\".module.sass\") || fileName.endsWith(\".module.pcss\")))) {\n\t\t\tconst rootRule = postcss.rule({ selector: \":root\" });\n\n\t\t\trule.before(rootRule);\n\t\t\trootRule.prepend(postcss.comment({ text: 'added by fgp' }))\n\n\t\t\trootRule.append(\n\t\t\t\t`--has-fgp: initial;\n\t\t\t\t--element-has-fgp: initial;\n\t\t\t\t--parent-has-fgp: initial;`\n\t\t\t);\n\n\t\t\trootRule.walk(i => { i.raws.before = \"\\n\\t\"; });\n\n\t\t}\n\t}\n\n\tfunction addWidth(rule, obj) {\n\n\n\t\tif (obj.hasWidth || obj.hasHeight) {\n\t\t\trule.walkDecls((decl) => {\n\n\t\t\t\tlet prop = decl.prop;\n\n\t\t\t\t// let allowedProps = [\n\t\t\t\t// \t\"width\",\n\t\t\t\t// \t\"height\"\n\t\t\t\t// ]\n\n\t\t\t\t// if (allowedProps.includes(prop)) {\n\n\n\n\n\n\t\t\t\tif (decl.value === 0) {\n\t\t\t\t\tdecl.value = \"0px\";\n\t\t\t\t}\n\n\t\t\t\tlet { orig, container } = obj.rules\n\n\t\t\t\torig.before(container);\n\n\n\t\t\t\tlet axis = prop === \"width\" ? \"column\" : \"row\";\n\n\n\t\t\t\tif (decl.prop === \"width\" || decl.prop === \"height\" || decl.prop === \"max-height\" || decl.prop === \"min-height\" || decl.prop === \"max-width\" || decl.prop === \"min-width\") {\n\t\t\t\t\tvar value = parse(decl.value).nodes[0];\n\n\t\t\t\t\t// Percentages\n\t\t\t\t\tif (value.unit === \"%\") {\n\t\t\t\t\t\tcontainer.append(\n\t\t\t\t\t\t\t`--${pf}${prop}: var(--element-has-fgp) calc(${decl.value} + var(--${pf}gap-${axis}, 0%));`\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// var precentageToDecimal = value.value / 100\n\n\t\t\t\t\t\t// Sort of a guess for forumla when width is a percentage\n\t\t\t\t\t\t// container.append(\n\t\t\t\t\t\t// \t`--${pf}${prop}: var(--element-has-fgp) calc((${decl.value} - ${precentageToDecimal}%) + (1.0${value.value} * var(--${pf}gap-${axis}, 0%)));`\n\t\t\t\t\t\t// );\n\t\t\t\t\t\t// container.append(\n\t\t\t\t\t\t// \t`--${pf}${prop}-percentages-decimal: ${value.number / 100} !important;`\n\t\t\t\t\t\t// );\n\n\t\t\t\t\t\t// reset.append(\n\t\t\t\t\t\t// \t`--${pf}${prop}-percentages-decimal: initial;`\n\t\t\t\t\t\t// );\n\t\t\t\t\t}\n\n\t\t\t\t\telse if (decl.value !== \"auto\") {\n\n\t\t\t\t\t\tcontainer.append(\n\t\t\t\t\t\t\t`--${pf}${prop}: var(--element-has-fgp) calc(${decl.value} + var(--${pf}gap-${axis}, 0px));`\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// \t\t\tcontainer.append(\n\t\t\t\t\t\t// \t\t\t\t`--${pf}gap-percentage-to-pixels-column: calc(-1 * ${decl.value} * var(${pf}gap_percentage-decimal-${axis})) !important;\n\t\t\t\t\t\t// ${pf}gap-percentage-to-pixels-row: calc(-1 * ${decl.value} * var(${pf}gap-percentage-decimal-${axis})) !important;`\n\t\t\t\t\t\t// \t\t\t);\n\n\t\t\t\t\t\t// \t\t\treset.append(\n\t\t\t\t\t\t// \t\t\t\t`--${pf}gap-percentage-to-pixels-column: initial;\n\t\t\t\t\t\t// ${pf}gap-percentage-to-pixels-row: initial;`\n\t\t\t\t\t\t// \t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// If value is auto we ignore it, beacause it can't be calculated with calc\n\t\t\t\t\tif (decl.value !== \"auto\") {\n\t\t\t\t\t\tdecl.value = `var(--fgp-${prop}, ${decl.value})`\n\t\t\t\t\t}\n\n\t\t\t\t\tcontainer.walk(i => { i.raws.before = \"\\n\\t\"; });\n\t\t\t\t\t// reset.walk(i => { i.raws.before = \"\\n\\t\"; });\n\t\t\t\t\t// decl.remove()\n\t\t\t\t}\n\t\t\t\t// }\n\t\t\t})\n\t\t}\n\t}\n\n\tfunction rewriteFlex(rule, obj) {\n\n\t\trule.walkDecls((decl) => {\n\t\t\tif (decl.prop === \"display\" && decl.value === \"flex\" || decl.prop === \"display\" && decl.value === \"inline-flex\") {\n\n\t\t\t\tobj.rules.container.append(`--has-fgp: ;`)\n\t\t\t\tobj.rules.container.append(`--element-has-fgp: ;`)\n\n\t\t\t\tobj.rules.item.append(`--parent-has-fgp: !important;`)\n\t\t\t\tobj.rules.item.append(`--element-has-fgp: initial;`)\n\n\t\t\t\tobj.rules.reset.append(`--parent-has-fgp: initial;`)\n\n\t\t\t}\n\n\t\t})\n\t}\n\n\tfunction rewriteMargin(rule, obj) {\n\n\t\tlet { orig, container, item, reset, itemUniversal } = obj.rules\n\n\t\t// 1. Replace existing margin-left and margin-top\n\t\torig.walkDecls((decl) => {\n\t\t\tif (decl.prop === \"margin-top\" || decl.prop === \"margin-left\") {\n\t\t\t\t// don't do this is margin is auto because cannot calc with auto\n\t\t\t\tif (decl.value !== \"auto\") {\n\t\t\t\t\tvar value = decl.value;\n\t\t\t\t\tif (value === \"0\") {\n\t\t\t\t\t\tvalue = \"0px\";\n\t\t\t\t\t}\n\t\t\t\t\tdecl.before(`--${pf}${decl.prop}: initial;`)\n\t\t\t\t\tdecl.before(`--orig-${decl.prop}: ${value};`);\n\t\t\t\t\tdecl.value = `var(--${pf}${decl.prop}, var(--orig-${decl.prop}))`\n\n\t\t\t\t\titemUniversal.append(`--orig-${decl.prop}: initial;`)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (decl.prop === \"margin\") {\n\t\t\t\t// TODO: Need to catch when value is auto as can't work with calc\n\t\t\t\tdecl.before(`--${pf}margin-top: initial;`);\n\t\t\t\tdecl.before(`--${pf}margin-left: initial;`);\n\t\t\t\tdecl.before(`--orig-margin-top: ${obj.marginValues[0]};`);\n\t\t\t\tdecl.before(`--orig-margin-right: ${obj.marginValues[1]};`);\n\t\t\t\tdecl.before(`--orig-margin-bottom: ${obj.marginValues[2]};`);\n\t\t\t\tdecl.before(`--orig-margin-left: ${obj.marginValues[3]};`);\n\t\t\t\tdecl.value = `var(--${pf}margin-top, var(--orig-margin-top)) var(--orig-margin-right) var(--orig-margin-bottom) var(--${pf}margin-left, var(--orig-margin-left))`\n\n\t\t\t\titemUniversal.append(`--orig-margin-top: initial;`)\n\t\t\t\titemUniversal.append(`--orig-margin-right: initial;`)\n\t\t\t\titemUniversal.append(`--orig-margin-bottom: initial;`)\n\t\t\t\titemUniversal.append(`--orig-margin-left: initial;`)\n\t\t\t}\n\t\t})\n\n\t\t// 2. Add margin when gap present\n\t\tconst properties = [\n\t\t\t[\"row\", \"top\"],\n\t\t\t[\"column\", \"left\"]\n\t\t];\n\n\t\t// Disable gap when element has display flex\n\t\t// TODO: Needs modifying to work on gap shorthand\n\t\torig.walkDecls((decl) => {\n\t\t\tif (decl.prop === \"gap\" || decl.prop === \"row-gap\" || decl.prop === \"column-gap\") {\n\t\t\t\t// don't do this is margin is auto because cannot calc with auto\n\t\t\t\tdecl.before(`--${pf}${decl.prop}: var(--has-fgp, ${decl.value})`)\n\t\t\t\tdecl.value = `var(--${pf}${decl.prop}, 0px)`\n\t\t\t}\n\t\t})\n\n\t\tif (obj.hasFlex || obj.hasGap) {\n\t\t\tcontainer.append(`pointer-events: var(--has-fgp) none;`)\n\t\t\titem.append(`pointer-events: var(--parent-has-fgp) auto;`)\n\t\t}\n\n\n\t\tproperties.forEach((property, index) => {\n\t\t\tvar axis = property[0];\n\t\t\tvar side = property[1];\n\t\t\tvar value = obj.gapValues[index];\n\t\t\tvar gapNumber = axis === \"row\" ? 0 : 1;\n\t\t\tvar marginNumber = axis === \"row\" ? 0 : 3;\n\t\t\tif (value === \"0\") {\n\t\t\t\tvalue = \"0px\";\n\t\t\t}\n\n\n\n\t\t\t// Only add if gap is not null\n\t\t\tif ((obj.gapValues[gapNumber] !== null)) {\n\n\n\t\t\t\t// Don't add margin if rule already contains margin\n\t\t\t\tif (!obj.marginValues[marginNumber] && obj.marginValues[marginNumber] !== 0) {\n\t\t\t\t\torig.append(`margin-${side}: var(--${pf}margin-${side}, var(--orig-margin-${side}));`)\n\t\t\t\t}\n\n\n\t\t\t\tif (parse(value).nodes[0].unit === \"%\") {\n\t\t\t\t\tvar unitlessPercentage = parse(value).nodes[0].value / 100\n\t\t\t\t\t// formula: (parent - self) / (100 - 1 + percentageAsDecimal) * 100\n\t\t\t\t\tif (side !== \"top\") {\n\t\t\t\t\t\tcontainer.append(\n\t\t\t\t\t\t\t`--${pf}gap-${axis}: ${value};\n\t\t\t\t\t\t--${pf}-parent-gap-as-decimal: ${unitlessPercentage};\n\t\t\t\t\t\t`)\n\t\t\t\t\t\tcontainer.append(`--${pf}margin-${side}: calc(\n\t\t\t\t\t\t(var(--${pf}parent-gap-${axis}, 0px) - var(--${pf}gap-${axis}) / (100 - (1 + ${unitlessPercentage})) * 100)\n\t\t\t\t\t\t+ var(--${pf}orig-margin-${side}, 0px)\n\t\t\t\t\t\t) !important`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// formula: (parent - self)\n\t\t\t\t\tcontainer.append(\n\t\t\t\t\t\t`--${pf}gap-${axis}: ${value};`\n\t\t\t\t\t)\n\t\t\t\t\tcontainer.append(`--${pf}margin-${side}: var(--has-fgp) calc(var(--${pf}parent-gap-${axis}, 0px) / (1 + var(--${pf}-parent-gap-as-decimal, 0)) - var(--${pf}gap-${axis}) + var(--orig-margin-${side}, 0px)) !important;`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (parse(value).nodes[0].unit === \"%\") {\n\t\t\t\t\tif (side !== \"top\") {\n\t\t\t\t\t\titem.append(\n\t\t\t\t\t\t\t`--${pf}parent-gap-${axis}: ${value};\n\t\t\t\t\t--${pf}margin-${side}: var(--parent-has-fgp) calc(var(--${pf}gap-${axis}) / (1 + ${unitlessPercentage}) + var(--orig-margin-${side}, 0px));`\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\titem.append(\n\t\t\t\t\t\t`--${pf}parent-gap-${axis}: ${value};\n\t\t\t\t\t--${pf}margin-${side}: var(--parent-has-fgp) calc(var(--${pf}gap-${axis}) + var(--orig-margin-${side}, 0px));`\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\t// Add margin to items\n\t\t\t\titem.append(`margin-${side}: var(--${pf}margin-${side});`)\n\n\t\t\t\t// // Reset fgp margins\n\t\t\t\t// reset.append(`--${pf}margin-${side}: initial`)\n\n\t\t\t\t// // Reset fgp parent gap\n\t\t\t\treset.append(`--${pf}parent-gap-${axis}: initial`)\n\n\t\t\t}\n\t\t})\n\n\t}\n\n\treturn {\n\n\t\tpostcssPlugin: 'flex-gap-polyfill',\n\n\t\tOnce(root) {\n\n\t\t\tvar rootAdded = false;\n\t\t\troot.walkRules(rule => {\n\t\t\t\tif (rule.name !== 'import' && !rootAdded) {\n\t\t\t\t\taddRootSelector(root, rule)\n\t\t\t\t\trootAdded = true\n\t\t\t\t}\n\n\t\t\t})\n\n\n\n\t\t\troot.walkRules(rule => {\n\n\t\t\t\t// To check if rule original or added by plugin\n\t\t\t\tvar origRule = true;\n\t\t\t\trule.walkDecls(decl => {\n\t\t\t\t\tif (decl.prop.startsWith(\"--fgp\") || decl.prop.startsWith(\"--has\")) {\n\t\t\t\t\t\torigRule = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\trule.walkComments(comment => {\n\t\t\t\t\tif (comment.text === \"added by fgp\") {\n\t\t\t\t\t\torigRule = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\tvar shouldPolyfill = false;\n\n\t\t\t\tif (Array.isArray(opts.only) || opts.only === true) {\n\t\t\t\t\tshouldPolyfill = false\n\t\t\t\t}\n\n\t\t\t\tif (origRule) {\n\t\t\t\t\tvar obj = {\n\t\t\t\t\t\trules: {},\n\t\t\t\t\t\tgapValues: [null, null],\n\t\t\t\t\t\tmarginValues: [null, null, null, null],\n\t\t\t\t\t\thasGap: false,\n\t\t\t\t\t\thasFlex: false,\n\t\t\t\t\t\thasMargin: false,\n\t\t\t\t\t\tshouldPolyfill: shouldPolyfill\n\t\t\t\t\t}\n\n\t\t\t\t\trule.walkDecls((decl) => {\n\t\t\t\t\t\tgetRules(decl, obj, root)\n\t\t\t\t\t\tgetFlex(decl, obj);\n\t\t\t\t\t\tgetGap(decl, obj)\n\t\t\t\t\t\tgetMargin(decl, obj)\n\t\t\t\t\t\tgetWidth(decl, obj)\n\t\t\t\t\t});\n\n\t\t\t\t\tif (Array.isArray(opts.only) || opts.only === true) {\n\t\t\t\t\t\tif (obj.hasFlex && obj.hasGap) {\n\t\t\t\t\t\t\tobj.shouldPolyfill = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (obj.hasFlex || obj.hasMargin || obj.hasGap || obj.hasWidth || obj.hasHeight) {\n\t\t\t\t\t\t\tobj.shouldPolyfill = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (Array.isArray(opts.only)) {\n\t\t\t\t\t\tif (opts.only.includes(rule.selector) || opts.only.some((item) => {\n\t\t\t\t\t\t\tif (item instanceof RegExp) {\n\t\t\t\t\t\t\t\treturn item.test(rule.selector)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})) {\n\t\t\t\t\t\t\tobj.shouldPolyfill = true\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If rule contains comment /* apply fgp */ then polyfill it\n\t\t\t\t\trule.walkComments(comment => {\n\t\t\t\t\t\tif (comment.text === \"apply fgp\") {\n\t\t\t\t\t\t\tcomment.remove()\n\t\t\t\t\t\t\tobj.shouldPolyfill = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tif (obj.shouldPolyfill) {\n\t\t\t\t\t\taddWidth(rule, obj);\n\t\t\t\t\t\trewriteFlex(rule, obj)\n\t\t\t\t\t\t// addMargin(rule, obj)\n\t\t\t\t\t\trewriteMargin(rule, obj)\n\n\t\t\t\t\t\tif ((obj.hasFlex || obj.hasGap || obj.hasMargin) || !(obj.hasWidth || obj.hasHeight)) {\n\t\t\t\t\t\t\tif (!(obj.hasMargin && !obj.hasFlex && !obj.hasGap)) {\n\t\t\t\t\t\t\t\tobj.rules.orig.before(obj.rules.container);\n\n\t\t\t\t\t\t\t\tobj.rules.container.before(obj.rules.item);\n\t\t\t\t\t\t\t\tobj.rules.container.before(obj.rules.itemUniversal);\n\n\t\t\t\t\t\t\t\tobj.rules.item.before(obj.rules.reset);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (obj.hasFlex) {\n\t\t\t\t\t\t\t\tobj.rules.item.before(obj.rules.reset);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (obj.hasMargin && !obj.hasFlex && !obj.hasGap) {\n\t\t\t\t\t\t\t\tobj.rules.orig.before(obj.rules.item);\n\t\t\t\t\t\t\t\tobj.rules.orig.before(obj.rules.itemUniversal);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// Clean\n\t\t\t\t\t\t\tobj.rules.orig.walk(i => {\n\t\t\t\t\t\t\t\treturn i.raws.before = \"\\n\\t\"\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tobj.rules.container.walk(i => { i.raws.before = \"\\n\\t\" });\n\t\t\t\t\t\t\tobj.rules.item.walk(i => { i.raws.before = \"\\n\\t\" });\n\t\t\t\t\t\t\tobj.rules.itemUniversal.walk(i => { i.raws.before = \"\\n\\t\" });\n\t\t\t\t\t\t\tobj.rules.reset.walk(i => { i.raws.before = \"\\n\\t\" });\n\n\t\t\t\t\t\t\t// Remove empty rules created/added by plugin\n\t\t\t\t\t\t\troot.walkRules((rule) => {\n\n\t\t\t\t\t\t\t\t// Check if the rule has no declarations but only comments\n\t\t\t\t\t\t\t\tconst hasDeclarations = rule.nodes.some(node => node.type === 'decl');\n\t\t\t\t\t\t\t\tconst hasOnlyComments = rule.nodes.every(node => node.type === 'comment' && node.text === \"added by fgp\");\n\n\t\t\t\t\t\t\t\tif (!hasDeclarations && hasOnlyComments) {\n\t\t\t\t\t\t\t\t\trule.remove();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n\nmodule.exports.postcss = true\n"],"names":["module","exports","opts","pf","flexGapNotSupported","getFlex","decl","obj","prop","value","hasFlex","getWidth","hasWidth","hasHeight","getGap","hasGap","gapValues","postcss","list","space","length","push","getMargin","hasMargin","marginValues","getRules","root","fileName","source","input","file","rules","orig","parent","selector","cssModule","cssModuleEnd","endsWith","container","item","split","map","join","reset","itemUniversal","webComponents","rule","prepend","comment","text","addRootSelector","rootRule","before","append","walk","i","raws","addWidth","walkDecls","axis","parse","nodes","unit","rewriteFlex","rewriteMargin","properties","forEach","property","index","side","gapNumber","marginNumber","unitlessPercentage","postcssPlugin","Once","rootAdded","walkRules","name","origRule","startsWith","walkComments","shouldPolyfill","Array","isArray","only","includes","some","RegExp","test","remove","hasDeclarations","node","type","hasOnlyComments","every"],"mappings":"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"}