mediacanvas
Version:
Render videos or images at multiple locations on a canvas simultaneously
124 lines (117 loc) • 21.3 kB
JavaScript
(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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9NZWRpYUNhbnZhcy8uL3NyYy9tZWRpYWNhbnZhcy5qcz84ZDBiIl0sIm5hbWVzIjpbIk1lZGlhQ2FudmFzIiwiY2FudmFzIiwid2lkdGgiLCJjbGllbnRXaWR0aCIsImhlaWdodCIsImNsaWVudEhlaWdodCIsIl9jYW52YXMiLCJfY29udGV4dCIsImdldENvbnRleHQiLCJfcmVuZGVyaW5nIiwiaXRlbXMiLCJfY29vcmRpbmF0ZVdpZHRoIiwiX2Nvb3JkaW5hdGVIZWlnaHQiLCJfaG9yaXpvbnRhbFNjYWxlIiwiX3ZlcnRpY2FsU2NhbGUiLCJfd2lkdGgiLCJfaGVpZ2h0IiwiX3N0YXJ0UHJvbWlzZVJlc29sdmVyIiwiX3N0b3BQcm9taXNlUmVzb2x2ZXIiLCJfcmVxdWVzdFJlbmRlclJlc29sdmVyIiwiX3JlbmRlciIsImJpbmQiLCJjbGVhclJlY3QiLCJpdGVtIiwiZHJhd0ltYWdlIiwic3JjIiwieCIsInkiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXREaW1lbnNpb25zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztJQUFhQSxXLFdBQUFBLFc7QUFDWCx1QkFBWUMsTUFBWixFQUE4RTtBQUFBLFFBQTFEQyxLQUEwRCx1RUFBbERELE9BQU9FLFdBQTJDO0FBQUEsUUFBOUJDLE1BQThCLHVFQUFyQkgsT0FBT0ksWUFBYzs7QUFBQTs7QUFDNUUsU0FBS0MsT0FBTCxHQUFlTCxNQUFmO0FBQ0EsU0FBS00sUUFBTCxHQUFnQk4sT0FBT08sVUFBUCxDQUFrQixJQUFsQixDQUFoQjtBQUNBLFNBQUtDLFVBQUwsR0FBa0IsS0FBbEI7O0FBRUEsU0FBS0MsS0FBTCxHQUFhLEVBQWI7QUFDQSxTQUFLQyxnQkFBTCxHQUF3QlQsS0FBeEI7QUFDQSxTQUFLVSxpQkFBTCxHQUF5QlIsTUFBekI7QUFDQSxTQUFLUyxnQkFBTCxHQUF3QixHQUF4QjtBQUNBLFNBQUtDLGNBQUwsR0FB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Q2FudmFzIHtcclxuICBjb25zdHJ1Y3RvcihjYW52YXMsIHdpZHRoID0gY2FudmFzLmNsaWVudFdpZHRoLCBoZWlnaHQgPSBjYW52YXMuY2xpZW50SGVpZ2h0KSB7XHJcbiAgICB0aGlzLl9jYW52YXMgPSBjYW52YXM7XHJcbiAgICB0aGlzLl9jb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcclxuICAgIHRoaXMuX3JlbmRlcmluZyA9IGZhbHNlO1xyXG5cclxuICAgIHRoaXMuaXRlbXMgPSBbXTtcclxuICAgIHRoaXMuX2Nvb3JkaW5hdGVXaWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5fY29vcmRpbmF0ZUhlaWdodCA9IGhlaWdodDtcclxuICAgIHRoaXMuX2hvcml6b250YWxTY2FsZSA9IDEuMDtcclxuICAgIHRoaXMuX3ZlcnRpY2FsU2NhbGUgPSAxLjA7XHJcbiAgICB0aGlzLl93aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5fY2FudmFzLndpZHRoID0gd2lkdGg7XHJcbiAgICB0aGlzLl9jYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG5cclxuICAgIHRoaXMuX3N0YXJ0UHJvbWlzZVJlc29sdmVyID0gbnVsbDtcclxuICAgIHRoaXMuX3N0b3BQcm9taXNlUmVzb2x2ZXIgPSBudWxsO1xyXG4gICAgdGhpcy5fcmVxdWVzdFJlbmRlclJlc29sdmVyID0gbnVsbDtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXIgPSB0aGlzLl9yZW5kZXIuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIF9yZW5kZXIoKSB7XHJcbiAgICBpZiAodGhpcy5fY29udGV4dCkge1xyXG4gICAgICB0aGlzLl9jb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB0aGlzLl93aWR0aCwgdGhpcy5faGVpZ2h0KTtcclxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcclxuICAgICAgICB0aGlzLl9jb250ZXh0LmRyYXdJbWFnZShpdGVtLnNyYywgXHJcbiAgICAgICAgICBpdGVtLnggKiB0aGlzLl9ob3Jpem9udGFsU2NhbGUsIFxyXG4gICAgICAgICAgaXRlbS55ICogdGhpcy5fdmVydGljYWxTY2FsZSwgXHJcbiAgICAgICAgICBpdGVtLndpZHRoICogdGhpcy5faG9yaXpvbnRhbFNjYWxlLCBcclxuICAgICAgICAgIGl0ZW0uaGVpZ2h0ICogdGhpcy5fdmVydGljYWxTY2FsZVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBTY2hlZHVsZSBhbm90aGVyIHJlbmRlclxyXG4gICAgaWYgKHRoaXMuX3JlbmRlcmluZylcclxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3JlbmRlcik7XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9zdG9wUHJvbWlzZVJlc29sdmVyID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICB0aGlzLl9zdG9wUHJvbWlzZVJlc29sdmVyKCk7XHJcbiAgICAgICAgdGhpcy5fc3RvcFByb21pc2VSZXNvbHZlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXF1ZXN0UmVuZGVyUmVzb2x2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RSZW5kZXJSZXNvbHZlcigpO1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RSZW5kZXJSZXNvbHZlciA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGdWxmaWxsIHByb21pc2VcclxuICAgIGlmICh0eXBlb2YgdGhpcy5fc3RhcnRQcm9taXNlUmVzb2x2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICB0aGlzLl9zdGFydFByb21pc2VSZXNvbHZlcigpO1xyXG4gICAgICB0aGlzLl9zdGFydFByb21pc2VSZXNvbHZlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgcmVuZGVyaW5nKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcmluZztcclxuICB9XHJcbiAgXHJcbiAgZ2V0IHdpZHRoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3dpZHRoO1xyXG4gIH1cclxuXHJcbiAgc2V0IHdpZHRoKHdpZHRoKSB7XHJcbiAgICB0aGlzLnNldERpbWVuc2lvbnMod2lkdGgsIHRoaXMuX2hlaWdodCk7XHJcbiAgfVxyXG5cclxuICBnZXQgaGVpZ2h0KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hlaWdodDtcclxuICB9XHJcblxyXG4gIHNldCBoZWlnaHQoaGVpZ2h0KSB7XHJcbiAgICB0aGlzLnNldERpbWVuc2lvbnModGhpcy5fd2lkdGgsIGhlaWdodCk7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JpZ2luYWxXaWR0aCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb29yZGluYXRlV2lkdGg7XHJcbiAgfVxyXG5cclxuICBnZXQgb3JpZ2luYWxIZWlnaHQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29vcmRpbmF0ZUhlaWdodDtcclxuICB9XHJcblxyXG4gIHNldERpbWVuc2lvbnMod2lkdGgsIGhlaWdodCkge1xyXG4gICAgdGhpcy5fd2lkdGggPSB3aWR0aDtcclxuICAgIHRoaXMuX2NhbnZhcy53aWR0aCA9IHdpZHRoO1xyXG4gICAgdGhpcy5faG9yaXpvbnRhbFNjYWxlID0gd2lkdGggLyB0aGlzLl9jb29yZGluYXRlV2lkdGg7XHJcblxyXG4gICAgdGhpcy5faGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgdGhpcy5fY2FudmFzLmhlaWdodCA9IGhlaWdodDtcclxuICAgIHRoaXMuX3ZlcnRpY2FsU2NhbGUgPSBoZWlnaHQgLyB0aGlzLl9jb29yZGluYXRlSGVpZ2h0O1xyXG5cclxuICAgIGlmICghdGhpcy5fcmVuZGVyaW5nKVxyXG4gICAgICB0aGlzLl9yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIG1hdGNoQ2xpZW50RGltZW5zaW9ucygpIHtcclxuICAgIHRoaXMuc2V0RGltZW5zaW9ucyh0aGlzLl9jYW52YXMuY2xpZW50V2lkdGgsIHRoaXMuX2NhbnZhcy5jbGllbnRIZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnQoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fcmVuZGVyaW5nKVxyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmVuZGVyZXIgaXMgYWxyZWFkeSBzdGFydGVkLlwiKSk7XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fc3RhcnRQcm9taXNlUmVzb2x2ZXIgPSByZXNvbHZlO1xyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9yZW5kZXIpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3AoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fcmVuZGVyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fc3RvcFByb21pc2VSZXNvbHZlciA9IHJlc29sdmU7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyaW5nID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZVxyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmVuZGVyZXIgaXMgYWxyZWFkeSBzdG9wcGVkLlwiKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlcXVlc3RSZW5kZXIoKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fcmVuZGVyaW5nKVxyXG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoXCJUaGUgcmVuZGVyZXIgaXMgYWxyZWFkeSBzdGFydGVkLlwiKSk7XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMuX3JlcXVlc3RSZW5kZXJSZXNvbHZlciAhPT0gbnVsbClcclxuICAgICAgICByZWplY3QobmV3IEVycm9yKFwiQSByZW5kZXIgaGFzIGFscmVhZHkgYmVlbiBzY2hlZHVsZWQuXCIpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdFJlbmRlclJlc29sdmVyID0gcmVzb2x2ZTtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fcmVuZGVyKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBNZWRpYUNhbnZhcztcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/mediacanvas.js\n");
/***/ })
/******/ });
});