| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							- let FractionJs = require('fraction.js')
 
- let Prefixer = require('./prefixer')
 
- let utils = require('./utils')
 
- const REGEXP = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpcm|dpi|x)/gi
 
- const SPLIT = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpcm|dpi|x)/i
 
- class Resolution extends Prefixer {
 
-   /**
 
-    * Remove prefixed queries
 
-    */
 
-   clean(rule) {
 
-     if (!this.bad) {
 
-       this.bad = []
 
-       for (let prefix of this.prefixes) {
 
-         this.bad.push(this.prefixName(prefix, 'min'))
 
-         this.bad.push(this.prefixName(prefix, 'max'))
 
-       }
 
-     }
 
-     rule.params = utils.editList(rule.params, queries => {
 
-       return queries.filter(query => this.bad.every(i => !query.includes(i)))
 
-     })
 
-   }
 
-   /**
 
-    * Return prefixed query name
 
-    */
 
-   prefixName(prefix, name) {
 
-     if (prefix === '-moz-') {
 
-       return name + '--moz-device-pixel-ratio'
 
-     } else {
 
-       return prefix + name + '-device-pixel-ratio'
 
-     }
 
-   }
 
-   /**
 
-    * Return prefixed query
 
-    */
 
-   prefixQuery(prefix, name, colon, value, units) {
 
-     value = new FractionJs(value)
 
-     // 1dpcm = 2.54dpi
 
-     // 1dppx = 96dpi
 
-     if (units === 'dpi') {
 
-       value = value.div(96)
 
-     } else if (units === 'dpcm') {
 
-       value = value.mul(2.54).div(96)
 
-     }
 
-     value = value.simplify()
 
-     if (prefix === '-o-') {
 
-       value = value.n + '/' + value.d
 
-     }
 
-     return this.prefixName(prefix, name) + colon + value
 
-   }
 
-   /**
 
-    * Add prefixed queries
 
-    */
 
-   process(rule) {
 
-     let parent = this.parentPrefix(rule)
 
-     let prefixes = parent ? [parent] : this.prefixes
 
-     rule.params = utils.editList(rule.params, (origin, prefixed) => {
 
-       for (let query of origin) {
 
-         if (
 
-           !query.includes('min-resolution') &&
 
-           !query.includes('max-resolution')
 
-         ) {
 
-           prefixed.push(query)
 
-           continue
 
-         }
 
-         for (let prefix of prefixes) {
 
-           let processed = query.replace(REGEXP, str => {
 
-             let parts = str.match(SPLIT)
 
-             return this.prefixQuery(
 
-               prefix,
 
-               parts[1],
 
-               parts[2],
 
-               parts[3],
 
-               parts[4]
 
-             )
 
-           })
 
-           prefixed.push(processed)
 
-         }
 
-         prefixed.push(query)
 
-       }
 
-       return utils.uniq(prefixed)
 
-     })
 
-   }
 
- }
 
- module.exports = Resolution
 
 
  |