summaryrefslogtreecommitdiff
path: root/node_modules/autoprefixer/lib/hacks/writing-mode.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/autoprefixer/lib/hacks/writing-mode.js')
-rw-r--r--node_modules/autoprefixer/lib/hacks/writing-mode.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/hacks/writing-mode.js b/node_modules/autoprefixer/lib/hacks/writing-mode.js
new file mode 100644
index 0000000..71c8eeb
--- /dev/null
+++ b/node_modules/autoprefixer/lib/hacks/writing-mode.js
@@ -0,0 +1,42 @@
+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