Spaces:
Build error
Build error
| let Declaration = require('../declaration') | |
| let flexSpec = require('./flex-spec') | |
| class FlexDirection 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 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) | |
| } | |
| /** | |
| * Return property name by final spec | |
| */ | |
| normalize() { | |
| return 'flex-direction' | |
| } | |
| /** | |
| * Clean two properties for 2009 spec | |
| */ | |
| 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 | |