diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:58:02 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:58:02 +0800 |
| commit | fee47f6414cc3ae9a88f3ee0ed20f1d6f2d9f556 (patch) | |
| tree | 2b99dd57fc676a3819ef3cc46ac43df0043c2bb3 /node_modules/postcss-flexbugs-fixes/bugs | |
| parent | 0379526e20e1ff212df23e6326741aa9c06df204 (diff) | |
added plugin from postcss: postcss-fixes rucksack-css
Diffstat (limited to 'node_modules/postcss-flexbugs-fixes/bugs')
| -rw-r--r-- | node_modules/postcss-flexbugs-fixes/bugs/bug4.js | 44 | ||||
| -rw-r--r-- | node_modules/postcss-flexbugs-fixes/bugs/bug6.js | 15 | ||||
| -rw-r--r-- | node_modules/postcss-flexbugs-fixes/bugs/bug81a.js | 27 |
3 files changed, 86 insertions, 0 deletions
diff --git a/node_modules/postcss-flexbugs-fixes/bugs/bug4.js b/node_modules/postcss-flexbugs-fixes/bugs/bug4.js new file mode 100644 index 00000000..71bf0af1 --- /dev/null +++ b/node_modules/postcss-flexbugs-fixes/bugs/bug4.js @@ -0,0 +1,44 @@ +var postcss = require('postcss'); + +function shouldSetZeroBasis(basisValue) { + if (!basisValue) { + return false; + } + return basisValue === '0' || basisValue.replace(/\s/g, '') === '0px'; +} + +function properBasis(basis) { + if (shouldSetZeroBasis(basis)) { + return '0%'; + } + return basis; +} + +module.exports = function(decl) { + if (decl.prop === 'flex') { + var values = postcss.list.space(decl.value); + + // set default values + var flexGrow = '0'; + var flexShrink = '1'; + var flexBasis = '0%'; + + if (values[0]) { + flexGrow = values[0]; + } + + if (values[1]) { + if (!isNaN(values[1])) { + flexShrink = values[1]; + } else { + flexBasis = values[1]; + } + } + + if (values[2]) { + flexBasis = values[2]; + } + + decl.value = flexGrow + ' ' + flexShrink + ' ' + properBasis(flexBasis); + } +}; diff --git a/node_modules/postcss-flexbugs-fixes/bugs/bug6.js b/node_modules/postcss-flexbugs-fixes/bugs/bug6.js new file mode 100644 index 00000000..b59a9ab5 --- /dev/null +++ b/node_modules/postcss-flexbugs-fixes/bugs/bug6.js @@ -0,0 +1,15 @@ +var postcss = require('postcss'); + +module.exports = function(decl) { + if (decl.prop === 'flex') { + var values = postcss.list.space(decl.value); + var flexGrow = values[0]; + var flexShrink = values[1] || '1'; + var flexBasis = values[2] || '0%'; + // Safari seems to hate '0%' and the others seems to make do with a nice value when basis is missing, + // so if we see a '0%', just remove it. This way it'll get adjusted for any other cases where '0%' is + // already defined somewhere else. + if(flexBasis === '0%') flexBasis = null; + decl.value = flexGrow + ' ' + flexShrink + (flexBasis ? ' ' + flexBasis : ''); + } +}; diff --git a/node_modules/postcss-flexbugs-fixes/bugs/bug81a.js b/node_modules/postcss-flexbugs-fixes/bugs/bug81a.js new file mode 100644 index 00000000..c232d063 --- /dev/null +++ b/node_modules/postcss-flexbugs-fixes/bugs/bug81a.js @@ -0,0 +1,27 @@ +var postcss = require('postcss'); + +module.exports = function(decl) { + var regex = /(\d{1,}) (\d{1,}) (calc\(.*?\))/g; + var matches = regex.exec(decl.value); + if (decl.prop === 'flex' && matches) { + var grow = postcss.decl({ + prop: 'flex-grow', + value: matches[1], + source: decl.source + }); + var shrink = postcss.decl({ + prop: 'flex-shrink', + value: matches[2], + source: decl.source + }); + var basis = postcss.decl({ + prop: 'flex-basis', + value: matches[3], + source: decl.source + }); + decl.parent.insertBefore(decl, grow); + decl.parent.insertBefore(decl, shrink); + decl.parent.insertBefore(decl, basis); + decl.remove(); + } +}; |
