@excalidraw/excalidraw 0.16.3 → 0.16.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2375,7 +2375,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2375
2375
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2376
2376
 
2377
2377
  "use strict";
2378
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nconst trackEvent = (category, action, label, value) => {\n try {\n // place here categories that you want to track as events\n // KEEP IN MIND THE PRICING\n const ALLOWED_CATEGORIES_TO_TRACK = []; // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n\n if (typeof window === \"undefined\" || ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.16.3\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).VITE_WORKER_ID) {\n return;\n }\n\n if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {\n return;\n }\n\n if (window.sa_event) {\n window.sa_event(action, {\n category,\n label,\n value\n });\n }\n } catch (error) {\n console.error(\"error during analytics\", error);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxvQ0FBb0MsZ0NBQWdDOztBQUVwRSx5Q0FBeUMsc3FDQUFXO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FuYWx5dGljcy50cz81NjYxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgPT4ge1xuICB0cnkge1xuICAgIC8vIHBsYWNlIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHlvdSB3YW50IHRvIHRyYWNrIGFzIGV2ZW50c1xuICAgIC8vIEtFRVAgSU4gTUlORCBUSEUgUFJJQ0lOR1xuICAgIGNvbnN0IEFMTE9XRURfQ0FURUdPUklFU19UT19UUkFDSyA9IFtdOyAvLyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byB0cmFjayBsb2NhbGx5XG4gICAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IHByb2Nlc3MuZW52LlZJVEVfV09SS0VSX0lEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFBTExPV0VEX0NBVEVHT1JJRVNfVE9fVFJBQ0suaW5jbHVkZXMoY2F0ZWdvcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5zYV9ldmVudCkge1xuICAgICAgd2luZG93LnNhX2V2ZW50KGFjdGlvbiwge1xuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcImVycm9yIGR1cmluZyBhbmFseXRpY3NcIiwgZXJyb3IpO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
2378
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nconst trackEvent = (category, action, label, value) => {\n try {\n // place here categories that you want to track as events\n // KEEP IN MIND THE PRICING\n const ALLOWED_CATEGORIES_TO_TRACK = []; // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n\n if (typeof window === \"undefined\" || ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.16.4\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).VITE_WORKER_ID) {\n return;\n }\n\n if (!ALLOWED_CATEGORIES_TO_TRACK.includes(category)) {\n return;\n }\n\n if (window.sa_event) {\n window.sa_event(action, {\n category,\n label,\n value\n });\n }\n } catch (error) {\n console.error(\"error during analytics\", error);\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7QUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QyxvQ0FBb0MsZ0NBQWdDOztBQUVwRSx5Q0FBeUMsc3FDQUFXO0FBQ3BEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2FuYWx5dGljcy50cz81NjYxIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCB0cmFja0V2ZW50ID0gKGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSkgPT4ge1xuICB0cnkge1xuICAgIC8vIHBsYWNlIGhlcmUgY2F0ZWdvcmllcyB0aGF0IHlvdSB3YW50IHRvIHRyYWNrIGFzIGV2ZW50c1xuICAgIC8vIEtFRVAgSU4gTUlORCBUSEUgUFJJQ0lOR1xuICAgIGNvbnN0IEFMTE9XRURfQ0FURUdPUklFU19UT19UUkFDSyA9IFtdOyAvLyBVbmNvbW1lbnQgdGhlIG5leHQgbGluZSB0byB0cmFjayBsb2NhbGx5XG4gICAgLy8gY29uc29sZS5sb2coXCJUcmFjayBFdmVudFwiLCB7IGNhdGVnb3J5LCBhY3Rpb24sIGxhYmVsLCB2YWx1ZSB9KTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiIHx8IHByb2Nlc3MuZW52LlZJVEVfV09SS0VSX0lEKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFBTExPV0VEX0NBVEVHT1JJRVNfVE9fVFJBQ0suaW5jbHVkZXMoY2F0ZWdvcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHdpbmRvdy5zYV9ldmVudCkge1xuICAgICAgd2luZG93LnNhX2V2ZW50KGFjdGlvbiwge1xuICAgICAgICBjYXRlZ29yeSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcImVycm9yIGR1cmluZyBhbmFseXRpY3NcIiwgZXJyb3IpO1xuICB9XG59OyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
2379
2379
 
2380
2380
  /***/ }),
2381
2381
 
@@ -3805,7 +3805,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
3805
3805
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3806
3806
 
3807
3807
  "use strict";
3808
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"actionSetEmbeddableAsActiveTool\": () => (/* binding */ actionSetEmbeddableAsActiveTool),\n/* harmony export */ \"createPlaceholderEmbeddableLabel\": () => (/* binding */ createPlaceholderEmbeddableLabel),\n/* harmony export */ \"embeddableURLValidator\": () => (/* binding */ embeddableURLValidator),\n/* harmony export */ \"extractSrc\": () => (/* binding */ extractSrc),\n/* harmony export */ \"getEmbedLink\": () => (/* binding */ getEmbedLink),\n/* harmony export */ \"isEmbeddableOrFrameLabel\": () => (/* binding */ isEmbeddableOrFrameLabel)\n/* harmony export */ });\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/register */ \"../../actions/register.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _newElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./newElement */ \"../../element/newElement.ts\");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./textElement */ \"../../element/textElement.ts\");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeChecks */ \"../../element/typeChecks.ts\");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/url */ \"../../data/url.ts\");\n\n\n\n\n\n\n\n\nconst embeddedLinkCache = new Map();\nconst RE_YOUTUBE = /^(?:http(?:s)?:\\/\\/)?(?:www\\.)?youtu(?:be\\.com|\\.be)\\/(embed\\/|watch\\?v=|shorts\\/|playlist\\?list=|embed\\/videoseries\\?list=)?([a-zA-Z0-9_-]+)(?:\\?t=|&t=|\\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\\s]*$/;\nconst RE_VIMEO = /^(?:http(?:s)?:\\/\\/)?(?:(?:w){3}\\.)?(?:player\\.)?vimeo\\.com\\/(?:video\\/)?([^?\\s]+)(?:\\?.*)?$/;\nconst RE_FIGMA = /^https:\\/\\/(?:www\\.)?figma\\.com/;\nconst RE_GH_GIST = /^https:\\/\\/gist\\.github\\.com\\/([\\w_-]+)\\/([\\w_-]+)/;\nconst RE_GH_GIST_EMBED = /^<script[\\s\\S]*?\\ssrc=[\"'](https:\\/\\/gist\\.github\\.com\\/.*?)\\.js[\"']/i; // not anchored to start to allow <blockquote> twitter embeds\n\nconst RE_TWITTER = /(?:https?:\\/\\/)?(?:(?:w){3}\\.)?(?:twitter|x)\\.com\\/[^/]+\\/status\\/(\\d+)/;\nconst RE_TWITTER_EMBED = /^<blockquote[\\s\\S]*?\\shref=[\"'](https?:\\/\\/(?:twitter|x)\\.com\\/[^\"']*)/i;\nconst RE_VALTOWN = /^https:\\/\\/(?:www\\.)?val\\.town\\/(v|embed)\\/[a-zA-Z_$][0-9a-zA-Z_$]+\\.[a-zA-Z_$][0-9a-zA-Z_$]+/;\nconst RE_GENERIC_EMBED = /^<(?:iframe|blockquote)[\\s\\S]*?\\s(?:src|href)=[\"']([^\"']*)[\"'][\\s\\S]*?>$/i;\nconst ALLOWED_DOMAINS = new Set([\"youtube.com\", \"youtu.be\", \"vimeo.com\", \"player.vimeo.com\", \"figma.com\", \"link.excalidraw.com\", \"gist.github.com\", \"twitter.com\", \"*.simplepdf.eu\", \"stackblitz.com\", \"val.town\"]);\n\nconst createSrcDoc = body => {\n return `<html><body>${body}</body></html>`;\n};\n\nconst getEmbedLink = link => {\n if (!link) {\n return null;\n }\n\n if (embeddedLinkCache.has(link)) {\n return embeddedLinkCache.get(link);\n }\n\n const originalLink = link;\n let type = \"generic\";\n let aspectRatio = {\n w: 560,\n h: 840\n };\n const ytLink = link.match(RE_YOUTUBE);\n\n if (ytLink === null || ytLink === void 0 ? void 0 : ytLink[2]) {\n const time = ytLink[3] ? `&start=${ytLink[3]}` : ``;\n const isPortrait = link.includes(\"shorts\");\n type = \"video\";\n\n switch (ytLink[1]) {\n case \"embed/\":\n case \"watch?v=\":\n case \"shorts/\":\n link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n break;\n\n case \"playlist?list=\":\n case \"embed/videoseries?list=\":\n link = `https://www.youtube.com/embed/videoseries?list=${ytLink[2]}&enablejsapi=1${time}`;\n break;\n\n default:\n link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n break;\n }\n\n aspectRatio = isPortrait ? {\n w: 315,\n h: 560\n } : {\n w: 560,\n h: 315\n };\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type\n });\n return {\n link,\n aspectRatio,\n type\n };\n }\n\n const vimeoLink = link.match(RE_VIMEO);\n\n if (vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1]) {\n const target = vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1];\n const warning = !/^\\d+$/.test(target) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toast.unrecognizedLinkFormat\") : undefined;\n type = \"video\";\n link = `https://player.vimeo.com/video/${target}?api=1`;\n aspectRatio = {\n w: 560,\n h: 315\n }; //warning deliberately ommited so it is displayed only once per link\n //same link next time will be served from cache\n\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type\n });\n return {\n link,\n aspectRatio,\n type,\n warning\n };\n }\n\n const figmaLink = link.match(RE_FIGMA);\n\n if (figmaLink) {\n type = \"generic\";\n link = `https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(link)}`;\n aspectRatio = {\n w: 550,\n h: 550\n };\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type\n });\n return {\n link,\n aspectRatio,\n type\n };\n }\n\n const valLink = link.match(RE_VALTOWN);\n\n if (valLink) {\n link = valLink[1] === \"embed\" ? valLink[0] : valLink[0].replace(\"/v\", \"/embed\");\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type\n });\n return {\n link,\n aspectRatio,\n type\n };\n }\n\n if (RE_TWITTER.test(link)) {\n const postId = link.match(RE_TWITTER)[1]; // the embed srcdoc still supports twitter.com domain only.\n // Note that we don't attempt to parse the username as it can consist of\n // non-latin1 characters, and the username in the url can be set to anything\n // without affecting the embed.\n\n const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_7__.sanitizeHTMLAttribute)(`https://twitter.com/x/status/${postId}`);\n const ret = {\n type: \"document\",\n srcdoc: theme => createSrcDoc(`<blockquote class=\"twitter-tweet\" data-dnt=\"true\" data-theme=\"${theme}\"><a href=\"${safeURL}\"></a></blockquote> <script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>`),\n aspectRatio: {\n w: 480,\n h: 480\n },\n sandbox: {\n allowSameOrigin: true\n }\n };\n embeddedLinkCache.set(originalLink, ret);\n return ret;\n }\n\n if (RE_GH_GIST.test(link)) {\n const [, user, gistId] = link.match(RE_GH_GIST);\n const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_7__.sanitizeHTMLAttribute)(`https://gist.github.com/${user}/${gistId}`);\n const ret = {\n type: \"document\",\n srcdoc: () => createSrcDoc(`\n <script src=\"${safeURL}.js\"></script>\n <style type=\"text/css\">\n * { margin: 0px; }\n table, .gist { height: 100%; }\n .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }\n </style>\n `),\n aspectRatio: {\n w: 550,\n h: 720\n }\n };\n embeddedLinkCache.set(link, ret);\n return ret;\n }\n\n embeddedLinkCache.set(link, {\n link,\n aspectRatio,\n type\n });\n return {\n link,\n aspectRatio,\n type\n };\n};\nconst isEmbeddableOrFrameLabel = element => {\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_6__.isEmbeddableElement)(element)) {\n return true;\n }\n\n if (element.type === \"text\") {\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getContainerElement)(element);\n\n if (container && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_6__.isEmbeddableElement)(container)) {\n return true;\n }\n }\n\n return false;\n};\nconst createPlaceholderEmbeddableLabel = element => {\n var _a;\n\n const text = !element.link || (element === null || element === void 0 ? void 0 : element.link) === \"\" ? \"Empty Web-Embed\" : element.link;\n const fontSize = Math.max(Math.min(element.width / 2, element.width / text.length), element.width / 30);\n const fontFamily = _constants__WEBPACK_IMPORTED_MODULE_1__.FONT_FAMILY.Helvetica;\n const fontString = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n fontSize,\n fontFamily\n });\n return (0,_newElement__WEBPACK_IMPORTED_MODULE_4__.newTextElement)({\n x: element.x + element.width / 2,\n y: element.y + element.height / 2,\n strokeColor: element.strokeColor !== \"transparent\" ? element.strokeColor : \"black\",\n backgroundColor: \"transparent\",\n fontFamily,\n fontSize,\n text: (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.wrapText)(text, fontString, element.width - 20),\n textAlign: \"center\",\n verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTICAL_ALIGN.MIDDLE,\n angle: (_a = element.angle) !== null && _a !== void 0 ? _a : 0\n });\n};\nconst actionSetEmbeddableAsActiveTool = (0,_actions_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n name: \"setEmbeddableAsActiveTool\",\n trackEvent: {\n category: \"toolbar\"\n },\n perform: (elements, appState, _, app) => {\n const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n type: \"embeddable\"\n });\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.setCursorForShape)(app.canvas, Object.assign(Object.assign({}, appState), {\n activeTool: nextActiveTool\n }));\n return {\n elements,\n appState: Object.assign(Object.assign({}, appState), {\n activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n type: \"embeddable\"\n })\n }),\n commitToHistory: false\n };\n }\n});\n\nconst validateHostname = (url,\n/** using a Set assumes it already contains normalized bare domains */\nallowedHostnames) => {\n try {\n const {\n hostname\n } = new URL(url);\n const bareDomain = hostname.replace(/^www\\./, \"\");\n const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, \"*\");\n\n if (allowedHostnames instanceof Set) {\n return ALLOWED_DOMAINS.has(bareDomain) || ALLOWED_DOMAINS.has(bareDomainWithFirstSubdomainWildcarded);\n }\n\n if (bareDomain === allowedHostnames.replace(/^www\\./, \"\")) {\n return true;\n }\n } catch (error) {// ignore\n }\n\n return false;\n};\n\nconst extractSrc = htmlString => {\n const twitterMatch = htmlString.match(RE_TWITTER_EMBED);\n\n if (twitterMatch && twitterMatch.length === 2) {\n return twitterMatch[1];\n }\n\n const gistMatch = htmlString.match(RE_GH_GIST_EMBED);\n\n if (gistMatch && gistMatch.length === 2) {\n return gistMatch[1];\n }\n\n const match = htmlString.match(RE_GENERIC_EMBED);\n\n if (match && match.length === 2) {\n return match[1];\n }\n\n return htmlString;\n};\nconst embeddableURLValidator = (url, validateEmbeddable) => {\n if (!url) {\n return false;\n }\n\n if (validateEmbeddable != null) {\n if (typeof validateEmbeddable === \"function\") {\n const ret = validateEmbeddable(url); // if return value is undefined, leave validation to default\n\n if (typeof ret === \"boolean\") {\n return ret;\n }\n } else if (typeof validateEmbeddable === \"boolean\") {\n return validateEmbeddable;\n } else if (validateEmbeddable instanceof RegExp) {\n return validateEmbeddable.test(url);\n } else if (Array.isArray(validateEmbeddable)) {\n for (const domain of validateEmbeddable) {\n if (domain instanceof RegExp) {\n if (url.match(domain)) {\n return true;\n }\n } else if (validateHostname(url, domain)) {\n return true;\n }\n }\n\n return false;\n }\n }\n\n return validateHostname(url, ALLOWED_DOMAINS);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZWxlbWVudC9lbWJlZGRhYmxlLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQStDO0FBQ1k7QUFDL0I7QUFDa0Q7QUFDaEM7QUFDZ0I7QUFDWDtBQUNDO0FBQ3BEO0FBQ0E7QUFDQSxnREFBZ0QsRUFBRTtBQUNsRDtBQUNBO0FBQ0Esa0dBQWtHOztBQUVsRyw2Q0FBNkMsRUFBRTtBQUMvQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHdCQUF3QixLQUFLO0FBQzdCOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QyxVQUFVO0FBQ2pEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBZ0QsVUFBVSxnQkFBZ0IsS0FBSztBQUMvRTs7QUFFQTtBQUNBO0FBQ0EsaUVBQWlFLFVBQVUsZ0JBQWdCLEtBQUs7QUFDaEc7O0FBRUE7QUFDQSxnREFBZ0QsVUFBVSxnQkFBZ0IsS0FBSztBQUMvRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDRDQUE0Qyx3Q0FBQztBQUM3QztBQUNBLDZDQUE2QyxPQUFPO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsK0RBQStELHlCQUF5QjtBQUN4RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOENBQThDO0FBQzlDO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsZ0VBQXFCLGlDQUFpQyxPQUFPO0FBQ2pGO0FBQ0E7QUFDQSxxR0FBcUcsTUFBTSxhQUFhLFFBQVE7QUFDaEk7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxvQkFBb0IsZ0VBQXFCLDRCQUE0QixLQUFLLEdBQUcsT0FBTztBQUNwRjtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsUUFBUTtBQUNqQztBQUNBLGdCQUFnQjtBQUNoQiwyQkFBMkI7QUFDM0IsK0JBQStCLDJCQUEyQixjQUFjLGVBQWU7QUFDdkY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUCxNQUFNLGdFQUFtQjtBQUN6QjtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCLGlFQUFtQjs7QUFFekMscUJBQXFCLGdFQUFtQjtBQUN4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBLHFCQUFxQiw2REFBcUI7QUFDMUMscUJBQXFCLHFEQUFhO0FBQ2xDO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsU0FBUywyREFBYztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVLHNEQUFRO0FBQ2xCO0FBQ0EsbUJBQW1CLDZEQUFxQjtBQUN4QztBQUNBLEdBQUc7QUFDSDtBQUNPLHdDQUF3QywyREFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkIsd0RBQWdCO0FBQzNDO0FBQ0EsS0FBSztBQUNMLElBQUkseURBQWlCLDJDQUEyQztBQUNoRTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDLG9CQUFvQix3REFBZ0I7QUFDcEM7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksZUFBZTtBQUNuQjs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L2VtYmVkZGFibGUudHM/YjQ1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuLi9hY3Rpb25zL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBGT05UX0ZBTUlMWSwgVkVSVElDQUxfQUxJR04gfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IGdldEZvbnRTdHJpbmcsIHNldEN1cnNvckZvclNoYXBlLCB1cGRhdGVBY3RpdmVUb29sIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBuZXdUZXh0RWxlbWVudCB9IGZyb20gXCIuL25ld0VsZW1lbnRcIjtcbmltcG9ydCB7IGdldENvbnRhaW5lckVsZW1lbnQsIHdyYXBUZXh0IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmltcG9ydCB7IGlzRW1iZWRkYWJsZUVsZW1lbnQgfSBmcm9tIFwiLi90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZUhUTUxBdHRyaWJ1dGUgfSBmcm9tIFwiLi4vZGF0YS91cmxcIjtcbmNvbnN0IGVtYmVkZGVkTGlua0NhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgUkVfWU9VVFVCRSA9IC9eKD86aHR0cCg/OnMpPzpcXC9cXC8pPyg/Ond3d1xcLik/eW91dHUoPzpiZVxcLmNvbXxcXC5iZSlcXC8oZW1iZWRcXC98d2F0Y2hcXD92PXxzaG9ydHNcXC98cGxheWxpc3RcXD9saXN0PXxlbWJlZFxcL3ZpZGVvc2VyaWVzXFw/bGlzdD0pPyhbYS16QS1aMC05Xy1dKykoPzpcXD90PXwmdD18XFw/c3RhcnQ9fCZzdGFydD0pPyhbYS16QS1aMC05Xy1dKyk/W15cXHNdKiQvO1xuY29uc3QgUkVfVklNRU8gPSAvXig/Omh0dHAoPzpzKT86XFwvXFwvKT8oPzooPzp3KXszfVxcLik/KD86cGxheWVyXFwuKT92aW1lb1xcLmNvbVxcLyg/OnZpZGVvXFwvKT8oW14/XFxzXSspKD86XFw/LiopPyQvO1xuY29uc3QgUkVfRklHTUEgPSAvXmh0dHBzOlxcL1xcLyg/Ond3d1xcLik/ZmlnbWFcXC5jb20vO1xuY29uc3QgUkVfR0hfR0lTVCA9IC9eaHR0cHM6XFwvXFwvZ2lzdFxcLmdpdGh1YlxcLmNvbVxcLyhbXFx3Xy1dKylcXC8oW1xcd18tXSspLztcbmNvbnN0IFJFX0dIX0dJU1RfRU1CRUQgPSAvXjxzY3JpcHRbXFxzXFxTXSo/XFxzc3JjPVtcIiddKGh0dHBzOlxcL1xcL2dpc3RcXC5naXRodWJcXC5jb21cXC8uKj8pXFwuanNbXCInXS9pOyAvLyBub3QgYW5jaG9yZWQgdG8gc3RhcnQgdG8gYWxsb3cgPGJsb2NrcXVvdGU+IHR3aXR0ZXIgZW1iZWRzXG5cbmNvbnN0IFJFX1RXSVRURVIgPSAvKD86aHR0cHM/OlxcL1xcLyk/KD86KD86dyl7M31cXC4pPyg/OnR3aXR0ZXJ8eClcXC5jb21cXC9bXi9dK1xcL3N0YXR1c1xcLyhcXGQrKS87XG5jb25zdCBSRV9UV0lUVEVSX0VNQkVEID0gL148YmxvY2txdW90ZVtcXHNcXFNdKj9cXHNocmVmPVtcIiddKGh0dHBzPzpcXC9cXC8oPzp0d2l0dGVyfHgpXFwuY29tXFwvW15cIiddKikvaTtcbmNvbnN0IFJFX1ZBTFRPV04gPSAvXmh0dHBzOlxcL1xcLyg/Ond3d1xcLik/dmFsXFwudG93blxcLyh2fGVtYmVkKVxcL1thLXpBLVpfJF1bMC05YS16QS1aXyRdK1xcLlthLXpBLVpfJF1bMC05YS16QS1aXyRdKy87XG5jb25zdCBSRV9HRU5FUklDX0VNQkVEID0gL148KD86aWZyYW1lfGJsb2NrcXVvdGUpW1xcc1xcU10qP1xccyg/OnNyY3xocmVmKT1bXCInXShbXlwiJ10qKVtcIiddW1xcc1xcU10qPz4kL2k7XG5jb25zdCBBTExPV0VEX0RPTUFJTlMgPSBuZXcgU2V0KFtcInlvdXR1YmUuY29tXCIsIFwieW91dHUuYmVcIiwgXCJ2aW1lby5jb21cIiwgXCJwbGF5ZXIudmltZW8uY29tXCIsIFwiZmlnbWEuY29tXCIsIFwibGluay5leGNhbGlkcmF3LmNvbVwiLCBcImdpc3QuZ2l0aHViLmNvbVwiLCBcInR3aXR0ZXIuY29tXCIsIFwiKi5zaW1wbGVwZGYuZXVcIiwgXCJzdGFja2JsaXR6LmNvbVwiLCBcInZhbC50b3duXCJdKTtcblxuY29uc3QgY3JlYXRlU3JjRG9jID0gYm9keSA9PiB7XG4gIHJldHVybiBgPGh0bWw+PGJvZHk+JHtib2R5fTwvYm9keT48L2h0bWw+YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbWJlZExpbmsgPSBsaW5rID0+IHtcbiAgaWYgKCFsaW5rKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoZW1iZWRkZWRMaW5rQ2FjaGUuaGFzKGxpbmspKSB7XG4gICAgcmV0dXJuIGVtYmVkZGVkTGlua0NhY2hlLmdldChsaW5rKTtcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsTGluayA9IGxpbms7XG4gIGxldCB0eXBlID0gXCJnZW5lcmljXCI7XG4gIGxldCBhc3BlY3RSYXRpbyA9IHtcbiAgICB3OiA1NjAsXG4gICAgaDogODQwXG4gIH07XG4gIGNvbnN0IHl0TGluayA9IGxpbmsubWF0Y2goUkVfWU9VVFVCRSk7XG5cbiAgaWYgKHl0TGluayA9PT0gbnVsbCB8fCB5dExpbmsgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHl0TGlua1syXSkge1xuICAgIGNvbnN0IHRpbWUgPSB5dExpbmtbM10gPyBgJnN0YXJ0PSR7eXRMaW5rWzNdfWAgOiBgYDtcbiAgICBjb25zdCBpc1BvcnRyYWl0ID0gbGluay5pbmNsdWRlcyhcInNob3J0c1wiKTtcbiAgICB0eXBlID0gXCJ2aWRlb1wiO1xuXG4gICAgc3dpdGNoICh5dExpbmtbMV0pIHtcbiAgICAgIGNhc2UgXCJlbWJlZC9cIjpcbiAgICAgIGNhc2UgXCJ3YXRjaD92PVwiOlxuICAgICAgY2FzZSBcInNob3J0cy9cIjpcbiAgICAgICAgbGluayA9IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC8ke3l0TGlua1syXX0/ZW5hYmxlanNhcGk9MSR7dGltZX1gO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcInBsYXlsaXN0P2xpc3Q9XCI6XG4gICAgICBjYXNlIFwiZW1iZWQvdmlkZW9zZXJpZXM/bGlzdD1cIjpcbiAgICAgICAgbGluayA9IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC92aWRlb3Nlcmllcz9saXN0PSR7eXRMaW5rWzJdfSZlbmFibGVqc2FwaT0xJHt0aW1lfWA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsaW5rID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7eXRMaW5rWzJdfT9lbmFibGVqc2FwaT0xJHt0aW1lfWA7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGFzcGVjdFJhdGlvID0gaXNQb3J0cmFpdCA/IHtcbiAgICAgIHc6IDMxNSxcbiAgICAgIGg6IDU2MFxuICAgIH0gOiB7XG4gICAgICB3OiA1NjAsXG4gICAgICBoOiAzMTVcbiAgICB9O1xuICAgIGVtYmVkZGVkTGlua0NhY2hlLnNldChvcmlnaW5hbExpbmssIHtcbiAgICAgIGxpbmssXG4gICAgICBhc3BlY3RSYXRpbyxcbiAgICAgIHR5cGVcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZVxuICAgIH07XG4gIH1cblxuICBjb25zdCB2aW1lb0xpbmsgPSBsaW5rLm1hdGNoKFJFX1ZJTUVPKTtcblxuICBpZiAodmltZW9MaW5rID09PSBudWxsIHx8IHZpbWVvTGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmltZW9MaW5rWzFdKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdmltZW9MaW5rID09PSBudWxsIHx8IHZpbWVvTGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmltZW9MaW5rWzFdO1xuICAgIGNvbnN0IHdhcm5pbmcgPSAhL15cXGQrJC8udGVzdCh0YXJnZXQpID8gdChcInRvYXN0LnVucmVjb2duaXplZExpbmtGb3JtYXRcIikgOiB1bmRlZmluZWQ7XG4gICAgdHlwZSA9IFwidmlkZW9cIjtcbiAgICBsaW5rID0gYGh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8ke3RhcmdldH0/YXBpPTFgO1xuICAgIGFzcGVjdFJhdGlvID0ge1xuICAgICAgdzogNTYwLFxuICAgICAgaDogMzE1XG4gICAgfTsgLy93YXJuaW5nIGRlbGliZXJhdGVseSBvbW1pdGVkIHNvIGl0IGlzIGRpc3BsYXllZCBvbmx5IG9uY2UgcGVyIGxpbmtcbiAgICAvL3NhbWUgbGluayBuZXh0IHRpbWUgd2lsbCBiZSBzZXJ2ZWQgZnJvbSBjYWNoZVxuXG4gICAgZW1iZWRkZWRMaW5rQ2FjaGUuc2V0KG9yaWdpbmFsTGluaywge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBsaW5rLFxuICAgICAgYXNwZWN0UmF0aW8sXG4gICAgICB0eXBlLFxuICAgICAgd2FybmluZ1xuICAgIH07XG4gIH1cblxuICBjb25zdCBmaWdtYUxpbmsgPSBsaW5rLm1hdGNoKFJFX0ZJR01BKTtcblxuICBpZiAoZmlnbWFMaW5rKSB7XG4gICAgdHlwZSA9IFwiZ2VuZXJpY1wiO1xuICAgIGxpbmsgPSBgaHR0cHM6Ly93d3cuZmlnbWEuY29tL2VtYmVkP2VtYmVkX2hvc3Q9c2hhcmUmdXJsPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGxpbmspfWA7XG4gICAgYXNwZWN0UmF0aW8gPSB7XG4gICAgICB3OiA1NTAsXG4gICAgICBoOiA1NTBcbiAgICB9O1xuICAgIGVtYmVkZGVkTGlua0NhY2hlLnNldChvcmlnaW5hbExpbmssIHtcbiAgICAgIGxpbmssXG4gICAgICBhc3BlY3RSYXRpbyxcbiAgICAgIHR5cGVcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZVxuICAgIH07XG4gIH1cblxuICBjb25zdCB2YWxMaW5rID0gbGluay5tYXRjaChSRV9WQUxUT1dOKTtcblxuICBpZiAodmFsTGluaykge1xuICAgIGxpbmsgPSB2YWxMaW5rWzFdID09PSBcImVtYmVkXCIgPyB2YWxMaW5rWzBdIDogdmFsTGlua1swXS5yZXBsYWNlKFwiL3ZcIiwgXCIvZW1iZWRcIik7XG4gICAgZW1iZWRkZWRMaW5rQ2FjaGUuc2V0KG9yaWdpbmFsTGluaywge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBsaW5rLFxuICAgICAgYXNwZWN0UmF0aW8sXG4gICAgICB0eXBlXG4gICAgfTtcbiAgfVxuXG4gIGlmIChSRV9UV0lUVEVSLnRlc3QobGluaykpIHtcbiAgICBjb25zdCBwb3N0SWQgPSBsaW5rLm1hdGNoKFJFX1RXSVRURVIpWzFdOyAvLyB0aGUgZW1iZWQgc3JjZG9jIHN0aWxsIHN1cHBvcnRzIHR3aXR0ZXIuY29tIGRvbWFpbiBvbmx5LlxuICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBhdHRlbXB0IHRvIHBhcnNlIHRoZSB1c2VybmFtZSBhcyBpdCBjYW4gY29uc2lzdCBvZlxuICAgIC8vIG5vbi1sYXRpbjEgY2hhcmFjdGVycywgYW5kIHRoZSB1c2VybmFtZSBpbiB0aGUgdXJsIGNhbiBiZSBzZXQgdG8gYW55dGhpbmdcbiAgICAvLyB3aXRob3V0IGFmZmVjdGluZyB0aGUgZW1iZWQuXG5cbiAgICBjb25zdCBzYWZlVVJMID0gc2FuaXRpemVIVE1MQXR0cmlidXRlKGBodHRwczovL3R3aXR0ZXIuY29tL3gvc3RhdHVzLyR7cG9zdElkfWApO1xuICAgIGNvbnN0IHJldCA9IHtcbiAgICAgIHR5cGU6IFwiZG9jdW1lbnRcIixcbiAgICAgIHNyY2RvYzogdGhlbWUgPT4gY3JlYXRlU3JjRG9jKGA8YmxvY2txdW90ZSBjbGFzcz1cInR3aXR0ZXItdHdlZXRcIiBkYXRhLWRudD1cInRydWVcIiBkYXRhLXRoZW1lPVwiJHt0aGVtZX1cIj48YSBocmVmPVwiJHtzYWZlVVJMfVwiPjwvYT48L2Jsb2NrcXVvdGU+IDxzY3JpcHQgYXN5bmMgc3JjPVwiaHR0cHM6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzXCIgY2hhcnNldD1cInV0Zi04XCI+PC9zY3JpcHQ+YCksXG4gICAgICBhc3BlY3RSYXRpbzoge1xuICAgICAgICB3OiA0ODAsXG4gICAgICAgIGg6IDQ4MFxuICAgICAgfSxcbiAgICAgIHNhbmRib3g6IHtcbiAgICAgICAgYWxsb3dTYW1lT3JpZ2luOiB0cnVlXG4gICAgICB9XG4gICAgfTtcbiAgICBlbWJlZGRlZExpbmtDYWNoZS5zZXQob3JpZ2luYWxMaW5rLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBpZiAoUkVfR0hfR0lTVC50ZXN0KGxpbmspKSB7XG4gICAgY29uc3QgWywgdXNlciwgZ2lzdElkXSA9IGxpbmsubWF0Y2goUkVfR0hfR0lTVCk7XG4gICAgY29uc3Qgc2FmZVVSTCA9IHNhbml0aXplSFRNTEF0dHJpYnV0ZShgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vJHt1c2VyfS8ke2dpc3RJZH1gKTtcbiAgICBjb25zdCByZXQgPSB7XG4gICAgICB0eXBlOiBcImRvY3VtZW50XCIsXG4gICAgICBzcmNkb2M6ICgpID0+IGNyZWF0ZVNyY0RvYyhgXG4gICAgICAgICAgPHNjcmlwdCBzcmM9XCIke3NhZmVVUkx9LmpzXCI+PC9zY3JpcHQ+XG4gICAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPlxuICAgICAgICAgICAgKiB7IG1hcmdpbjogMHB4OyB9XG4gICAgICAgICAgICB0YWJsZSwgLmdpc3QgeyBoZWlnaHQ6IDEwMCU7IH1cbiAgICAgICAgICAgIC5naXN0IC5naXN0LWZpbGUgeyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAycHgpOyBwYWRkaW5nOiAwcHg7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG87IH1cbiAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICBgKSxcbiAgICAgIGFzcGVjdFJhdGlvOiB7XG4gICAgICAgIHc6IDU1MCxcbiAgICAgICAgaDogNzIwXG4gICAgICB9XG4gICAgfTtcbiAgICBlbWJlZGRlZExpbmtDYWNoZS5zZXQobGluaywgcmV0KTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgZW1iZWRkZWRMaW5rQ2FjaGUuc2V0KGxpbmssIHtcbiAgICBsaW5rLFxuICAgIGFzcGVjdFJhdGlvLFxuICAgIHR5cGVcbiAgfSk7XG4gIHJldHVybiB7XG4gICAgbGluayxcbiAgICBhc3BlY3RSYXRpbyxcbiAgICB0eXBlXG4gIH07XG59O1xuZXhwb3J0IGNvbnN0IGlzRW1iZWRkYWJsZU9yRnJhbWVMYWJlbCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoaXNFbWJlZGRhYmxlRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBnZXRDb250YWluZXJFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgaWYgKGNvbnRhaW5lciAmJiBpc0VtYmVkZGFibGVFbGVtZW50KGNvbnRhaW5lcikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgY29uc3QgY3JlYXRlUGxhY2Vob2xkZXJFbWJlZGRhYmxlTGFiZWwgPSBlbGVtZW50ID0+IHtcbiAgdmFyIF9hO1xuXG4gIGNvbnN0IHRleHQgPSAhZWxlbWVudC5saW5rIHx8IChlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQubGluaykgPT09IFwiXCIgPyBcIkVtcHR5IFdlYi1FbWJlZFwiIDogZWxlbWVudC5saW5rO1xuICBjb25zdCBmb250U2l6ZSA9IE1hdGgubWF4KE1hdGgubWluKGVsZW1lbnQud2lkdGggLyAyLCBlbGVtZW50LndpZHRoIC8gdGV4dC5sZW5ndGgpLCBlbGVtZW50LndpZHRoIC8gMzApO1xuICBjb25zdCBmb250RmFtaWx5ID0gRk9OVF9GQU1JTFkuSGVsdmV0aWNhO1xuICBjb25zdCBmb250U3RyaW5nID0gZ2V0Rm9udFN0cmluZyh7XG4gICAgZm9udFNpemUsXG4gICAgZm9udEZhbWlseVxuICB9KTtcbiAgcmV0dXJuIG5ld1RleHRFbGVtZW50KHtcbiAgICB4OiBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoIC8gMixcbiAgICB5OiBlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodCAvIDIsXG4gICAgc3Ryb2tlQ29sb3I6IGVsZW1lbnQuc3Ryb2tlQ29sb3IgIT09IFwidHJhbnNwYXJlbnRcIiA/IGVsZW1lbnQuc3Ryb2tlQ29sb3IgOiBcImJsYWNrXCIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgZm9udEZhbWlseSxcbiAgICBmb250U2l6ZSxcbiAgICB0ZXh0OiB3cmFwVGV4dCh0ZXh0LCBmb250U3RyaW5nLCBlbGVtZW50LndpZHRoIC0gMjApLFxuICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcbiAgICB2ZXJ0aWNhbEFsaWduOiBWRVJUSUNBTF9BTElHTi5NSURETEUsXG4gICAgYW5nbGU6IChfYSA9IGVsZW1lbnQuYW5nbGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDBcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IGFjdGlvblNldEVtYmVkZGFibGVBc0FjdGl2ZVRvb2wgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwic2V0RW1iZWRkYWJsZUFzQWN0aXZlVG9vbFwiLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwidG9vbGJhclwiXG4gIH0sXG4gIHBlcmZvcm06IChlbGVtZW50cywgYXBwU3RhdGUsIF8sIGFwcCkgPT4ge1xuICAgIGNvbnN0IG5leHRBY3RpdmVUb29sID0gdXBkYXRlQWN0aXZlVG9vbChhcHBTdGF0ZSwge1xuICAgICAgdHlwZTogXCJlbWJlZGRhYmxlXCJcbiAgICB9KTtcbiAgICBzZXRDdXJzb3JGb3JTaGFwZShhcHAuY2FudmFzLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgYWN0aXZlVG9vbDogbmV4dEFjdGl2ZVRvb2xcbiAgICB9KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgICAgIGFjdGl2ZVRvb2w6IHVwZGF0ZUFjdGl2ZVRvb2woYXBwU3RhdGUsIHtcbiAgICAgICAgICB0eXBlOiBcImVtYmVkZGFibGVcIlxuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlXG4gICAgfTtcbiAgfVxufSk7XG5cbmNvbnN0IHZhbGlkYXRlSG9zdG5hbWUgPSAodXJsLFxuLyoqIHVzaW5nIGEgU2V0IGFzc3VtZXMgaXQgYWxyZWFkeSBjb250YWlucyBub3JtYWxpemVkIGJhcmUgZG9tYWlucyAqL1xuYWxsb3dlZEhvc3RuYW1lcykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHtcbiAgICAgIGhvc3RuYW1lXG4gICAgfSA9IG5ldyBVUkwodXJsKTtcbiAgICBjb25zdCBiYXJlRG9tYWluID0gaG9zdG5hbWUucmVwbGFjZSgvXnd3d1xcLi8sIFwiXCIpO1xuICAgIGNvbnN0IGJhcmVEb21haW5XaXRoRmlyc3RTdWJkb21haW5XaWxkY2FyZGVkID0gYmFyZURvbWFpbi5yZXBsYWNlKC9eKFteLl0rKS8sIFwiKlwiKTtcblxuICAgIGlmIChhbGxvd2VkSG9zdG5hbWVzIGluc3RhbmNlb2YgU2V0KSB7XG4gICAgICByZXR1cm4gQUxMT1dFRF9ET01BSU5TLmhhcyhiYXJlRG9tYWluKSB8fCBBTExPV0VEX0RPTUFJTlMuaGFzKGJhcmVEb21haW5XaXRoRmlyc3RTdWJkb21haW5XaWxkY2FyZGVkKTtcbiAgICB9XG5cbiAgICBpZiAoYmFyZURvbWFpbiA9PT0gYWxsb3dlZEhvc3RuYW1lcy5yZXBsYWNlKC9ed3d3XFwuLywgXCJcIikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHsvLyBpZ25vcmVcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0U3JjID0gaHRtbFN0cmluZyA9PiB7XG4gIGNvbnN0IHR3aXR0ZXJNYXRjaCA9IGh0bWxTdHJpbmcubWF0Y2goUkVfVFdJVFRFUl9FTUJFRCk7XG5cbiAgaWYgKHR3aXR0ZXJNYXRjaCAmJiB0d2l0dGVyTWF0Y2gubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHR3aXR0ZXJNYXRjaFsxXTtcbiAgfVxuXG4gIGNvbnN0IGdpc3RNYXRjaCA9IGh0bWxTdHJpbmcubWF0Y2goUkVfR0hfR0lTVF9FTUJFRCk7XG5cbiAgaWYgKGdpc3RNYXRjaCAmJiBnaXN0TWF0Y2gubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIGdpc3RNYXRjaFsxXTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gaHRtbFN0cmluZy5tYXRjaChSRV9HRU5FUklDX0VNQkVEKTtcblxuICBpZiAobWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIG1hdGNoWzFdO1xuICB9XG5cbiAgcmV0dXJuIGh0bWxTdHJpbmc7XG59O1xuZXhwb3J0IGNvbnN0IGVtYmVkZGFibGVVUkxWYWxpZGF0b3IgPSAodXJsLCB2YWxpZGF0ZUVtYmVkZGFibGUpID0+IHtcbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmFsaWRhdGVFbWJlZGRhYmxlICE9IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIHZhbGlkYXRlRW1iZWRkYWJsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25zdCByZXQgPSB2YWxpZGF0ZUVtYmVkZGFibGUodXJsKTsgLy8gaWYgcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZCwgbGVhdmUgdmFsaWRhdGlvbiB0byBkZWZhdWx0XG5cbiAgICAgIGlmICh0eXBlb2YgcmV0ID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbGlkYXRlRW1iZWRkYWJsZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVtYmVkZGFibGU7XG4gICAgfSBlbHNlIGlmICh2YWxpZGF0ZUVtYmVkZGFibGUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVtYmVkZGFibGUudGVzdCh1cmwpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWxpZGF0ZUVtYmVkZGFibGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGRvbWFpbiBvZiB2YWxpZGF0ZUVtYmVkZGFibGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgIGlmICh1cmwubWF0Y2goZG9tYWluKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHZhbGlkYXRlSG9zdG5hbWUodXJsLCBkb21haW4pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB2YWxpZGF0ZUhvc3RuYW1lKHVybCwgQUxMT1dFRF9ET01BSU5TKTtcbn07Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../element/embeddable.ts\n");
3808
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"actionSetEmbeddableAsActiveTool\": () => (/* binding */ actionSetEmbeddableAsActiveTool),\n/* harmony export */ \"createPlaceholderEmbeddableLabel\": () => (/* binding */ createPlaceholderEmbeddableLabel),\n/* harmony export */ \"embeddableURLValidator\": () => (/* binding */ embeddableURLValidator),\n/* harmony export */ \"extractSrc\": () => (/* binding */ extractSrc),\n/* harmony export */ \"getEmbedLink\": () => (/* binding */ getEmbedLink),\n/* harmony export */ \"isEmbeddableOrFrameLabel\": () => (/* binding */ isEmbeddableOrFrameLabel)\n/* harmony export */ });\n/* harmony import */ var _actions_register__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actions/register */ \"../../actions/register.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _newElement__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./newElement */ \"../../element/newElement.ts\");\n/* harmony import */ var _textElement__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./textElement */ \"../../element/textElement.ts\");\n/* harmony import */ var _typeChecks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./typeChecks */ \"../../element/typeChecks.ts\");\n/* harmony import */ var _data_url__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../data/url */ \"../../data/url.ts\");\n\n\n\n\n\n\n\n\nconst embeddedLinkCache = new Map();\nconst RE_YOUTUBE = /^(?:http(?:s)?:\\/\\/)?(?:www\\.)?youtu(?:be\\.com|\\.be)\\/(embed\\/|watch\\?v=|shorts\\/|playlist\\?list=|embed\\/videoseries\\?list=)?([a-zA-Z0-9_-]+)(?:\\?t=|&t=|\\?start=|&start=)?([a-zA-Z0-9_-]+)?[^\\s]*$/;\nconst RE_VIMEO = /^(?:http(?:s)?:\\/\\/)?(?:(?:w){3}\\.)?(?:player\\.)?vimeo\\.com\\/(?:video\\/)?([^?\\s]+)(?:\\?.*)?$/;\nconst RE_FIGMA = /^https:\\/\\/(?:www\\.)?figma\\.com/;\nconst RE_GH_GIST = /^https:\\/\\/gist\\.github\\.com\\/([\\w_-]+)\\/([\\w_-]+)/;\nconst RE_GH_GIST_EMBED = /^<script[\\s\\S]*?\\ssrc=[\"'](https:\\/\\/gist\\.github\\.com\\/.*?)\\.js[\"']/i; // not anchored to start to allow <blockquote> twitter embeds\n\nconst RE_TWITTER = /(?:https?:\\/\\/)?(?:(?:w){3}\\.)?(?:twitter|x)\\.com\\/[^/]+\\/status\\/(\\d+)/;\nconst RE_TWITTER_EMBED = /^<blockquote[\\s\\S]*?\\shref=[\"'](https?:\\/\\/(?:twitter|x)\\.com\\/[^\"']*)/i;\nconst RE_VALTOWN = /^https:\\/\\/(?:www\\.)?val\\.town\\/(v|embed)\\/[a-zA-Z_$][0-9a-zA-Z_$]+\\.[a-zA-Z_$][0-9a-zA-Z_$]+/;\nconst RE_GENERIC_EMBED = /^<(?:iframe|blockquote)[\\s\\S]*?\\s(?:src|href)=[\"']([^\"']*)[\"'][\\s\\S]*?>$/i;\nconst ALLOWED_DOMAINS = new Set([\"youtube.com\", \"youtu.be\", \"vimeo.com\", \"player.vimeo.com\", \"figma.com\", \"link.excalidraw.com\", \"gist.github.com\", \"twitter.com\", \"*.simplepdf.eu\", \"stackblitz.com\", \"val.town\"]);\nconst ALLOW_SAME_ORIGIN = new Set([\"youtube.com\", \"youtu.be\", \"vimeo.com\", \"player.vimeo.com\", \"figma.com\", \"twitter.com\", \"x.com\", \"*.simplepdf.eu\", \"stackblitz.com\"]);\n\nconst createSrcDoc = body => {\n return `<html><body>${body}</body></html>`;\n};\n\nconst getEmbedLink = link => {\n if (!link) {\n return null;\n }\n\n if (embeddedLinkCache.has(link)) {\n return embeddedLinkCache.get(link);\n }\n\n const originalLink = link;\n const allowSameOrigin = ALLOW_SAME_ORIGIN.has(matchHostname(link, ALLOW_SAME_ORIGIN) || \"\");\n let type = \"generic\";\n let aspectRatio = {\n w: 560,\n h: 840\n };\n const ytLink = link.match(RE_YOUTUBE);\n\n if (ytLink === null || ytLink === void 0 ? void 0 : ytLink[2]) {\n const time = ytLink[3] ? `&start=${ytLink[3]}` : ``;\n const isPortrait = link.includes(\"shorts\");\n type = \"video\";\n\n switch (ytLink[1]) {\n case \"embed/\":\n case \"watch?v=\":\n case \"shorts/\":\n link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n break;\n\n case \"playlist?list=\":\n case \"embed/videoseries?list=\":\n link = `https://www.youtube.com/embed/videoseries?list=${ytLink[2]}&enablejsapi=1${time}`;\n break;\n\n default:\n link = `https://www.youtube.com/embed/${ytLink[2]}?enablejsapi=1${time}`;\n break;\n }\n\n aspectRatio = isPortrait ? {\n w: 315,\n h: 560\n } : {\n w: 560,\n h: 315\n };\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n });\n return {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n };\n }\n\n const vimeoLink = link.match(RE_VIMEO);\n\n if (vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1]) {\n const target = vimeoLink === null || vimeoLink === void 0 ? void 0 : vimeoLink[1];\n const warning = !/^\\d+$/.test(target) ? (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toast.unrecognizedLinkFormat\") : undefined;\n type = \"video\";\n link = `https://player.vimeo.com/video/${target}?api=1`;\n aspectRatio = {\n w: 560,\n h: 315\n }; //warning deliberately ommited so it is displayed only once per link\n //same link next time will be served from cache\n\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n });\n return {\n link,\n aspectRatio,\n type,\n warning,\n sandbox: {\n allowSameOrigin\n }\n };\n }\n\n const figmaLink = link.match(RE_FIGMA);\n\n if (figmaLink) {\n type = \"generic\";\n link = `https://www.figma.com/embed?embed_host=share&url=${encodeURIComponent(link)}`;\n aspectRatio = {\n w: 550,\n h: 550\n };\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n });\n return {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n };\n }\n\n const valLink = link.match(RE_VALTOWN);\n\n if (valLink) {\n link = valLink[1] === \"embed\" ? valLink[0] : valLink[0].replace(\"/v\", \"/embed\");\n embeddedLinkCache.set(originalLink, {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n });\n return {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n };\n }\n\n if (RE_TWITTER.test(link)) {\n const postId = link.match(RE_TWITTER)[1]; // the embed srcdoc still supports twitter.com domain only.\n // Note that we don't attempt to parse the username as it can consist of\n // non-latin1 characters, and the username in the url can be set to anything\n // without affecting the embed.\n\n const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_7__.sanitizeHTMLAttribute)(`https://twitter.com/x/status/${postId}`);\n const ret = {\n type: \"document\",\n srcdoc: theme => createSrcDoc(`<blockquote class=\"twitter-tweet\" data-dnt=\"true\" data-theme=\"${theme}\"><a href=\"${safeURL}\"></a></blockquote> <script async src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>`),\n aspectRatio: {\n w: 480,\n h: 480\n },\n sandbox: {\n allowSameOrigin\n }\n };\n embeddedLinkCache.set(originalLink, ret);\n return ret;\n }\n\n if (RE_GH_GIST.test(link)) {\n const [, user, gistId] = link.match(RE_GH_GIST);\n const safeURL = (0,_data_url__WEBPACK_IMPORTED_MODULE_7__.sanitizeHTMLAttribute)(`https://gist.github.com/${user}/${gistId}`);\n const ret = {\n type: \"document\",\n srcdoc: () => createSrcDoc(`\n <script src=\"${safeURL}.js\"></script>\n <style type=\"text/css\">\n * { margin: 0px; }\n table, .gist { height: 100%; }\n .gist .gist-file { height: calc(100vh - 2px); padding: 0px; display: grid; grid-template-rows: 1fr auto; }\n </style>\n `),\n aspectRatio: {\n w: 550,\n h: 720\n },\n sandbox: {\n allowSameOrigin\n }\n };\n embeddedLinkCache.set(link, ret);\n return ret;\n }\n\n embeddedLinkCache.set(link, {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n });\n return {\n link,\n aspectRatio,\n type,\n sandbox: {\n allowSameOrigin\n }\n };\n};\nconst isEmbeddableOrFrameLabel = element => {\n if ((0,_typeChecks__WEBPACK_IMPORTED_MODULE_6__.isEmbeddableElement)(element)) {\n return true;\n }\n\n if (element.type === \"text\") {\n const container = (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.getContainerElement)(element);\n\n if (container && (0,_typeChecks__WEBPACK_IMPORTED_MODULE_6__.isEmbeddableElement)(container)) {\n return true;\n }\n }\n\n return false;\n};\nconst createPlaceholderEmbeddableLabel = element => {\n var _a;\n\n const text = !element.link || (element === null || element === void 0 ? void 0 : element.link) === \"\" ? \"Empty Web-Embed\" : element.link;\n const fontSize = Math.max(Math.min(element.width / 2, element.width / text.length), element.width / 30);\n const fontFamily = _constants__WEBPACK_IMPORTED_MODULE_1__.FONT_FAMILY.Helvetica;\n const fontString = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getFontString)({\n fontSize,\n fontFamily\n });\n return (0,_newElement__WEBPACK_IMPORTED_MODULE_4__.newTextElement)({\n x: element.x + element.width / 2,\n y: element.y + element.height / 2,\n strokeColor: element.strokeColor !== \"transparent\" ? element.strokeColor : \"black\",\n backgroundColor: \"transparent\",\n fontFamily,\n fontSize,\n text: (0,_textElement__WEBPACK_IMPORTED_MODULE_5__.wrapText)(text, fontString, element.width - 20),\n textAlign: \"center\",\n verticalAlign: _constants__WEBPACK_IMPORTED_MODULE_1__.VERTICAL_ALIGN.MIDDLE,\n angle: (_a = element.angle) !== null && _a !== void 0 ? _a : 0\n });\n};\nconst actionSetEmbeddableAsActiveTool = (0,_actions_register__WEBPACK_IMPORTED_MODULE_0__.register)({\n name: \"setEmbeddableAsActiveTool\",\n trackEvent: {\n category: \"toolbar\"\n },\n perform: (elements, appState, _, app) => {\n const nextActiveTool = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n type: \"embeddable\"\n });\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.setCursorForShape)(app.canvas, Object.assign(Object.assign({}, appState), {\n activeTool: nextActiveTool\n }));\n return {\n elements,\n appState: Object.assign(Object.assign({}, appState), {\n activeTool: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.updateActiveTool)(appState, {\n type: \"embeddable\"\n })\n }),\n commitToHistory: false\n };\n }\n});\n\nconst matchHostname = (url,\n/** using a Set assumes it already contains normalized bare domains */\nallowedHostnames) => {\n try {\n const {\n hostname\n } = new URL(url);\n const bareDomain = hostname.replace(/^www\\./, \"\");\n\n if (allowedHostnames instanceof Set) {\n if (ALLOWED_DOMAINS.has(bareDomain)) {\n return bareDomain;\n }\n\n const bareDomainWithFirstSubdomainWildcarded = bareDomain.replace(/^([^.]+)/, \"*\");\n\n if (ALLOWED_DOMAINS.has(bareDomainWithFirstSubdomainWildcarded)) {\n return bareDomainWithFirstSubdomainWildcarded;\n }\n\n return null;\n }\n\n const bareAllowedHostname = allowedHostnames.replace(/^www\\./, \"\");\n\n if (bareDomain === bareAllowedHostname) {\n return bareAllowedHostname;\n }\n } catch (error) {// ignore\n }\n\n return null;\n};\n\nconst extractSrc = htmlString => {\n const twitterMatch = htmlString.match(RE_TWITTER_EMBED);\n\n if (twitterMatch && twitterMatch.length === 2) {\n return twitterMatch[1];\n }\n\n const gistMatch = htmlString.match(RE_GH_GIST_EMBED);\n\n if (gistMatch && gistMatch.length === 2) {\n return gistMatch[1];\n }\n\n const match = htmlString.match(RE_GENERIC_EMBED);\n\n if (match && match.length === 2) {\n return match[1];\n }\n\n return htmlString;\n};\nconst embeddableURLValidator = (url, validateEmbeddable) => {\n if (!url) {\n return false;\n }\n\n if (validateEmbeddable != null) {\n if (typeof validateEmbeddable === \"function\") {\n const ret = validateEmbeddable(url); // if return value is undefined, leave validation to default\n\n if (typeof ret === \"boolean\") {\n return ret;\n }\n } else if (typeof validateEmbeddable === \"boolean\") {\n return validateEmbeddable;\n } else if (validateEmbeddable instanceof RegExp) {\n return validateEmbeddable.test(url);\n } else if (Array.isArray(validateEmbeddable)) {\n for (const domain of validateEmbeddable) {\n if (domain instanceof RegExp) {\n if (url.match(domain)) {\n return true;\n }\n } else if (matchHostname(url, domain)) {\n return true;\n }\n }\n\n return false;\n }\n }\n\n return !!matchHostname(url, ALLOWED_DOMAINS);\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFRO0FBQ2xCO0FBQ0EsbUJBQW1CLDZEQUFxQjtBQUN4QztBQUNBLEdBQUc7QUFDSDtBQUNPLHdDQUF3QywyREFBUTtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSwyQkFBMkIsd0RBQWdCO0FBQzNDO0FBQ0EsS0FBSztBQUNMLElBQUkseURBQWlCLDJDQUEyQztBQUNoRTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsOENBQThDO0FBQzlDLG9CQUFvQix3REFBZ0I7QUFDcEM7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUksZUFBZTtBQUNuQjs7QUFFQTtBQUNBOztBQUVPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwyQ0FBMkM7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9lbGVtZW50L2VtYmVkZGFibGUudHM/YjQ1YiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWdpc3RlciB9IGZyb20gXCIuLi9hY3Rpb25zL3JlZ2lzdGVyXCI7XG5pbXBvcnQgeyBGT05UX0ZBTUlMWSwgVkVSVElDQUxfQUxJR04gfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7IGdldEZvbnRTdHJpbmcsIHNldEN1cnNvckZvclNoYXBlLCB1cGRhdGVBY3RpdmVUb29sIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBuZXdUZXh0RWxlbWVudCB9IGZyb20gXCIuL25ld0VsZW1lbnRcIjtcbmltcG9ydCB7IGdldENvbnRhaW5lckVsZW1lbnQsIHdyYXBUZXh0IH0gZnJvbSBcIi4vdGV4dEVsZW1lbnRcIjtcbmltcG9ydCB7IGlzRW1iZWRkYWJsZUVsZW1lbnQgfSBmcm9tIFwiLi90eXBlQ2hlY2tzXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZUhUTUxBdHRyaWJ1dGUgfSBmcm9tIFwiLi4vZGF0YS91cmxcIjtcbmNvbnN0IGVtYmVkZGVkTGlua0NhY2hlID0gbmV3IE1hcCgpO1xuY29uc3QgUkVfWU9VVFVCRSA9IC9eKD86aHR0cCg/OnMpPzpcXC9cXC8pPyg/Ond3d1xcLik/eW91dHUoPzpiZVxcLmNvbXxcXC5iZSlcXC8oZW1iZWRcXC98d2F0Y2hcXD92PXxzaG9ydHNcXC98cGxheWxpc3RcXD9saXN0PXxlbWJlZFxcL3ZpZGVvc2VyaWVzXFw/bGlzdD0pPyhbYS16QS1aMC05Xy1dKykoPzpcXD90PXwmdD18XFw/c3RhcnQ9fCZzdGFydD0pPyhbYS16QS1aMC05Xy1dKyk/W15cXHNdKiQvO1xuY29uc3QgUkVfVklNRU8gPSAvXig/Omh0dHAoPzpzKT86XFwvXFwvKT8oPzooPzp3KXszfVxcLik/KD86cGxheWVyXFwuKT92aW1lb1xcLmNvbVxcLyg/OnZpZGVvXFwvKT8oW14/XFxzXSspKD86XFw/LiopPyQvO1xuY29uc3QgUkVfRklHTUEgPSAvXmh0dHBzOlxcL1xcLyg/Ond3d1xcLik/ZmlnbWFcXC5jb20vO1xuY29uc3QgUkVfR0hfR0lTVCA9IC9eaHR0cHM6XFwvXFwvZ2lzdFxcLmdpdGh1YlxcLmNvbVxcLyhbXFx3Xy1dKylcXC8oW1xcd18tXSspLztcbmNvbnN0IFJFX0dIX0dJU1RfRU1CRUQgPSAvXjxzY3JpcHRbXFxzXFxTXSo/XFxzc3JjPVtcIiddKGh0dHBzOlxcL1xcL2dpc3RcXC5naXRodWJcXC5jb21cXC8uKj8pXFwuanNbXCInXS9pOyAvLyBub3QgYW5jaG9yZWQgdG8gc3RhcnQgdG8gYWxsb3cgPGJsb2NrcXVvdGU+IHR3aXR0ZXIgZW1iZWRzXG5cbmNvbnN0IFJFX1RXSVRURVIgPSAvKD86aHR0cHM/OlxcL1xcLyk/KD86KD86dyl7M31cXC4pPyg/OnR3aXR0ZXJ8eClcXC5jb21cXC9bXi9dK1xcL3N0YXR1c1xcLyhcXGQrKS87XG5jb25zdCBSRV9UV0lUVEVSX0VNQkVEID0gL148YmxvY2txdW90ZVtcXHNcXFNdKj9cXHNocmVmPVtcIiddKGh0dHBzPzpcXC9cXC8oPzp0d2l0dGVyfHgpXFwuY29tXFwvW15cIiddKikvaTtcbmNvbnN0IFJFX1ZBTFRPV04gPSAvXmh0dHBzOlxcL1xcLyg/Ond3d1xcLik/dmFsXFwudG93blxcLyh2fGVtYmVkKVxcL1thLXpBLVpfJF1bMC05YS16QS1aXyRdK1xcLlthLXpBLVpfJF1bMC05YS16QS1aXyRdKy87XG5jb25zdCBSRV9HRU5FUklDX0VNQkVEID0gL148KD86aWZyYW1lfGJsb2NrcXVvdGUpW1xcc1xcU10qP1xccyg/OnNyY3xocmVmKT1bXCInXShbXlwiJ10qKVtcIiddW1xcc1xcU10qPz4kL2k7XG5jb25zdCBBTExPV0VEX0RPTUFJTlMgPSBuZXcgU2V0KFtcInlvdXR1YmUuY29tXCIsIFwieW91dHUuYmVcIiwgXCJ2aW1lby5jb21cIiwgXCJwbGF5ZXIudmltZW8uY29tXCIsIFwiZmlnbWEuY29tXCIsIFwibGluay5leGNhbGlkcmF3LmNvbVwiLCBcImdpc3QuZ2l0aHViLmNvbVwiLCBcInR3aXR0ZXIuY29tXCIsIFwiKi5zaW1wbGVwZGYuZXVcIiwgXCJzdGFja2JsaXR6LmNvbVwiLCBcInZhbC50b3duXCJdKTtcbmNvbnN0IEFMTE9XX1NBTUVfT1JJR0lOID0gbmV3IFNldChbXCJ5b3V0dWJlLmNvbVwiLCBcInlvdXR1LmJlXCIsIFwidmltZW8uY29tXCIsIFwicGxheWVyLnZpbWVvLmNvbVwiLCBcImZpZ21hLmNvbVwiLCBcInR3aXR0ZXIuY29tXCIsIFwieC5jb21cIiwgXCIqLnNpbXBsZXBkZi5ldVwiLCBcInN0YWNrYmxpdHouY29tXCJdKTtcblxuY29uc3QgY3JlYXRlU3JjRG9jID0gYm9keSA9PiB7XG4gIHJldHVybiBgPGh0bWw+PGJvZHk+JHtib2R5fTwvYm9keT48L2h0bWw+YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFbWJlZExpbmsgPSBsaW5rID0+IHtcbiAgaWYgKCFsaW5rKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAoZW1iZWRkZWRMaW5rQ2FjaGUuaGFzKGxpbmspKSB7XG4gICAgcmV0dXJuIGVtYmVkZGVkTGlua0NhY2hlLmdldChsaW5rKTtcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsTGluayA9IGxpbms7XG4gIGNvbnN0IGFsbG93U2FtZU9yaWdpbiA9IEFMTE9XX1NBTUVfT1JJR0lOLmhhcyhtYXRjaEhvc3RuYW1lKGxpbmssIEFMTE9XX1NBTUVfT1JJR0lOKSB8fCBcIlwiKTtcbiAgbGV0IHR5cGUgPSBcImdlbmVyaWNcIjtcbiAgbGV0IGFzcGVjdFJhdGlvID0ge1xuICAgIHc6IDU2MCxcbiAgICBoOiA4NDBcbiAgfTtcbiAgY29uc3QgeXRMaW5rID0gbGluay5tYXRjaChSRV9ZT1VUVUJFKTtcblxuICBpZiAoeXRMaW5rID09PSBudWxsIHx8IHl0TGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogeXRMaW5rWzJdKSB7XG4gICAgY29uc3QgdGltZSA9IHl0TGlua1szXSA/IGAmc3RhcnQ9JHt5dExpbmtbM119YCA6IGBgO1xuICAgIGNvbnN0IGlzUG9ydHJhaXQgPSBsaW5rLmluY2x1ZGVzKFwic2hvcnRzXCIpO1xuICAgIHR5cGUgPSBcInZpZGVvXCI7XG5cbiAgICBzd2l0Y2ggKHl0TGlua1sxXSkge1xuICAgICAgY2FzZSBcImVtYmVkL1wiOlxuICAgICAgY2FzZSBcIndhdGNoP3Y9XCI6XG4gICAgICBjYXNlIFwic2hvcnRzL1wiOlxuICAgICAgICBsaW5rID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7eXRMaW5rWzJdfT9lbmFibGVqc2FwaT0xJHt0aW1lfWA7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwicGxheWxpc3Q/bGlzdD1cIjpcbiAgICAgIGNhc2UgXCJlbWJlZC92aWRlb3Nlcmllcz9saXN0PVwiOlxuICAgICAgICBsaW5rID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3ZpZGVvc2VyaWVzP2xpc3Q9JHt5dExpbmtbMl19JmVuYWJsZWpzYXBpPTEke3RpbWV9YDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGxpbmsgPSBgaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHt5dExpbmtbMl19P2VuYWJsZWpzYXBpPTEke3RpbWV9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXNwZWN0UmF0aW8gPSBpc1BvcnRyYWl0ID8ge1xuICAgICAgdzogMzE1LFxuICAgICAgaDogNTYwXG4gICAgfSA6IHtcbiAgICAgIHc6IDU2MCxcbiAgICAgIGg6IDMxNVxuICAgIH07XG4gICAgZW1iZWRkZWRMaW5rQ2FjaGUuc2V0KG9yaWdpbmFsTGluaywge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZSxcbiAgICAgIHNhbmRib3g6IHtcbiAgICAgICAgYWxsb3dTYW1lT3JpZ2luXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmssXG4gICAgICBhc3BlY3RSYXRpbyxcbiAgICAgIHR5cGUsXG4gICAgICBzYW5kYm94OiB7XG4gICAgICAgIGFsbG93U2FtZU9yaWdpblxuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBjb25zdCB2aW1lb0xpbmsgPSBsaW5rLm1hdGNoKFJFX1ZJTUVPKTtcblxuICBpZiAodmltZW9MaW5rID09PSBudWxsIHx8IHZpbWVvTGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmltZW9MaW5rWzFdKSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gdmltZW9MaW5rID09PSBudWxsIHx8IHZpbWVvTGluayA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmltZW9MaW5rWzFdO1xuICAgIGNvbnN0IHdhcm5pbmcgPSAhL15cXGQrJC8udGVzdCh0YXJnZXQpID8gdChcInRvYXN0LnVucmVjb2duaXplZExpbmtGb3JtYXRcIikgOiB1bmRlZmluZWQ7XG4gICAgdHlwZSA9IFwidmlkZW9cIjtcbiAgICBsaW5rID0gYGh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8ke3RhcmdldH0/YXBpPTFgO1xuICAgIGFzcGVjdFJhdGlvID0ge1xuICAgICAgdzogNTYwLFxuICAgICAgaDogMzE1XG4gICAgfTsgLy93YXJuaW5nIGRlbGliZXJhdGVseSBvbW1pdGVkIHNvIGl0IGlzIGRpc3BsYXllZCBvbmx5IG9uY2UgcGVyIGxpbmtcbiAgICAvL3NhbWUgbGluayBuZXh0IHRpbWUgd2lsbCBiZSBzZXJ2ZWQgZnJvbSBjYWNoZVxuXG4gICAgZW1iZWRkZWRMaW5rQ2FjaGUuc2V0KG9yaWdpbmFsTGluaywge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZSxcbiAgICAgIHNhbmRib3g6IHtcbiAgICAgICAgYWxsb3dTYW1lT3JpZ2luXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbmssXG4gICAgICBhc3BlY3RSYXRpbyxcbiAgICAgIHR5cGUsXG4gICAgICB3YXJuaW5nLFxuICAgICAgc2FuZGJveDoge1xuICAgICAgICBhbGxvd1NhbWVPcmlnaW5cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZmlnbWFMaW5rID0gbGluay5tYXRjaChSRV9GSUdNQSk7XG5cbiAgaWYgKGZpZ21hTGluaykge1xuICAgIHR5cGUgPSBcImdlbmVyaWNcIjtcbiAgICBsaW5rID0gYGh0dHBzOi8vd3d3LmZpZ21hLmNvbS9lbWJlZD9lbWJlZF9ob3N0PXNoYXJlJnVybD0ke2VuY29kZVVSSUNvbXBvbmVudChsaW5rKX1gO1xuICAgIGFzcGVjdFJhdGlvID0ge1xuICAgICAgdzogNTUwLFxuICAgICAgaDogNTUwXG4gICAgfTtcbiAgICBlbWJlZGRlZExpbmtDYWNoZS5zZXQob3JpZ2luYWxMaW5rLCB7XG4gICAgICBsaW5rLFxuICAgICAgYXNwZWN0UmF0aW8sXG4gICAgICB0eXBlLFxuICAgICAgc2FuZGJveDoge1xuICAgICAgICBhbGxvd1NhbWVPcmlnaW5cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZSxcbiAgICAgIHNhbmRib3g6IHtcbiAgICAgICAgYWxsb3dTYW1lT3JpZ2luXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHZhbExpbmsgPSBsaW5rLm1hdGNoKFJFX1ZBTFRPV04pO1xuXG4gIGlmICh2YWxMaW5rKSB7XG4gICAgbGluayA9IHZhbExpbmtbMV0gPT09IFwiZW1iZWRcIiA/IHZhbExpbmtbMF0gOiB2YWxMaW5rWzBdLnJlcGxhY2UoXCIvdlwiLCBcIi9lbWJlZFwiKTtcbiAgICBlbWJlZGRlZExpbmtDYWNoZS5zZXQob3JpZ2luYWxMaW5rLCB7XG4gICAgICBsaW5rLFxuICAgICAgYXNwZWN0UmF0aW8sXG4gICAgICB0eXBlLFxuICAgICAgc2FuZGJveDoge1xuICAgICAgICBhbGxvd1NhbWVPcmlnaW5cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluayxcbiAgICAgIGFzcGVjdFJhdGlvLFxuICAgICAgdHlwZSxcbiAgICAgIHNhbmRib3g6IHtcbiAgICAgICAgYWxsb3dTYW1lT3JpZ2luXG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGlmIChSRV9UV0lUVEVSLnRlc3QobGluaykpIHtcbiAgICBjb25zdCBwb3N0SWQgPSBsaW5rLm1hdGNoKFJFX1RXSVRURVIpWzFdOyAvLyB0aGUgZW1iZWQgc3JjZG9jIHN0aWxsIHN1cHBvcnRzIHR3aXR0ZXIuY29tIGRvbWFpbiBvbmx5LlxuICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBhdHRlbXB0IHRvIHBhcnNlIHRoZSB1c2VybmFtZSBhcyBpdCBjYW4gY29uc2lzdCBvZlxuICAgIC8vIG5vbi1sYXRpbjEgY2hhcmFjdGVycywgYW5kIHRoZSB1c2VybmFtZSBpbiB0aGUgdXJsIGNhbiBiZSBzZXQgdG8gYW55dGhpbmdcbiAgICAvLyB3aXRob3V0IGFmZmVjdGluZyB0aGUgZW1iZWQuXG5cbiAgICBjb25zdCBzYWZlVVJMID0gc2FuaXRpemVIVE1MQXR0cmlidXRlKGBodHRwczovL3R3aXR0ZXIuY29tL3gvc3RhdHVzLyR7cG9zdElkfWApO1xuICAgIGNvbnN0IHJldCA9IHtcbiAgICAgIHR5cGU6IFwiZG9jdW1lbnRcIixcbiAgICAgIHNyY2RvYzogdGhlbWUgPT4gY3JlYXRlU3JjRG9jKGA8YmxvY2txdW90ZSBjbGFzcz1cInR3aXR0ZXItdHdlZXRcIiBkYXRhLWRudD1cInRydWVcIiBkYXRhLXRoZW1lPVwiJHt0aGVtZX1cIj48YSBocmVmPVwiJHtzYWZlVVJMfVwiPjwvYT48L2Jsb2NrcXVvdGU+IDxzY3JpcHQgYXN5bmMgc3JjPVwiaHR0cHM6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzXCIgY2hhcnNldD1cInV0Zi04XCI+PC9zY3JpcHQ+YCksXG4gICAgICBhc3BlY3RSYXRpbzoge1xuICAgICAgICB3OiA0ODAsXG4gICAgICAgIGg6IDQ4MFxuICAgICAgfSxcbiAgICAgIHNhbmRib3g6IHtcbiAgICAgICAgYWxsb3dTYW1lT3JpZ2luXG4gICAgICB9XG4gICAgfTtcbiAgICBlbWJlZGRlZExpbmtDYWNoZS5zZXQob3JpZ2luYWxMaW5rLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBpZiAoUkVfR0hfR0lTVC50ZXN0KGxpbmspKSB7XG4gICAgY29uc3QgWywgdXNlciwgZ2lzdElkXSA9IGxpbmsubWF0Y2goUkVfR0hfR0lTVCk7XG4gICAgY29uc3Qgc2FmZVVSTCA9IHNhbml0aXplSFRNTEF0dHJpYnV0ZShgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vJHt1c2VyfS8ke2dpc3RJZH1gKTtcbiAgICBjb25zdCByZXQgPSB7XG4gICAgICB0eXBlOiBcImRvY3VtZW50XCIsXG4gICAgICBzcmNkb2M6ICgpID0+IGNyZWF0ZVNyY0RvYyhgXG4gICAgICAgICAgPHNjcmlwdCBzcmM9XCIke3NhZmVVUkx9LmpzXCI+PC9zY3JpcHQ+XG4gICAgICAgICAgPHN0eWxlIHR5cGU9XCJ0ZXh0L2Nzc1wiPlxuICAgICAgICAgICAgKiB7IG1hcmdpbjogMHB4OyB9XG4gICAgICAgICAgICB0YWJsZSwgLmdpc3QgeyBoZWlnaHQ6IDEwMCU7IH1cbiAgICAgICAgICAgIC5naXN0IC5naXN0LWZpbGUgeyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAycHgpOyBwYWRkaW5nOiAwcHg7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtcm93czogMWZyIGF1dG87IH1cbiAgICAgICAgICA8L3N0eWxlPlxuICAgICAgICBgKSxcbiAgICAgIGFzcGVjdFJhdGlvOiB7XG4gICAgICAgIHc6IDU1MCxcbiAgICAgICAgaDogNzIwXG4gICAgICB9LFxuICAgICAgc2FuZGJveDoge1xuICAgICAgICBhbGxvd1NhbWVPcmlnaW5cbiAgICAgIH1cbiAgICB9O1xuICAgIGVtYmVkZGVkTGlua0NhY2hlLnNldChsaW5rLCByZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBlbWJlZGRlZExpbmtDYWNoZS5zZXQobGluaywge1xuICAgIGxpbmssXG4gICAgYXNwZWN0UmF0aW8sXG4gICAgdHlwZSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBhbGxvd1NhbWVPcmlnaW5cbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIGxpbmssXG4gICAgYXNwZWN0UmF0aW8sXG4gICAgdHlwZSxcbiAgICBzYW5kYm94OiB7XG4gICAgICBhbGxvd1NhbWVPcmlnaW5cbiAgICB9XG4gIH07XG59O1xuZXhwb3J0IGNvbnN0IGlzRW1iZWRkYWJsZU9yRnJhbWVMYWJlbCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoaXNFbWJlZGRhYmxlRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBnZXRDb250YWluZXJFbGVtZW50KGVsZW1lbnQpO1xuXG4gICAgaWYgKGNvbnRhaW5lciAmJiBpc0VtYmVkZGFibGVFbGVtZW50KGNvbnRhaW5lcikpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5leHBvcnQgY29uc3QgY3JlYXRlUGxhY2Vob2xkZXJFbWJlZGRhYmxlTGFiZWwgPSBlbGVtZW50ID0+IHtcbiAgdmFyIF9hO1xuXG4gIGNvbnN0IHRleHQgPSAhZWxlbWVudC5saW5rIHx8IChlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVsZW1lbnQubGluaykgPT09IFwiXCIgPyBcIkVtcHR5IFdlYi1FbWJlZFwiIDogZWxlbWVudC5saW5rO1xuICBjb25zdCBmb250U2l6ZSA9IE1hdGgubWF4KE1hdGgubWluKGVsZW1lbnQud2lkdGggLyAyLCBlbGVtZW50LndpZHRoIC8gdGV4dC5sZW5ndGgpLCBlbGVtZW50LndpZHRoIC8gMzApO1xuICBjb25zdCBmb250RmFtaWx5ID0gRk9OVF9GQU1JTFkuSGVsdmV0aWNhO1xuICBjb25zdCBmb250U3RyaW5nID0gZ2V0Rm9udFN0cmluZyh7XG4gICAgZm9udFNpemUsXG4gICAgZm9udEZhbWlseVxuICB9KTtcbiAgcmV0dXJuIG5ld1RleHRFbGVtZW50KHtcbiAgICB4OiBlbGVtZW50LnggKyBlbGVtZW50LndpZHRoIC8gMixcbiAgICB5OiBlbGVtZW50LnkgKyBlbGVtZW50LmhlaWdodCAvIDIsXG4gICAgc3Ryb2tlQ29sb3I6IGVsZW1lbnQuc3Ryb2tlQ29sb3IgIT09IFwidHJhbnNwYXJlbnRcIiA/IGVsZW1lbnQuc3Ryb2tlQ29sb3IgOiBcImJsYWNrXCIsXG4gICAgYmFja2dyb3VuZENvbG9yOiBcInRyYW5zcGFyZW50XCIsXG4gICAgZm9udEZhbWlseSxcbiAgICBmb250U2l6ZSxcbiAgICB0ZXh0OiB3cmFwVGV4dCh0ZXh0LCBmb250U3RyaW5nLCBlbGVtZW50LndpZHRoIC0gMjApLFxuICAgIHRleHRBbGlnbjogXCJjZW50ZXJcIixcbiAgICB2ZXJ0aWNhbEFsaWduOiBWRVJUSUNBTF9BTElHTi5NSURETEUsXG4gICAgYW5nbGU6IChfYSA9IGVsZW1lbnQuYW5nbGUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDBcbiAgfSk7XG59O1xuZXhwb3J0IGNvbnN0IGFjdGlvblNldEVtYmVkZGFibGVBc0FjdGl2ZVRvb2wgPSByZWdpc3Rlcih7XG4gIG5hbWU6IFwic2V0RW1iZWRkYWJsZUFzQWN0aXZlVG9vbFwiLFxuICB0cmFja0V2ZW50OiB7XG4gICAgY2F0ZWdvcnk6IFwidG9vbGJhclwiXG4gIH0sXG4gIHBlcmZvcm06IChlbGVtZW50cywgYXBwU3RhdGUsIF8sIGFwcCkgPT4ge1xuICAgIGNvbnN0IG5leHRBY3RpdmVUb29sID0gdXBkYXRlQWN0aXZlVG9vbChhcHBTdGF0ZSwge1xuICAgICAgdHlwZTogXCJlbWJlZGRhYmxlXCJcbiAgICB9KTtcbiAgICBzZXRDdXJzb3JGb3JTaGFwZShhcHAuY2FudmFzLCBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGFwcFN0YXRlKSwge1xuICAgICAgYWN0aXZlVG9vbDogbmV4dEFjdGl2ZVRvb2xcbiAgICB9KSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVsZW1lbnRzLFxuICAgICAgYXBwU3RhdGU6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgYXBwU3RhdGUpLCB7XG4gICAgICAgIGFjdGl2ZVRvb2w6IHVwZGF0ZUFjdGl2ZVRvb2woYXBwU3RhdGUsIHtcbiAgICAgICAgICB0eXBlOiBcImVtYmVkZGFibGVcIlxuICAgICAgICB9KVxuICAgICAgfSksXG4gICAgICBjb21taXRUb0hpc3Rvcnk6IGZhbHNlXG4gICAgfTtcbiAgfVxufSk7XG5cbmNvbnN0IG1hdGNoSG9zdG5hbWUgPSAodXJsLFxuLyoqIHVzaW5nIGEgU2V0IGFzc3VtZXMgaXQgYWxyZWFkeSBjb250YWlucyBub3JtYWxpemVkIGJhcmUgZG9tYWlucyAqL1xuYWxsb3dlZEhvc3RuYW1lcykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHtcbiAgICAgIGhvc3RuYW1lXG4gICAgfSA9IG5ldyBVUkwodXJsKTtcbiAgICBjb25zdCBiYXJlRG9tYWluID0gaG9zdG5hbWUucmVwbGFjZSgvXnd3d1xcLi8sIFwiXCIpO1xuXG4gICAgaWYgKGFsbG93ZWRIb3N0bmFtZXMgaW5zdGFuY2VvZiBTZXQpIHtcbiAgICAgIGlmIChBTExPV0VEX0RPTUFJTlMuaGFzKGJhcmVEb21haW4pKSB7XG4gICAgICAgIHJldHVybiBiYXJlRG9tYWluO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBiYXJlRG9tYWluV2l0aEZpcnN0U3ViZG9tYWluV2lsZGNhcmRlZCA9IGJhcmVEb21haW4ucmVwbGFjZSgvXihbXi5dKykvLCBcIipcIik7XG5cbiAgICAgIGlmIChBTExPV0VEX0RPTUFJTlMuaGFzKGJhcmVEb21haW5XaXRoRmlyc3RTdWJkb21haW5XaWxkY2FyZGVkKSkge1xuICAgICAgICByZXR1cm4gYmFyZURvbWFpbldpdGhGaXJzdFN1YmRvbWFpbldpbGRjYXJkZWQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGJhcmVBbGxvd2VkSG9zdG5hbWUgPSBhbGxvd2VkSG9zdG5hbWVzLnJlcGxhY2UoL153d3dcXC4vLCBcIlwiKTtcblxuICAgIGlmIChiYXJlRG9tYWluID09PSBiYXJlQWxsb3dlZEhvc3RuYW1lKSB7XG4gICAgICByZXR1cm4gYmFyZUFsbG93ZWRIb3N0bmFtZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7Ly8gaWdub3JlXG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBleHRyYWN0U3JjID0gaHRtbFN0cmluZyA9PiB7XG4gIGNvbnN0IHR3aXR0ZXJNYXRjaCA9IGh0bWxTdHJpbmcubWF0Y2goUkVfVFdJVFRFUl9FTUJFRCk7XG5cbiAgaWYgKHR3aXR0ZXJNYXRjaCAmJiB0d2l0dGVyTWF0Y2gubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIHR3aXR0ZXJNYXRjaFsxXTtcbiAgfVxuXG4gIGNvbnN0IGdpc3RNYXRjaCA9IGh0bWxTdHJpbmcubWF0Y2goUkVfR0hfR0lTVF9FTUJFRCk7XG5cbiAgaWYgKGdpc3RNYXRjaCAmJiBnaXN0TWF0Y2gubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIGdpc3RNYXRjaFsxXTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoID0gaHRtbFN0cmluZy5tYXRjaChSRV9HRU5FUklDX0VNQkVEKTtcblxuICBpZiAobWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID09PSAyKSB7XG4gICAgcmV0dXJuIG1hdGNoWzFdO1xuICB9XG5cbiAgcmV0dXJuIGh0bWxTdHJpbmc7XG59O1xuZXhwb3J0IGNvbnN0IGVtYmVkZGFibGVVUkxWYWxpZGF0b3IgPSAodXJsLCB2YWxpZGF0ZUVtYmVkZGFibGUpID0+IHtcbiAgaWYgKCF1cmwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmFsaWRhdGVFbWJlZGRhYmxlICE9IG51bGwpIHtcbiAgICBpZiAodHlwZW9mIHZhbGlkYXRlRW1iZWRkYWJsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBjb25zdCByZXQgPSB2YWxpZGF0ZUVtYmVkZGFibGUodXJsKTsgLy8gaWYgcmV0dXJuIHZhbHVlIGlzIHVuZGVmaW5lZCwgbGVhdmUgdmFsaWRhdGlvbiB0byBkZWZhdWx0XG5cbiAgICAgIGlmICh0eXBlb2YgcmV0ID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbGlkYXRlRW1iZWRkYWJsZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVtYmVkZGFibGU7XG4gICAgfSBlbHNlIGlmICh2YWxpZGF0ZUVtYmVkZGFibGUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgIHJldHVybiB2YWxpZGF0ZUVtYmVkZGFibGUudGVzdCh1cmwpO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWxpZGF0ZUVtYmVkZGFibGUpKSB7XG4gICAgICBmb3IgKGNvbnN0IGRvbWFpbiBvZiB2YWxpZGF0ZUVtYmVkZGFibGUpIHtcbiAgICAgICAgaWYgKGRvbWFpbiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICAgIGlmICh1cmwubWF0Y2goZG9tYWluKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG1hdGNoSG9zdG5hbWUodXJsLCBkb21haW4pKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAhIW1hdGNoSG9zdG5hbWUodXJsLCBBTExPV0VEX0RPTUFJTlMpO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../element/embeddable.ts\n");
3809
3809
 
