You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.3 KiB
65 lines
1.3 KiB
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 |
|
} |
|
|
|
/** |
|
* 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) |
|
} |
|
|
|
/** |
|
* Change value for old specs |
|
*/ |
|
old(prefix) { |
|
let prefixed = this.prefixed(prefix) |
|
if (!prefixed) return undefined |
|
return new OldValue(this.name, prefixed) |
|
} |
|
} |
|
|
|
DisplayFlex.names = ['display-flex', 'inline-flex'] |
|
|
|
module.exports = DisplayFlex
|
|
|