BVB Source Codes

reactide Show prefixes.js Source code

Return Download reactide: download prefixes.js Source code - Download reactide Source code - Type:.js
  1. (function() {
  2.   var AtRule, Browsers, Declaration, Prefixes, Processor, Resolution, Selector, Supports, Transition, Value, declsCache, utils, vendor;
  3.  
  4.   Declaration = require('./declaration');
  5.  
  6.   Resolution = require('./resolution');
  7.  
  8.   Transition = require('./transition');
  9.  
  10.   Processor = require('./processor');
  11.  
  12.   Supports = require('./supports');
  13.  
  14.   Browsers = require('./browsers');
  15.  
  16.   Selector = require('./selector');
  17.  
  18.   AtRule = require('./at-rule');
  19.  
  20.   Value = require('./value');
  21.  
  22.   utils = require('./utils');
  23.  
  24.   vendor = require('postcss/lib/vendor');
  25.  
  26.   Selector.hack(require('./hacks/fullscreen'));
  27.  
  28.   Selector.hack(require('./hacks/placeholder'));
  29.  
  30.   Declaration.hack(require('./hacks/flex'));
  31.  
  32.   Declaration.hack(require('./hacks/order'));
  33.  
  34.   Declaration.hack(require('./hacks/filter'));
  35.  
  36.   Declaration.hack(require('./hacks/grid-end'));
  37.  
  38.   Declaration.hack(require('./hacks/flex-flow'));
  39.  
  40.   Declaration.hack(require('./hacks/flex-grow'));
  41.  
  42.   Declaration.hack(require('./hacks/flex-wrap'));
  43.  
  44.   Declaration.hack(require('./hacks/grid-start'));
  45.  
  46.   Declaration.hack(require('./hacks/align-self'));
  47.  
  48.   Declaration.hack(require('./hacks/flex-basis'));
  49.  
  50.   Declaration.hack(require('./hacks/mask-border'));
  51.  
  52.   Declaration.hack(require('./hacks/align-items'));
  53.  
  54.   Declaration.hack(require('./hacks/flex-shrink'));
  55.  
  56.   Declaration.hack(require('./hacks/break-props'));
  57.  
  58.   Declaration.hack(require('./hacks/writing-mode'));
  59.  
  60.   Declaration.hack(require('./hacks/border-image'));
  61.  
  62.   Declaration.hack(require('./hacks/justify-items'));
  63.  
  64.   Declaration.hack(require('./hacks/align-content'));
  65.  
  66.   Declaration.hack(require('./hacks/border-radius'));
  67.  
  68.   Declaration.hack(require('./hacks/block-logical'));
  69.  
  70.   Declaration.hack(require('./hacks/grid-template'));
  71.  
  72.   Declaration.hack(require('./hacks/inline-logical'));
  73.  
  74.   Declaration.hack(require('./hacks/grid-row-align'));
  75.  
  76.   Declaration.hack(require('./hacks/transform-decl'));
  77.  
  78.   Declaration.hack(require('./hacks/flex-direction'));
  79.  
  80.   Declaration.hack(require('./hacks/image-rendering'));
  81.  
  82.   Declaration.hack(require('./hacks/justify-content'));
  83.  
  84.   Declaration.hack(require('./hacks/background-size'));
  85.  
  86.   Declaration.hack(require('./hacks/text-emphasis-position'));
  87.  
  88.   Value.hack(require('./hacks/stretch'));
  89.  
  90.   Value.hack(require('./hacks/gradient'));
  91.  
  92.   Value.hack(require('./hacks/pixelated'));
  93.  
  94.   Value.hack(require('./hacks/image-set'));
  95.  
  96.   Value.hack(require('./hacks/cross-fade'));
  97.  
  98.   Value.hack(require('./hacks/flex-values'));
  99.  
  100.   Value.hack(require('./hacks/display-flex'));
  101.  
  102.   Value.hack(require('./hacks/display-grid'));
  103.  
  104.   Value.hack(require('./hacks/filter-value'));
  105.  
  106.   declsCache = {};
  107.  
  108.   Prefixes = (function() {
  109.     function Prefixes(data1, browsers, options) {
  110.       var ref;
  111.       this.data = data1;
  112.       this.browsers = browsers;
  113.       this.options = options != null ? options : {};
  114.       ref = this.preprocess(this.select(this.data)), this.add = ref[0], this.remove = ref[1];
  115.       this.transition = new Transition(this);
  116.       this.processor = new Processor(this);
  117.     }
  118.  
  119.     Prefixes.prototype.cleaner = function() {
  120.       var empty;
  121.       if (!this.cleanerCache) {
  122.         if (this.browsers.selected.length) {
  123.           empty = new Browsers(this.browsers.data, []);
  124.           this.cleanerCache = new Prefixes(this.data, empty, this.options);
  125.         } else {
  126.           return this;
  127.         }
  128.       }
  129.       return this.cleanerCache;
  130.     };
  131.  
  132.     Prefixes.prototype.select = function(list) {
  133.       var add, all, data, name, notes, selected;
  134.       selected = {
  135.         add: {},
  136.         remove: {}
  137.       };
  138.       for (name in list) {
  139.         data = list[name];
  140.         add = data.browsers.map(function(i) {
  141.           var params;
  142.           params = i.split(' ');
  143.           return {
  144.             browser: params[0] + ' ' + params[1],
  145.             note: params[2]
  146.           };
  147.         });
  148.         notes = add.filter(function(i) {
  149.           return i.note;
  150.         }).map((function(_this) {
  151.           return function(i) {
  152.             return _this.browsers.prefix(i.browser) + ' ' + i.note;
  153.           };
  154.         })(this));
  155.         notes = utils.uniq(notes);
  156.         add = add.filter((function(_this) {
  157.           return function(i) {
  158.             return _this.browsers.isSelected(i.browser);
  159.           };
  160.         })(this)).map((function(_this) {
  161.           return function(i) {
  162.             var prefix;
  163.             prefix = _this.browsers.prefix(i.browser);
  164.             if (i.note) {
  165.               return prefix + ' ' + i.note;
  166.             } else {
  167.               return prefix;
  168.             }
  169.           };
  170.         })(this));
  171.         add = this.sort(utils.uniq(add));
  172.         if (this.options.flexbox === 'no-2009') {
  173.           add = add.filter(function(i) {
  174.             return i.indexOf('2009') === -1;
  175.           });
  176.         }
  177.         all = data.browsers.map((function(_this) {
  178.           return function(i) {
  179.             return _this.browsers.prefix(i);
  180.           };
  181.         })(this));
  182.         if (data.mistakes) {
  183.           all = all.concat(data.mistakes);
  184.         }
  185.         all = all.concat(notes);
  186.         all = utils.uniq(all);
  187.         if (add.length) {
  188.           selected.add[name] = add;
  189.           if (add.length < all.length) {
  190.             selected.remove[name] = all.filter(function(i) {
  191.               return add.indexOf(i) === -1;
  192.             });
  193.           }
  194.         } else {
  195.           selected.remove[name] = all;
  196.         }
  197.       }
  198.       return selected;
  199.     };
  200.  
  201.     Prefixes.prototype.sort = function(prefixes) {
  202.       return prefixes.sort(function(a, b) {
  203.         var aLength, bLength;
  204.         aLength = utils.removeNote(a).length;
  205.         bLength = utils.removeNote(b).length;
  206.         if (aLength === bLength) {
  207.           return b.length - a.length;
  208.         } else {
  209.           return bLength - aLength;
  210.         }
  211.       });
  212.     };
  213.  
  214.     Prefixes.prototype.preprocess = function(selected) {
  215.       var a, add, j, k, l, len, len1, len2, len3, len4, len5, len6, m, n, name, o, old, olds, p, prefix, prefixed, prefixes, prop, props, ref, ref1, ref2, ref3, remove, selector, value, values;
  216.       add = {
  217.         selectors: [],
  218.         '@supports': new Supports(Prefixes, this)
  219.       };
  220.       ref = selected.add;
  221.       for (name in ref) {
  222.         prefixes = ref[name];
  223.         if (name === '@keyframes' || name === '@viewport') {
  224.           add[name] = new AtRule(name, prefixes, this);
  225.         } else if (name === '@resolution') {
  226.           add[name] = new Resolution(name, prefixes, this);
  227.         } else if (this.data[name].selector) {
  228.           add.selectors.push(Selector.load(name, prefixes, this));
  229.         } else {
  230.           props = this.data[name].props;
  231.           if (props) {
  232.             value = Value.load(name, prefixes, this);
  233.             for (j = 0, len = props.length; j < len; j++) {
  234.               prop = props[j];
  235.               if (!add[prop]) {
  236.                 add[prop] = {
  237.                   values: []
  238.                 };
  239.               }
  240.               add[prop].values.push(value);
  241.             }
  242.           } else {
  243.             values = ((ref1 = add[name]) != null ? ref1.values : void 0) || [];
  244.             add[name] = Declaration.load(name, prefixes, this);
  245.             add[name].values = values;
  246.           }
  247.         }
  248.       }
  249.       remove = {
  250.         selectors: []
  251.       };
  252.       ref2 = selected.remove;
  253.       for (name in ref2) {
  254.         prefixes = ref2[name];
  255.         if (this.data[name].selector) {
  256.           selector = Selector.load(name, prefixes);
  257.           for (k = 0, len1 = prefixes.length; k < len1; k++) {
  258.             prefix = prefixes[k];
  259.             remove.selectors.push(selector.old(prefix));
  260.           }
  261.         } else if (name === '@keyframes' || name === '@viewport') {
  262.           for (l = 0, len2 = prefixes.length; l < len2; l++) {
  263.             prefix = prefixes[l];
  264.             prefixed = '@' + prefix + name.slice(1);
  265.             remove[prefixed] = {
  266.               remove: true
  267.             };
  268.           }
  269.         } else if (name === '@resolution') {
  270.           remove[name] = new Resolution(name, prefixes, this);
  271.         } else {
  272.           props = this.data[name].props;
  273.           if (props) {
  274.             value = Value.load(name, [], this);
  275.             for (m = 0, len3 = prefixes.length; m < len3; m++) {
  276.               prefix = prefixes[m];
  277.               old = value.old(prefix);
  278.               if (old) {
  279.                 for (n = 0, len4 = props.length; n < len4; n++) {
  280.                   prop = props[n];
  281.                   if (!remove[prop]) {
  282.                     remove[prop] = {};
  283.                   }
  284.                   if (!remove[prop].values) {
  285.                     remove[prop].values = [];
  286.                   }
  287.                   remove[prop].values.push(old);
  288.                 }
  289.               }
  290.             }
  291.           } else {
  292.             for (o = 0, len5 = prefixes.length; o < len5; o++) {
  293.               prefix = prefixes[o];
  294.               prop = vendor.unprefixed(name);
  295.               olds = this.decl(name).old(name, prefix);
  296.               if (name === 'align-self') {
  297.                 a = (ref3 = add[name]) != null ? ref3.prefixes : void 0;
  298.                 if (a) {
  299.                   if (prefix === '-webkit- 2009' && a.indexOf('-webkit-') !== -1) {
  300.                     continue;
  301.                   } else if (prefix === '-webkit-' && a.indexOf('-webkit- 2009') !== -1) {
  302.                     continue;
  303.                   }
  304.                 }
  305.               }
  306.               for (p = 0, len6 = olds.length; p < len6; p++) {
  307.                 prefixed = olds[p];
  308.                 if (!remove[prefixed]) {
  309.                   remove[prefixed] = {};
  310.                 }
  311.                 remove[prefixed].remove = true;
  312.               }
  313.             }
  314.           }
  315.         }
  316.       }
  317.       return [add, remove];
  318.     };
  319.  
  320.     Prefixes.prototype.decl = function(prop) {
  321.       var decl;
  322.       decl = declsCache[prop];
  323.       if (decl) {
  324.         return decl;
  325.       } else {
  326.         return declsCache[prop] = Declaration.load(prop);
  327.       }
  328.     };
  329.  
  330.     Prefixes.prototype.unprefixed = function(prop) {
  331.       var value;
  332.       value = this.normalize(vendor.unprefixed(prop));
  333.       if (value === 'flex-direction') {
  334.         value = 'flex-flow';
  335.       }
  336.       return value;
  337.     };
  338.  
  339.     Prefixes.prototype.normalize = function(prop) {
  340.       return this.decl(prop).normalize(prop);
  341.     };
  342.  
  343.     Prefixes.prototype.prefixed = function(prop, prefix) {
  344.       prop = vendor.unprefixed(prop);
  345.       return this.decl(prop).prefixed(prop, prefix);
  346.     };
  347.  
  348.     Prefixes.prototype.values = function(type, prop) {
  349.       var data, global, ref, ref1, values;
  350.       data = this[type];
  351.       global = (ref = data['*']) != null ? ref.values : void 0;
  352.       values = (ref1 = data[prop]) != null ? ref1.values : void 0;
  353.       if (global && values) {
  354.         return utils.uniq(global.concat(values));
  355.       } else {
  356.         return global || values || [];
  357.       }
  358.     };
  359.  
  360.     Prefixes.prototype.group = function(decl) {
  361.       var checker, index, length, rule, unprefixed;
  362.       rule = decl.parent;
  363.       index = rule.index(decl);
  364.       length = rule.nodes.length;
  365.       unprefixed = this.unprefixed(decl.prop);
  366.       checker = (function(_this) {
  367.         return function(step, callback) {
  368.           var other;
  369.           index += step;
  370.           while (index >= 0 && index < length) {
  371.             other = rule.nodes[index];
  372.             if (other.type === 'decl') {
  373.               if (step === -1 && other.prop === unprefixed) {
  374.                 if (!Browsers.withPrefix(other.value)) {
  375.                   break;
  376.                 }
  377.               }
  378.               if (_this.unprefixed(other.prop) !== unprefixed) {
  379.                 break;
  380.               } else if (callback(other) === true) {
  381.                 return true;
  382.               }
  383.               if (step === +1 && other.prop === unprefixed) {
  384.                 if (!Browsers.withPrefix(other.value)) {
  385.                   break;
  386.                 }
  387.               }
  388.             }
  389.             index += step;
  390.           }
  391.           return false;
  392.         };
  393.       })(this);
  394.       return {
  395.         up: function(callback) {
  396.           return checker(-1, callback);
  397.         },
  398.         down: function(callback) {
  399.           return checker(+1, callback);
  400.         }
  401.       };
  402.     };
  403.  
  404.     return Prefixes;
  405.  
  406.   })();
  407.  
  408.   module.exports = Prefixes;
  409.  
  410. }).call(this);
  411.  
downloadprefixes.js Source code - Download reactide Source code
Related Source Codes/Software:
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
postal - 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top