3810
3810
  /***/ }),
3811
3811
 
@@ -4223,7 +4223,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
4223
4223
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4224
4224
 
4225
4225
  "use strict";
4226
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n\n /* global __webpack_public_path__:writable */\n __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.16.3\"}/dist/`;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDOztBQUV0QyxJQUFJLGFBQW9CLEtBQUssZ0RBQVE7QUFDckM7O0FBRUE7QUFDQSxFQUFFLHFCQUF1Qix3REFBd0Qsd0JBQXlCLENBQUMsR0FBRyxRQUE0QixDQUFDO0FBQzNJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz8wZTMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuVklURV9QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5WSVRFX1BLR19WRVJTSU9OfS9kaXN0L2A7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
4226
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n\n /* global __webpack_public_path__:writable */\n __webpack_require__.p = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.16.4\"}/dist/`;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDOztBQUV0QyxJQUFJLGFBQW9CLEtBQUssZ0RBQVE7QUFDckM7O0FBRUE7QUFDQSxFQUFFLHFCQUF1Qix3REFBd0Qsd0JBQXlCLENBQUMsR0FBRyxRQUE0QixDQUFDO0FBQzNJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vcHVibGljUGF0aC5qcz8wZTMxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOViB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4gIC8qIGdsb2JhbCBfX3dlYnBhY2tfcHVibGljX3BhdGhfXzp3cml0YWJsZSAqL1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHwgYGh0dHBzOi8vdW5wa2cuY29tLyR7cHJvY2Vzcy5lbnYuVklURV9QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5WSVRFX1BLR19WRVJTSU9OfS9kaXN0L2A7XG59Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
4227
4227
 
