UNPKG

mediacanvas

Version:

Render videos or images at multiple locations on a canvas simultaneously

124 lines (117 loc) 21.3 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["MediaCanvas"] = factory(); else root["MediaCanvas"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./build.js"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./build.js": /*!******************!*\ !*** ./build.js ***! \******************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nmodule.exports = __webpack_require__(/*! ./src/mediacanvas.js */ \"./src/mediacanvas.js\").default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9NZWRpYUNhbnZhcy8uL2J1aWxkLmpzP2YyNjIiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInJlcXVpcmUiLCJkZWZhdWx0Il0sIm1hcHBpbmdzIjoiOztBQUFBQSxPQUFPQyxPQUFQLEdBQWlCLG1CQUFBQyxDQUFRLGtEQUFSLEVBQWdDQyxPQUFqRCIsImZpbGUiOiIuL2J1aWxkLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3NyYy9tZWRpYWNhbnZhcy5qcycpLmRlZmF1bHQ7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./build.js\n"); /***/ }), /***/ "./src/mediacanvas.js": /*!****************************!*\ !*** ./src/mediacanvas.js ***! \****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar MediaCanvas = exports.MediaCanvas = function () {\n function MediaCanvas(canvas) {\n var width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : canvas.clientWidth;\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : canvas.clientHeight;\n\n _classCallCheck(this, MediaCanvas);\n\n this._canvas = canvas;\n this._context = canvas.getContext(\"2d\");\n this._rendering = false;\n\n this.items = [];\n this._coordinateWidth = width;\n this._coordinateHeight = height;\n this._horizontalScale = 1.0;\n this._verticalScale = 1.0;\n this._width = width;\n this._height = height;\n this._canvas.width = width;\n this._canvas.height = height;\n\n this._startPromiseResolver = null;\n this._stopPromiseResolver = null;\n this._requestRenderResolver = null;\n\n this._render = this._render.bind(this);\n }\n\n _createClass(MediaCanvas, [{\n key: \"_render\",\n value: function _render() {\n if (this._context) {\n this._context.clearRect(0, 0, this._width, this._height);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = this.items[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n this._context.drawImage(item.src, item.x * this._horizontalScale, item.y * this._verticalScale, item.width * this._horizontalScale, item.height * this._verticalScale);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n // Schedule another render\n if (this._rendering) requestAnimationFrame(this._render);else {\n if (typeof this._stopPromiseResolver === \"function\") {\n this._stopPromiseResolver();\n this._stopPromiseResolver = null;\n }\n if (typeof this._requestRenderResolver === \"function\") {\n this._requestRenderResolver();\n this._requestRenderResolver = null;\n }\n }\n\n // Fulfill promise\n if (typeof this._startPromiseResolver === \"function\") {\n this._startPromiseResolver();\n this._startPromiseResolver = null;\n }\n }\n }, {\n key: \"setDimensions\",\n value: function setDimensions(width, height) {\n this._width = width;\n this._canvas.width = width;\n this._horizontalScale = width / this._coordinateWidth;\n\n this._height = height;\n this._canvas.height = height;\n this._verticalScale = height / this._coordinateHeight;\n\n if (!this._rendering) this._render();\n }\n }, {\n key: \"matchClientDimensions\",\n value: function matchClientDimensions() {\n this.setDimensions(this._canvas.clientWidth, this._canvas.clientHeight);\n }\n }, {\n key: \"start\",\n value: function start() {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (_this._rendering) reject(new Error(\"The renderer is already started.\"));else {\n _this._rendering = true;\n _this._startPromiseResolver = resolve;\n requestAnimationFrame(_this._render);\n }\n });\n }\n }, {\n key: \"stop\",\n value: function stop() {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n if (_this2._rendering) {\n _this2._stopPromiseResolver = resolve;\n _this2._rendering = false;\n } else reject(new Error(\"The renderer is already stopped.\"));\n });\n }\n }, {\n key: \"requestRender\",\n value: function requestRender() {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n if (_this3._rendering) reject(new Error(\"The renderer is already started.\"));else if (_this3._requestRenderResolver !== null) reject(new Error(\"A render has already been scheduled.\"));else {\n _this3._requestRenderResolver = resolve;\n requestAnimationFrame(_this3._render);\n }\n });\n }\n }, {\n key: \"rendering\",\n get: function get() {\n return this._rendering;\n }\n }, {\n key: \"width\",\n get: function get() {\n return this._width;\n },\n set: function set(width) {\n this.setDimensions(width, this._height);\n }\n }, {\n key: \"height\",\n get: function get() {\n return this._height;\n },\n set: function set(height) {\n this.setDimensions(this._width, height);\n }\n }, {\n key: \"originalWidth\",\n get: function get() {\n return this._coordinateWidth;\n }\n }, {\n key: \"originalHeight\",\n get: function get() {\n return this._coordinateHeight;\n }\n }]);\n\n return MediaCanvas;\n}();\n\nexports.default = MediaCanvas;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9NZWRpYUNhbnZhcy8uL3NyYy9tZWRpYWNhbnZhcy5qcz84ZDBiIl0sIm5hbWVzIjpbIk1lZGlhQ2FudmFzIiwiY2FudmFzIiwid2lkdGgiLCJjbGllbnRXaWR0aCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsIl9jYW52YXMiLCJfY29udGV4dCIsImdldENvbnRleHQiLCJfcmVuZGVyaW5nIiwiaXRlbXMiLCJfY29vcmRpbmF0ZVdpZHRoIiwiX2Nvb3JkaW5hdGVIZWlnaHQiLCJfaG9yaXpvbnRhbFNjYWxlIiwiX3ZlcnRpY2FsU2NhbGUiLCJfd2lkdGgiLCJfaGVpZ2h0IiwiX3N0YXJ0UHJvbWlzZVJlc29sdmVyIiwiX3N0b3BQcm9taXNlUmVzb2x2ZXIiLCJfcmVxdWVzdFJlbmRlclJlc29sdmVyIiwiX3JlbmRlciIsImJpbmQiLCJjbGVhclJlY3QiLCJpdGVtIiwiZHJhd0ltYWdlIiwic3JjIiwieCIsInkiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXREaW1lbnNpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztJQUFhQSxXLFdBQUFBLFc7QUFDWCx1QkFBWUMsTUFBWixFQUE4RTtBQUFBLFFBQTFEQyxLQUEwRCx1RUFBbERELE9BQU9FLFdBQTJDO0FBQUEsUUFBOUJDLE1BQThCLHVFQUFyQkgsT0FBT0ksWUFBYzs7QUFBQTs7QUFDNUUsU0FBS0MsT0FBTCxHQUFlTCxNQUFmO0FBQ0EsU0FBS00sUUFBTCxHQUFnQk4sT0FBT08sVUFBUCxDQUFrQixJQUFsQixDQUFoQjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsS0FBbEI7O0FBRUEsU0FBS0MsS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLQyxnQkFBTCxHQUF3QlQsS0FBeEI7QUFDQSxTQUFLVSxpQkFBTCxHQUF5QlIsTUFBekI7QUFDQSxTQUFLUyxnQkFBTCxHQUF3QixHQUF4QjtBQUNBLFNBQUtDLGNBQUwsR0FBc0IsR0FBdEI7QUFDQSxTQUFLQyxNQUFMLEdBQWNiLEtBQWQ7QUFDQSxTQUFLYyxPQUFMLEdBQWVaLE1BQWY7QUFDQSxTQUFLRSxPQUFMLENBQWFKLEtBQWIsR0FBcUJBLEtBQXJCO0FBQ0EsU0FBS0ksT0FBTCxDQUFhRixNQUFiLEdBQXNCQSxNQUF0Qjs7QUFFQSxTQUFLYSxxQkFBTCxHQUE2QixJQUE3QjtBQUNBLFNBQUtDLG9CQUFMLEdBQTRCLElBQTVCO0FBQ0EsU0FBS0Msc0JBQUwsR0FBOEIsSUFBOUI7O0FBRUEsU0FBS0MsT0FBTCxHQUFlLEtBQUtBLE9BQUwsQ0FBYUMsSUFBYixDQUFrQixJQUFsQixDQUFmO0FBQ0Q7Ozs7OEJBRVM7QUFDUixVQUFJLEtBQUtkLFFBQVQsRUFBbUI7QUFDakIsYUFBS0EsUUFBTCxDQUFjZSxTQUFkLENBQXdCLENBQXhCLEVBQTJCLENBQTNCLEVBQThCLEtBQUtQLE1BQW5DLEVBQTJDLEtBQUtDLE9BQWhEO0FBRGlCO0FBQUE7QUFBQTs7QUFBQTtBQUVqQiwrQkFBbUIsS0FBS04sS0FBeEIsOEhBQStCO0FBQUEsZ0JBQXBCYSxJQUFvQjs7QUFDN0IsaUJBQUtoQixRQUFMLENBQWNpQixTQUFkLENBQXdCRCxLQUFLRSxHQUE3QixFQUNFRixLQUFLRyxDQUFMLEdBQVMsS0FBS2IsZ0JBRGhCLEVBRUVVLEtBQUtJLENBQUwsR0FBUyxLQUFLYixjQUZoQixFQUdFUyxLQUFLckIsS0FBTCxHQUFhLEtBQUtXLGdCQUhwQixFQUlFVSxLQUFLbkIsTUFBTCxHQUFjLEtBQUtVLGNBSnJCO0FBTUQ7QUFUZ0I7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVVsQjs7QUFFRDtBQUNBLFVBQUksS0FBS0wsVUFBVCxFQUNFbUIsc0JBQXNCLEtBQUtSLE9BQTNCLEVBREYsS0FFSztBQUNILFlBQUksT0FBTyxLQUFLRixvQkFBWixLQUFxQyxVQUF6QyxFQUFxRDtBQUNuRCxlQUFLQSxvQkFBTDtBQUNBLGVBQUtBLG9CQUFMLEdBQTRCLElBQTVCO0FBQ0Q7QUFDRCxZQUFJLE9BQU8sS0FBS0Msc0JBQVosS0FBdUMsVUFBM0MsRUFBdUQ7QUFDckQsZUFBS0Esc0JBQUw7QUFDQSxlQUFLQSxzQkFBTCxHQUE4QixJQUE5QjtBQUNEO0FBQ0Y7O0FBRUQ7QUFDQSxVQUFJLE9BQU8sS0FBS0YscUJBQVosS0FBc0MsVUFBMUMsRUFBc0Q7QUFDcEQsYUFBS0EscUJBQUw7QUFDQSxhQUFLQSxxQkFBTCxHQUE2QixJQUE3QjtBQUNEO0FBQ0Y7OztrQ0E4QmFmLEssRUFBT0UsTSxFQUFRO0FBQzNCLFdBQUtXLE1BQUwsR0FBY2IsS0FBZDtBQUNBLFdBQUtJLE9BQUwsQ0FBYUosS0FBYixHQUFxQkEsS0FBckI7QUFDQSxXQUFLVyxnQkFBTCxHQUF3QlgsUUFBUSxLQUFLUyxnQkFBckM7O0FBRUEsV0FBS0ssT0FBTCxHQUFlWixNQUFmO0FBQ0EsV0FBS0UsT0FBTCxDQUFhRixNQUFiLEdBQXNCQSxNQUF0QjtBQUNBLFdBQUtVLGNBQUwsR0FBc0JWLFNBQVMsS0FBS1EsaUJBQXBDOztBQUVBLFVBQUksQ0FBQyxLQUFLSCxVQUFWLEVBQ0UsS0FBS1csT0FBTDtBQUNIOzs7NENBRXVCO0FBQ3RCLFdBQUtTLGFBQUwsQ0FBbUIsS0FBS3ZCLE9BQUwsQ0FBYUgsV0FBaEMsRUFBNkMsS0FBS0csT0FBTCxDQUFhRCxZQUExRDtBQUNEOzs7NEJBRU87QUFBQTs7QUFDTixhQUFPLElBQUl5QixPQUFKLENBQVksVUFBQ0MsT0FBRCxFQUFVQyxNQUFWLEVBQXFCO0FBQ3RDLFlBQUksTUFBS3ZCLFVBQVQsRUFDRXVCLE9BQU8sSUFBSUMsS0FBSixDQUFVLGtDQUFWLENBQVAsRUFERixLQUVLO0FBQ0gsZ0JBQUt4QixVQUFMLEdBQWtCLElBQWxCO0FBQ0EsZ0JBQUtRLHFCQUFMLEdBQTZCYyxPQUE3QjtBQUNBSCxnQ0FBc0IsTUFBS1IsT0FBM0I7QUFDRDtBQUNGLE9BUk0sQ0FBUDtBQVNEOzs7MkJBRU07QUFBQTs7QUFDTCxhQUFPLElBQUlVLE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEMsWUFBSSxPQUFLdkIsVUFBVCxFQUFxQjtBQUNuQixpQkFBS1Msb0JBQUwsR0FBNEJhLE9BQTVCO0FBQ0EsaUJBQUt0QixVQUFMLEdBQWtCLEtBQWxCO0FBQ0QsU0FIRCxNQUtFdUIsT0FBTyxJQUFJQyxLQUFKLENBQVUsa0NBQVYsQ0FBUDtBQUNILE9BUE0sQ0FBUDtBQVFEOzs7b0NBRWU7QUFBQTs7QUFDZCxhQUFPLElBQUlILE9BQUosQ0FBWSxVQUFDQyxPQUFELEVBQVVDLE1BQVYsRUFBcUI7QUFDdEMsWUFBSSxPQUFLdkIsVUFBVCxFQUNFdUIsT0FBTyxJQUFJQyxLQUFKLENBQVUsa0NBQVYsQ0FBUCxFQURGLEtBRUssSUFBSSxPQUFLZCxzQkFBTCxLQUFnQyxJQUFwQyxFQUNIYSxPQUFPLElBQUlDLEtBQUosQ0FBVSxzQ0FBVixDQUFQLEVBREcsS0FFQTtBQUNILGlCQUFLZCxzQkFBTCxHQUE4QlksT0FBOUI7QUFDQUgsZ0NBQXNCLE9BQUtSLE9BQTNCO0FBQ0Q7QUFDRixPQVRNLENBQVA7QUFVRDs7O3dCQS9FZTtBQUNkLGFBQU8sS0FBS1gsVUFBWjtBQUNEOzs7d0JBRVc7QUFDVixhQUFPLEtBQUtNLE1BQVo7QUFDRCxLO3NCQUVTYixLLEVBQU87QUFDZixXQUFLMkIsYUFBTCxDQUFtQjNCLEtBQW5CLEVBQTBCLEtBQUtjLE9BQS9CO0FBQ0Q7Ozt3QkFFWTtBQUNYLGFBQU8sS0FBS0EsT0FBWjtBQUNELEs7c0JBRVVaLE0sRUFBUTtBQUNqQixXQUFLeUIsYUFBTCxDQUFtQixLQUFLZCxNQUF4QixFQUFnQ1gsTUFBaEM7QUFDRDs7O3dCQUVtQjtBQUNsQixhQUFPLEtBQUtPLGdCQUFaO0FBQ0Q7Ozt3QkFFb0I7QUFDbkIsYUFBTyxLQUFLQyxpQkFBWjtBQUNEOzs7Ozs7a0JBd0RZWixXIiwiZmlsZSI6Ii4vc3JjL21lZGlhY2FudmFzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE1lZGlhQ2FudmFzIHtcclxuICBjb25zdHJ1Y3RvcihjYW52YXMsIHdpZHRoID0gY2FudmFzLmNsaWVudFdpZHRoLCBoZWlnaHQgPSBjYW52YXMuY2xpZW50SGVpZ2h0KSB7XHJcbiAgICB0aGlzLl9jYW52YXMgPSBjYW52YXM7XHJcbiAgICB0aGlzLl9jb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgIHRoaXMuX3JlbmRlcmluZyA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIHRoaXMuX2Nvb3JkaW5hdGVXaWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5fY29vcmRpbmF0ZUhlaWdodCA9IGhlaWdodDtcclxuICAgIHRoaXMuX2hvcml6b250YWxTY2FsZSA9IDEuMDtcclxuICAgIHRoaXMuX3ZlcnRpY2FsU2NhbGUgPSAxLjA7XHJcbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5fY2FudmFzLndpZHRoID0gd2lkdGg7XHJcbiAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG5cclxuICAgIHRoaXMuX3N0YXJ0UHJvbWlzZVJlc29sdmVyID0gbnVsbDtcclxuICAgIHRoaXMuX3N0b3BQcm9taXNlUmVzb2x2ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5fcmVxdWVzdFJlbmRlclJlc29sdmVyID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXIgPSB0aGlzLl9yZW5kZXIuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIF9yZW5kZXIoKSB7XHJcbiAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl93aWR0aCwgdGhpcy5faGVpZ2h0KTtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LmRyYXdJbWFnZShpdGVtLnNyYywgXHJcbiAgICAgICAgICBpdGVtLnggKiB0aGlzLl9ob3Jpem9udGFsU2NhbGUsIFxyXG4gICAgICAgICAgaXRlbS55ICogdGhpcy5fdmVydGljYWxTY2FsZSwgXHJcbiAgICAgICAgICBpdGVtLndpZHRoICogdGhpcy5faG9yaXpvbnRhbFNjYWxlLCBcclxuICAgICAgICAgIGl0ZW0uaGVpZ2h0ICogdGhpcy5fdmVydGljYWxTY2FsZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTY2hlZHVsZSBhbm90aGVyIHJlbmRlclxyXG4gICAgaWYgKHRoaXMuX3JlbmRlcmluZylcclxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlbmRlcik7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdG9wUHJvbWlzZVJlc29sdmVyID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICB0aGlzLl9zdG9wUHJvbWlzZVJlc29sdmVyKCk7XHJcbiAgICAgICAgdGhpcy5fc3RvcFByb21pc2VSZXNvbHZlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXF1ZXN0UmVuZGVyUmVzb2x2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RSZW5kZXJSZXNvbHZlcigpO1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RSZW5kZXJSZXNvbHZlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGdWxmaWxsIHByb21pc2VcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fc3RhcnRQcm9taXNlUmVzb2x2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICB0aGlzLl9zdGFydFByb21pc2VSZXNvbHZlcigpO1xyXG4gICAgICB0aGlzLl9zdGFydFByb21pc2VSZXNvbHZlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmVuZGVyaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcmluZztcclxuICB9XHJcbiAgXHJcbiAgZ2V0IHdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xyXG4gIH1cclxuXHJcbiAgc2V0IHdpZHRoKHdpZHRoKSB7XHJcbiAgICB0aGlzLnNldERpbWVuc2lvbnMod2lkdGgsIHRoaXMuX2hlaWdodCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcclxuICB9XHJcblxyXG4gIHNldCBoZWlnaHQoaGVpZ2h0KSB7XHJcbiAgICB0aGlzLnNldERpbWVuc2lvbnModGhpcy5fd2lkdGgsIGhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JpZ2luYWxXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb29yZGluYXRlV2lkdGg7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JpZ2luYWxIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29vcmRpbmF0ZUhlaWdodDtcclxuICB9XHJcblxyXG4gIHNldERpbWVuc2lvbnMod2lkdGgsIGhlaWdodCkge1xyXG4gICAgdGhpcy5fd2lkdGggPSB3aWR0aDtcclxuICAgIHRoaXMuX2NhbnZhcy53aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faG9yaXpvbnRhbFNjYWxlID0gd2lkdGggLyB0aGlzLl9jb29yZGluYXRlV2lkdGg7XHJcblxyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5fY2FudmFzLmhlaWdodCA9IGhlaWdodDtcclxuICAgIHRoaXMuX3ZlcnRpY2FsU2NhbGUgPSBoZWlnaHQgLyB0aGlzLl9jb29yZGluYXRlSGVpZ2h0O1xyXG5cclxuICAgIGlmICghdGhpcy5fcmVuZGVyaW5nKVxyXG4gICAgICB0aGlzLl9yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIG1hdGNoQ2xpZW50RGltZW5zaW9ucygpIHtcclxuICAgIHRoaXMuc2V0RGltZW5zaW9ucyh0aGlzLl9jYW52YXMuY2xpZW50V2lkdGgsIHRoaXMuX2NhbnZhcy5jbGllbnRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnQoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fcmVuZGVyaW5nKVxyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmVuZGVyZXIgaXMgYWxyZWFkeSBzdGFydGVkLlwiKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRQcm9taXNlUmVzb2x2ZXIgPSByZXNvbHZlO1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9yZW5kZXIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3AoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fcmVuZGVyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc3RvcFByb21pc2VSZXNvbHZlciA9IHJlc29sdmU7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmVuZGVyZXIgaXMgYWxyZWFkeSBzdG9wcGVkLlwiKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlcXVlc3RSZW5kZXIoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fcmVuZGVyaW5nKVxyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmVuZGVyZXIgaXMgYWxyZWFkeSBzdGFydGVkLlwiKSk7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuX3JlcXVlc3RSZW5kZXJSZXNvbHZlciAhPT0gbnVsbClcclxuICAgICAgICByZWplY3QobmV3IEVycm9yKFwiQSByZW5kZXIgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuXCIpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdFJlbmRlclJlc29sdmVyID0gcmVzb2x2ZTtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fcmVuZGVyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWRpYUNhbnZhcztcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/mediacanvas.js\n"); /***/ }) /******/ }); });