Critical Snapshot
';
1470 | divHTML += '
';
1471 | divHTML += content;
1472 | divHTML += '
';
1473 | divHTML += '
';
1474 | divHTML += '';
1475 | divHTML += '';
1476 | divHTML += '';
1477 | divHTML += '
';
1478 | divHTML += '
';
1479 |
1480 | popup.innerHTML = divHTML;
1481 |
1482 | return popup;
1483 | };
1484 |
1485 | var minifyPopup = function minifyPopup() {
1486 | popup.className = 'CriticalSnap__minified';
1487 | };
1488 |
1489 | var destroyPopup = function destroyPopup() {
1490 | copyButton.removeEventListener('click', copyGeneratedStylesheet);
1491 | previewButton.removeEventListener('click', previewGeneratedStylesheet);
1492 | outputElement.removeEventListener('click', selectGeneratedStylesheet);
1493 | containerElement.removeEventListener('click', closePopup);
1494 | popup.remove();
1495 | };
1496 |
1497 | // scroll to top before generating CSS
1498 | document.body.scrollTop = 0;
1499 |
1500 | var snapshot = new _CriticalCSS2.default(window, document);
1501 | var stylesheet = snapshot.generate();
1502 |
1503 | var popup = createPopup(stylesheet);
1504 | document.body.appendChild(popup);
1505 |
1506 | var copyButton = document.getElementById('CriticalSnap__copy');
1507 | var previewButton = document.getElementById('CriticalSnap__preview');
1508 | var outputElement = document.getElementById('CriticalSnap__output-css');
1509 | var containerElement = document.getElementById('CriticalSnap');
1510 |
1511 | copyButton.addEventListener('click', copyGeneratedStylesheet);
1512 | previewButton.addEventListener('click', previewGeneratedStylesheet);
1513 | outputElement.addEventListener('click', selectGeneratedStylesheet);
1514 | containerElement.addEventListener('click', closePopup);
1515 | };
1516 |
1517 | exports.showPopup = showPopup;
1518 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvcHVwLmpzeCJdLCJuYW1lcyI6WyJzaG93UG9wdXAiLCJjb3B5R2VuZXJhdGVkU3R5bGVzaGVldCIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJzdG9wUHJvcGFnYXRpb24iLCJkb2N1bWVudCIsImV4ZWNDb21tYW5kIiwiY29weUJ1dHRvbiIsInN0eWxlIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJpbm5lckhUTUwiLCJwcmV2aWV3R2VuZXJhdGVkU3R5bGVzaGVldCIsInByZXZpZXdTdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZXNoZWV0IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhcHBlbmRDaGlsZCIsInByZXZpZXdCdXR0b24iLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVtb3ZlIiwibWluaWZ5UG9wdXAiLCJzZWxlY3RHZW5lcmF0ZWRTdHlsZXNoZWV0IiwiY2xvc2VQb3B1cCIsImRlc3Ryb3lQb3B1cCIsImNyZWF0ZVBvcHVwIiwiY29udGVudCIsInBvcHVwIiwiaWQiLCJkaXZIVE1MIiwiY2xhc3NOYW1lIiwib3V0cHV0RWxlbWVudCIsImNvbnRhaW5lckVsZW1lbnQiLCJib2R5Iiwic2Nyb2xsVG9wIiwic25hcHNob3QiLCJ3aW5kb3ciLCJnZW5lcmF0ZSIsImdldEVsZW1lbnRCeUlkIiwiYWRkRXZlbnRMaXN0ZW5lciJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTtBQUNBLFNBQVNBLFNBQVQsR0FBcUI7QUFDakIsUUFBSUMsMEJBQTBCLFNBQTFCQSx1QkFBMEIsQ0FBU0MsS0FBVCxFQUFnQjtBQUMxQ0EsY0FBTUMsY0FBTjtBQUNBRCxjQUFNRSxlQUFOOztBQUVBLGtDQUFXLDBCQUFYO0FBQ0FDLGlCQUFTQyxXQUFULENBQXFCLE1BQXJCO0FBQ0FDLG1CQUFXQyxLQUFYLENBQWlCQyxlQUFqQixHQUFtQyxTQUFuQztBQUNBRixtQkFBV0MsS0FBWCxDQUFpQkUs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QXdDM0IsMEJBQXhDO0FBQ0FtQixrQkFBY1EsZ0JBQWQsQ0FBK0IsT0FBL0IsRUFBd0NqQix5QkFBeEM7QUFDQVUscUJBQWlCTyxnQkFBakIsQ0FBa0MsT0FBbEMsRUFBMkNoQixVQUEzQztBQUNIOztRQUVRdkIsUyxHQUFBQSxTIiwiZmlsZSI6InBvcHVwLmpzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBnZXROb2RlQ1NTUnVsZXMgZnJvbSAnLi4vcG9seWZpbGxzL2dldC1tYXRjaGVkLWNzcy1ydWxlcy5qc3gnO1xuaW1wb3J0IENyaXRpY2FsQ1NTIGZyb20gJy4uL2dlbmVyYXRvcnMvQ3JpdGljYWxDU1MuanN4JztcbmltcG9ydCBzZWxlY3RUZXh0IGZyb20gJy4uL3V0aWxpdGllcy9zZWxlY3RUZXh0LmpzeCc7XG5pbXBvcnQgcmVtb3ZlRG9jdW1lbnRTdHlsZXMgZnJvbSAnLi4vdXRpbGl0aWVzL3JlbW92ZURvY3VtZW50U3R5bGVzLmpzeCc7XG5cbi8vIEdlbmVyYXRlcyB0aGUgcG9wdXAgd2l0aCB3aWNoIHRoZSB1c2VyIHdpbGwgaW50ZXJhY3RcbmZ1bmN0aW9uIHNob3dQb3B1cCgpIHtcbiAgICB2YXIgY29weUdlbmVyYXRlZFN0eWxlc2hlZXQgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBzZWxlY3RUZXh0KCdDcml0aWNhbFNuYXBfX291dHB1dC1jc3MnKTtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2NvcHknKTtcbiAgICAgICAgY29weUJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiMzNEE4NTNcIjtcbiAgICAgICAgY29weUJ1dHRvbi5zdHlsZS5jb2xvciA9IFwiI2ZmZlwiO1xuICAgICAgICBjb3B5QnV0dG9uLmlubmVySFRNTCA9IFwiQ29waWVkIDxzcGFuPvCfkY08L3NwYW4+XCI7XG4gICAgfTtcblxuICAgIHZhciBwcmV2aWV3R2VuZXJhdGVkU3R5bGVzaGVldCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgIHJlbW92ZURvY3VtZW50U3R5bGVzKCk7XG5cbiAgICAgICAgdmFyIHByZXZpZXdTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgIHByZXZpZXdTdHlsZS5pbm5lckhUTUwgPSBzdHlsZXNoZWV0O1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHByZXZpZXdTdHlsZSk7XG5cbiAgICAgICAgcHJldmlld0J1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHByZXZpZXdHZW5lcmF0ZWRTdHlsZXNoZWV0KTtcbiAgICAgICAgcHJldmlld0J1dHRvbi5yZW1vdmUoKTtcblxuICAgICAgICBtaW5pZnlQb3B1cCgpO1xuICAgIH07XG5cbiAgICB2YXIgc2VsZWN0R2VuZXJhdGVkU3R5bGVzaGVldCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBzZWxlY3RUZXh0KCdDcml0aWNhbFNuYXBfX291dHB1dC1jc3MnKTtcbiAgICB9O1xuXG4gICAgdmFyIGNsb3NlUG9wdXAgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICBpZiAoZXZlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRlc3Ryb3lQb3B1cCgpO1xuICAgIH07XG5cbiAgICB2YXIgY3JlYXRlUG9wdXAgPSBmdW5jdGlvbihjb250ZW50KSB7XG4gICAgICAgIHZhciBwb3B1cCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBwb3B1cC5pZCA9ICdDcml0aWNhbFNuYXAnO1xuXG4gICAgICAgIHZhciBkaXZIVE1MID0gJyc7XG4gICAgICAgIGRpdkhUTUwgKz0gICc8ZGl2PjxoMT5Dcml0aWNhbCBTbmFwc2hvdDwvaDE+JztcbiAgICAgICAgZGl2SFRNTCArPSAgICAgICc8cCBpZD1cIkNyaXRpY2FsU25hcF9fb3V0cHV0LWNzc1wiPic7XG4gICAgICAgIGRpdkhUTUwgKz0gICAgICAgICAgY29udGVudFxuICAgICAgICBkaXZIVE1MICs9ICAgICAgJzwvcD4nO1xuICAgICAgICBkaXZIVE1MICs9ICAgICAgJzxkaXYgaWQ9XCJDcml0aWNhbFNuYXBfX2J1dHRvbnNcIj4nO1xuICAgICAgICBkaXZIVE1MICs9ICAgICAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIkNyaXRpY2FsU25hcF9fYnV0dG9uXCIgaWQ9XCJDcml0aWNhbFNuYXBfX2NvcHlcIj5Db3B5PC9idXR0b24+JztcbiAgICAgICAgZGl2SFRNTCArPSAgICAgICAgICAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJDcml0aWNhbFNuYXBfX2J1dHRvblwiIGlkPVwiQ3JpdGljYWxTbmFwX19wcmV2aWV3XCI+UHJldmlldzwvYnV0dG9uPic7XG4gICAgICAgIGRpdkhUTUwgKz0gICAgICAgICAgJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiQ3JpdGljYWxTbmFwX19idXR0b25cIiBpZD1cIkNyaXRpY2FsU25hcF9fY2xvc2VcIj5DbG9zZTwvYnV0dG9uPic7XG4gICAgICAgIGRpdkhUTUwgKz0gICAgICAnPC9kaXY+JztcbiAgICAgICAgZGl2SFRNTCArPSAgJzwvZGl2Pic7XG5cbiAgICAgICAgcG9wdXAuaW5uZXJIVE1MID0gZGl2SFRNTDtcblxuICAgICAgICByZXR1cm4gcG9wdXA7XG4gICAgfTtcblxuICAgIHZhciBtaW5pZnlQb3B1cCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBwb3B1cC5jbGFzc05hbWUgPSAnQ3JpdGljYWxTbmFwX19taW5pZmllZCc7XG4gICAgfTtcblxuICAgIHZhciBkZXN0cm95UG9wdXAgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgY29weUJ1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGNvcHlHZW5lcmF0ZWRTdHlsZXNoZWV0KTtcbiAgICAgICAgcHJldmlld0J1dHRvbi5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHByZXZpZXdHZW5lcmF0ZWRTdHlsZXNoZWV0KTtcbiAgICAgICAgb3V0cHV0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHNlbGVjdEdlbmVyYXRlZFN0eWxlc2hlZXQpO1xuICAgICAgICBjb250YWluZXJFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQb3B1cCk7XG4gICAgICAgIHBvcHVwLnJlbW92ZSgpO1xuICAgIH07XG5cbiAgICAvLyBzY3JvbGwgdG8gdG9wIGJlZm9yZSBnZW5lcmF0aW5nIENTU1xuICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDtcblxuICAgIHZhciBzbmFwc2hvdCA9IG5ldyBDcml0aWNhbENTUyh3aW5kb3csIGRvY3VtZW50KTtcbiAgICB2YXIgc3R5bGVzaGVldCA9IHNuYXBzaG90LmdlbmVyYXRlKCk7XG5cbiAgICB2YXIgcG9wdXAgPSBjcmVhdGVQb3B1cChzdHlsZXNoZWV0KTtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBvcHVwKTtcblxuICAgIHZhciBjb3B5QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0NyaXRpY2FsU25hcF9fY29weScpO1xuICAgIHZhciBwcmV2aWV3QnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0NyaXRpY2FsU25hcF9fcHJldmlldycpO1xuICAgIHZhciBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0NyaXRpY2FsU25hcF9fb3V0cHV0LWNzcycpO1xuICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0NyaXRpY2FsU25hcCcpO1xuXG4gICAgY29weUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNvcHlHZW5lcmF0ZWRTdHlsZXNoZWV0KTtcbiAgICBwcmV2aWV3QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgcHJldmlld0dlbmVyYXRlZFN0eWxlc2hlZXQpO1xuICAgIG91dHB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBzZWxlY3RHZW5lcmF0ZWRTdHlsZXNoZWV0KTtcbiAgICBjb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2xvc2VQb3B1cCk7XG59O1xuXG5leHBvcnQgeyBzaG93UG9wdXAgfTtcbiJdfQ==
1519 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/components/popup.jsx","/components")
1520 | },{"../generators/CriticalCSS.jsx":7,"../polyfills/get-matched-css-rules.jsx":8,"../utilities/removeDocumentStyles.jsx":10,"../utilities/selectText.jsx":11,"buffer":2,"rH1JPG":4}],6:[function(require,module,exports){
1521 | (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
1522 | 'use strict';
1523 |
1524 | var _popup = require('./components/popup.jsx');
1525 |
1526 | (0, _popup.showPopup)();
1527 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZha2VfNGM0Njg4NzUuanMiXSwibmFtZXMiOlsiX3BvcHVwIiwicmVxdWlyZSIsInNob3dQb3B1cCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsSUFBSUEsU0FBU0MsUUFBUSx3QkFBUixDQUFiOztBQUVBLENBQUMsR0FBR0QsT0FBT0UsU0FBWCIsImZpbGUiOiJmYWtlXzRjNDY4ODc1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3BvcHVwID0gcmVxdWlyZSgnLi9jb21wb25lbnRzL3BvcHVwLmpzeCcpO1xuXG4oMCwgX3BvcHVwLnNob3dQb3B1cCkoKTsiXX0=
1528 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/fake_4c468875.js","/")
1529 | },{"./components/popup.jsx":5,"buffer":2,"rH1JPG":4}],7:[function(require,module,exports){
1530 | (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
1531 | 'use strict';
1532 |
1533 | Object.defineProperty(exports, "__esModule", {
1534 | value: true
1535 | });
1536 |
1537 | var _explainWarning = require('../utilities/explainWarning.jsx');
1538 |
1539 | var _explainWarning2 = _interopRequireDefault(_explainWarning);
1540 |
1541 | var _getMatchedCssRules = require('../polyfills/get-matched-css-rules.jsx');
1542 |
1543 | var _getMatchedCssRules2 = _interopRequireDefault(_getMatchedCssRules);
1544 |
1545 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1546 |
1547 | // CSS generator
1548 | var CriticalCSS = function CriticalCSS(window, document, options) {
1549 | var options = options || {};
1550 | var parsedCSS = {};
1551 |
1552 | var pushCSS = function pushCSS(rule) {
1553 | if (!!parsedCSS[rule.selectorText] === false) parsedCSS[rule.selectorText] = {};
1554 |
1555 | var styles = rule.style.cssText.split(/;(?![A-Za-z0-9])/);
1556 |
1557 | styles.forEach(function (style) {
1558 | if (!!style === false) return;
1559 |
1560 | var pair = style.split(': ');
1561 | pair[0] = pair[0].trim();
1562 | pair[1] = pair[1].trim();
1563 | parsedCSS[rule.selectorText][pair[0]] = pair[1];
1564 | });
1565 | };
1566 |
1567 | var parseTree = function parseTree() {
1568 | var height = window.innerHeight;
1569 | var walker = document.createTreeWalker(document, NodeFilter.SHOW_ELEMENT, function (node) {
1570 | return NodeFilter.FILTER_ACCEPT;
1571 | }, true);
1572 |
1573 | while (walker.nextNode()) {
1574 | var node = walker.currentNode;
1575 | var rect = node.getBoundingClientRect();
1576 | if (rect.top < height || options.scanFullPage) {
1577 | var rules;
1578 | if (typeof window.getMatchedCSSRules !== 'function') {
1579 | rules = (0, _getMatchedCssRules2.default)(node);
1580 | } else {
1581 | rules = window.getMatchedCSSRules(node);
1582 |
1583 | (0, _explainWarning2.default)();
1584 | }
1585 | if (!rules) rules = (0, _getMatchedCssRules2.default)(node);
1586 |
1587 | if (!!rules) {
1588 | for (var i = 0; i < rules.length; i++) {
1589 | pushCSS(rules[i]);
1590 | }
1591 | }
1592 | }
1593 | }
1594 | };
1595 |
1596 | this.generate = function () {
1597 | var outputCSS = '';
1598 |
1599 | for (var key in parsedCSS) {
1600 | outputCSS += key + '{';
1601 |
1602 | for (var innerKey in parsedCSS[key]) {
1603 | outputCSS += innerKey + ':' + parsedCSS[key][innerKey] + ';';
1604 | }
1605 |
1606 | outputCSS += '}';
1607 | }
1608 |
1609 | return outputCSS;
1610 | };
1611 |
1612 | parseTree();
1613 | };
1614 |
1615 | exports.default = CriticalCSS;
1616 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsQ1NTLmpzeCJdLCJuYW1lcyI6WyJDcml0aWNhbENTUyIsIndpbmRvdyIsImRvY3VtZW50Iiwib3B0aW9ucyIsInBhcnNlZENTUyIsInB1c2hDU1MiLCJydWxlIiwic2VsZWN0b3JUZXh0Iiwic3R5bGVzIiwic3R5bGUiLCJjc3NUZXh0Iiwic3BsaXQiLCJmb3JFYWNoIiwicGFpciIsInRyaW0iLCJwYXJzZVRyZWUiLCJoZWlnaHQiLCJpbm5lckhlaWdodCIsIndhbGtlciIsImNyZWF0ZVRyZWVXYWxrZXIiLCJOb2RlRmlsdGVyIiwiU0hPV19FTEVNRU5UIiwibm9kZSIsIkZJTFRFUl9BQ0NFUFQiLCJuZXh0Tm9kZSIsImN1cnJlbnROb2RlIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsInNjYW5GdWxsUGFnZSIsInJ1bGVzIiwiZ2V0TWF0Y2hlZENTU1J1bGVzIiwiaSIsImxlbmd0aCIsImdlbmVyYXRlIiwib3V0cHV0Q1NTIiwia2V5IiwiaW5uZXJLZXkiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7OztBQUNBO0FBQ0EsSUFBSUEsY0FBYyxTQUFkQSxXQUFjLENBQVNDLE1BQVQsRUFBaUJDLFFBQWpCLEVBQTJCQyxPQUEzQixFQUFvQztBQUNsRCxRQUFJQSxVQUFVQSxXQUFXLEVBQXpCO0FBQ0EsUUFBSUMsWUFBWSxFQUFoQjs7QUFFQSxRQUFJQyxVQUFVLFNBQVZBLE9BQVUsQ0FBU0MsSUFBVCxFQUFlO0FBQ3pCLFlBQUcsQ0FBQyxDQUFDRixVQUFVRSxLQUFLQyxZQUFmLENBQUYsS0FBbUMsS0FBdEMsRUFBNkNILFVBQVVFLEtBQUtDLFlBQWYsSUFBK0IsRUFBL0I7O0FBRTdDLFlBQUlDLFNBQVNGLEtBQUtHLEtBQUwsQ0FBV0MsT0FBWCxDQUFtQkMsS0FBbkIsQ0FBeUIsa0JBQXpCLENBQWI7O0FBRUFILGVBQU9JLE9BQVAsQ0FBZSxVQUFTSCxLQUFULEVBQWdCO0FBQzNCLGdCQUFHLENBQUMsQ0FBQ0EsS0FBRixLQUFZLEtBQWYsRUFBc0I7O0FBRXRCLGdCQUFJSSxPQUFPSixNQUFNRSxLQUFOLENBQVksSUFBWixDQUFYO0FBQ0FFLGlCQUFLLENBQUwsSUFBVUEsS0FBSyxDQUFMLEVBQVFDLElBQVIsRUFBVjtBQUNBRCxpQkFBSyxDQUFMLElBQVVBLEtBQUssQ0FBTCxFQUFRQyxJQUFSLEVBQVY7QUFDQVYsc0JBQVVFLEtBQUtDLFlBQWYsRUFBNkJNLEtBQUssQ0FBTCxDQUE3QixJQUF3Q0EsS0FBSyxDQUFMLENBQXhDO0FBRUgsU0FSRDtBQVNILEtBZEQ7O0FBZ0JBLFFBQUlFLFlBQVksU0FBWkEsU0FBWSxHQUFXO0FBQ3ZCLFlBQUlDLFNBQVNmLE9BQU9nQixXQUFwQjtBQUNBLFlBQUlDLFNBQVNoQixTQUFTaUIsZ0JBQVQsQ0FBMEJqQixRQUExQixFQUFvQ2tCLFdBQVdDLFlBQS9DLEVBQTZELFVBQVNDLElBQVQsRUFBZTtBQUFFLG1CQUFPRixXQUFXRyxhQUFsQjtBQUFrQyxTQUFoSCxFQUFrSCxJQUFsSCxDQUFiOztBQUVBLGVBQU1MLE9BQU9NLFFBQVAsRUFBTixFQUF5QjtBQUNyQixnQkFBSUYsT0FBT0osT0FBT08sV0FBbEI7QUFDQSxnQkFBSUMsT0FBT0osS0FBS0sscUJBQUwsRUFBWDtBQUNBLGdCQUFHRCxLQUFLRSxHQUFMLEdBQVdaLE1BQVgsSUFBcUJiLFFBQVEwQixZQUFoQyxFQUE4QztBQUMxQyxvQkFBSUMsS0FBSjtBQUNBLG9CQUFLLE9BQU83QixPQUFPOEIsa0JBQWQsS0FBcUMsVUFBMUMsRUFBdUQ7QUFDbkRELDRCQUFRLGtDQUFnQlIsSUFBaEIsQ0FBUjtBQUNILGlCQUZELE1BRU87QUFDSFEsNEJBQVE3QixPQUFPOEIsa0JBQVAsQ0FBMEJULElBQTFCLENBQVI7O0FBRUE7QUFDSDtBQUNELG9CQUFJLENBQUNRLEtBQUwsRUFBWUEsUUFBUSxrQ0FBZ0JSLElBQWhCLENBQVI7O0FBRVosb0JBQUcsQ0FBQyxDQUFDUSxLQUFMLEVBQVk7QUFDUix5QkFBSyxJQUFJRSxJQUFJLENBQWIsRUFBZ0JBLElBQUlGLE1BQU1HLE1BQTFCLEVBQWtDRCxHQUFsQyxFQUF1QztBQUNuQzNCLGdDQUFReUIsTUFBTUUsQ0FBTixDQUFSO0FBRUg7QUFDSjtBQUVKO0FBQ0o7QUFDSixLQTNCRDs7QUE2QkEsU0FBS0UsUUFBTCxHQUFnQixZQUFXO0FBQ3ZCLFlBQUlDLFlBQVksRUFBaEI7O0FBRUEsYUFBSSxJQUFJQyxHQUFSLElBQWVoQyxTQUFmLEVBQTBCO0FBQ3RCK0IseUJBQWFDLE1BQU0sR0FBbkI7O0FBRUEsaUJBQUksSUFBSUMsUUFBUixJQUFvQmpDLFVBQVVnQyxHQUFWLENBQXBCLEVBQW9DO0FBQ2hDRCw2QkFBYUUsV0FBVyxHQUFYLEdBQWlCakMsVUFBVWdDLEdBQVYsRUFBZUMsUUFBZixDQUFqQixHQUE0QyxHQUF6RDtBQUVIOztBQUVERix5QkFBYSxHQUFiO0FBQ0g7O0FBRUQsZUFBT0EsU0FBUDtBQUNILEtBZkQ7O0FBaUJBcEI7QUFDSCxDQW5FRDs7a0JBcUVlZixXIiwiZmlsZSI6IkNyaXRpY2FsQ1NTLmpzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBleHBsYWluV2FybmluZyBmcm9tICcuLi91dGlsaXRpZXMvZXhwbGFpbldhcm5pbmcuanN4JztcbmltcG9ydCBnZXROb2RlQ1NTUnVsZXMgZnJvbSAnLi4vcG9seWZpbGxzL2dldC1tYXRjaGVkLWNzcy1ydWxlcy5qc3gnO1xuLy8gQ1NTIGdlbmVyYXRvclxudmFyIENyaXRpY2FsQ1NTID0gZnVuY3Rpb24od2luZG93LCBkb2N1bWVudCwgb3B0aW9ucykge1xuICAgIHZhciBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgcGFyc2VkQ1NTID0ge307XG5cbiAgICB2YXIgcHVzaENTUyA9IGZ1bmN0aW9uKHJ1bGUpIHtcbiAgICAgICAgaWYoISFwYXJzZWRDU1NbcnVsZS5zZWxlY3RvclRleHRdID09PSBmYWxzZSkgcGFyc2VkQ1NTW3J1bGUuc2VsZWN0b3JUZXh0XSA9IHt9O1xuXG4gICAgICAgIHZhciBzdHlsZXMgPSBydWxlLnN0eWxlLmNzc1RleHQuc3BsaXQoLzsoPyFbQS1aYS16MC05XSkvKTtcblxuICAgICAgICBzdHlsZXMuZm9yRWFjaChmdW5jdGlvbihzdHlsZSkge1xuICAgICAgICAgICAgaWYoISFzdHlsZSA9PT0gZmFsc2UpIHJldHVybjtcblxuICAgICAgICAgICAgdmFyIHBhaXIgPSBzdHlsZS5zcGxpdCgnOiAnKTtcbiAgICAgICAgICAgIHBhaXJbMF0gPSBwYWlyWzBdLnRyaW0oKTtcbiAgICAgICAgICAgIHBhaXJbMV0gPSBwYWlyWzFdLnRyaW0oKTtcbiAgICAgICAgICAgIHBhcnNlZENTU1tydWxlLnNlbGVjdG9yVGV4dF1bcGFpclswXV0gPSBwYWlyWzFdO1xuXG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICB2YXIgcGFyc2VUcmVlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBoZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIHZhciB3YWxrZXIgPSBkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCBOb2RlRmlsdGVyLlNIT1dfRUxFTUVOVCwgZnVuY3Rpb24obm9kZSkgeyByZXR1cm4gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUOyB9LCB0cnVlKTtcblxuICAgICAgICB3aGlsZSh3YWxrZXIubmV4dE5vZGUoKSkge1xuICAgICAgICAgICAgdmFyIG5vZGUgPSB3YWxrZXIuY3VycmVudE5vZGU7XG4gICAgICAgICAgICB2YXIgcmVjdCA9IG5vZGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICBpZihyZWN0LnRvcCA8IGhlaWdodCB8fCBvcHRpb25zLnNjYW5GdWxsUGFnZSkge1xuICAgICAgICAgICAgICAgIHZhciBydWxlcztcbiAgICAgICAgICAgICAgICBpZiAoIHR5cGVvZiB3aW5kb3cuZ2V0TWF0Y2hlZENTU1J1bGVzICE9PSAnZnVuY3Rpb24nICkge1xuICAgICAgICAgICAgICAgICAgICBydWxlcyA9IGdldE5vZGVDU1NSdWxlcyhub2RlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBydWxlcyA9IHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMobm9kZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgZXhwbGFpbldhcm5pbmcoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFydWxlcykgcnVsZXMgPSBnZXROb2RlQ1NTUnVsZXMobm9kZSk7XG5cbiAgICAgICAgICAgICAgICBpZighIXJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2hDU1MocnVsZXNbaV0pO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLmdlbmVyYXRlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBvdXRwdXRDU1MgPSAnJztcblxuICAgICAgICBmb3IodmFyIGtleSBpbiBwYXJzZWRDU1MpIHtcbiAgICAgICAgICAgIG91dHB1dENTUyArPSBrZXkgKyAneyc7XG5cbiAgICAgICAgICAgIGZvcih2YXIgaW5uZXJLZXkgaW4gcGFyc2VkQ1NTW2tleV0pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRDU1MgKz0gaW5uZXJLZXkgKyAnOicgKyBwYXJzZWRDU1Nba2V5XVtpbm5lcktleV0gKyAnOyc7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3V0cHV0Q1NTICs9ICd9JztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXRDU1M7XG4gICAgfTtcblxuICAgIHBhcnNlVHJlZSgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3JpdGljYWxDU1M7XG4iXX0=
1617 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/generators/CriticalCSS.jsx","/generators")
1618 | },{"../polyfills/get-matched-css-rules.jsx":8,"../utilities/explainWarning.jsx":9,"buffer":2,"rH1JPG":4}],8:[function(require,module,exports){
1619 | (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
1620 | 'use strict';
1621 |
1622 | Object.defineProperty(exports, "__esModule", {
1623 | value: true
1624 | });
1625 | /*
1626 | * Fallback for window.getMatchedCSSRules(node);
1627 | * Forked from: (A Gecko only polyfill for Webkit's window.getMatchedCSSRules) https://gist.github.com/ydaniv/3033012
1628 | * This version is compatible with most browsers hoi
1629 | */
1630 | var ELEMENT_RE = /[\w-]+/g;
1631 | var ID_RE = /#[\w-]+/g;
1632 | var CLASS_RE = /\.[\w-]+/g;
1633 | var ATTR_RE = /\[[^\]]+\]/g;
1634 | // :not() pseudo-class does not add to specificity, but its content does as if it was outside it
1635 | var PSEUDO_CLASSES_RE = /\:(?!not)[\w-]+(\(.*\))?/g;
1636 | var PSEUDO_ELEMENTS_RE = /\:\:?(after|before|first-letter|first-line|selection)/g;
1637 |
1638 | // convert an array-like object to array
1639 | function toArray(list) {
1640 | list = list || {};
1641 | return [].slice.call(list);
1642 | }
1643 |
1644 | // handles extraction of `cssRules` as an `Array` from a stylesheet or something that behaves the same
1645 | function getSheetRules(stylesheet) {
1646 | var sheet_media = stylesheet.media && stylesheet.media.mediaText;
1647 | // if this sheet is disabled skip it
1648 | if (stylesheet.disabled) return [];
1649 | // if this sheet's media is specified and doesn't match the viewport then skip it
1650 | if (sheet_media && sheet_media.length && !window.matchMedia(sheet_media).matches) return [];
1651 | // get the style rules of this sheet
1652 |
1653 | try {
1654 | return toArray(stylesheet.cssRules || stylesheet.rules || []);
1655 | } catch (err) {
1656 | return [];
1657 | }
1658 | }
1659 |
1660 | function _find(string, re) {
1661 | var matches = string.match(re);
1662 | return re ? re.length : 0;
1663 | }
1664 |
1665 | // calculates the specificity of a given `selector`
1666 | function calculateScore(selector) {
1667 | var score = [0, 0, 0];
1668 | var parts = selector.split(' ');
1669 | var part;
1670 | var match;
1671 |
1672 | //TODO: clean the ':not' part since the last ELEMENT_RE will pick it up
1673 | while (part = parts.shift(), typeof part == 'string') {
1674 | // find all pseudo-elements
1675 | match = _find(part, PSEUDO_ELEMENTS_RE);
1676 | score[2] = match;
1677 | // and remove them
1678 | match && (part = part.replace(PSEUDO_ELEMENTS_RE, ''));
1679 | // find all pseudo-classes
1680 | match = _find(part, PSEUDO_CLASSES_RE);
1681 | score[1] = match;
1682 | // and remove them
1683 | match && (part = part.replace(PSEUDO_CLASSES_RE, ''));
1684 | // find all attributes
1685 | match = _find(part, ATTR_RE);
1686 | score[1] += match;
1687 | // and remove them
1688 | match && (part = part.replace(ATTR_RE, ''));
1689 | // find all IDs
1690 | match = _find(part, ID_RE);
1691 | score[0] = match;
1692 | // and remove them
1693 | match && (part = part.replace(ID_RE, ''));
1694 | // find all classes
1695 | match = _find(part, CLASS_RE);
1696 | score[1] += match;
1697 | // and remove them
1698 | match && (part = part.replace(CLASS_RE, ''));
1699 | // find all elements
1700 | score[2] += _find(part, ELEMENT_RE);
1701 | }
1702 | return parseInt(score.join(''), 10);
1703 | }
1704 |
1705 | // returns the heights possible specificity score an element can get from a give rule's selectorText
1706 | function getSpecificityScore(element, selector_text) {
1707 | var selectors = selector_text.split(',');
1708 | var selector;
1709 | var score;
1710 | var result = 0;
1711 |
1712 | while (selector = selectors.shift()) {
1713 | element.matches = element.matches || element.webkitMatchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector;
1714 | if (element.matches(selector)) {
1715 | score = calculateScore(selector);
1716 | result = score > result ? score : result;
1717 | }
1718 | }
1719 |
1720 | return result;
1721 | }
1722 |
1723 | function sortBySpecificity(element, rules) {
1724 | // comparing function that sorts CSSStyleRules according to specificity of their `selectorText`
1725 | function compareSpecificity(a, b) {
1726 | return getSpecificityScore(element, b.selectorText) - getSpecificityScore(element, a.selectorText);
1727 | }
1728 |
1729 | return rules.sort(compareSpecificity);
1730 | }
1731 |
1732 | //TODO: not supporting 2nd argument for selecting pseudo elements
1733 | //TODO: not supporting 3rd argument for checking author style sheets only
1734 | function getNodeCSSRules(element /*, pseudo, author_only*/) {
1735 | var style_sheets;
1736 | var sheet;
1737 | var sheet_media;
1738 | var rules;
1739 | var rule;
1740 | var result = [];
1741 |
1742 | // get stylesheets and convert to a regular Array
1743 | style_sheets = toArray(window.document.styleSheets);
1744 |
1745 | // assuming the browser hands us stylesheets in order of appearance
1746 | // we iterate them from the beginning to follow proper cascade order
1747 | while (sheet = style_sheets.shift()) {
1748 | // get the style rules of this sheet
1749 | rules = getSheetRules(sheet);
1750 | // loop the rules in order of appearance
1751 | while (rule = rules.shift()) {
1752 | // if this is an @import rule
1753 | if (rule.styleSheet) {
1754 | // insert the imported stylesheet's rules at the beginning of this stylesheet's rules
1755 | rules = getSheetRules(rule.styleSheet).concat(rules);
1756 | // and skip this rule
1757 | continue;
1758 | }
1759 | // if there's no stylesheet attribute BUT there IS a media attribute it's a media rule
1760 | else if (rule.media) {
1761 | // insert the contained rules of this media rule to the beginning of this stylesheet's rules
1762 | rules = getSheetRules(rule).concat(rules);
1763 | // and skip it
1764 | continue;
1765 | }
1766 |
1767 | // TODO: deal with unusual selectors
1768 | // Some sites use selectors like '[ng:cloak]' wich is not a valid selector
1769 | // try-catching this allows the plugin to work
1770 | try {
1771 | // check if this element matches this rule's selector
1772 | if (element.matches(rule.selectorText)) {
1773 | // push the rule to the results set
1774 | result.push(rule);
1775 | }
1776 | } catch (e) {
1777 | // do nothing
1778 | }
1779 | }
1780 | }
1781 |
1782 | // sort according to specificity
1783 | return sortBySpecificity(element, result);
1784 | };
1785 |
1786 | exports.default = getNodeCSSRules;
1787 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImdldC1tYXRjaGVkLWNzcy1ydWxlcy5qc3giXSwibmFtZXMiOlsiRUxFTUVOVF9SRSIsIklEX1JFIiwiQ0xBU1NfUkUiLCJBVFRSX1JFIiwiUFNFVURPX0NMQVNTRVNfUkUiLCJQU0VVRE9fRUxFTUVOVFNfUkUiLCJ0b0FycmF5IiwibGlzdCIsInNsaWNlIiwiY2FsbCIsImdldFNoZWV0UnVsZXMiLCJzdHlsZXNoZWV0Iiwic2hlZXRfbWVkaWEiLCJtZWRpYSIsIm1lZGlhVGV4dCIsImRpc2FibGVkIiwibGVuZ3RoIiwid2luZG93IiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJjc3NSdWxlcyIsInJ1bGVzIiwiZXJyIiwiX2ZpbmQiLCJzdHJpbmciLCJyZSIsIm1hdGNoIiwiY2FsY3VsYXRlU2NvcmUiLCJzZWxlY3RvciIsInNjb3JlIiwicGFydHMiLCJzcGxpdCIsInBhcnQiLCJzaGlmdCIsInJlcGxhY2UiLCJwYXJzZUludCIsImpvaW4iLCJnZXRTcGVjaWZpY2l0eVNjb3JlIiwiZWxlbWVudCIsInNlbGVjdG9yX3RleHQiLCJzZWxlY3RvcnMiLCJyZXN1bHQiLCJ3ZWJraXRNYXRjaGVzU2VsZWN0b3IiLCJtb3pNYXRjaGVzU2VsZWN0b3IiLCJtc01hdGNoZXNTZWxlY3RvciIsIm9NYXRjaGVzU2VsZWN0b3IiLCJzb3J0QnlTcGVjaWZpY2l0eSIsImNvbXBhcmVTcGVjaWZpY2l0eSIsImEiLCJiIiwic2VsZWN0b3JUZXh0Iiwic29ydCIsImdldE5vZGVDU1NSdWxlcyIsInN0eWxlX3NoZWV0cyIsInNoZWV0IiwicnVsZSIsImRvY3VtZW50Iiwic3R5bGVTaGVldHMiLCJzdHlsZVNoZWV0IiwiY29uY2F0IiwicHVzaCIsImUiXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7O0FBS0EsSUFBSUEsYUFBYSxTQUFqQjtBQUNBLElBQUlDLFFBQVEsVUFBWjtBQUNBLElBQUlDLFdBQVcsV0FBZjtBQUNBLElBQUlDLFVBQVUsYUFBZDtBQUNBO0FBQ0EsSUFBSUMs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QUFDQTtBQUNBLFdBQU9ILFFBQVFELGFBQWFwQixLQUFiLEVBQWYsRUFBcUM7QUFDakM7QUFDQVosZ0JBQVFYLGNBQWM0QyxLQUFkLENBQVI7QUFDQTtBQUNBLGVBQU9DLE9BQU9sQyxNQUFNWSxLQUFOLEVBQWQsRUFBNkI7QUFDekI7QUFDQSxnQkFBSXNCLEtBQUtHLFVBQVQsRUFBcUI7QUFDakI7QUFDQXJDLHdCQUFRWCxjQUFjNkMsS0FBS0csVUFBbkIsRUFBK0JDLE1BQS9CLENBQXNDdEMsS0FBdEMsQ0FBUjtBQUNBO0FBQ0E7QUFDSDtBQUNEO0FBTkEsaUJBT0ssSUFBSWtDLEtBQUsxQyxLQUFULEVBQWdCO0FBQ2pCO0FBQ0FRLDRCQUFRWCxjQUFjNkMsSUFBZCxFQUFvQkksTUFBcEIsQ0FBMkJ0QyxLQUEzQixDQUFSO0FBQ0E7QUFDQTtBQUNIOztBQUVEO0FBQ0E7QUFDQTtBQUNBLGdCQUFJO0FBQ0E7QUFDQSxvQkFBSWlCLFFBQVFuQixPQUFSLENBQWdCb0MsS0FBS0wsWUFBckIsQ0FBSixFQUF3QztBQUNwQztBQUNBVCwyQkFBT21CLElBQVAsQ0FBWUwsSUFBWjtBQUNIO0FBQ0osYUFORCxDQU9BLE9BQU9NLENBQVAsRUFBVTtBQUNOO0FBQ0g7QUFDSjtBQUNKOztBQUVEO0FBQ0EsV0FBT2Ysa0JBQWtCUixPQUFsQixFQUEyQkcsTUFBM0IsQ0FBUDtBQUNIOztrQkFFY1csZSIsImZpbGUiOiJnZXQtbWF0Y2hlZC1jc3MtcnVsZXMuanN4Iiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEZhbGxiYWNrIGZvciB3aW5kb3cuZ2V0TWF0Y2hlZENTU1J1bGVzKG5vZGUpO1xuICogRm9ya2VkIGZyb206IChBIEdlY2tvIG9ubHkgcG9seWZpbGwgZm9yIFdlYmtpdCdzIHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMpIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3lkYW5pdi8zMDMzMDEyXG4gKiBUaGlzIHZlcnNpb24gaXMgY29tcGF0aWJsZSB3aXRoIG1vc3QgYnJvd3NlcnMgaG9pXG4gKi9cbnZhciBFTEVNRU5UX1JFID0gL1tcXHctXSsvZztcbnZhciBJRF9SRSA9IC8jW1xcdy1dKy9nO1xudmFyIENMQVNTX1JFID0gL1xcLltcXHctXSsvZztcbnZhciBBVFRSX1JFID0gL1xcW1teXFxdXStcXF0vZztcbi8vIDpub3QoKSBwc2V1ZG8tY2xhc3MgZG9lcyBub3QgYWRkIHRvIHNwZWNpZmljaXR5LCBidXQgaXRzIGNvbnRlbnQgZG9lcyBhcyBpZiBpdCB3YXMgb3V0c2lkZSBpdFxudmFyIFBTRVVET19DTEFTU0VTX1JFID0gL1xcOig/IW5vdClbXFx3LV0rKFxcKC4qXFwpKT8vZztcbnZhciBQU0VVRE9fRUxFTUVOVFNfUkUgPSAvXFw6XFw6PyhhZnRlcnxiZWZvcmV8Zmlyc3QtbGV0dGVyfGZpcnN0LWxpbmV8c2VsZWN0aW9uKS9nO1xuXG4vLyBjb252ZXJ0IGFuIGFycmF5LWxpa2Ugb2JqZWN0IHRvIGFycmF5XG5mdW5jdGlvbiB0b0FycmF5IChsaXN0KSB7XG4gICAgbGlzdCA9IGxpc3QgfHwge307XG4gICAgcmV0dXJuIFtdLnNsaWNlLmNhbGwobGlzdCk7XG59XG5cbi8vIGhhbmRsZXMgZXh0cmFjdGlvbiBvZiBgY3NzUnVsZXNgIGFzIGFuIGBBcnJheWAgZnJvbSBhIHN0eWxlc2hlZXQgb3Igc29tZXRoaW5nIHRoYXQgYmVoYXZlcyB0aGUgc2FtZVxuZnVuY3Rpb24gZ2V0U2hlZXRSdWxlcyAoc3R5bGVzaGVldCkge1xuICAgIHZhciBzaGVldF9tZWRpYSA9IHN0eWxlc2hlZXQubWVkaWEgJiYgc3R5bGVzaGVldC5tZWRpYS5tZWRpYVRleHQ7XG4gICAgLy8gaWYgdGhpcyBzaGVldCBpcyBkaXNhYmxlZCBza2lwIGl0XG4gICAgaWYgKCBzdHlsZXNoZWV0LmRpc2FibGVkICkgcmV0dXJuIFtdO1xuICAgIC8vIGlmIHRoaXMgc2hlZXQncyBtZWRpYSBpcyBzcGVjaWZpZWQgYW5kIGRvZXNuJ3QgbWF0Y2ggdGhlIHZpZXdwb3J0IHRoZW4gc2tpcCBpdFxuICAgIGlmICggc2hlZXRfbWVkaWEgJiYgc2hlZXRfbWVkaWEubGVuZ3RoICYmICEgd2luZG93Lm1hdGNoTWVkaWEoc2hlZXRfbWVkaWEpLm1hdGNoZXMgKSByZXR1cm4gW107XG4gICAgLy8gZ2V0IHRoZSBzdHlsZSBydWxlcyBvZiB0aGlzIHNoZWV0XG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gdG9BcnJheShzdHlsZXNoZWV0LmNzc1J1bGVzIHx8IHN0eWxlc2hlZXQucnVsZXMgfHwgW10pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfZmluZCAoc3RyaW5nLCByZSkge1xuICAgIHZhciBtYXRjaGVzID0gc3RyaW5nLm1hdGNoKHJlKTtcbiAgICByZXR1cm4gcmUgPyByZS5sZW5ndGggOiAwO1xufVxuXG4vLyBjYWxjdWxhdGVzIHRoZSBzcGVjaWZpY2l0eSBvZiBhIGdpdmVuIGBzZWxlY3RvcmBcbmZ1bmN0aW9uIGNhbGN1bGF0ZVNjb3JlIChzZWxlY3Rvcikge1xuICAgIHZhciBzY29yZSA9IFswLDAsMF07XG4gICAgdmFyIHBhcnRzID0gc2VsZWN0b3Iuc3BsaXQoJyAnKTtcbiAgICB2YXIgcGFydDtcbiAgICB2YXIgbWF0Y2g7XG5cbiAgICAvL1RPRE86IGNsZWFuIHRoZSAnOm5vdCcgcGFydCBzaW5jZSB0aGUgbGFzdCBFTEVNRU5UX1JFIHdpbGwgcGljayBpdCB1cFxuICAgIHdoaWxlICggcGFydCA9IHBhcnRzLnNoaWZ0KCksIHR5cGVvZiBwYXJ0ID09ICdzdHJpbmcnICkge1xuICAgICAgICAvLyBmaW5kIGFsbCBwc2V1ZG8tZWxlbWVudHNcbiAgICAgICAgbWF0Y2ggPSBfZmluZChwYXJ0LCBQU0VVRE9fRUxFTUVOVFNfUkUpO1xuICAgICAgICBzY29yZVsyXSA9IG1hdGNoO1xuICAgICAgICAvLyBhbmQgcmVtb3ZlIHRoZW1cbiAgICAgICAgbWF0Y2ggJiYgKHBhcnQgPSBwYXJ0LnJlcGxhY2UoUFNFVURPX0VMRU1FTlRTX1JFLCAnJykpO1xuICAgICAgICAvLyBmaW5kIGFsbCBwc2V1ZG8tY2xhc3Nlc1xuICAgICAgICBtYXRjaCA9IF9maW5kKHBhcnQsIFBTRVVET19DTEFTU0VTX1JFKTtcbiAgICAgICAgc2NvcmVbMV0gPSBtYXRjaDtcbiAgICAgICAgLy8gYW5kIHJlbW92ZSB0aGVtXG4gICAgICAgIG1hdGNoICYmIChwYXJ0ID0gcGFydC5yZXBsYWNlKFBTRVVET19DTEFTU0VTX1JFLCAnJykpO1xuICAgICAgICAvLyBmaW5kIGFsbCBhdHRyaWJ1dGVzXG4gICAgICAgIG1hdGNoID0gX2ZpbmQocGFydCwgQVRUUl9SRSk7XG4gICAgICAgIHNjb3JlWzFdICs9IG1hdGNoO1xuICAgICAgICAvLyBhbmQgcmVtb3ZlIHRoZW1cbiAgICAgICAgbWF0Y2ggJiYgKHBhcnQgPSBwYXJ0LnJlcGxhY2UoQVRUUl9SRSwgJycpKTtcbiAgICAgICAgLy8gZmluZCBhbGwgSURzXG4gICAgICAgIG1hdGNoID0gX2ZpbmQocGFydCwgSURfUkUpO1xuICAgICAgICBzY29yZVswXSA9IG1hdGNoO1xuICAgICAgICAvLyBhbmQgcmVtb3ZlIHRoZW1cbiAgICAgICAgbWF0Y2ggJiYgKHBhcnQgPSBwYXJ0LnJlcGxhY2UoSURfUkUsICcnKSk7XG4gICAgICAgIC8vIGZpbmQgYWxsIGNsYXNzZXNcbiAgICAgICAgbWF0Y2ggPSBfZmluZChwYXJ0LCBDTEFTU19SRSk7XG4gICAgICAgIHNjb3JlWzFdICs9IG1hdGNoO1xuICAgICAgICAvLyBhbmQgcmVtb3ZlIHRoZW1cbiAgICAgICAgbWF0Y2ggJiYgKHBhcnQgPSBwYXJ0LnJlcGxhY2UoQ0xBU1NfUkUsICcnKSk7XG4gICAgICAgIC8vIGZpbmQgYWxsIGVsZW1lbnRzXG4gICAgICAgIHNjb3JlWzJdICs9IF9maW5kKHBhcnQsIEVMRU1FTlRfUkUpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VJbnQoc2NvcmUuam9pbignJyksIDEwKTtcbn1cblxuLy8gcmV0dXJucyB0aGUgaGVpZ2h0cyBwb3NzaWJsZSBzcGVjaWZpY2l0eSBzY29yZSBhbiBlbGVtZW50IGNhbiBnZXQgZnJvbSBhIGdpdmUgcnVsZSdzIHNlbGVjdG9yVGV4dFxuZnVuY3Rpb24gZ2V0U3BlY2lmaWNpdHlTY29yZSAoZWxlbWVudCwgc2VsZWN0b3JfdGV4dCkge1xuICAgIHZhciBzZWxlY3RvcnMgPSBzZWxlY3Rvcl90ZXh0LnNwbGl0KCcsJyk7XG4gICAgdmFyIHNlbGVjdG9yO1xuICAgIHZhciBzY29yZTtcbiAgICB2YXIgcmVzdWx0ID0gMDtcblxuICAgIHdoaWxlIChzZWxlY3RvciA9IHNlbGVjdG9ycy5zaGlmdCgpKSB7XG4gICAgICAgIGVsZW1lbnQubWF0Y2hlcyA9IGVsZW1lbnQubWF0Y2hlcyB8fCBlbGVtZW50LndlYmtpdE1hdGNoZXNTZWxlY3RvciB8fCBlbGVtZW50Lm1vek1hdGNoZXNTZWxlY3RvciB8fCBlbGVtZW50Lm1zTWF0Y2hlc1NlbGVjdG9yIHx8IGVsZW1lbnQub01hdGNoZXNTZWxlY3RvcjtcbiAgICAgICAgaWYgKCBlbGVtZW50Lm1hdGNoZXMoc2VsZWN0b3IpICkge1xuICAgICAgICAgICAgc2NvcmUgPSBjYWxjdWxhdGVTY29yZShzZWxlY3Rvcik7XG4gICAgICAgICAgICByZXN1bHQgPSBzY29yZSA+IHJlc3VsdCA/IHNjb3JlIDogcmVzdWx0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gc29ydEJ5U3BlY2lmaWNpdHkgKGVsZW1lbnQsIHJ1bGVzKSB7XG4gICAgLy8gY29tcGFyaW5nIGZ1bmN0aW9uIHRoYXQgc29ydHMgQ1NTU3R5bGVSdWxlcyBhY2NvcmRpbmcgdG8gc3BlY2lmaWNpdHkgb2YgdGhlaXIgYHNlbGVjdG9yVGV4dGBcbiAgICBmdW5jdGlvbiBjb21wYXJlU3BlY2lmaWNpdHkgKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGdldFNwZWNpZmljaXR5U2NvcmUoZWxlbWVudCwgYi5zZWxlY3RvclRleHQpIC0gZ2V0U3BlY2lmaWNpdHlTY29yZShlbGVtZW50LCBhLnNlbGVjdG9yVGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGVzLnNvcnQoY29tcGFyZVNwZWNpZmljaXR5KTtcbn1cblxuLy9UT0RPOiBub3Qgc3VwcG9ydGluZyAybmQgYXJndW1lbnQgZm9yIHNlbGVjdGluZyBwc2V1ZG8gZWxlbWVudHNcbi8vVE9ETzogbm90IHN1cHBvcnRpbmcgM3JkIGFyZ3VtZW50IGZvciBjaGVja2luZyBhdXRob3Igc3R5bGUgc2hlZXRzIG9ubHlcbmZ1bmN0aW9uIGdldE5vZGVDU1NSdWxlcyhlbGVtZW50IC8qLCBwc2V1ZG8sIGF1dGhvcl9vbmx5Ki8pIHtcbiAgICB2YXIgc3R5bGVfc2hlZXRzO1xuICAgIHZhciBzaGVldDtcbiAgICB2YXIgc2hlZXRfbWVkaWE7XG4gICAgdmFyIHJ1bGVzO1xuICAgIHZhciBydWxlO1xuICAgIHZhciByZXN1bHQgPSBbXTtcblxuICAgIC8vIGdldCBzdHlsZXNoZWV0cyBhbmQgY29udmVydCB0byBhIHJlZ3VsYXIgQXJyYXlcbiAgICBzdHlsZV9zaGVldHMgPSB0b0FycmF5KHdpbmRvdy5kb2N1bWVudC5zdHlsZVNoZWV0cyk7XG5cbiAgICAvLyBhc3N1bWluZyB0aGUgYnJvd3NlciBoYW5kcyB1cyBzdHlsZXNoZWV0cyBpbiBvcmRlciBvZiBhcHBlYXJhbmNlXG4gICAgLy8gd2UgaXRlcmF0ZSB0aGVtIGZyb20gdGhlIGJlZ2lubmluZyB0byBmb2xsb3cgcHJvcGVyIGNhc2NhZGUgb3JkZXJcbiAgICB3aGlsZSAoc2hlZXQgPSBzdHlsZV9zaGVldHMuc2hpZnQoKSkge1xuICAgICAgICAvLyBnZXQgdGhlIHN0eWxlIHJ1bGVzIG9mIHRoaXMgc2hlZXRcbiAgICAgICAgcnVsZXMgPSBnZXRTaGVldFJ1bGVzKHNoZWV0KTtcbiAgICAgICAgLy8gbG9vcCB0aGUgcnVsZXMgaW4gb3JkZXIgb2YgYXBwZWFyYW5jZVxuICAgICAgICB3aGlsZSAocnVsZSA9IHJ1bGVzLnNoaWZ0KCkpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgYW4gQGltcG9ydCBydWxlXG4gICAgICAgICAgICBpZiAocnVsZS5zdHlsZVNoZWV0KSB7XG4gICAgICAgICAgICAgICAgLy8gaW5zZXJ0IHRoZSBpbXBvcnRlZCBzdHlsZXNoZWV0J3MgcnVsZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIHN0eWxlc2hlZXQncyBydWxlc1xuICAgICAgICAgICAgICAgIHJ1bGVzID0gZ2V0U2hlZXRSdWxlcyhydWxlLnN0eWxlU2hlZXQpLmNvbmNhdChydWxlcyk7XG4gICAgICAgICAgICAgICAgLy8gYW5kIHNraXAgdGhpcyBydWxlXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZiB0aGVyZSdzIG5vIHN0eWxlc2hlZXQgYXR0cmlidXRlIEJVVCB0aGVyZSBJUyBhIG1lZGlhIGF0dHJpYnV0ZSBpdCdzIGEgbWVkaWEgcnVsZVxuICAgICAgICAgICAgZWxzZSBpZiAocnVsZS5tZWRpYSkge1xuICAgICAgICAgICAgICAgIC8vIGluc2VydCB0aGUgY29udGFpbmVkIHJ1bGVzIG9mIHRoaXMgbWVkaWEgcnVsZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgc3R5bGVzaGVldCdzIHJ1bGVzXG4gICAgICAgICAgICAgICAgcnVsZXMgPSBnZXRTaGVldFJ1bGVzKHJ1bGUpLmNvbmNhdChydWxlcyk7XG4gICAgICAgICAgICAgICAgLy8gYW5kIHNraXAgaXRcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBUT0RPOiBkZWFsIHdpdGggdW51c3VhbCBzZWxlY3RvcnNcbiAgICAgICAgICAgIC8vIFNvbWUgc2l0ZXMgdXNlIHNlbGVjdG9ycyBsaWtlICdbbmc6Y2xvYWtdJyB3aWNoIGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yXG4gICAgICAgICAgICAvLyB0cnktY2F0Y2hpbmcgdGhpcyBhbGxvd3MgdGhlIHBsdWdpbiB0byB3b3JrXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoaXMgZWxlbWVudCBtYXRjaGVzIHRoaXMgcnVsZSdzIHNlbGVjdG9yXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQubWF0Y2hlcyhydWxlLnNlbGVjdG9yVGV4dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcHVzaCB0aGUgcnVsZSB0byB0aGUgcmVzdWx0cyBzZXRcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocnVsZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBzb3J0IGFjY29yZGluZyB0byBzcGVjaWZpY2l0eVxuICAgIHJldHVybiBzb3J0QnlTcGVjaWZpY2l0eShlbGVtZW50LCByZXN1bHQpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0Tm9kZUNTU1J1bGVzO1xuIl19
1788 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/polyfills/get-matched-css-rules.jsx","/polyfills")
1789 | },{"buffer":2,"rH1JPG":4}],9:[function(require,module,exports){
1790 | (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
1791 | 'use strict';
1792 |
1793 | Object.defineProperty(exports, "__esModule", {
1794 | value: true
1795 | });
1796 | function explainWarning() {
1797 | if (window.explained) return;
1798 | console.log('%cWhen \'getMatchedCSSRules()\' is removed, Critical Snapshot will fallback to a polyfill. Untill then, we will use the native version for better performance.', 'color: aqua;');
1799 | window.explained = true;
1800 | }
1801 |
1802 | exports.default = explainWarning;
1803 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cGxhaW5XYXJuaW5nLmpzeCJdLCJuYW1lcyI6WyJleHBsYWluV2FybmluZyIsIndpbmRvdyIsImV4cGxhaW5lZCIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsU0FBU0EsY0FBVCxHQUEwQjtBQUN0QixRQUFJQyxPQUFPQyxTQUFYLEVBQXNCO0FBQ3RCQyxZQUFRQyxHQUFSLENBQVksZ0tBQVosRUFBOEssY0FBOUs7QUFDQUgsV0FBT0MsU0FBUCxHQUFtQixJQUFuQjtBQUNIOztrQkFFY0YsYyIsImZpbGUiOiJleHBsYWluV2FybmluZy5qc3giLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBleHBsYWluV2FybmluZygpIHtcbiAgICBpZiAod2luZG93LmV4cGxhaW5lZCkgcmV0dXJuO1xuICAgIGNvbnNvbGUubG9nKCclY1doZW4gXFwnZ2V0TWF0Y2hlZENTU1J1bGVzKClcXCcgaXMgcmVtb3ZlZCwgQ3JpdGljYWwgU25hcHNob3Qgd2lsbCBmYWxsYmFjayB0byBhIHBvbHlmaWxsLiBVbnRpbGwgdGhlbiwgd2Ugd2lsbCB1c2UgdGhlIG5hdGl2ZSB2ZXJzaW9uIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuJywgJ2NvbG9yOiBhcXVhOycpO1xuICAgIHdpbmRvdy5leHBsYWluZWQgPSB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBleHBsYWluV2FybmluZztcbiJdfQ==
1804 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/utilities/explainWarning.jsx","/utilities")
1805 | },{"buffer":2,"rH1JPG":4}],10:[function(require,module,exports){
1806 | (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
1807 | 'use strict';
1808 |
1809 | Object.defineProperty(exports, "__esModule", {
1810 | value: true
1811 | });
1812 | // removes all css styles from the webpage
1813 | function removeDocumentStyles() {
1814 | var appCssElements = [].slice.call(document.querySelectorAll('[type="text/css"]'));
1815 | appCssElements.forEach(function (elm) {
1816 | elm.remove();
1817 | });
1818 |
1819 | var appStylesheetElements = [].slice.call(document.querySelectorAll('[rel="stylesheet"]'));
1820 | appStylesheetElements.forEach(function (elm) {
1821 | elm.remove();
1822 | });
1823 |
1824 | var appStyleElements = [].slice.call(document.getElementsByTagName('style'));
1825 | appStyleElements.forEach(function (elm) {
1826 | elm.remove();
1827 | });
1828 | }
1829 |
1830 | exports.default = removeDocumentStyles;
1831 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlbW92ZURvY3VtZW50U3R5bGVzLmpzeCJdLCJuYW1lcyI6WyJyZW1vdmVEb2N1bWVudFN0eWxlcyIsImFwcENzc0VsZW1lbnRzIiwic2xpY2UiLCJjYWxsIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsImVsbSIsInJlbW92ZSIsImFwcFN0eWxlc2hlZXRFbGVtZW50cyIsImFwcFN0eWxlRWxlbWVudHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBLFNBQVNBLG9CQUFULEdBQWdDO0FBQzVCLFFBQUlDLGlCQUFpQixHQUFHQyxLQUFILENBQVNDLElBQVQsQ0FBY0MsU0FBU0MsZ0JBQVQsQ0FBMEIsbUJBQTFCLENBQWQsQ0FBckI7QUFDQUosbUJBQWVLLE9BQWYsQ0FBdUIsVUFBU0MsR0FBVCxFQUFjO0FBQ2pDQSxZQUFJQyxNQUFKO0FBQ0gsS0FGRDs7QUFJQSxRQUFJQyx3QkFBd0IsR0FBR1AsS0FBSCxDQUFTQyxJQUFULENBQWNDLFNBQVNDLGdCQUFULENBQTBCLG9CQUExQixDQUFkLENBQTVCO0FBQ0FJLDBCQUFzQkgsT0FBdEIsQ0FBOEIsVUFBU0MsR0FBVCxFQUFjO0FBQ3hDQSxZQUFJQyxNQUFKO0FBQ0gsS0FGRDs7QUFJQSxRQUFJRSxtQkFBbUIsR0FBR1IsS0FBSCxDQUFTQyxJQUFULENBQWNDLFNBQVNPLG9CQUFULENBQThCLE9BQTlCLENBQWQsQ0FBdkI7QUFDQUQscUJBQWlCSixPQUFqQixDQUF5QixVQUFTQyxHQUFULEVBQWM7QUFDbkNBLFlBQUlDLE1BQUo7QUFDSCxLQUZEO0FBR0g7O2tCQUVjUixvQiIsImZpbGUiOiJyZW1vdmVEb2N1bWVudFN0eWxlcy5qc3giLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZW1vdmVzIGFsbCBjc3Mgc3R5bGVzIGZyb20gdGhlIHdlYnBhZ2VcbmZ1bmN0aW9uIHJlbW92ZURvY3VtZW50U3R5bGVzKCkge1xuICAgIHZhciBhcHBDc3NFbGVtZW50cyA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW3R5cGU9XCJ0ZXh0L2Nzc1wiXScpKTtcbiAgICBhcHBDc3NFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVsbSkge1xuICAgICAgICBlbG0ucmVtb3ZlKCk7XG4gICAgfSk7XG5cbiAgICB2YXIgYXBwU3R5bGVzaGVldEVsZW1lbnRzID0gW10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbcmVsPVwic3R5bGVzaGVldFwiXScpKTtcbiAgICBhcHBTdHlsZXNoZWV0RWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbihlbG0pIHtcbiAgICAgICAgZWxtLnJlbW92ZSgpO1xuICAgIH0pO1xuXG4gICAgdmFyIGFwcFN0eWxlRWxlbWVudHMgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzdHlsZScpKTtcbiAgICBhcHBTdHlsZUVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWxtKSB7XG4gICAgICAgIGVsbS5yZW1vdmUoKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlRG9jdW1lbnRTdHlsZXM7XG4iXX0=
1832 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/utilities/removeDocumentStyles.jsx","/utilities")
1833 | },{"buffer":2,"rH1JPG":4}],11:[function(require,module,exports){
1834 | (function (process,global,Buffer,__argument0,__argument1,__argument2,__argument3,__filename,__dirname){
1835 | "use strict";
1836 |
1837 | Object.defineProperty(exports, "__esModule", {
1838 | value: true
1839 | });
1840 | // Selects element text by ID
1841 | function selectText(id) {
1842 | var element = document.getElementById(id);
1843 |
1844 | var range = document.createRange();
1845 | range.selectNodeContents(element);
1846 |
1847 | var selection = window.getSelection();
1848 | selection.removeAllRanges();
1849 | selection.addRange(range);
1850 | }
1851 |
1852 | exports.default = selectText;
1853 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlbGVjdFRleHQuanN4Il0sIm5hbWVzIjpbInNlbGVjdFRleHQiLCJpZCIsImVsZW1lbnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNlbGVjdE5vZGVDb250ZW50cyIsInNlbGVjdGlvbiIsIndpbmRvdyIsImdldFNlbGVjdGlvbiIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0EsU0FBU0EsVUFBVCxDQUFvQkMsRUFBcEIsRUFBd0I7QUFDcEIsUUFBSUMsVUFBVUMsU0FBU0MsY0FBVCxDQUF3QkgsRUFBeEIsQ0FBZDs7QUFFQSxRQUFJSSxRQUFRRixTQUFTRyxXQUFULEVBQVo7QUFDQUQsVUFBTUUsa0JBQU4sQ0FBeUJMLE9BQXpCOztBQUVBLFFBQUlNLFlBQVlDLE9BQU9DLFlBQVAsRUFBaEI7QUFDQUYsY0FBVUcsZUFBVjtBQUNBSCxjQUFVSSxRQUFWLENBQW1CUCxLQUFuQjtBQUNIOztrQkFFY0wsVSIsImZpbGUiOiJzZWxlY3RUZXh0LmpzeCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlbGVjdHMgZWxlbWVudCB0ZXh0IGJ5IElEXG5mdW5jdGlvbiBzZWxlY3RUZXh0KGlkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZClcblxuICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpO1xuXG4gICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc2VsZWN0VGV4dDtcbiJdfQ==
1854 | }).call(this,require("rH1JPG"),typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/utilities/selectText.jsx","/utilities")
1855 | },{"buffer":2,"rH1JPG":4}]},{},[6])
--------------------------------------------------------------------------------
/dist/styles/style.css:
--------------------------------------------------------------------------------
1 | body > #CriticalSnap {
2 | transition: width 200ms, height 200ms;
3 | width: 100%;
4 | height: 100%;
5 | position: fixed;
6 | top: 0;
7 | right: 0;
8 | bottom: 0;
9 | left: 0;
10 | padding: 25px;
11 | z-index: 9999999999;
12 | color: #fff;
13 | background-color: rgba(0, 0, 0, 0.5);
14 | overflow: scroll;
15 | font-family: monospace;
16 | text-align: center; }
17 |
18 | body > #CriticalSnap h1 {
19 | margin-bottom: 20px;
20 | color: #fff;
21 | font-size: 28px;
22 | line-height: 1.4em;
23 | font-family: sans-serif;
24 | text-transform: none;
25 | font-style: normal; }
26 |
27 | body > #CriticalSnap > div {
28 | width: 500px;
29 | margin: 0 auto; }
30 |
31 | body > #CriticalSnap #CriticalSnap__output-css {
32 | background-color: #fff;
33 | border-radius: 4px;
34 | padding: 10px;
35 | display: inline-block;
36 | width: 500px;
37 | height: 500px;
38 | overflow: scroll;
39 | color: #292929;
40 | text-align: left; }
41 |
42 | body > #CriticalSnap #CriticalSnap__buttons {
43 | display: inline-block;
44 | width: 500px;
45 | padding: 10px;
46 | text-align: center; }
47 |
48 | body > #CriticalSnap .CriticalSnap__button {
49 | line-height: 13px;
50 | font-family: arial, sans-serif;
51 | font-weight: normal;
52 | border-radius: 4px;
53 | border: 0;
54 | outline: 0;
55 | padding: 10px;
56 | padding-right: 20px;
57 | padding-left: 20px;
58 | color: #292929;
59 | background-color: #fff;
60 | margin: 10px;
61 | font-size: 13px;
62 | cursor: pointer;
63 | -webkit-transition: color 200ms, background-color 200ms;
64 | transition: color 200ms, background-color 200ms; }
65 |
66 | body > #CriticalSnap .CriticalSnap__button:active {
67 | -webkit-transform: translateY(2px);
68 | transform: translateY(2px); }
69 |
70 | body > #CriticalSnap .CriticalSnap__button > span {
71 | font-size: 16px;
72 | vertical-align: middle;
73 | line-height: 13px; }
74 |
75 | body > #CriticalSnap.CriticalSnap__minified {
76 | top: auto;
77 | left: auto;
78 | width: 250px;
79 | height: 165px;
80 | border-top-left-radius: 4px; }
81 |
82 | body > #CriticalSnap.CriticalSnap__minified h1 {
83 | display: none; }
84 |
85 | body > #CriticalSnap.CriticalSnap__minified > div {
86 | width: 200px; }
87 |
88 | body > #CriticalSnap.CriticalSnap__minified #CriticalSnap__output-css {
89 | width: 200px;
90 | height: 75px; }
91 |
92 | body > #CriticalSnap.CriticalSnap__minified #CriticalSnap__buttons {
93 | width: 200px;
94 | padding: 0;
95 | padding-top: 5px;
96 | text-align: right; }
97 |
98 | body > #CriticalSnap.CriticalSnap__minified .CriticalSnap__button {
99 | padding: 10px 12px;
100 | margin: 0;
101 | margin-left: 5px; }
102 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | // Include gulp
2 | var gulp = require('gulp');
3 |
4 | // Include Our Plugins
5 | var concat = require('gulp-concat');
6 | var sass = require('gulp-sass');
7 | var rename = require('gulp-rename');
8 | var uglify = require('gulp-uglify');
9 | var browserify = require('gulp-browserify');
10 | var babel = require("gulp-babel");
11 | var zip = require('gulp-zip');
12 | var sequence = require('gulp-sequence')
13 |
14 | var DEST_ROOT = 'dist';
15 | var SRC_ROOT = 'src';
16 |
17 | var src_styles = [
18 | 'src/styles/globals/*.scss',
19 | 'src/styles/mixins/*.scss',
20 | 'src/styles/components/*.scss'
21 | ];
22 |
23 | var src_scripts = [
24 | 'src/scripts/execute.jsx'
25 | ];
26 |
27 | gulp.task('zip', function() {
28 | return gulp.src(`${DEST_ROOT}/**/*`)
29 | .pipe(zip('critical-style-snapshot.zip'))
30 | .pipe(gulp.dest('.'));
31 | });
32 |
33 | // CSS
34 | gulp.task('sass', function() {
35 | return gulp.src(src_styles)
36 | .pipe(concat('style.scss'))
37 | .pipe(sass())
38 | .pipe(rename('style.css'))
39 | .pipe(gulp.dest(`${DEST_ROOT}/styles`));
40 | });
41 |
42 | gulp.task('images', function() {
43 | return gulp.src('src/images/**/*')
44 | .pipe(gulp.dest(`${DEST_ROOT}/images`));
45 | });
46 |
47 | // Concatenate
48 | gulp.task('scripts', function() {
49 |
50 | return gulp.src(src_scripts)
51 | .pipe(babel({
52 | presets: ['es2015']
53 | }))
54 | .pipe(browserify({
55 | insertGlobals : true
56 | }))
57 | //.pipe(uglify())
58 | .pipe(rename('execute.js'))
59 | .pipe(gulp.dest(`${DEST_ROOT}/scripts`));
60 | });
61 |
62 | gulp.task('index', function() {
63 | return gulp.src(`${SRC_ROOT}/index.js`)
64 | .pipe(gulp.dest(`${DEST_ROOT}`));
65 | });
66 |
67 | gulp.task('manifest', function() {
68 | return gulp.src(`${SRC_ROOT}/manifest.json`)
69 | .pipe(gulp.dest(`${DEST_ROOT}`));
70 | });
71 |
72 | // Watch
73 | gulp.task('watch', function() {
74 | gulp.watch('src/manifest.json', ['manifest']);
75 | gulp.watch('src/index.js', ['index']);
76 | gulp.watch('src/scripts/**/*.jsx', ['scripts']);
77 | gulp.watch('src/styles/**/*.scss', ['sass']);
78 | gulp.watch('src/images/**/*', ['images']);
79 | });
80 |
81 | // Package
82 | gulp.task('package', sequence(['manifest', 'index', 'scripts', 'sass', 'images'], ['zip']));
83 |
84 | // Default
85 | gulp.task('default', ['manifest', 'index', 'scripts', 'sass', 'images', 'watch']);
86 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "critical-style-snapshot",
3 | "version": "0.0.8",
4 | "description": "Capture CSS above the fold",
5 | "main": "index.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "git+https://github.com/andreleon/critical-snapshot.git"
9 | },
10 | "author": "Léon Smit