html-screen-capture.js 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600
  1. (function webpackUniversalModuleDefinition(root, factory) {
  2. if(typeof exports === 'object' && typeof module === 'object')
  3. module.exports = factory();
  4. else if(typeof define === 'function' && define.amd)
  5. define("htmlScreenCaptureJs", [], factory);
  6. else if(typeof exports === 'object')
  7. exports["htmlScreenCaptureJs"] = factory();
  8. else
  9. root["htmlScreenCaptureJs"] = factory();
  10. })(typeof self !== 'undefined' ? self : this, function() {
  11. return /******/ (function(modules) { // webpackBootstrap
  12. /******/ // The module cache
  13. /******/ var installedModules = {};
  14. /******/
  15. /******/ // The require function
  16. /******/ function __webpack_require__(moduleId) {
  17. /******/
  18. /******/ // Check if module is in cache
  19. /******/ if(installedModules[moduleId]) {
  20. /******/ return installedModules[moduleId].exports;
  21. /******/ }
  22. /******/ // Create a new module (and put it into the cache)
  23. /******/ var module = installedModules[moduleId] = {
  24. /******/ i: moduleId,
  25. /******/ l: false,
  26. /******/ exports: {}
  27. /******/ };
  28. /******/
  29. /******/ // Execute the module function
  30. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  31. /******/
  32. /******/ // Flag the module as loaded
  33. /******/ module.l = true;
  34. /******/
  35. /******/ // Return the exports of the module
  36. /******/ return module.exports;
  37. /******/ }
  38. /******/
  39. /******/
  40. /******/ // expose the modules object (__webpack_modules__)
  41. /******/ __webpack_require__.m = modules;
  42. /******/
  43. /******/ // expose the module cache
  44. /******/ __webpack_require__.c = installedModules;
  45. /******/
  46. /******/ // define getter function for harmony exports
  47. /******/ __webpack_require__.d = function(exports, name, getter) {
  48. /******/ if(!__webpack_require__.o(exports, name)) {
  49. /******/ Object.defineProperty(exports, name, {
  50. /******/ configurable: false,
  51. /******/ enumerable: true,
  52. /******/ get: getter
  53. /******/ });
  54. /******/ }
  55. /******/ };
  56. /******/
  57. /******/ // getDefaultExport function for compatibility with non-harmony modules
  58. /******/ __webpack_require__.n = function(module) {
  59. /******/ var getter = module && module.__esModule ?
  60. /******/ function getDefault() { return module['default']; } :
  61. /******/ function getModuleExports() { return module; };
  62. /******/ __webpack_require__.d(getter, 'a', getter);
  63. /******/ return getter;
  64. /******/ };
  65. /******/
  66. /******/ // Object.prototype.hasOwnProperty.call
  67. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  68. /******/
  69. /******/ // __webpack_public_path__
  70. /******/ __webpack_require__.p = "";
  71. /******/
  72. /******/ // Load entry module and return exports
  73. /******/ return __webpack_require__(__webpack_require__.s = 1);
  74. /******/ })
  75. /************************************************************************/
  76. /******/ ([
  77. /* 0 */
  78. /***/ (function(module, exports, __webpack_require__) {
  79. "use strict";
  80. Object.defineProperty(exports, "__esModule", {
  81. value: true
  82. });
  83. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  84. var OutputTypeEnum = function OutputTypeEnum() {
  85. _classCallCheck(this, OutputTypeEnum);
  86. this.OBJECT = 'OBJECT';
  87. this.STRING = 'STRING';
  88. this.URI = 'URI';
  89. this.BASE64 = 'BASE64';
  90. };
  91. exports.default = OutputTypeEnum;
  92. module.exports = exports['default'];
  93. /***/ }),
  94. /* 1 */
  95. /***/ (function(module, exports, __webpack_require__) {
  96. "use strict";
  97. Object.defineProperty(exports, "__esModule", {
  98. value: true
  99. });
  100. exports.OutputType = undefined;
  101. exports.capture = capture;
  102. var _outputTypeEnum = __webpack_require__(0);
  103. var _outputTypeEnum2 = _interopRequireDefault(_outputTypeEnum);
  104. var _capturer = __webpack_require__(2);
  105. var _capturer2 = _interopRequireDefault(_capturer);
  106. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  107. var OutputType = exports.OutputType = new _outputTypeEnum2.default();
  108. function capture(outputType, htmlDocument, options) {
  109. return new _capturer2.default().capture(outputType, htmlDocument, options);
  110. }
  111. /***/ }),
  112. /* 2 */
  113. /***/ (function(module, exports, __webpack_require__) {
  114. "use strict";
  115. Object.defineProperty(exports, "__esModule", {
  116. value: true
  117. });
  118. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  119. var _logger = __webpack_require__(3);
  120. var _logger2 = _interopRequireDefault(_logger);
  121. var _encoder = __webpack_require__(4);
  122. var _encoder2 = _interopRequireDefault(_encoder);
  123. var _outputTypeEnum = __webpack_require__(0);
  124. var _outputTypeEnum2 = _interopRequireDefault(_outputTypeEnum);
  125. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  126. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  127. var Capturer = function () {
  128. function Capturer() {
  129. _classCallCheck(this, Capturer);
  130. this._logger = new _logger2.default();
  131. this._isHead = true;
  132. this._classMap = {};
  133. this._classCount = 0;
  134. this._shouldHandleImgDataUrl = true;
  135. this._canvas = null;
  136. this._ctx = null;
  137. this._doc = null;
  138. this._options = {
  139. tagsOfIgnoredDocHeadElements: [
  140. 'script',
  141. // 'link',
  142. // 'style'
  143. ],
  144. tagsOfIgnoredDocBodyElements: ['script'],
  145. classesOfIgnoredDocBodyElements: [],
  146. attrKeyValuePairsOfIgnoredElements: {},
  147. tagsOfSkippedElementsForChildTreeCssHandling: ['svg'],
  148. attrKeyForSavingElementOrigClass: '_class',
  149. attrKeyForSavingElementOrigStyle: '_style',
  150. prefixForNewGeneratedClasses: 'c',
  151. imageFormatForDataUrl: 'image/png',
  152. imageQualityForDataUrl: 0.92,
  153. rulesToAddToDocStyle: [
  154. // '*{font-family:"Arial Narrow" !important;}'
  155. ]
  156. };
  157. }
  158. _createClass(Capturer, [{
  159. key: '_overrideOptions',
  160. value: function _overrideOptions(options) {
  161. if (options) {
  162. for (var def in options) {
  163. if (options.hasOwnProperty(def)) {
  164. this._options[def] = options[def];
  165. }
  166. }
  167. }
  168. }
  169. }, {
  170. key: '_getImgDataUrl',
  171. value: function _getImgDataUrl(imgElm) {
  172. var imgDataUrl = '';
  173. try {
  174. if (!this._canvas) {
  175. this._canvas = this._doc.createElement('canvas');
  176. this._ctx = this._canvas.getContext('2d');
  177. }
  178. this._canvas.width = imgElm.clientWidth;
  179. this._canvas.height = imgElm.clientHeight;
  180. this._ctx.drawImage(imgElm, 0, 0);
  181. imgDataUrl = this._canvas.toDataURL(this._options.imageFormatForDataUrl, this._options.imageQualityForDataUrl);
  182. } catch (ex) {
  183. this._logger.warn('getImgDataUrl() - ' + ex.message);
  184. this._shouldHandleImgDataUrl = false;
  185. }
  186. return imgDataUrl;
  187. }
  188. }, {
  189. key: '_getClasses',
  190. value: function _getClasses(domElm) {
  191. var classes = [];
  192. var className = domElm.className instanceof SVGAnimatedString ? domElm.className.baseVal : domElm.className;
  193. if (className) {
  194. var classNames = className.split(' ');
  195. classNames.forEach(function (c) {
  196. if (c) {
  197. classes.push(c);
  198. }
  199. });
  200. }
  201. return classes;
  202. }
  203. }, {
  204. key: '_getClassName',
  205. value: function _getClassName(domElm) {
  206. var classes = domElm.className;
  207. return classes instanceof SVGAnimatedString ? classes.baseVal : classes;
  208. }
  209. }, {
  210. key: '_handleElmCss',
  211. value: function _handleElmCss(domElm, newElm) {
  212. if (this._getClasses(newElm).length > 0) {
  213. if (this._options.attrKeyForSavingElementOrigClass) {
  214. newElm.setAttribute(this._options.attrKeyForSavingElementOrigClass, this._getClassName(newElm));
  215. }
  216. newElm.removeAttribute('class');
  217. }
  218. if (newElm.getAttribute('style')) {
  219. if (this._options.attrKeyForSavingElementOrigStyle) {
  220. newElm.setAttribute(this._options.attrKeyForSavingElementOrigStyle, newElm.getAttribute('style'));
  221. }
  222. newElm.removeAttribute('style');
  223. }
  224. var computedStyle = getComputedStyle(domElm);
  225. var classStr = '';
  226. for (var i = 0; i < computedStyle.length; i++) {
  227. var property = computedStyle.item(i);
  228. var value = computedStyle.getPropertyValue(property);
  229. var mapKey = property + ':' + value;
  230. var className = this._classMap[mapKey];
  231. if (!className) {
  232. this._classCount++;
  233. className = (this._options.prefixForNewGeneratedClasses ? this._options.prefixForNewGeneratedClasses : 'c') + this._classCount;
  234. this._classMap[mapKey] = className;
  235. }
  236. classStr += className + ' ';
  237. }
  238. if (classStr) {
  239. newElm.setAttribute('class', classStr.trim());
  240. }
  241. }
  242. }, {
  243. key: '_appendNewStyle',
  244. value: function _appendNewStyle(newHtml) {
  245. var style = this._doc.createElement('style');
  246. style.type = 'text/css';
  247. var cssText = this._options.rulesToAddToDocStyle ? this._options.rulesToAddToDocStyle.join('') : '';
  248. for (var def in this._classMap) {
  249. if (this._classMap.hasOwnProperty(def)) {
  250. cssText += '.' + this._classMap[def] + '{' + def + '}';
  251. }
  252. }
  253. if (style.styleSheet) {
  254. style.styleSheet.cssText = cssText;
  255. } else {
  256. style.appendChild(this._doc.createTextNode(cssText));
  257. }
  258. newHtml.children[0].appendChild(style);
  259. }
  260. }, {
  261. key: '_shouldIgnoreElm',
  262. value: function _shouldIgnoreElm(domElm) {
  263. var _this = this;
  264. var shouldRemoveElm = false;
  265. if (this._isHead && this._options.tagsOfIgnoredDocHeadElements && this._options.tagsOfIgnoredDocHeadElements.indexOf(domElm.tagName.toLowerCase()) > -1 || !this._isHead && this._options.tagsOfIgnoredDocBodyElements && this._options.tagsOfIgnoredDocBodyElements.indexOf(domElm.tagName.toLowerCase()) > -1) {
  266. shouldRemoveElm = true;
  267. }
  268. if (!shouldRemoveElm && this._options.attrKeyValuePairsOfIgnoredElements) {
  269. for (var attrKey in this._options.attrKeyValuePairsOfIgnoredElements) {
  270. if (this._options.attrKeyValuePairsOfIgnoredElements.hasOwnProperty(attrKey)) {
  271. for (var i = 0; i < domElm.attributes.length; i++) {
  272. if (domElm.attributes[i].specified && domElm.attributes[i].value === this._options.attrKeyValuePairsOfIgnoredElements[attrKey]) {
  273. shouldRemoveElm = true;
  274. }
  275. }
  276. }
  277. }
  278. }
  279. if (!shouldRemoveElm && !this._isHead && this._options.classesOfIgnoredDocBodyElements) {
  280. var domElmClasses = this._getClasses(domElm);
  281. domElmClasses.forEach(function (c) {
  282. if (!shouldRemoveElm && _this._options.classesOfIgnoredDocBodyElements.indexOf(c) > -1) {
  283. shouldRemoveElm = true;
  284. }
  285. });
  286. }
  287. return shouldRemoveElm;
  288. }
  289. }, {
  290. key: '_recursiveWalk',
  291. value: function _recursiveWalk(domElm, newElm, handleCss) {
  292. if (this._shouldHandleImgDataUrl && !this._isHead && domElm.tagName.toLowerCase() === 'img') {
  293. var imgDataUrl = this._getImgDataUrl(domElm);
  294. if (imgDataUrl) {
  295. newElm.setAttribute('src', imgDataUrl);
  296. }
  297. }
  298. if (handleCss) {
  299. this._handleElmCss(domElm, newElm);
  300. if (this._options.tagsOfSkippedElementsForChildTreeCssHandling && this._options.tagsOfSkippedElementsForChildTreeCssHandling.indexOf(domElm.tagName.toLowerCase()) > -1) {
  301. handleCss = false;
  302. }
  303. }
  304. if (domElm.children) {
  305. for (var i = domElm.children.length - 1; i >= 0; i--) {
  306. if (this._shouldIgnoreElm(domElm.children[i])) {
  307. newElm.removeChild(newElm.children[i]);
  308. } else {
  309. this._recursiveWalk(domElm.children[i], newElm.children[i], handleCss);
  310. }
  311. }
  312. }
  313. }
  314. }, {
  315. key: '_createNewHtml',
  316. value: function _createNewHtml() {
  317. var newHtml = this._doc.documentElement.cloneNode(false);
  318. this._handleElmCss(this._doc.documentElement, newHtml);
  319. return newHtml;
  320. }
  321. }, {
  322. key: '_appendNewHead',
  323. value: function _appendNewHead(newHtml) {
  324. var newHead = this._doc.head.cloneNode(true);
  325. this._isHead = true;
  326. this._recursiveWalk(this._doc.head, newHead, false);
  327. newHtml.appendChild(newHead);
  328. }
  329. }, {
  330. key: '_appendNewBody',
  331. value: function _appendNewBody(newHtml) {
  332. var newBody = this._doc.body.cloneNode(true);
  333. this._isHead = false;
  334. this._recursiveWalk(this._doc.body, newBody, true);
  335. newHtml.appendChild(newBody);
  336. }
  337. }, {
  338. key: '_getHtmlObject',
  339. value: function _getHtmlObject() {
  340. var newHtml = this._createNewHtml();
  341. this._appendNewHead(newHtml);
  342. this._appendNewBody(newHtml);
  343. this._appendNewStyle(newHtml);
  344. return newHtml;
  345. }
  346. }, {
  347. key: '_prepareOutput',
  348. value: function _prepareOutput(newHtmlObject, outputType) {
  349. var output = null;
  350. var outputTypeEnum = new _outputTypeEnum2.default();
  351. if (!outputType || outputType === outputTypeEnum.OBJECT) {
  352. output = newHtmlObject;
  353. } else {
  354. var outerHtml = (newHtmlObject ? newHtmlObject.outerHTML : '') || '';
  355. if (outerHtml) {
  356. if (outputType === outputTypeEnum.STRING) {
  357. output = outerHtml;
  358. } else if (outputType === outputTypeEnum.URI) {
  359. output = _encoder2.default.uriEncode(outerHtml);
  360. } else if (outputType === outputTypeEnum.BASE64) {
  361. output = _encoder2.default.base64Encode(outerHtml);
  362. }
  363. }
  364. output = output || '';
  365. }
  366. if (this._logger.isDebug()) {
  367. this._logger.debug('output: ' + (output.outerHTML ? output.outerHTML : output));
  368. }
  369. return output;
  370. }
  371. }, {
  372. key: 'capture',
  373. value: function capture(outputType, htmlDocument, options) {
  374. var output = null;
  375. var startTime = new Date().getTime();
  376. try {
  377. this._overrideOptions(options);
  378. this._doc = htmlDocument || document;
  379. this._logger.setLogLevel(this._options.logLevel);
  380. this._logger.info('capture() outputType: ' + outputType + ' - start');
  381. var newHtmlObject = this._getHtmlObject();
  382. output = this._prepareOutput(newHtmlObject, outputType);
  383. } catch (ex) {
  384. this._logger.error('capture() - error - ' + ex.message);
  385. } finally {
  386. this._logger.info('capture() - end - ' + (new Date().getTime() - startTime) + 'ms');
  387. }
  388. return output;
  389. }
  390. }]);
  391. return Capturer;
  392. }();
  393. exports.default = Capturer;
  394. module.exports = exports['default'];
  395. /***/ }),
  396. /* 3 */
  397. /***/ (function(module, exports, __webpack_require__) {
  398. "use strict";
  399. Object.defineProperty(exports, "__esModule", {
  400. value: true
  401. });
  402. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  403. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  404. var Logger = function () {
  405. function Logger() {
  406. _classCallCheck(this, Logger);
  407. this._logLevelNames = ['debug', 'info', 'warn', 'error', 'fatal', 'off'];
  408. this.init();
  409. }
  410. _createClass(Logger, [{
  411. key: 'init',
  412. value: function init() {
  413. this._logLevel = this._logLevelNames.indexOf('warn');
  414. }
  415. }, {
  416. key: 'setLogLevel',
  417. value: function setLogLevel(levelName) {
  418. if (levelName && this._logLevelNames.indexOf(levelName.toLowerCase()) !== -1) {
  419. this._logLevel = this._logLevelNames.indexOf(levelName.toLowerCase());
  420. }
  421. }
  422. }, {
  423. key: '_log',
  424. value: function _log(msg, levelName) {
  425. if (this._logLevel <= this._logLevelNames.indexOf(levelName)) {
  426. console.log('|html-screen-capture-js|' + levelName + '| ' + msg);
  427. }
  428. }
  429. }, {
  430. key: 'isDebug',
  431. value: function isDebug() {
  432. return this._logLevel === this._logLevelNames.indexOf('debug');
  433. }
  434. }, {
  435. key: 'debug',
  436. value: function debug(msg) {
  437. this._log(msg, 'debug');
  438. }
  439. }, {
  440. key: 'info',
  441. value: function info(msg) {
  442. this._log(msg, 'info');
  443. }
  444. }, {
  445. key: 'warn',
  446. value: function warn(msg) {
  447. this._log(msg, 'warn');
  448. }
  449. }, {
  450. key: 'error',
  451. value: function error(msg) {
  452. this._log(msg, 'error');
  453. }
  454. }, {
  455. key: 'fatal',
  456. value: function fatal(msg) {
  457. this._log(msg, 'fatal');
  458. }
  459. }]);
  460. return Logger;
  461. }();
  462. exports.default = Logger;
  463. module.exports = exports['default'];
  464. /***/ }),
  465. /* 4 */
  466. /***/ (function(module, exports, __webpack_require__) {
  467. "use strict";
  468. Object.defineProperty(exports, "__esModule", {
  469. value: true
  470. });
  471. var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
  472. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  473. var Encoder = function () {
  474. function Encoder() {
  475. _classCallCheck(this, Encoder);
  476. }
  477. _createClass(Encoder, null, [{
  478. key: '_utf8_encode',
  479. value: function _utf8_encode(str) {
  480. str = str.replace(/\r\n/g, '\n');
  481. var utfText = '';
  482. for (var n = 0; n < str.length; n++) {
  483. var c = str.charCodeAt(n);
  484. if (c < 128) {
  485. utfText += String.fromCharCode(c);
  486. } else if (c > 127 && c < 2048) {
  487. utfText += String.fromCharCode(c >> 6 | 192);
  488. utfText += String.fromCharCode(c & 63 | 128);
  489. } else {
  490. utfText += String.fromCharCode(c >> 12 | 224);
  491. utfText += String.fromCharCode(c >> 6 & 63 | 128);
  492. utfText += String.fromCharCode(c & 63 | 128);
  493. }
  494. }
  495. return utfText;
  496. }
  497. }, {
  498. key: 'base64Encode',
  499. value: function base64Encode(str) {
  500. var output = '';
  501. var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  502. var chr1 = void 0,
  503. chr2 = void 0,
  504. chr3 = void 0,
  505. enc1 = void 0,
  506. enc2 = void 0,
  507. enc3 = void 0,
  508. enc4 = void 0;
  509. var i = 0;
  510. str = Encoder._utf8_encode(str);
  511. while (i < str.length) {
  512. chr1 = str.charCodeAt(i++);
  513. chr2 = str.charCodeAt(i++);
  514. chr3 = str.charCodeAt(i++);
  515. enc1 = chr1 >> 2;
  516. enc2 = (chr1 & 3) << 4 | chr2 >> 4;
  517. enc3 = (chr2 & 15) << 2 | chr3 >> 6;
  518. enc4 = chr3 & 63;
  519. if (isNaN(chr2)) {
  520. enc3 = enc4 = 64;
  521. } else if (isNaN(chr3)) {
  522. enc4 = 64;
  523. }
  524. output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);
  525. }
  526. return output;
  527. }
  528. }, {
  529. key: 'uriEncode',
  530. value: function uriEncode(str) {
  531. return (str ? encodeURI(str) : '') || '';
  532. }
  533. }]);
  534. return Encoder;
  535. }();
  536. exports.default = Encoder;
  537. module.exports = exports['default'];
  538. /***/ })
  539. /******/ ]);
  540. });
  541. //# sourceMappingURL=html-screen-capture.js.map