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.
|
|
let flexSpec = require('./flex-spec') let Declaration = require('../declaration')
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 orient, dir 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
|