| | let Declaration = require('../declaration') |
| | let flexSpec = require('./flex-spec') |
| |
|
| | class FlexDirection extends Declaration { |
| | |
| | |
| | |
| | insert(decl, prefix, prefixes) { |
| | let spec |
| | ;[spec, prefix] = flexSpec(prefix) |
| | if (spec !== 2009) { |
| | return super.insert(decl, prefix, prefixes) |
| | } |
| | let already = decl.parent.some( |
| | i => |
| | i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction' |
| | ) |
| | if (already) { |
| | return undefined |
| | } |
| |
|
| | let v = decl.value |
| | let dir, orient |
| | if (v === 'inherit' || v === 'initial' || v === 'unset') { |
| | orient = v |
| | dir = v |
| | } else { |
| | orient = v.includes('row') ? 'horizontal' : 'vertical' |
| | dir = v.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) |
| | } |
| |
|
| | |
| | |
| | |
| | normalize() { |
| | return 'flex-direction' |
| | } |
| |
|
| | |
| | |
| | |
| | old(prop, prefix) { |
| | let spec |
| | ;[spec, prefix] = flexSpec(prefix) |
| | if (spec === 2009) { |
| | return [prefix + 'box-orient', prefix + 'box-direction'] |
| | } else { |
| | return super.old(prop, prefix) |
| | } |
| | } |
| | } |
| |
|
| | FlexDirection.names = ['flex-direction', 'box-direction', 'box-orient'] |
| |
|
| | module.exports = FlexDirection |
| |
|