summaryrefslogtreecommitdiff
path: root/node_modules/postcss-flexbugs-fixes/bugs
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:58:02 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:58:02 +0800
commitfee47f6414cc3ae9a88f3ee0ed20f1d6f2d9f556 (patch)
tree2b99dd57fc676a3819ef3cc46ac43df0043c2bb3 /node_modules/postcss-flexbugs-fixes/bugs
parent0379526e20e1ff212df23e6326741aa9c06df204 (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.js44
-rw-r--r--node_modules/postcss-flexbugs-fixes/bugs/bug6.js15
-rw-r--r--node_modules/postcss-flexbugs-fixes/bugs/bug81a.js27
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();
+ }
+};