4228
4228
  /***/ }),
4229
4229
 
@@ -4377,7 +4377,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
4377
4377
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4378
4378
 
4379
4379
  "use strict";
4380
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SVG_EXPORT_TAG\": () => (/* binding */ SVG_EXPORT_TAG),\n/* harmony export */ \"exportToCanvas\": () => (/* binding */ exportToCanvas),\n/* harmony export */ \"exportToSvg\": () => (/* binding */ exportToSvg),\n/* harmony export */ \"getExportSize\": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ \"../../renderer/renderScene.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ \"../../element/image.ts\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Scene */ \"../../scene/Scene.ts\");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\nconst exportToCanvas = (elements, appState, files, {\n exportBackground,\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n viewBackgroundColor\n}, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return {\n canvas,\n scale: appState.exportScale\n };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n const {\n canvas,\n scale = 1\n } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const {\n imageCache\n } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n imageCache: new Map(),\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elements).map(element => element.fileId),\n files\n });\n const onlyExportingSingleFrame = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isOnlyExportingSingleFrame)(elements);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n canvas,\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas),\n elements,\n visibleElements: elements,\n scale,\n appState: Object.assign(Object.assign({}, appState), {\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + (onlyExportingSingleFrame ? 0 : exportPadding),\n scrollY: -minY + (onlyExportingSingleFrame ? 0 : exportPadding),\n zoom: defaultAppState.zoom,\n shouldCacheIgnoreZoom: false,\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\"\n }),\n renderConfig: {\n imageCache,\n renderGrid: false,\n isExporting: true\n }\n });\n return canvas;\n});\nconst exportToSvg = (elements, appState, files, opts) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c;\n\n const {\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n viewBackgroundColor,\n exportScale = 1,\n exportEmbedScene\n } = appState;\n let metadata = \"\";\n\n if (exportEmbedScene) {\n try {\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \"../../data/image.ts\"))).encodeSvgMetadata({\n text: (opts === null || opts === void 0 ? void 0 : opts.serializeAsJSON) ? (_a = opts === null || opts === void 0 ? void 0 : opts.serializeAsJSON) === null || _a === void 0 ? void 0 : _a.call(opts) : (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\")\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding); // initialize SVG root\n\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"svg\");\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n\n if (appState.exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n\n let assetPath = \"https://excalidraw.com/\"; // Asset path needs to be determined only when using package\n\n if (true) {\n assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.16.3\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).PKG_VERSION}`;\n\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\n } // do not apply clipping when we're exporting the whole scene\n\n\n const isExportingWholeCanvas = ((_c = (_b = _Scene__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getScene(elements[0])) === null || _b === void 0 ? void 0 : _b.getNonDeletedElements()) === null || _c === void 0 ? void 0 : _c.length) === elements.length;\n const onlyExportingSingleFrame = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isOnlyExportingSingleFrame)(elements);\n const offsetX = -minX + (onlyExportingSingleFrame ? 0 : exportPadding);\n const offsetY = -minY + (onlyExportingSingleFrame ? 0 : exportPadding);\n const exportingFrame = isExportingWholeCanvas || !onlyExportingSingleFrame ? undefined : elements.find(element => element.type === \"frame\");\n let exportingFrameClipPath = \"\";\n\n if (exportingFrame) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(exportingFrame);\n const cx = (x2 - x1) / 2 - (exportingFrame.x - x1);\n const cy = (y2 - y1) / 2 - (exportingFrame.y - y1);\n exportingFrameClipPath = `<clipPath id=${exportingFrame.id}>\n <rect transform=\"translate(${exportingFrame.x + offsetX} ${exportingFrame.y + offsetY}) rotate(${exportingFrame.angle} ${cx} ${cy})\"\n width=\"${exportingFrame.width}\"\n height=\"${exportingFrame.height}\"\n >\n </rect>\n </clipPath>`;\n }\n\n svgRoot.innerHTML = `\n ${SVG_EXPORT_TAG}\n ${metadata}\n <defs>\n <style class=\"style-fonts\">\n @font-face {\n font-family: \"Virgil\";\n src: url(\"${assetPath}Virgil.woff2\");\n }\n @font-face {\n font-family: \"Cascadia\";\n src: url(\"${assetPath}Cascadia.woff2\");\n }\n </style>\n ${exportingFrameClipPath}\n </defs>\n `; // render background rect\n\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].svg(svgRoot);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elements, rsvg, svgRoot, files || {}, {\n offsetX,\n offsetY,\n exportWithDarkMode: appState.exportWithDarkMode,\n exportingFrameId: (exportingFrame === null || exportingFrame === void 0 ? void 0 : exportingFrame.id) || null,\n renderEmbeddables: opts === null || opts === void 0 ? void 0 : opts.renderEmbeddables\n });\n return svgRoot;\n}); // calculate smallest area to fit the contents in\n\nconst getCanvasSize = (elements, exportPadding) => {\n // we should decide if we are exporting the whole canvas\n // if so, we are not clipping elements in the frame\n // and therefore, we should not do anything special\n var _a, _b;\n\n const isExportingWholeCanvas = ((_b = (_a = _Scene__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getScene(elements[0])) === null || _a === void 0 ? void 0 : _a.getNonDeletedElements()) === null || _b === void 0 ? void 0 : _b.length) === elements.length;\n const onlyExportingSingleFrame = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isOnlyExportingSingleFrame)(elements);\n\n if (!isExportingWholeCanvas || onlyExportingSingleFrame) {\n const frames = elements.filter(element => element.type === \"frame\");\n const exportedFrameIds = frames.reduce((acc, frame) => {\n acc[frame.id] = true;\n return acc;\n }, {}); // elements in a frame do not affect the canvas size if we're not exporting\n // the whole canvas\n\n elements = elements.filter(element => {\n var _a;\n\n return !exportedFrameIds[(_a = element.frameId) !== null && _a !== void 0 ? _a : \"\"];\n });\n }\n\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + (onlyExportingSingleFrame ? 0 : exportPadding * 2);\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + (onlyExportingSingleFrame ? 0 : exportPadding * 2);\n return [minX, minY, width, height];\n};\n\nconst getExportSize = (elements, exportPadding, scale) => {\n const [,, width, height] = getCanvasSize(elements, exportPadding).map(dimension => Math.trunc(dimension * scale));\n return [width, height];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBLEtBQUssSUFBSSxHQUFHO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxtQ0FBbUMsZ0VBQWU7QUFDbEQsZ0JBQWdCLGdEQUFRO0FBQ3hCLGlCQUFpQixnREFBUTtBQUN6QjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3NjZW5lL2V4cG9ydC50cz8zZjRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbmltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IGdldENvbW1vbkJvdW5kcywgZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzIH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5pbXBvcnQgeyByZW5kZXJTY2VuZVRvU3ZnLCByZW5kZXJTdGF0aWNTY2VuZSB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJTY2VuZVwiO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGlzT25seUV4cG9ydGluZ1NpbmdsZUZyYW1lIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBTVkdfTlMsIFRIRU1FX0ZJTFRFUiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuaW1wb3J0IHsgZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzLCB1cGRhdGVJbWFnZUNhY2hlIH0gZnJvbSBcIi4uL2VsZW1lbnQvaW1hZ2VcIjtcbmltcG9ydCBTY2VuZSBmcm9tIFwiLi9TY2VuZVwiO1xuZXhwb3J0IGNvbnN0IFNWR19FWFBPUlRfVEFHID0gYDwhLS0gc3ZnLXNvdXJjZTpleGNhbGlkcmF3IC0tPmA7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9DYW52YXMgPSAoZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcywge1xuICBleHBvcnRCYWNrZ3JvdW5kLFxuICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgdmlld0JhY2tncm91bmRDb2xvclxufSwgY3JlYXRlQ2FudmFzID0gKHdpZHRoLCBoZWlnaHQpID0+IHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gd2lkdGggKiBhcHBTdGF0ZS5leHBvcnRTY2FsZTtcbiAgY2FudmFzLmhlaWdodCA9IGhlaWdodCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICByZXR1cm4ge1xuICAgIGNhbnZhcyxcbiAgICBzY2FsZTogYXBwU3RhdGUuZXhwb3J0U2NhbGVcbiAgfTtcbn0pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcbiAgY29uc3Qge1xuICAgIGNhbnZhcyxcbiAgICBzY2FsZSA9IDFcbiAgfSA9IGNyZWF0ZUNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG4gIGNvbnN0IHtcbiAgICBpbWFnZUNhY2hlXG4gIH0gPSB5aWVsZCB1cGRhdGVJbWFnZUNhY2hlKHtcbiAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgZmlsZUlkczogZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzKGVsZW1lbnRzKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LmZpbGVJZCksXG4gICAgZmlsZXNcbiAgfSk7XG4gIGNvbnN0IG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA9IGlzT25seUV4cG9ydGluZ1NpbmdsZUZyYW1lKGVsZW1lbnRzKTtcbiAgcmVuZGVyU3RhdGljU2NlbmUoe1xuICAgIGNhbnZhcyxcbiAgICByYzogcm91Z2guY2FudmFzKGNhbnZhcyksXG4gICAgZWxlbWVudHMsXG4gICAgdmlzaWJsZUVsZW1lbnRzOiBlbGVtZW50cyxcbiAgICBzY2FsZSxcbiAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICAgIHNjcm9sbFg6IC1taW5YICsgKG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA/IDAgOiBleHBvcnRQYWRkaW5nKSxcbiAgICAgIHNjcm9sbFk6IC1taW5ZICsgKG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA/IDAgOiBleHBvcnRQYWRkaW5nKSxcbiAgICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgICAgc2hvdWxkQ2FjaGVJZ25vcmVab29tOiBmYWxzZSxcbiAgICAgIHRoZW1lOiBhcHBTdGF0ZS5leHBvcnRXaXRoRGFya01vZGUgPyBcImRhcmtcIiA6IFwibGlnaHRcIlxuICAgIH0pLFxuICAgIHJlbmRlckNvbmZpZzoge1xuICAgICAgaW1hZ2VDYWNoZSxcbiAgICAgIHJlbmRlckdyaWQ6IGZhbHNlLFxuICAgICAgaXNFeHBvcnRpbmc6IHRydWVcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2FudmFzO1xufSk7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9TdmcgPSAoZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcywgb3B0cykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIHZhciBfYSwgX2IsIF9jO1xuXG4gIGNvbnN0IHtcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgIGV4cG9ydFNjYWxlID0gMSxcbiAgICBleHBvcnRFbWJlZFNjZW5lXG4gIH0gPSBhcHBTdGF0ZTtcbiAgbGV0IG1ldGFkYXRhID0gXCJcIjtcblxuICBpZiAoZXhwb3J0RW1iZWRTY2VuZSkge1xuICAgIHRyeSB7XG4gICAgICBtZXRhZGF0YSA9IHlpZWxkICh5aWVsZCBpbXBvcnQoXG4gICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImltYWdlXCIgKi9cbiAgICAgIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIikpLmVuY29kZVN2Z01ldGFkYXRhKHtcbiAgICAgICAgdGV4dDogKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5zZXJpYWxpemVBc0pTT04pID8gKF9hID0gb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnNlcmlhbGl6ZUFzSlNPTikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob3B0cykgOiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpOyAvLyBpbml0aWFsaXplIFNWRyByb290XG5cbiAgY29uc3Qgc3ZnUm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwic3ZnXCIpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInZlcnNpb25cIiwgXCIxLjFcIik7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgU1ZHX05TKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsIGAwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YCk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGggKiBleHBvcnRTY2FsZX1gKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0ICogZXhwb3J0U2NhbGV9YCk7XG5cbiAgaWYgKGFwcFN0YXRlLmV4cG9ydFdpdGhEYXJrTW9kZSkge1xuICAgIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwiZmlsdGVyXCIsIFRIRU1FX0ZJTFRFUik7XG4gIH1cblxuICBsZXQgYXNzZXRQYXRoID0gXCJodHRwczovL2V4Y2FsaWRyYXcuY29tL1wiOyAvLyBBc3NldCBwYXRoIG5lZWRzIHRvIGJlIGRldGVybWluZWQgb25seSB3aGVuIHVzaW5nIHBhY2thZ2VcblxuICBpZiAocHJvY2Vzcy5lbnYuVklURV9JU19FWENBTElEUkFXX05QTV9QQUNLQUdFKSB7XG4gICAgYXNzZXRQYXRoID0gd2luZG93LkVYQ0FMSURSQVdfQVNTRVRfUEFUSCB8fCBgaHR0cHM6Ly91bnBrZy5jb20vJHtwcm9jZXNzLmVudi5WSVRFX1BLR19OQU1FfUAke3Byb2Nlc3MuZW52LlBLR19WRVJTSU9OfWA7XG5cbiAgICBpZiAoYXNzZXRQYXRoID09PSBudWxsIHx8IGFzc2V0UGF0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXNzZXRQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICBhc3NldFBhdGggPSBhc3NldFBhdGgucmVwbGFjZShcIi9cIiwgYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vYCk7XG4gICAgfVxuXG4gICAgYXNzZXRQYXRoID0gYCR7YXNzZXRQYXRofS9kaXN0L2V4Y2FsaWRyYXctYXNzZXRzL2A7XG4gIH0gLy8gZG8gbm90IGFwcGx5IGNsaXBwaW5nIHdoZW4gd2UncmUgZXhwb3J0aW5nIHRoZSB3aG9sZSBzY2VuZVxuXG5cbiAgY29uc3QgaXNFeHBvcnRpbmdXaG9sZUNhbnZhcyA9ICgoX2MgPSAoX2IgPSBTY2VuZS5nZXRTY2VuZShlbGVtZW50c1swXSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXROb25EZWxldGVkRWxlbWVudHMoKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxlbmd0aCkgPT09IGVsZW1lbnRzLmxlbmd0aDtcbiAgY29uc3Qgb25seUV4cG9ydGluZ1NpbmdsZUZyYW1lID0gaXNPbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUoZWxlbWVudHMpO1xuICBjb25zdCBvZmZzZXRYID0gLW1pblggKyAob25seUV4cG9ydGluZ1NpbmdsZUZyYW1lID8gMCA6IGV4cG9ydFBhZGRpbmcpO1xuICBjb25zdCBvZmZzZXRZID0gLW1pblkgKyAob25seUV4cG9ydGluZ1NpbmdsZUZyYW1lID8gMCA6IGV4cG9ydFBhZGRpbmcpO1xuICBjb25zdCBleHBvcnRpbmdGcmFtZSA9IGlzRXhwb3J0aW5nV2hvbGVDYW52YXMgfHwgIW9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA/IHVuZGVmaW5lZCA6IGVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LnR5cGUgPT09IFwiZnJhbWVcIik7XG4gIGxldCBleHBvcnRpbmdGcmFtZUNsaXBQYXRoID0gXCJcIjtcblxuICBpZiAoZXhwb3J0aW5nRnJhbWUpIHtcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGV4cG9ydGluZ0ZyYW1lKTtcbiAgICBjb25zdCBjeCA9ICh4MiAtIHgxKSAvIDIgLSAoZXhwb3J0aW5nRnJhbWUueCAtIHgxKTtcbiAgICBjb25zdCBjeSA9ICh5MiAtIHkxKSAvIDIgLSAoZXhwb3J0aW5nRnJhbWUueSAtIHkxKTtcbiAgICBleHBvcnRpbmdGcmFtZUNsaXBQYXRoID0gYDxjbGlwUGF0aCBpZD0ke2V4cG9ydGluZ0ZyYW1lLmlkfT5cbiAgICAgICAgICAgIDxyZWN0IHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2V4cG9ydGluZ0ZyYW1lLnggKyBvZmZzZXRYfSAke2V4cG9ydGluZ0ZyYW1lLnkgKyBvZmZzZXRZfSkgcm90YXRlKCR7ZXhwb3J0aW5nRnJhbWUuYW5nbGV9ICR7Y3h9ICR7Y3l9KVwiXG4gICAgICAgICAgd2lkdGg9XCIke2V4cG9ydGluZ0ZyYW1lLndpZHRofVwiXG4gICAgICAgICAgaGVpZ2h0PVwiJHtleHBvcnRpbmdGcmFtZS5oZWlnaHR9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9yZWN0PlxuICAgICAgICA8L2NsaXBQYXRoPmA7XG4gIH1cblxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlIGNsYXNzPVwic3R5bGUtZm9udHNcIj5cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJWaXJnaWxcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1WaXJnaWwud29mZjJcIik7XG4gICAgICB9XG4gICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiQ2FzY2FkaWFcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1DYXNjYWRpYS53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICAgICR7ZXhwb3J0aW5nRnJhbWVDbGlwUGF0aH1cbiAgPC9kZWZzPlxuICBgOyAvLyByZW5kZXIgYmFja2dyb3VuZCByZWN0XG5cbiAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgIGNvbnN0IHJlY3QgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJyZWN0XCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChyZWN0KTtcbiAgfVxuXG4gIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gIHJlbmRlclNjZW5lVG9TdmcoZWxlbWVudHMsIHJzdmcsIHN2Z1Jvb3QsIGZpbGVzIHx8IHt9LCB7XG4gICAgb2Zmc2V0WCxcbiAgICBvZmZzZXRZLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlLFxuICAgIGV4cG9ydGluZ0ZyYW1lSWQ6IChleHBvcnRpbmdGcmFtZSA9PT0gbnVsbCB8fCBleHBvcnRpbmdGcmFtZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwb3J0aW5nRnJhbWUuaWQpIHx8IG51bGwsXG4gICAgcmVuZGVyRW1iZWRkYWJsZXM6IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5yZW5kZXJFbWJlZGRhYmxlc1xuICB9KTtcbiAgcmV0dXJuIHN2Z1Jvb3Q7XG59KTsgLy8gY2FsY3VsYXRlIHNtYWxsZXN0IGFyZWEgdG8gZml0IHRoZSBjb250ZW50cyBpblxuXG5jb25zdCBnZXRDYW52YXNTaXplID0gKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKSA9PiB7XG4gIC8vIHdlIHNob3VsZCBkZWNpZGUgaWYgd2UgYXJlIGV4cG9ydGluZyB0aGUgd2hvbGUgY2FudmFzXG4gIC8vIGlmIHNvLCB3ZSBhcmUgbm90IGNsaXBwaW5nIGVsZW1lbnRzIGluIHRoZSBmcmFtZVxuICAvLyBhbmQgdGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90IGRvIGFueXRoaW5nIHNwZWNpYWxcbiAgdmFyIF9hLCBfYjtcblxuICBjb25zdCBpc0V4cG9ydGluZ1dob2xlQ2FudmFzID0gKChfYiA9IChfYSA9IFNjZW5lLmdldFNjZW5lKGVsZW1lbnRzWzBdKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldE5vbkRlbGV0ZWRFbGVtZW50cygpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gZWxlbWVudHMubGVuZ3RoO1xuICBjb25zdCBvbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUgPSBpc09ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZShlbGVtZW50cyk7XG5cbiAgaWYgKCFpc0V4cG9ydGluZ1dob2xlQ2FudmFzIHx8IG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSkge1xuICAgIGNvbnN0IGZyYW1lcyA9IGVsZW1lbnRzLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQudHlwZSA9PT0gXCJmcmFtZVwiKTtcbiAgICBjb25zdCBleHBvcnRlZEZyYW1lSWRzID0gZnJhbWVzLnJlZHVjZSgoYWNjLCBmcmFtZSkgPT4ge1xuICAgICAgYWNjW2ZyYW1lLmlkXSA9IHRydWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTsgLy8gZWxlbWVudHMgaW4gYSBmcmFtZSBkbyBub3QgYWZmZWN0IHRoZSBjYW52YXMgc2l6ZSBpZiB3ZSdyZSBub3QgZXhwb3J0aW5nXG4gICAgLy8gdGhlIHdob2xlIGNhbnZhc1xuXG4gICAgZWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIHJldHVybiAhZXhwb3J0ZWRGcmFtZUlkc1soX2EgPSBlbGVtZW50LmZyYW1lSWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFwiXCJdO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcbiAgY29uc3Qgd2lkdGggPSBkaXN0YW5jZShtaW5YLCBtYXhYKSArIChvbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUgPyAwIDogZXhwb3J0UGFkZGluZyAqIDIpO1xuICBjb25zdCBoZWlnaHQgPSBkaXN0YW5jZShtaW5ZLCBtYXhZKSArIChvbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUgPyAwIDogZXhwb3J0UGFkZGluZyAqIDIpO1xuICByZXR1cm4gW21pblgsIG1pblksIHdpZHRoLCBoZWlnaHRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV4cG9ydFNpemUgPSAoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcsIHNjYWxlKSA9PiB7XG4gIGNvbnN0IFssLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpLm1hcChkaW1lbnNpb24gPT4gTWF0aC50cnVuYyhkaW1lbnNpb24gKiBzY2FsZSkpO1xuICByZXR1cm4gW3dpZHRoLCBoZWlnaHRdO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
4380
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SVG_EXPORT_TAG\": () => (/* binding */ SVG_EXPORT_TAG),\n/* harmony export */ \"exportToCanvas\": () => (/* binding */ exportToCanvas),\n/* harmony export */ \"exportToSvg\": () => (/* binding */ exportToSvg),\n/* harmony export */ \"getExportSize\": () => (/* binding */ getExportSize)\n/* harmony export */ });\n/* harmony import */ var roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! roughjs/bin/rough */ \"../../../node_modules/roughjs/bin/rough.js\");\n/* harmony import */ var _element_bounds__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../element/bounds */ \"../../element/bounds.ts\");\n/* harmony import */ var _renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/renderScene */ \"../../renderer/renderScene.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _data_json__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../data/json */ \"../../data/json.ts\");\n/* harmony import */ var _element_image__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../element/image */ \"../../element/image.ts\");\n/* harmony import */ var _Scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Scene */ \"../../scene/Scene.ts\");\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\nconst exportToCanvas = (elements, appState, files, {\n exportBackground,\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n viewBackgroundColor\n}, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return {\n canvas,\n scale: appState.exportScale\n };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n const {\n canvas,\n scale = 1\n } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const {\n imageCache\n } = yield (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.updateImageCache)({\n imageCache: new Map(),\n fileIds: (0,_element_image__WEBPACK_IMPORTED_MODULE_7__.getInitializedImageElements)(elements).map(element => element.fileId),\n files\n });\n const onlyExportingSingleFrame = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isOnlyExportingSingleFrame)(elements);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderStaticScene)({\n canvas,\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas),\n elements,\n visibleElements: elements,\n scale,\n appState: Object.assign(Object.assign({}, appState), {\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + (onlyExportingSingleFrame ? 0 : exportPadding),\n scrollY: -minY + (onlyExportingSingleFrame ? 0 : exportPadding),\n zoom: defaultAppState.zoom,\n shouldCacheIgnoreZoom: false,\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\"\n }),\n renderConfig: {\n imageCache,\n renderGrid: false,\n isExporting: true\n }\n });\n return canvas;\n});\nconst exportToSvg = (elements, appState, files, opts) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c;\n\n const {\n exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING,\n viewBackgroundColor,\n exportScale = 1,\n exportEmbedScene\n } = appState;\n let metadata = \"\";\n\n if (exportEmbedScene) {\n try {\n metadata = yield (yield Promise.resolve(/*! import() */).then(__webpack_require__.bind(__webpack_require__, /*! ../../src/data/image */ \"../../data/image.ts\"))).encodeSvgMetadata({\n text: (opts === null || opts === void 0 ? void 0 : opts.serializeAsJSON) ? (_a = opts === null || opts === void 0 ? void 0 : opts.serializeAsJSON) === null || _a === void 0 ? void 0 : _a.call(opts) : (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\")\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding); // initialize SVG root\n\n const svgRoot = document.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"svg\");\n svgRoot.setAttribute(\"version\", \"1.1\");\n svgRoot.setAttribute(\"xmlns\", _constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS);\n svgRoot.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n svgRoot.setAttribute(\"width\", `${width * exportScale}`);\n svgRoot.setAttribute(\"height\", `${height * exportScale}`);\n\n if (appState.exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n\n let assetPath = \"https://excalidraw.com/\"; // Asset path needs to be determined only when using package\n\n if (true) {\n assetPath = window.EXCALIDRAW_ASSET_PATH || `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.16.4\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).PKG_VERSION}`;\n\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\n } // do not apply clipping when we're exporting the whole scene\n\n\n const isExportingWholeCanvas = ((_c = (_b = _Scene__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getScene(elements[0])) === null || _b === void 0 ? void 0 : _b.getNonDeletedElements()) === null || _c === void 0 ? void 0 : _c.length) === elements.length;\n const onlyExportingSingleFrame = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isOnlyExportingSingleFrame)(elements);\n const offsetX = -minX + (onlyExportingSingleFrame ? 0 : exportPadding);\n const offsetY = -minY + (onlyExportingSingleFrame ? 0 : exportPadding);\n const exportingFrame = isExportingWholeCanvas || !onlyExportingSingleFrame ? undefined : elements.find(element => element.type === \"frame\");\n let exportingFrameClipPath = \"\";\n\n if (exportingFrame) {\n const [x1, y1, x2, y2] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getElementAbsoluteCoords)(exportingFrame);\n const cx = (x2 - x1) / 2 - (exportingFrame.x - x1);\n const cy = (y2 - y1) / 2 - (exportingFrame.y - y1);\n exportingFrameClipPath = `<clipPath id=${exportingFrame.id}>\n <rect transform=\"translate(${exportingFrame.x + offsetX} ${exportingFrame.y + offsetY}) rotate(${exportingFrame.angle} ${cx} ${cy})\"\n width=\"${exportingFrame.width}\"\n height=\"${exportingFrame.height}\"\n >\n </rect>\n </clipPath>`;\n }\n\n svgRoot.innerHTML = `\n ${SVG_EXPORT_TAG}\n ${metadata}\n <defs>\n <style class=\"style-fonts\">\n @font-face {\n font-family: \"Virgil\";\n src: url(\"${assetPath}Virgil.woff2\");\n }\n @font-face {\n font-family: \"Cascadia\";\n src: url(\"${assetPath}Cascadia.woff2\");\n }\n </style>\n ${exportingFrameClipPath}\n </defs>\n `; // render background rect\n\n if (appState.exportBackground && viewBackgroundColor) {\n const rect = svgRoot.ownerDocument.createElementNS(_constants__WEBPACK_IMPORTED_MODULE_4__.SVG_NS, \"rect\");\n rect.setAttribute(\"x\", \"0\");\n rect.setAttribute(\"y\", \"0\");\n rect.setAttribute(\"width\", `${width}`);\n rect.setAttribute(\"height\", `${height}`);\n rect.setAttribute(\"fill\", viewBackgroundColor);\n svgRoot.appendChild(rect);\n }\n\n const rsvg = roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].svg(svgRoot);\n (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderSceneToSvg)(elements, rsvg, svgRoot, files || {}, {\n offsetX,\n offsetY,\n exportWithDarkMode: appState.exportWithDarkMode,\n exportingFrameId: (exportingFrame === null || exportingFrame === void 0 ? void 0 : exportingFrame.id) || null,\n renderEmbeddables: opts === null || opts === void 0 ? void 0 : opts.renderEmbeddables\n });\n return svgRoot;\n}); // calculate smallest area to fit the contents in\n\nconst getCanvasSize = (elements, exportPadding) => {\n // we should decide if we are exporting the whole canvas\n // if so, we are not clipping elements in the frame\n // and therefore, we should not do anything special\n var _a, _b;\n\n const isExportingWholeCanvas = ((_b = (_a = _Scene__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getScene(elements[0])) === null || _a === void 0 ? void 0 : _a.getNonDeletedElements()) === null || _b === void 0 ? void 0 : _b.length) === elements.length;\n const onlyExportingSingleFrame = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isOnlyExportingSingleFrame)(elements);\n\n if (!isExportingWholeCanvas || onlyExportingSingleFrame) {\n const frames = elements.filter(element => element.type === \"frame\");\n const exportedFrameIds = frames.reduce((acc, frame) => {\n acc[frame.id] = true;\n return acc;\n }, {}); // elements in a frame do not affect the canvas size if we're not exporting\n // the whole canvas\n\n elements = elements.filter(element => {\n var _a;\n\n return !exportedFrameIds[(_a = element.frameId) !== null && _a !== void 0 ? _a : \"\"];\n });\n }\n\n const [minX, minY, maxX, maxY] = (0,_element_bounds__WEBPACK_IMPORTED_MODULE_1__.getCommonBounds)(elements);\n const width = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minX, maxX) + (onlyExportingSingleFrame ? 0 : exportPadding * 2);\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + (onlyExportingSingleFrame ? 0 : exportPadding * 2);\n return [minX, minY, width, height];\n};\n\nconst getExportSize = (elements, exportPadding, scale) => {\n const [,, width, height] = getCanvasSize(elements, exportPadding).map(dimension => Math.trunc(dimension * scale));\n return [width, height];\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBLEtBQUssSUFBSSxHQUFHO0FBQ1o7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQSxtQ0FBbUMsZ0VBQWU7QUFDbEQsZ0JBQWdCLGdEQUFRO0FBQ3hCLGlCQUFpQixnREFBUTtBQUN6QjtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3NjZW5lL2V4cG9ydC50cz8zZjRlIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSB0aGlzICYmIHRoaXMuX19hd2FpdGVyIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkge1xuICAgICAgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7XG4gICAgfVxuXG4gICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICB9KTtcbn07XG5cbmltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IGdldENvbW1vbkJvdW5kcywgZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzIH0gZnJvbSBcIi4uL2VsZW1lbnQvYm91bmRzXCI7XG5pbXBvcnQgeyByZW5kZXJTY2VuZVRvU3ZnLCByZW5kZXJTdGF0aWNTY2VuZSB9IGZyb20gXCIuLi9yZW5kZXJlci9yZW5kZXJTY2VuZVwiO1xuaW1wb3J0IHsgZGlzdGFuY2UsIGlzT25seUV4cG9ydGluZ1NpbmdsZUZyYW1lIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBTVkdfTlMsIFRIRU1FX0ZJTFRFUiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuaW1wb3J0IHsgZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzLCB1cGRhdGVJbWFnZUNhY2hlIH0gZnJvbSBcIi4uL2VsZW1lbnQvaW1hZ2VcIjtcbmltcG9ydCBTY2VuZSBmcm9tIFwiLi9TY2VuZVwiO1xuZXhwb3J0IGNvbnN0IFNWR19FWFBPUlRfVEFHID0gYDwhLS0gc3ZnLXNvdXJjZTpleGNhbGlkcmF3IC0tPmA7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9DYW52YXMgPSAoZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcywge1xuICBleHBvcnRCYWNrZ3JvdW5kLFxuICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgdmlld0JhY2tncm91bmRDb2xvclxufSwgY3JlYXRlQ2FudmFzID0gKHdpZHRoLCBoZWlnaHQpID0+IHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY2FudmFzLndpZHRoID0gd2lkdGggKiBhcHBTdGF0ZS5leHBvcnRTY2FsZTtcbiAgY2FudmFzLmhlaWdodCA9IGhlaWdodCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICByZXR1cm4ge1xuICAgIGNhbnZhcyxcbiAgICBzY2FsZTogYXBwU3RhdGUuZXhwb3J0U2NhbGVcbiAgfTtcbn0pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcbiAgY29uc3Qge1xuICAgIGNhbnZhcyxcbiAgICBzY2FsZSA9IDFcbiAgfSA9IGNyZWF0ZUNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcbiAgY29uc3QgZGVmYXVsdEFwcFN0YXRlID0gZ2V0RGVmYXVsdEFwcFN0YXRlKCk7XG4gIGNvbnN0IHtcbiAgICBpbWFnZUNhY2hlXG4gIH0gPSB5aWVsZCB1cGRhdGVJbWFnZUNhY2hlKHtcbiAgICBpbWFnZUNhY2hlOiBuZXcgTWFwKCksXG4gICAgZmlsZUlkczogZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzKGVsZW1lbnRzKS5tYXAoZWxlbWVudCA9PiBlbGVtZW50LmZpbGVJZCksXG4gICAgZmlsZXNcbiAgfSk7XG4gIGNvbnN0IG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA9IGlzT25seUV4cG9ydGluZ1NpbmdsZUZyYW1lKGVsZW1lbnRzKTtcbiAgcmVuZGVyU3RhdGljU2NlbmUoe1xuICAgIGNhbnZhcyxcbiAgICByYzogcm91Z2guY2FudmFzKGNhbnZhcyksXG4gICAgZWxlbWVudHMsXG4gICAgdmlzaWJsZUVsZW1lbnRzOiBlbGVtZW50cyxcbiAgICBzY2FsZSxcbiAgICBhcHBTdGF0ZTogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBhcHBTdGF0ZSksIHtcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICAgIHNjcm9sbFg6IC1taW5YICsgKG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA/IDAgOiBleHBvcnRQYWRkaW5nKSxcbiAgICAgIHNjcm9sbFk6IC1taW5ZICsgKG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA/IDAgOiBleHBvcnRQYWRkaW5nKSxcbiAgICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgICAgc2hvdWxkQ2FjaGVJZ25vcmVab29tOiBmYWxzZSxcbiAgICAgIHRoZW1lOiBhcHBTdGF0ZS5leHBvcnRXaXRoRGFya01vZGUgPyBcImRhcmtcIiA6IFwibGlnaHRcIlxuICAgIH0pLFxuICAgIHJlbmRlckNvbmZpZzoge1xuICAgICAgaW1hZ2VDYWNoZSxcbiAgICAgIHJlbmRlckdyaWQ6IGZhbHNlLFxuICAgICAgaXNFeHBvcnRpbmc6IHRydWVcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY2FudmFzO1xufSk7XG5leHBvcnQgY29uc3QgZXhwb3J0VG9TdmcgPSAoZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcywgb3B0cykgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gIHZhciBfYSwgX2IsIF9jO1xuXG4gIGNvbnN0IHtcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgIGV4cG9ydFNjYWxlID0gMSxcbiAgICBleHBvcnRFbWJlZFNjZW5lXG4gIH0gPSBhcHBTdGF0ZTtcbiAgbGV0IG1ldGFkYXRhID0gXCJcIjtcblxuICBpZiAoZXhwb3J0RW1iZWRTY2VuZSkge1xuICAgIHRyeSB7XG4gICAgICBtZXRhZGF0YSA9IHlpZWxkICh5aWVsZCBpbXBvcnQoXG4gICAgICAvKiB3ZWJwYWNrQ2h1bmtOYW1lOiBcImltYWdlXCIgKi9cbiAgICAgIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIikpLmVuY29kZVN2Z01ldGFkYXRhKHtcbiAgICAgICAgdGV4dDogKG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5zZXJpYWxpemVBc0pTT04pID8gKF9hID0gb3B0cyA9PT0gbnVsbCB8fCBvcHRzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRzLnNlcmlhbGl6ZUFzSlNPTikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob3B0cykgOiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpOyAvLyBpbml0aWFsaXplIFNWRyByb290XG5cbiAgY29uc3Qgc3ZnUm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwic3ZnXCIpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInZlcnNpb25cIiwgXCIxLjFcIik7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwieG1sbnNcIiwgU1ZHX05TKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsIGAwIDAgJHt3aWR0aH0gJHtoZWlnaHR9YCk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGggKiBleHBvcnRTY2FsZX1gKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiwgYCR7aGVpZ2h0ICogZXhwb3J0U2NhbGV9YCk7XG5cbiAgaWYgKGFwcFN0YXRlLmV4cG9ydFdpdGhEYXJrTW9kZSkge1xuICAgIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwiZmlsdGVyXCIsIFRIRU1FX0ZJTFRFUik7XG4gIH1cblxuICBsZXQgYXNzZXRQYXRoID0gXCJodHRwczovL2V4Y2FsaWRyYXcuY29tL1wiOyAvLyBBc3NldCBwYXRoIG5lZWRzIHRvIGJlIGRldGVybWluZWQgb25seSB3aGVuIHVzaW5nIHBhY2thZ2VcblxuICBpZiAocHJvY2Vzcy5lbnYuVklURV9JU19FWENBTElEUkFXX05QTV9QQUNLQUdFKSB7XG4gICAgYXNzZXRQYXRoID0gd2luZG93LkVYQ0FMSURSQVdfQVNTRVRfUEFUSCB8fCBgaHR0cHM6Ly91bnBrZy5jb20vJHtwcm9jZXNzLmVudi5WSVRFX1BLR19OQU1FfUAke3Byb2Nlc3MuZW52LlBLR19WRVJTSU9OfWA7XG5cbiAgICBpZiAoYXNzZXRQYXRoID09PSBudWxsIHx8IGFzc2V0UGF0aCA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXNzZXRQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG4gICAgICBhc3NldFBhdGggPSBhc3NldFBhdGgucmVwbGFjZShcIi9cIiwgYCR7d2luZG93LmxvY2F0aW9uLm9yaWdpbn0vYCk7XG4gICAgfVxuXG4gICAgYXNzZXRQYXRoID0gYCR7YXNzZXRQYXRofS9kaXN0L2V4Y2FsaWRyYXctYXNzZXRzL2A7XG4gIH0gLy8gZG8gbm90IGFwcGx5IGNsaXBwaW5nIHdoZW4gd2UncmUgZXhwb3J0aW5nIHRoZSB3aG9sZSBzY2VuZVxuXG5cbiAgY29uc3QgaXNFeHBvcnRpbmdXaG9sZUNhbnZhcyA9ICgoX2MgPSAoX2IgPSBTY2VuZS5nZXRTY2VuZShlbGVtZW50c1swXSkpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXROb25EZWxldGVkRWxlbWVudHMoKSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLmxlbmd0aCkgPT09IGVsZW1lbnRzLmxlbmd0aDtcbiAgY29uc3Qgb25seUV4cG9ydGluZ1NpbmdsZUZyYW1lID0gaXNPbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUoZWxlbWVudHMpO1xuICBjb25zdCBvZmZzZXRYID0gLW1pblggKyAob25seUV4cG9ydGluZ1NpbmdsZUZyYW1lID8gMCA6IGV4cG9ydFBhZGRpbmcpO1xuICBjb25zdCBvZmZzZXRZID0gLW1pblkgKyAob25seUV4cG9ydGluZ1NpbmdsZUZyYW1lID8gMCA6IGV4cG9ydFBhZGRpbmcpO1xuICBjb25zdCBleHBvcnRpbmdGcmFtZSA9IGlzRXhwb3J0aW5nV2hvbGVDYW52YXMgfHwgIW9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSA/IHVuZGVmaW5lZCA6IGVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiBlbGVtZW50LnR5cGUgPT09IFwiZnJhbWVcIik7XG4gIGxldCBleHBvcnRpbmdGcmFtZUNsaXBQYXRoID0gXCJcIjtcblxuICBpZiAoZXhwb3J0aW5nRnJhbWUpIHtcbiAgICBjb25zdCBbeDEsIHkxLCB4MiwgeTJdID0gZ2V0RWxlbWVudEFic29sdXRlQ29vcmRzKGV4cG9ydGluZ0ZyYW1lKTtcbiAgICBjb25zdCBjeCA9ICh4MiAtIHgxKSAvIDIgLSAoZXhwb3J0aW5nRnJhbWUueCAtIHgxKTtcbiAgICBjb25zdCBjeSA9ICh5MiAtIHkxKSAvIDIgLSAoZXhwb3J0aW5nRnJhbWUueSAtIHkxKTtcbiAgICBleHBvcnRpbmdGcmFtZUNsaXBQYXRoID0gYDxjbGlwUGF0aCBpZD0ke2V4cG9ydGluZ0ZyYW1lLmlkfT5cbiAgICAgICAgICAgIDxyZWN0IHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgke2V4cG9ydGluZ0ZyYW1lLnggKyBvZmZzZXRYfSAke2V4cG9ydGluZ0ZyYW1lLnkgKyBvZmZzZXRZfSkgcm90YXRlKCR7ZXhwb3J0aW5nRnJhbWUuYW5nbGV9ICR7Y3h9ICR7Y3l9KVwiXG4gICAgICAgICAgd2lkdGg9XCIke2V4cG9ydGluZ0ZyYW1lLndpZHRofVwiXG4gICAgICAgICAgaGVpZ2h0PVwiJHtleHBvcnRpbmdGcmFtZS5oZWlnaHR9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPC9yZWN0PlxuICAgICAgICA8L2NsaXBQYXRoPmA7XG4gIH1cblxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlIGNsYXNzPVwic3R5bGUtZm9udHNcIj5cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJWaXJnaWxcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1WaXJnaWwud29mZjJcIik7XG4gICAgICB9XG4gICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiQ2FzY2FkaWFcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1DYXNjYWRpYS53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICAgICR7ZXhwb3J0aW5nRnJhbWVDbGlwUGF0aH1cbiAgPC9kZWZzPlxuICBgOyAvLyByZW5kZXIgYmFja2dyb3VuZCByZWN0XG5cbiAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgIGNvbnN0IHJlY3QgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OUywgXCJyZWN0XCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieFwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ5XCIsIFwiMFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRofWApO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImZpbGxcIiwgdmlld0JhY2tncm91bmRDb2xvcik7XG4gICAgc3ZnUm9vdC5hcHBlbmRDaGlsZChyZWN0KTtcbiAgfVxuXG4gIGNvbnN0IHJzdmcgPSByb3VnaC5zdmcoc3ZnUm9vdCk7XG4gIHJlbmRlclNjZW5lVG9TdmcoZWxlbWVudHMsIHJzdmcsIHN2Z1Jvb3QsIGZpbGVzIHx8IHt9LCB7XG4gICAgb2Zmc2V0WCxcbiAgICBvZmZzZXRZLFxuICAgIGV4cG9ydFdpdGhEYXJrTW9kZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlLFxuICAgIGV4cG9ydGluZ0ZyYW1lSWQ6IChleHBvcnRpbmdGcmFtZSA9PT0gbnVsbCB8fCBleHBvcnRpbmdGcmFtZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXhwb3J0aW5nRnJhbWUuaWQpIHx8IG51bGwsXG4gICAgcmVuZGVyRW1iZWRkYWJsZXM6IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5yZW5kZXJFbWJlZGRhYmxlc1xuICB9KTtcbiAgcmV0dXJuIHN2Z1Jvb3Q7XG59KTsgLy8gY2FsY3VsYXRlIHNtYWxsZXN0IGFyZWEgdG8gZml0IHRoZSBjb250ZW50cyBpblxuXG5jb25zdCBnZXRDYW52YXNTaXplID0gKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKSA9PiB7XG4gIC8vIHdlIHNob3VsZCBkZWNpZGUgaWYgd2UgYXJlIGV4cG9ydGluZyB0aGUgd2hvbGUgY2FudmFzXG4gIC8vIGlmIHNvLCB3ZSBhcmUgbm90IGNsaXBwaW5nIGVsZW1lbnRzIGluIHRoZSBmcmFtZVxuICAvLyBhbmQgdGhlcmVmb3JlLCB3ZSBzaG91bGQgbm90IGRvIGFueXRoaW5nIHNwZWNpYWxcbiAgdmFyIF9hLCBfYjtcblxuICBjb25zdCBpc0V4cG9ydGluZ1dob2xlQ2FudmFzID0gKChfYiA9IChfYSA9IFNjZW5lLmdldFNjZW5lKGVsZW1lbnRzWzBdKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldE5vbkRlbGV0ZWRFbGVtZW50cygpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSA9PT0gZWxlbWVudHMubGVuZ3RoO1xuICBjb25zdCBvbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUgPSBpc09ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZShlbGVtZW50cyk7XG5cbiAgaWYgKCFpc0V4cG9ydGluZ1dob2xlQ2FudmFzIHx8IG9ubHlFeHBvcnRpbmdTaW5nbGVGcmFtZSkge1xuICAgIGNvbnN0IGZyYW1lcyA9IGVsZW1lbnRzLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQudHlwZSA9PT0gXCJmcmFtZVwiKTtcbiAgICBjb25zdCBleHBvcnRlZEZyYW1lSWRzID0gZnJhbWVzLnJlZHVjZSgoYWNjLCBmcmFtZSkgPT4ge1xuICAgICAgYWNjW2ZyYW1lLmlkXSA9IHRydWU7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTsgLy8gZWxlbWVudHMgaW4gYSBmcmFtZSBkbyBub3QgYWZmZWN0IHRoZSBjYW52YXMgc2l6ZSBpZiB3ZSdyZSBub3QgZXhwb3J0aW5nXG4gICAgLy8gdGhlIHdob2xlIGNhbnZhc1xuXG4gICAgZWxlbWVudHMgPSBlbGVtZW50cy5maWx0ZXIoZWxlbWVudCA9PiB7XG4gICAgICB2YXIgX2E7XG5cbiAgICAgIHJldHVybiAhZXhwb3J0ZWRGcmFtZUlkc1soX2EgPSBlbGVtZW50LmZyYW1lSWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFwiXCJdO1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgW21pblgsIG1pblksIG1heFgsIG1heFldID0gZ2V0Q29tbW9uQm91bmRzKGVsZW1lbnRzKTtcbiAgY29uc3Qgd2lkdGggPSBkaXN0YW5jZShtaW5YLCBtYXhYKSArIChvbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUgPyAwIDogZXhwb3J0UGFkZGluZyAqIDIpO1xuICBjb25zdCBoZWlnaHQgPSBkaXN0YW5jZShtaW5ZLCBtYXhZKSArIChvbmx5RXhwb3J0aW5nU2luZ2xlRnJhbWUgPyAwIDogZXhwb3J0UGFkZGluZyAqIDIpO1xuICByZXR1cm4gW21pblgsIG1pblksIHdpZHRoLCBoZWlnaHRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV4cG9ydFNpemUgPSAoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcsIHNjYWxlKSA9PiB7XG4gIGNvbnN0IFssLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpLm1hcChkaW1lbnNpb24gPT4gTWF0aC50cnVuYyhkaW1lbnNpb24gKiBzY2FsZSkpO1xuICByZXR1cm4gW3dpZHRoLCBoZWlnaHRdO1xufTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
4381
4381
 
4382
4382
  /***/ }),
4383
4383