43 lines
		
	
	
		
			1002 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1002 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
let Declaration = require('../declaration')
 | 
						|
 | 
						|
class WritingMode extends Declaration {
 | 
						|
  insert(decl, prefix, prefixes) {
 | 
						|
    if (prefix === '-ms-') {
 | 
						|
      let cloned = this.set(this.clone(decl), prefix)
 | 
						|
 | 
						|
      if (this.needCascade(decl)) {
 | 
						|
        cloned.raws.before = this.calcBefore(prefixes, decl, prefix)
 | 
						|
      }
 | 
						|
      let direction = 'ltr'
 | 
						|
 | 
						|
      decl.parent.nodes.forEach(i => {
 | 
						|
        if (i.prop === 'direction') {
 | 
						|
          if (i.value === 'rtl' || i.value === 'ltr') direction = i.value
 | 
						|
        }
 | 
						|
      })
 | 
						|
 | 
						|
      cloned.value = WritingMode.msValues[direction][decl.value] || decl.value
 | 
						|
      return decl.parent.insertBefore(decl, cloned)
 | 
						|
    }
 | 
						|
 | 
						|
    return super.insert(decl, prefix, prefixes)
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
WritingMode.names = ['writing-mode']
 | 
						|
 | 
						|
WritingMode.msValues = {
 | 
						|
  ltr: {
 | 
						|
    'horizontal-tb': 'lr-tb',
 | 
						|
    'vertical-lr': 'tb-lr',
 | 
						|
    'vertical-rl': 'tb-rl'
 | 
						|
  },
 | 
						|
  rtl: {
 | 
						|
    'horizontal-tb': 'rl-tb',
 | 
						|
    'vertical-lr': 'bt-lr',
 | 
						|
    'vertical-rl': 'bt-rl'
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
module.exports = WritingMode
 |