forked from csstools/stylelint-use-logical
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.cjs.js.map
1 lines (1 loc) · 25.5 KB
/
index.cjs.js.map
1
{"version":3,"file":"index.cjs.js","sources":["lib/maps.js","lib/validate.js","lib/rule-name.js","lib/messages.js","lib/walk.js","index.js"],"sourcesContent":["const inline = {\r\n\tstart: { ltr: 'left', rtl: 'right' },\r\n\tend: { ltr: 'right', rtl: 'left' }\r\n}\r\n\r\nconst inlineValue = {\r\n\tleft: { ltr: 'start', rtl: 'end' },\r\n\tright: { ltr: 'end', rtl: 'start' }\r\n}\r\n\r\nexport const physical4Prop = [\r\n\t[['top', 'left', 'bottom', 'right'], 'inset'],\r\n\t[['margin-top', 'margin-left', 'margin-bottom', 'margin-right'], 'margin'],\r\n\t[['padding-top', 'padding-left', 'padding-bottom', 'padding-right'], 'padding']\r\n];\r\n\r\nexport const physical2Prop = dir => [\r\n\t[['top', 'bottom'], 'inset-block'],\r\n\t[['left', 'right'], 'inset-inline'],\r\n\t[['top', inline.start[dir]], 'inset-start'],\r\n\t[['bottom', inline.end[dir]], 'inset-end'],\r\n\r\n\t[['margin-top', 'margin-bottom'], 'margin-block'],\r\n\t[['margin-left', 'margin-right'], 'margin-inline'],\r\n\t[['margin-top', `margin-${inline.start[dir]}`], 'margin-start'],\r\n\t[['margin-bottom', `margin-${inline.end[dir]}`], 'margin-end'],\r\n\r\n\t[['padding-top', 'padding-bottom'], 'padding-block'],\r\n\t[['padding-left', 'padding-right'], 'padding-inline'],\r\n\t[['padding-top', `padding-${inline.start[dir]}`], 'padding-start'],\r\n\t[['padding-bottom', `padding-${inline.end[dir]}`], 'padding-end']\r\n];\r\n\r\nexport const physicalProp = dir => [\r\n\t[['top'], 'inset-block-start'],\r\n\t[['bottom'], 'inset-block-end'],\r\n\t[[inline.start[dir]], 'inset-inline-start'],\r\n\t[[inline.end[dir]], 'inset-inline-end'],\r\n\r\n\t[['margin-top'], 'margin-block-start'],\r\n\t[['margin-bottom'], 'margin-block-end'],\r\n\t[[`margin-${inline.start[dir]}`], 'margin-inline-start'],\r\n\t[[`margin-${inline.end[dir]}`], 'margin-inline-end'],\r\n\r\n\t[['padding-top'], 'padding-block-start'],\r\n\t[['padding-bottom'], 'padding-block-end'],\r\n\t[[`padding-${inline.start[dir]}`], 'padding-inline-start'],\r\n [[`padding-${inline.end[dir]}`], 'padding-inline-end']\r\n];\r\n\r\nexport const physicalValueUnsupported = dir => [\r\n\t[/^clear$/i, {\r\n\t\t[inline.start[dir]]: 'inline-start',\r\n\t\t[inline.end[dir]]: 'inline-end'\r\n\t}],\r\n\t[/^float$/i, {\r\n\t\t[inline.start[dir]]: 'inline-start',\r\n\t\t[inline.end[dir]]: 'inline-end'\r\n\t}]\r\n];\r\n\r\nexport const physicalValueSupported = dir => [\r\n\t[/^text-align$/i, {\r\n\t\t[inline.start[dir]]: 'start',\r\n\t\t[inline.end[dir]]: 'end'\r\n\t}]\r\n];\r\n\r\nexport const physicalValueMixinReplacements = dir => [\r\n [['clear'], {\r\n [inlineValue.left[dir]]: `@include clear-inline-${inlineValue.left[dir]}()`,\r\n\t\t[inlineValue.right[dir]]: `@include clear-inline-${inlineValue.right[dir]}()`\r\n\t}],\r\n\r\n [['float'], {\r\n [inlineValue.left[dir]]: '@include float-inline-start()',\r\n\t\t[inlineValue.right[dir]]: '@include float-inline-end()'\r\n\t}]\r\n]\r\n","export const validateRuleWithProps = (root, props, fn) => {\r\n\t// conditionally walk nodes with children\r\n\tif (root.nodes && root.nodes.length) {\r\n\t\tconst args = [];\r\n\r\n\t\tconst hasProps = props.every(prop => {\r\n\t\t\tconst declIndex = root.nodes.findIndex(child => child.type === 'decl' && child.prop === prop);\r\n\t\t\tconst decl = root.nodes[declIndex];\r\n\r\n\t\t\tif (decl) {\r\n\t\t\t\targs.push(decl, declIndex);\r\n\t\t\t}\r\n\r\n\t\t\treturn decl;\r\n\t\t});\r\n\r\n\t\tif (hasProps) {\r\n\t\t\tfn(...args);\r\n\t\t}\r\n\t}\r\n};\r\n","export default 'csstools/use-logical';\r\n","import stylelint from 'stylelint';\r\nimport ruleName from './rule-name';\r\n\r\nexport default stylelint.utils.ruleMessages(ruleName, {\r\n\tunexpectedProp(physicalProperty, logicalProperty) {\r\n\t\treturn `Unexpected \"${physicalProperty}\" property. Use \"${logicalProperty}\".`;\r\n\t},\r\n\tunexpectedValue(property, physicalValue, logicalValue) {\r\n\t\treturn `Unexpected \"${physicalValue}\" value in \"${property}\" property. Use \"${logicalValue}\".`;\r\n },\r\n unexpectedValueMixin(property, physicalValue) {\r\n\t\treturn `Unexpected \"${physicalValue}\" value in \"${property}\" property. Use mixin from _direction.scss.`;\r\n\t}\r\n});\r\n","// walk all container nodes\r\nexport default function walk(node, fn) {\r\n\tif (node.nodes && node.nodes.length) {\r\n\t\tconst nodes = node.nodes.slice();\r\n\t\tconst length = nodes.length;\r\n\t\tlet index = -1;\r\n\r\n\t\twhile (++index < length) {\r\n\t\t\tconst child = nodes[index];\r\n\r\n\t\t\tif (!isDirRule(child)) {\r\n\t\t\t\tfn(child);\r\n\r\n\t\t\t\twalk(child, fn);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst dirSelectorRegExp = /:dir\\(ltr|rtl\\)/i;\r\nconst isDirRule = node => node.type === 'rule' && dirSelectorRegExp.test(node.selector);\r\n","import stylelint from 'stylelint';\r\nimport { physicalProp, physical2Prop, physical4Prop, physicalValueUnsupported, physicalValueSupported } from './lib/maps';\r\nimport { validateRuleWithProps } from './lib/validate';\r\nimport ruleName from './lib/rule-name';\r\nimport messages from './lib/messages';\r\nimport walk from './lib/walk';\r\n\r\nconst reportedDecls = new WeakMap();\r\n\r\nexport default stylelint.createPlugin(ruleName, (method, opts, context) => {\r\n const propExceptions = [].concat(Object(opts).except || []);\r\n const isProp2ConversionEnabled = !isProp2Disabled(opts);\r\n const isProp4ConversionEnabled = !isProp4Disabled(opts);\r\n\tconst isAutofix = isContextAutofixing(context);\r\n const dir = /^rtl$/i.test(Object(opts).direction) ? 'rtl' : 'ltr';\r\n\r\n\treturn (root, result) => {\r\n\t\t// validate the method\r\n\t\tconst isMethodValid = stylelint.utils.validateOptions(result, ruleName, {\r\n\t\t\tactual: method,\r\n\t\t\tpossible() {\r\n\t\t\t\treturn isMethodIndifferent(method) ||\r\n\t\t\t\t\tisMethodAlways(method)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst reportUnexpectedProperty = (decl, logicalProperty) => stylelint.utils.report({\r\n\t\t\tmessage: messages.unexpectedProp(decl.prop, logicalProperty),\r\n\t\t\tnode: decl,\r\n\t\t\tresult,\r\n\t\t\truleName\r\n\t\t});\r\n\r\n\t\tconst reportUnexpectedValue = (node, value) => stylelint.utils.report({\r\n\t\t\tmessage: messages.unexpectedValue(node.prop, node.value, value),\r\n\t\t\tnode,\r\n\t\t\tresult,\r\n\t\t\truleName\r\n });\r\n\r\n const reportUnexpectedValueMixin = (node, value) => stylelint.utils.report({\r\n message: messages.unexpectedValueMixin(node.prop, node.value, value),\r\n\t\t\tnode,\r\n\t\t\tresult,\r\n\t\t\truleName\r\n });\r\n\r\n const validateOrAutofixPhysicalValuesAsLogical = (node, physValMap, reportFn) =>\r\n physValMap(dir).forEach(([regexp, props]) => {\r\n if (isNodeMatchingDecl(node, regexp) && !isDeclAnException(node, propExceptions)) {\r\n const valuekey = node.value.toLowerCase();\r\n\r\n if (valuekey in props) {\r\n const value = props[valuekey];\r\n\r\n if (isAutofix) {\r\n node.value = value;\r\n } else {\r\n reportFn(node, value);\r\n\r\n reportedDecls.set(node);\r\n }\r\n }\r\n }\r\n });\r\n\r\n\t\tif (isMethodValid && isMethodAlways(method)) {\r\n\t\t\twalk(root, node => {\r\n // validate or autofix 4 physical properties as logical shorthands\r\n if (isProp4ConversionEnabled) {\r\n physical4Prop.filter(([physProps, logicalProp]) => { // eslint-disable-line\r\n return !physProps.some(physProp => propExceptions.includes(physProp));\r\n }).forEach(([props, prop]) => {\r\n\r\n validateRuleWithProps(node, props, (blockStartDecl, blockStartIndex, inlineStartDecl, inlineStartIndex, blockEndDecl, blockEndIndex, inlineEndDecl, inlineEndIndex) => { // eslint-disable-line\r\n const firstInlineDecl = blockStartDecl;\r\n\r\n if (isAutofix) {\r\n const values = [blockStartDecl.value, inlineStartDecl.value, blockEndDecl.value, inlineEndDecl.value];\r\n\r\n if (values[1] === values[3]) {\r\n values.pop();\r\n\r\n if (values[2] === values[1]) {\r\n values.pop();\r\n\r\n if (values[1] === values[0]) {\r\n values.pop();\r\n }\r\n }\r\n }\r\n\r\n firstInlineDecl.cloneBefore({\r\n prop,\r\n value: values.length <= 2 ? values.join(' ') : `logical ${values.join(' ')}`\r\n });\r\n\r\n blockStartDecl.remove();\r\n inlineStartDecl.remove();\r\n blockEndDecl.remove();\r\n inlineEndDecl.remove();\r\n } else if (!isDeclReported(blockStartDecl) && !isDeclReported(inlineStartDecl) && !isDeclReported(blockEndDecl) && !isDeclReported(inlineEndDecl)) {\r\n reportUnexpectedProperty(firstInlineDecl, prop);\r\n\r\n reportedDecls.set(blockStartDecl);\r\n reportedDecls.set(inlineStartDecl);\r\n reportedDecls.set(blockEndDecl);\r\n reportedDecls.set(inlineEndDecl);\r\n }\r\n });\r\n });\r\n }\r\n\r\n // validate or autofix 2 physical properties as logical shorthands\r\n if (isProp2ConversionEnabled) {\r\n physical2Prop(dir).filter(([physProps, logicalProp]) => { // eslint-disable-line\r\n return !physProps.some(physProp => propExceptions.includes(physProp));\r\n }).forEach(([props, prop]) => {\r\n validateRuleWithProps(node, props, (blockStartDecl, blockStartIndex, inlineStartDecl, inlineStartIndex) => { // eslint-disable-line\r\n const firstInlineDecl = blockStartIndex < inlineStartIndex\r\n ? blockStartDecl\r\n : inlineStartDecl;\r\n\r\n if (isAutofix) {\r\n firstInlineDecl.cloneBefore({\r\n prop,\r\n value: blockStartDecl.value === inlineStartDecl.value\r\n ? blockStartDecl.value\r\n : [blockStartDecl.value, inlineStartDecl.value].join(' ')\r\n });\r\n\r\n blockStartDecl.remove();\r\n inlineStartDecl.remove();\r\n } else if (!isDeclReported(blockStartDecl) && !isDeclReported(inlineStartDecl)) {\r\n reportUnexpectedProperty(firstInlineDecl, prop);\r\n\r\n reportedDecls.set(blockStartDecl);\r\n reportedDecls.set(inlineStartDecl);\r\n }\r\n });\r\n });\r\n }\r\n\r\n\t\t\t\t// validate or autofix physical properties as logical\r\n\t\t\t\tphysicalProp(dir).forEach(([props, prop]) => {\r\n\t\t\t\t\tvalidateRuleWithProps(node, props, physicalDecl => {\r\n\t\t\t\t\t\tif (!isDeclAnException(physicalDecl, propExceptions)) {\r\n\t\t\t\t\t\t\tif (isAutofix) {\r\n\t\t\t\t\t\t\t\tphysicalDecl.prop = prop;\r\n\t\t\t\t\t\t\t} else if (!isDeclReported(physicalDecl)) {\r\n\t\t\t\t\t\t\t\treportUnexpectedProperty(physicalDecl, prop);\r\n\r\n\t\t\t\t\t\t\t\treportedDecls.set(physicalDecl);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n });\r\n\r\n // validate or autofix physical values as logical\r\n validateOrAutofixPhysicalValuesAsLogical(node, physicalValueSupported, reportUnexpectedValue);\r\n\r\n validateOrAutofixPhysicalValuesAsLogical(node, physicalValueUnsupported, reportUnexpectedValueMixin);\r\n });\r\n\t\t}\r\n\t};\r\n});\r\n\r\nexport { ruleName }\r\n\r\nconst isMethodIndifferent = method => method === 'ignore' || method === false || method === null;\r\nconst isMethodAlways = method => method === 'always' || method === true;\r\nconst isContextAutofixing = context => Boolean(Object(context).fix);\r\nconst isProp2Disabled = opts => Boolean(Object(opts).disableProp2);\r\nconst isProp4Disabled = opts => Boolean(Object(opts).disableProp4);\r\nconst isNodeMatchingDecl = (decl, regexp) => decl.type === 'decl' && regexp.test(decl.prop);\r\nconst isDeclAnException = (decl, propExceptions) => propExceptions.some(match => match instanceof RegExp\r\n\t? match.test(decl.prop)\r\n: String(match || '').toLowerCase() === String(decl.prop || '').toLowerCase());\r\nconst isDeclReported = decl => reportedDecls.has(decl);\r\n"],"names":["inline","start","ltr","rtl","end","physical4Prop","physical2Prop","dir","physicalProp","physicalValueUnsupported","physicalValueSupported","validateRuleWithProps","root","props","fn","nodes","length","args","hasProps","every","prop","declIndex","findIndex","child","type","decl","push","stylelint","utils","ruleMessages","ruleName","unexpectedProp","physicalProperty","logicalProperty","unexpectedValue","property","physicalValue","logicalValue","unexpectedValueMixin","walk","node","slice","index","isDirRule","dirSelectorRegExp","test","selector","reportedDecls","WeakMap","createPlugin","method","opts","context","propExceptions","concat","Object","except","isProp2ConversionEnabled","isProp2Disabled","isProp4ConversionEnabled","isProp4Disabled","isAutofix","isContextAutofixing","direction","result","isMethodValid","validateOptions","actual","possible","isMethodIndifferent","isMethodAlways","reportUnexpectedProperty","report","message","messages","reportUnexpectedValue","value","reportUnexpectedValueMixin","validateOrAutofixPhysicalValuesAsLogical","physValMap","reportFn","forEach","regexp","isNodeMatchingDecl","isDeclAnException","valuekey","toLowerCase","set","filter","physProps","logicalProp","some","physProp","includes","blockStartDecl","blockStartIndex","inlineStartDecl","inlineStartIndex","blockEndDecl","blockEndIndex","inlineEndDecl","inlineEndIndex","firstInlineDecl","values","pop","cloneBefore","join","remove","isDeclReported","physicalDecl","Boolean","fix","disableProp2","disableProp4","match","RegExp","String","has"],"mappings":"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"}