summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/hacks/display-flex.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/autoprefixer/lib/hacks/display-flex.js')
-rw-r--r--node_modules/autoprefixer/lib/hacks/display-flex.js65
1 files changed, 65 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/hacks/display-flex.js b/node_modules/autoprefixer/lib/hacks/display-flex.js
new file mode 100644
index 0000000..8a5473e
--- /dev/null
+++ b/node_modules/autoprefixer/lib/hacks/display-flex.js
@@ -0,0 +1,65 @@
+let flexSpec = require('./flex-spec')
+let OldValue = require('../old-value')
+let Value = require('../value')
+
+class DisplayFlex extends Value {
+ constructor(name, prefixes) {
+ super(name, prefixes)
+ if (name === 'display-flex') {
+ this.name = 'flex'
+ }
+ }
+
+ /**
+ * Faster check for flex value
+ */
+ check(decl) {
+ return decl.prop === 'display' && decl.value === this.name
+ }
+
+ /**
+ * Change value for old specs
+ */
+ old(prefix) {
+ let prefixed = this.prefixed(prefix)
+ if (!prefixed) return undefined
+ return new OldValue(this.name, prefixed)
+ }
+
+ /**
+ * Return value by spec
+ */
+ prefixed(prefix) {
+ let spec, value
+ ;[spec, prefix] = flexSpec(prefix)
+
+ if (spec === 2009) {
+ if (this.name === 'flex') {
+ value = 'box'
+ } else {
+ value = 'inline-box'
+ }
+ } else if (spec === 2012) {
+ if (this.name === 'flex') {
+ value = 'flexbox'
+ } else {
+ value = 'inline-flexbox'
+ }
+ } else if (spec === 'final') {
+ value = this.name
+ }
+
+ return prefix + value
+ }
+
+ /**
+ * Add prefix to value depend on flebox spec version
+ */
+ replace(string, prefix) {
+ return this.prefixed(prefix)
+ }
+}
+
+DisplayFlex.names = ['display-flex', 'inline-flex']
+
+module.exports = DisplayFlex