summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/hacks/flex-flow.js
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:54:57 +0100
committerPhilipp Tanlak <philipp.tanlak@gmail.com>2025-11-24 20:57:48 +0100
commitb1e2c8fd5cb5dfa46bc440a12eafaf56cd844b1c (patch)
tree49d360fd6cbc6a2754efe93524ac47ff0fbe0f7d /node_modules/autoprefixer/lib/hacks/flex-flow.js
Docs
Diffstat (limited to 'node_modules/autoprefixer/lib/hacks/flex-flow.js')
-rw-r--r--node_modules/autoprefixer/lib/hacks/flex-flow.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/hacks/flex-flow.js b/node_modules/autoprefixer/lib/hacks/flex-flow.js
new file mode 100644
index 0000000..0223bd8
--- /dev/null
+++ b/node_modules/autoprefixer/lib/hacks/flex-flow.js
@@ -0,0 +1,53 @@
+let flexSpec = require('./flex-spec')
+let Declaration = require('../declaration')
+
+class FlexFlow extends Declaration {
+ /**
+ * Use two properties for 2009 spec
+ */
+ insert(decl, prefix, prefixes) {
+ let spec
+ ;[spec, prefix] = flexSpec(prefix)
+ if (spec !== 2009) {
+ return super.insert(decl, prefix, prefixes)
+ }
+ let values = decl.value
+ .split(/\s+/)
+ .filter(i => i !== 'wrap' && i !== 'nowrap' && 'wrap-reverse')
+ if (values.length === 0) {
+ return undefined
+ }
+
+ let already = decl.parent.some(
+ i =>
+ i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction'
+ )
+ if (already) {
+ return undefined
+ }
+
+ let value = values[0]
+ let orient = value.includes('row') ? 'horizontal' : 'vertical'
+ let dir = value.includes('reverse') ? 'reverse' : 'normal'
+
+ let cloned = this.clone(decl)
+ cloned.prop = prefix + 'box-orient'
+ cloned.value = orient
+ if (this.needCascade(decl)) {
+ cloned.raws.before = this.calcBefore(prefixes, decl, prefix)
+ }
+ decl.parent.insertBefore(decl, cloned)
+
+ cloned = this.clone(decl)
+ cloned.prop = prefix + 'box-direction'
+ cloned.value = dir
+ if (this.needCascade(decl)) {
+ cloned.raws.before = this.calcBefore(prefixes, decl, prefix)
+ }
+ return decl.parent.insertBefore(decl, cloned)
+ }
+}
+
+FlexFlow.names = ['flex-flow', 'box-direction', 'box-orient']
+
+module.exports = FlexFlow