summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/hacks/flex.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/autoprefixer/lib/hacks/flex.js')
-rw-r--r--node_modules/autoprefixer/lib/hacks/flex.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/hacks/flex.js b/node_modules/autoprefixer/lib/hacks/flex.js
new file mode 100644
index 0000000..e3b2fef
--- /dev/null
+++ b/node_modules/autoprefixer/lib/hacks/flex.js
@@ -0,0 +1,54 @@
+let list = require('postcss').list
+
+let flexSpec = require('./flex-spec')
+let Declaration = require('../declaration')
+
+class Flex extends Declaration {
+ /**
+ * Return property name by final spec
+ */
+ normalize() {
+ return 'flex'
+ }
+
+ /**
+ * Change property name for 2009 spec
+ */
+ prefixed(prop, prefix) {
+ let spec
+ ;[spec, prefix] = flexSpec(prefix)
+ if (spec === 2009) {
+ return prefix + 'box-flex'
+ }
+ return super.prefixed(prop, prefix)
+ }
+
+ /**
+ * Spec 2009 supports only first argument
+ * Spec 2012 disallows unitless basis
+ */
+ set(decl, prefix) {
+ let spec = flexSpec(prefix)[0]
+ if (spec === 2009) {
+ decl.value = list.space(decl.value)[0]
+ decl.value = Flex.oldValues[decl.value] || decl.value
+ return super.set(decl, prefix)
+ }
+ if (spec === 2012) {
+ let components = list.space(decl.value)
+ if (components.length === 3 && components[2] === '0') {
+ decl.value = components.slice(0, 2).concat('0px').join(' ')
+ }
+ }
+ return super.set(decl, prefix)
+ }
+}
+
+Flex.names = ['flex', 'box-flex']
+
+Flex.oldValues = {
+ auto: '1',
+ none: '0'
+}
+
+module.exports = Flex