@excalidraw/excalidraw 0.14.1-6178-cc37e69 → 0.14.1-6178-2acbae3
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.
|
@@ -19,6 +19,17 @@
|
|
|
19
19
|
return /******/ (() => { // webpackBootstrap
|
|
20
20
|
/******/ var __webpack_modules__ = ({
|
|
21
21
|
|
|
22
|
+
/***/ "../../../node_modules/@dwelle/tunnel-rat/dist/index.js":
|
|
23
|
+
/*!**************************************************************!*\
|
|
24
|
+
!*** ../../../node_modules/@dwelle/tunnel-rat/dist/index.js ***!
|
|
25
|
+
\**************************************************************/
|
|
26
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
27
|
+
|
|
28
|
+
"use strict";
|
|
29
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ tunnel)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand */ \"../../../node_modules/zustand/esm/index.mjs\");\n\n\n\nfunction tunnel() {\n const useStore = (0,zustand__WEBPACK_IMPORTED_MODULE_1__.create)(set => ({\n current: new Array(),\n version: 0,\n set\n }));\n return {\n In: ({\n children\n }) => {\n const set = useStore(state => state.set);\n const version = useStore(state => state.version);\n /* When this component mounts, we increase the store's version number.\n This will cause all existing rats to re-render (just like if the Out component\n were mapping items to a list.) The re-rendering will cause the final \n order of rendered components to match what the user is expecting. */\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n set(state => ({\n version: state.version + 1\n }));\n }, []);\n /* Any time the children _or_ the store's version number change, insert\n the specified React children into the list of rats. */\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n set(({\n current\n }) => ({\n current: [...current, children]\n }));\n return () => set(({\n current\n }) => ({\n current: current.filter(c => c !== children)\n }));\n }, [children, version]);\n return null;\n },\n Out: () => {\n const current = useStore(state => state.current);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, current);\n }\n };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bkd2VsbGUvdHVubmVsLXJhdC9kaXN0L2luZGV4LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBK0M7QUFDZDs7QUFFakM7QUFDQSxtQkFBbUIsK0NBQU07QUFDekI7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTSxzREFBZTtBQUNyQjtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBLE1BQU0sc0RBQWU7QUFDckI7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsMEJBQTBCLDBEQUFtQixDQUFDLHVEQUFjO0FBQzVEO0FBQ0E7QUFDQTs7QUFFNkIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bkd2VsbGUvdHVubmVsLXJhdC9kaXN0L2luZGV4LmpzPzRlM2UiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZSB9IGZyb20gJ3p1c3RhbmQnO1xuXG5mdW5jdGlvbiB0dW5uZWwoKSB7XG4gIGNvbnN0IHVzZVN0b3JlID0gY3JlYXRlKHNldCA9PiAoe1xuICAgIGN1cnJlbnQ6IG5ldyBBcnJheSgpLFxuICAgIHZlcnNpb246IDAsXG4gICAgc2V0XG4gIH0pKTtcbiAgcmV0dXJuIHtcbiAgICBJbjogKHtcbiAgICAgIGNoaWxkcmVuXG4gICAgfSkgPT4ge1xuICAgICAgY29uc3Qgc2V0ID0gdXNlU3RvcmUoc3RhdGUgPT4gc3RhdGUuc2V0KTtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSB1c2VTdG9yZShzdGF0ZSA9PiBzdGF0ZS52ZXJzaW9uKTtcbiAgICAgIC8qIFdoZW4gdGhpcyBjb21wb25lbnQgbW91bnRzLCB3ZSBpbmNyZWFzZSB0aGUgc3RvcmUncyB2ZXJzaW9uIG51bWJlci5cbiAgICAgIFRoaXMgd2lsbCBjYXVzZSBhbGwgZXhpc3RpbmcgcmF0cyB0byByZS1yZW5kZXIgKGp1c3QgbGlrZSBpZiB0aGUgT3V0IGNvbXBvbmVudFxuICAgICAgd2VyZSBtYXBwaW5nIGl0ZW1zIHRvIGEgbGlzdC4pIFRoZSByZS1yZW5kZXJpbmcgd2lsbCBjYXVzZSB0aGUgZmluYWwgXG4gICAgICBvcmRlciBvZiByZW5kZXJlZCBjb21wb25lbnRzIHRvIG1hdGNoIHdoYXQgdGhlIHVzZXIgaXMgZXhwZWN0aW5nLiAqL1xuXG4gICAgICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgICAgICBzZXQoc3RhdGUgPT4gKHtcbiAgICAgICAgICB2ZXJzaW9uOiBzdGF0ZS52ZXJzaW9uICsgMVxuICAgICAgICB9KSk7XG4gICAgICB9LCBbXSk7XG4gICAgICAvKiBBbnkgdGltZSB0aGUgY2hpbGRyZW4gX29yXyB0aGUgc3RvcmUncyB2ZXJzaW9uIG51bWJlciBjaGFuZ2UsIGluc2VydFxuICAgICAgdGhlIHNwZWNpZmllZCBSZWFjdCBjaGlsZHJlbiBpbnRvIHRoZSBsaXN0IG9mIHJhdHMuICovXG5cbiAgICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldCgoe1xuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBjdXJyZW50OiBbLi4uY3VycmVudCwgY2hpbGRyZW5dXG4gICAgICAgIH0pKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHNldCgoe1xuICAgICAgICAgIGN1cnJlbnRcbiAgICAgICAgfSkgPT4gKHtcbiAgICAgICAgICBjdXJyZW50OiBjdXJyZW50LmZpbHRlcihjID0+IGMgIT09IGNoaWxkcmVuKVxuICAgICAgICB9KSk7XG4gICAgICB9LCBbY2hpbGRyZW4sIHZlcnNpb25dKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgT3V0OiAoKSA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gdXNlU3RvcmUoc3RhdGUgPT4gc3RhdGUuY3VycmVudCk7XG4gICAgICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUmVhY3QuRnJhZ21lbnQsIG51bGwsIGN1cnJlbnQpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IHsgdHVubmVsIGFzIGRlZmF1bHQgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@dwelle/tunnel-rat/dist/index.js\n");
|
|
30
|
+
|
|
31
|
+
/***/ }),
|
|
32
|
+
|
|
22
33
|
/***/ "../../../node_modules/clsx/dist/clsx.m.js":
|
|
23
34
|
/*!*************************************************!*\
|
|
24
35
|
!*** ../../../node_modules/clsx/dist/clsx.m.js ***!
|
|
@@ -1166,17 +1177,6 @@ eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElem
|
|
|
1166
1177
|
|
|
1167
1178
|
/***/ }),
|
|
1168
1179
|
|
|
1169
|
-
/***/ "../../../node_modules/tunnel-rat/dist/index.js":
|
|
1170
|
-
/*!******************************************************!*\
|
|
1171
|
-
!*** ../../../node_modules/tunnel-rat/dist/index.js ***!
|
|
1172
|
-
\******************************************************/
|
|
1173
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1174
|
-
|
|
1175
|
-
"use strict";
|
|
1176
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ tunnel)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var zustand__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! zustand */ \"../../../node_modules/zustand/esm/index.mjs\");\n\n\n\nfunction tunnel() {\n const useStore = (0,zustand__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(set => ({\n current: new Array(),\n version: 0,\n set\n }));\n return {\n In: ({\n children\n }) => {\n const set = useStore(state => state.set);\n const version = useStore(state => state.version);\n /* When this component mounts, we increase the store's version number.\n This will cause all existing rats to re-render (just like if the Out component\n were mapping items to a list.) The re-rendering will cause the final \n order of rendered components to match what the user is expecting. */\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n set(state => ({\n version: state.version + 1\n }));\n }, []);\n /* Any time the children _or_ the store's version number change, insert\n the specified React children into the list of rats. */\n\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n set(({\n current\n }) => ({\n current: [...current, children]\n }));\n return () => set(({\n current\n }) => ({\n current: current.filter(c => c !== children)\n }));\n }, [children, version]);\n return null;\n },\n Out: () => {\n const current = useStore(state => state.current);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, current);\n }\n };\n}\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3R1bm5lbC1yYXQvZGlzdC9pbmRleC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQStDO0FBQ2xCOztBQUU3QjtBQUNBLG1CQUFtQixtREFBTTtBQUN6QjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLHNEQUFlO0FBQ3JCO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7O0FBRUEsTUFBTSxzREFBZTtBQUNyQjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSwwQkFBMEIsMERBQW1CLENBQUMsdURBQWM7QUFDNUQ7QUFDQTtBQUNBOztBQUU2QiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdHVubmVsLXJhdC9kaXN0L2luZGV4LmpzP2VmNGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjcmVhdGUgZnJvbSAnenVzdGFuZCc7XG5cbmZ1bmN0aW9uIHR1bm5lbCgpIHtcbiAgY29uc3QgdXNlU3RvcmUgPSBjcmVhdGUoc2V0ID0+ICh7XG4gICAgY3VycmVudDogbmV3IEFycmF5KCksXG4gICAgdmVyc2lvbjogMCxcbiAgICBzZXRcbiAgfSkpO1xuICByZXR1cm4ge1xuICAgIEluOiAoe1xuICAgICAgY2hpbGRyZW5cbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCBzZXQgPSB1c2VTdG9yZShzdGF0ZSA9PiBzdGF0ZS5zZXQpO1xuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZVN0b3JlKHN0YXRlID0+IHN0YXRlLnZlcnNpb24pO1xuICAgICAgLyogV2hlbiB0aGlzIGNvbXBvbmVudCBtb3VudHMsIHdlIGluY3JlYXNlIHRoZSBzdG9yZSdzIHZlcnNpb24gbnVtYmVyLlxuICAgICAgVGhpcyB3aWxsIGNhdXNlIGFsbCBleGlzdGluZyByYXRzIHRvIHJlLXJlbmRlciAoanVzdCBsaWtlIGlmIHRoZSBPdXQgY29tcG9uZW50XG4gICAgICB3ZXJlIG1hcHBpbmcgaXRlbXMgdG8gYSBsaXN0LikgVGhlIHJlLXJlbmRlcmluZyB3aWxsIGNhdXNlIHRoZSBmaW5hbCBcbiAgICAgIG9yZGVyIG9mIHJlbmRlcmVkIGNvbXBvbmVudHMgdG8gbWF0Y2ggd2hhdCB0aGUgdXNlciBpcyBleHBlY3RpbmcuICovXG5cbiAgICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHNldChzdGF0ZSA9PiAoe1xuICAgICAgICAgIHZlcnNpb246IHN0YXRlLnZlcnNpb24gKyAxXG4gICAgICAgIH0pKTtcbiAgICAgIH0sIFtdKTtcbiAgICAgIC8qIEFueSB0aW1lIHRoZSBjaGlsZHJlbiBfb3JfIHRoZSBzdG9yZSdzIHZlcnNpb24gbnVtYmVyIGNoYW5nZSwgaW5zZXJ0XG4gICAgICB0aGUgc3BlY2lmaWVkIFJlYWN0IGNoaWxkcmVuIGludG8gdGhlIGxpc3Qgb2YgcmF0cy4gKi9cblxuICAgICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgc2V0KCh7XG4gICAgICAgICAgY3VycmVudFxuICAgICAgICB9KSA9PiAoe1xuICAgICAgICAgIGN1cnJlbnQ6IFsuLi5jdXJyZW50LCBjaGlsZHJlbl1cbiAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gKCkgPT4gc2V0KCh7XG4gICAgICAgICAgY3VycmVudFxuICAgICAgICB9KSA9PiAoe1xuICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnQuZmlsdGVyKGMgPT4gYyAhPT0gY2hpbGRyZW4pXG4gICAgICAgIH0pKTtcbiAgICAgIH0sIFtjaGlsZHJlbiwgdmVyc2lvbl0pO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSxcbiAgICBPdXQ6ICgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQgPSB1c2VTdG9yZShzdGF0ZSA9PiBzdGF0ZS5jdXJyZW50KTtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgY3VycmVudCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgeyB0dW5uZWwgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/tunnel-rat/dist/index.js\n");
|
|
1177
|
-
|
|
1178
|
-
/***/ }),
|
|
1179
|
-
|
|
1180
1180
|
/***/ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js":
|
|
1181
1181
|
/*!*****************************************************************************************************!*\
|
|
1182
1182
|
!*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
|
|
@@ -2338,7 +2338,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2338
2338
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2339
2339
|
|
|
2340
2340
|
"use strict";
|
|
2341
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nvar _a, _b;\nconst trackEvent = typeof process !== \"undefined\" &&\n ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-
|
|
2341
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"trackEvent\": () => (/* binding */ trackEvent)\n/* harmony export */ });\nvar _a, _b;\nconst trackEvent = typeof process !== \"undefined\" &&\n ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-2acbae3\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.REACT_APP_GOOGLE_ANALYTICS_ID) &&\n typeof window !== \"undefined\" &&\n window.gtag\n ? (category, action, label, value) => {\n try {\n window.gtag(\"event\", action, {\n event_category: category,\n event_label: label,\n value,\n });\n }\n catch (error) {\n console.error(\"error logging to ga\", error);\n }\n }\n : typeof process !== \"undefined\" && ((_b = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-2acbae3\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _b === void 0 ? void 0 : _b.JEST_WORKER_ID)\n ? (category, action, label, value) => { }\n : (category, action, label, value) => {\n // Uncomment the next line to track locally\n // console.log(\"Track Event\", { category, action, label, value });\n };\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vYW5hbHl0aWNzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQU8sTUFBTSxVQUFVLEdBQ3JCLE9BQU8sT0FBTyxLQUFLLFdBQVc7S0FDOUIsNjVCQUFXLDBDQUFFLDZCQUE2QjtJQUMxQyxPQUFPLE1BQU0sS0FBSyxXQUFXO0lBQzdCLE1BQU0sQ0FBQyxJQUFJO0lBQ1QsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBRSxFQUFFO1FBQ25FLElBQUk7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUU7Z0JBQzNCLGNBQWMsRUFBRSxRQUFRO2dCQUN4QixXQUFXLEVBQUUsS0FBSztnQkFDbEIsS0FBSzthQUNOLENBQUMsQ0FBQztTQUNKO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxXQUFXLEtBQUksNjVCQUFXLDBDQUFFLGNBQWM7UUFDL0QsQ0FBQyxDQUFDLENBQUMsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsS0FBYyxFQUFFLEtBQWMsRUFBRSxFQUFFLEdBQUUsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxLQUFjLEVBQUUsS0FBYyxFQUFFLEVBQUU7WUFDbkUsMkNBQTJDO1lBQzNDLGtFQUFrRTtRQUNwRSxDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vYW5hbHl0aWNzLnRzPzVmMGMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyYWNrRXZlbnQgPVxuICB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICBwcm9jZXNzLmVudj8uUkVBQ1RfQVBQX0dPT0dMRV9BTkFMWVRJQ1NfSUQgJiZcbiAgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJlxuICB3aW5kb3cuZ3RhZ1xuICAgID8gKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgdmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB3aW5kb3cuZ3RhZyhcImV2ZW50XCIsIGFjdGlvbiwge1xuICAgICAgICAgICAgZXZlbnRfY2F0ZWdvcnk6IGNhdGVnb3J5LFxuICAgICAgICAgICAgZXZlbnRfbGFiZWw6IGxhYmVsLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcImVycm9yIGxvZ2dpbmcgdG8gZ2FcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgOiB0eXBlb2YgcHJvY2VzcyAhPT0gXCJ1bmRlZmluZWRcIiAmJiBwcm9jZXNzLmVudj8uSkVTVF9XT1JLRVJfSURcbiAgICA/IChjYXRlZ29yeTogc3RyaW5nLCBhY3Rpb246IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHZhbHVlPzogbnVtYmVyKSA9PiB7fVxuICAgIDogKGNhdGVnb3J5OiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgdmFsdWU/OiBudW1iZXIpID0+IHtcbiAgICAgICAgLy8gVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgdG8gdHJhY2sgbG9jYWxseVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlRyYWNrIEV2ZW50XCIsIHsgY2F0ZWdvcnksIGFjdGlvbiwgbGFiZWwsIHZhbHVlIH0pO1xuICAgICAgfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../analytics.ts\n");
|
|
2342
2342
|
|
|
2343
2343
|
/***/ }),
|
|
2344
2344
|
|
|
@@ -2679,7 +2679,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2679
2679
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2680
2680
|
|
|
2681
2681
|
"use strict";
|
|
2682
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TunnelsContext\": () => (/* binding */ TunnelsContext),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data */ \"../../data/index.ts\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _ErrorDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ErrorDialog */ \"../../components/ErrorDialog.tsx\");\n/* harmony import */ var _ImageExportDialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ImageExportDialog */ \"../../components/ImageExportDialog.tsx\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LoadingMessage */ \"../../components/LoadingMessage.tsx\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _MobileMenu__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./MobileMenu */ \"../../components/MobileMenu.tsx\");\n/* harmony import */ var _PasteChartDialog__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./PasteChartDialog */ \"../../components/PasteChartDialog.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _HelpDialog__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./HelpDialog */ \"../../components/HelpDialog.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _JSONExportDialog__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./JSONExportDialog */ \"../../components/JSONExportDialog.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../data/blob */ \"../../data/blob.ts\");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./LibraryMenu */ \"../../components/LibraryMenu.tsx\");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./LayerUI.scss */ \"../../components/LayerUI.scss\");\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Toolbar.scss */ \"../../components/Toolbar.scss\");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../analytics */ \"../../analytics.ts\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../components/App */ \"../../components/App.tsx\");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./Stats */ \"../../components/Stats.tsx\");\n/* harmony import */ var _actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../actions/actionToggleStats */ \"../../actions/actionToggleStats.tsx\");\n/* harmony import */ var _footer_Footer__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./footer/Footer */ \"../../components/footer/Footer.tsx\");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Sidebar/Sidebar */ \"../../components/Sidebar/Sidebar.tsx\");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../jotai */ \"../../jotai.ts\");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! jotai */ \"../../../node_modules/jotai/esm/index.js\");\n/* harmony import */ var _main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./main-menu/MainMenu */ \"../../components/main-menu/MainMenu.tsx\");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ActiveConfirmDialog */ \"../../components/ActiveConfirmDialog.tsx\");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./HandButton */ \"../../components/HandButton.tsx\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var tunnel_rat__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! tunnel-rat */ \"../../../node_modules/tunnel-rat/dist/index.js\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultMainMenu = ({ UIOptions }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"], Object.assign({ __fallback: true }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.LoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.SaveToActiveFile, {}), UIOptions.canvasActions.export && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.Export, {}), UIOptions.canvasActions.saveAsImage && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.SaveAsImage, {})), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.Help, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.ClearCanvas, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].Group, Object.assign({ title: \"Excalidraw links\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.Socials, {}) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.ToggleTheme, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.ChangeCanvasBackground, {})] })));\n};\nconst TunnelsContext = react__WEBPACK_IMPORTED_MODULE_2___default().createContext(null);\nconst LayerUI = ({ actionManager, appState, files, setAppState, elements, canvas, onLockToggle, onHandToolToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, renderTopRightUI, renderCustomStats, renderCustomSidebar, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, renderWelcomeScreen, children, }) => {\n const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_31__.useDevice)();\n const tunnels = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(() => {\n return {\n mainMenuTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_41__[\"default\"])(),\n welcomeScreenMenuHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_41__[\"default\"])(),\n welcomeScreenToolbarHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_41__[\"default\"])(),\n welcomeScreenHelpHintTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_41__[\"default\"])(),\n welcomeScreenCenterTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_41__[\"default\"])(),\n footerCenterTunnel: (0,tunnel_rat__WEBPACK_IMPORTED_MODULE_41__[\"default\"])(),\n jotaiScope: Symbol(),\n };\n }, []);\n const renderJSONExportDialog = () => {\n if (!UIOptions.canvasActions.export) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_JSONExportDialog__WEBPACK_IMPORTED_MODULE_23__.JSONExportDialog, { elements: elements, appState: appState, files: files, actionManager: actionManager, exportOpts: UIOptions.canvasActions.export, canvas: canvas, setAppState: setAppState }));\n };\n const renderImageExportDialog = () => {\n if (!UIOptions.canvasActions.saveAsImage) {\n return null;\n }\n const createExporter = (type) => (exportedElements) => __awaiter(void 0, void 0, void 0, function* () {\n (0,_analytics__WEBPACK_IMPORTED_MODULE_30__.trackEvent)(\"export\", type, \"ui\");\n const fileHandle = yield (0,_data__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)(type, exportedElements, appState, files, {\n exportBackground: appState.exportBackground,\n name: appState.name,\n viewBackgroundColor: appState.viewBackgroundColor,\n })\n .catch(_utils__WEBPACK_IMPORTED_MODULE_8__.muteFSAbortError)\n .catch((error) => {\n console.error(error);\n setAppState({ errorMessage: error.message });\n });\n if (appState.exportEmbedScene &&\n fileHandle &&\n (0,_data_blob__WEBPACK_IMPORTED_MODULE_25__.isImageFileHandle)(fileHandle)) {\n setAppState({ fileHandle });\n }\n });\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ImageExportDialog__WEBPACK_IMPORTED_MODULE_11__.ImageExportDialog, { elements: elements, appState: appState, setAppState: setAppState, files: files, actionManager: actionManager, onExportToPng: createExporter(\"png\"), onExportToSvg: createExporter(\"svg\"), onExportToClipboard: createExporter(\"clipboard\") }));\n };\n const renderCanvasActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { position: \"relative\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.mainMenuTunnel.Out, {}), renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.welcomeScreenMenuHintTunnel.Out, {})] })));\n const renderSelectedShapeActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_19__.Section, Object.assign({ heading: \"selectedShapeActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"selected-shape-actions zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_14__.Island, Object.assign({ className: _constants__WEBPACK_IMPORTED_MODULE_3__.CLASSES.SHAPE_ACTIONS_MENU, padding: 2, style: {\n // we want to make sure this doesn't overflow so subtracting the\n // approximate height of hamburgerMenu + footer\n maxHeight: `${appState.height - 166}px`,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction }) })) })));\n const renderFixedSideContainer = () => {\n const shouldRenderSelectedShapeActions = (0,_element__WEBPACK_IMPORTED_MODULE_5__.showSelectedShapeActions)(appState, elements);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_12__.FixedSideContainer, Object.assign({ side: \"top\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-menu App-menu_top\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Col, Object.assign({ gap: 6, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-menu_top__left\", {\n \"disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: [renderCanvasActions(), shouldRenderSelectedShapeActions && renderSelectedShapeActions()] })), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_19__.Section, Object.assign({ heading: \"shapes\", className: \"shapes-section\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { position: \"relative\" } }, { children: [renderWelcomeScreen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.welcomeScreenToolbarHintTunnel.Out, {})), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Col, Object.assign({ gap: 4, align: \"start\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Row, Object.assign({ gap: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar-container\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_14__.Island, Object.assign({ padding: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_13__.HintViewer, { appState: appState, elements: elements, isMobile: device.isMobile, device: device }), heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Row, Object.assign({ gap: 1 }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_29__.PenModeButton, { zenModeEnabled: appState.zenModeEnabled, checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.penMode\"), penDetected: appState.penDetected }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_16__.LockButton, { checked: appState.activeTool.locked, onChange: onLockToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.lock\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { className: \"App-toolbar__divider\" }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_39__.HandButton, { checked: (0,_appState__WEBPACK_IMPORTED_MODULE_40__.isHandToolActive)(appState), onChange: () => onHandToolToggle(), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.hand\"), isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } })] }))] })) })) }))] }))) }))), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__top-right zen-mode-transition\", {\n \"transition-right\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_22__.UserList, { collaborators: appState.collaborators }), renderTopRightUI === null || renderTopRightUI === void 0 ? void 0 : renderTopRightUI(device.isMobile, appState), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_24__.LibraryButton, { appState: appState, setAppState: setAppState }))] }))] })) })));\n };\n const renderSidebars = () => {\n return appState.openSidebar === \"customSidebar\" ? ((renderCustomSidebar === null || renderCustomSidebar === void 0 ? void 0 : renderCustomSidebar()) || null) : appState.openSidebar === \"library\" ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_26__.LibraryMenu, { appState: appState, onInsertElements: onInsertElements, libraryReturnUrl: libraryReturnUrl, focusContainer: focusContainer, library: library, id: id })) : null;\n };\n const [hostSidebarCounters] = (0,jotai__WEBPACK_IMPORTED_MODULE_42__.useAtom)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_35__.hostSidebarCountersAtom, _jotai__WEBPACK_IMPORTED_MODULE_36__.jotaiScope);\n const layerUIJSX = ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultMainMenu, { UIOptions: UIOptions }), appState.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_15__.LoadingMessage, { delay: 250 }), appState.errorMessage && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ErrorDialog__WEBPACK_IMPORTED_MODULE_10__.ErrorDialog, { message: appState.errorMessage, onClose: () => setAppState({ errorMessage: null }) })), appState.openDialog === \"help\" && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpDialog__WEBPACK_IMPORTED_MODULE_20__.HelpDialog, { onClose: () => {\n setAppState({ openDialog: null });\n } })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_38__.ActiveConfirmDialog, {}), renderImageExportDialog(), renderJSONExportDialog(), appState.pasteDialog.shown && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PasteChartDialog__WEBPACK_IMPORTED_MODULE_18__.PasteChartDialog, { setAppState: setAppState, appState: appState, onInsertChart: onInsertElements, onClose: () => setAppState({\n pasteDialog: { shown: false, data: null },\n }) })), device.isMobile && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MobileMenu__WEBPACK_IMPORTED_MODULE_17__.MobileMenu, { appState: appState, elements: elements, actionManager: actionManager, renderJSONExportDialog: renderJSONExportDialog, renderImageExportDialog: renderImageExportDialog, setAppState: setAppState, onLockToggle: onLockToggle, onHandToolToggle: onHandToolToggle, onPenModeToggle: onPenModeToggle, canvas: canvas, onImageAction: onImageAction, renderTopRightUI: renderTopRightUI, renderCustomStats: renderCustomStats, renderSidebars: renderSidebars, device: device })), !device.isMobile && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper\", {\n \"disable-pointerEvents\": appState.draggingElement ||\n appState.resizingElement ||\n (appState.editingElement &&\n !(0,_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement)(appState.editingElement)),\n }), style: ((appState.openSidebar === \"library\" &&\n appState.isSidebarDocked) ||\n hostSidebarCounters.docked) &&\n device.canDeviceFitSidebar\n ? { width: `calc(100% - ${_constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_WIDTH}px)` }\n : {} }, { children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.welcomeScreenCenterTunnel.Out, {}), renderFixedSideContainer(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_footer_Footer__WEBPACK_IMPORTED_MODULE_34__[\"default\"], { appState: appState, actionManager: actionManager, showExitZenModeBtn: showExitZenModeBtn, renderWelcomeScreen: renderWelcomeScreen }), appState.showStats && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_32__.Stats, { appState: appState, setAppState: setAppState, elements: elements, onClose: () => {\n actionManager.executeAction(_actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_33__.actionToggleStats);\n }, renderCustomStats: renderCustomStats })), appState.scrolledOutside && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_7__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.scrollBackToContent\") })))] })), renderSidebars()] }))] }));\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(jotai__WEBPACK_IMPORTED_MODULE_42__.Provider, Object.assign({ scope: tunnels.jotaiScope }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(TunnelsContext.Provider, Object.assign({ value: tunnels }, { children: layerUIJSX })) })));\n};\nconst stripIrrelevantAppStateProps = (appState) => {\n const { suggestedBindings, startBoundElement, cursorButton } = appState, ret = __rest(appState, [\"suggestedBindings\", \"startBoundElement\", \"cursorButton\"]);\n return ret;\n};\nconst areEqual = (prevProps, nextProps) => {\n // short-circuit early\n if (prevProps.children !== nextProps.children) {\n return false;\n }\n const { canvas: _prevCanvas, \n // not stable, but shouldn't matter in our case\n onInsertElements: _prevOnInsertElements, appState: prevAppState } = prevProps, prev = __rest(prevProps, [\"canvas\", \"onInsertElements\", \"appState\"]);\n const { canvas: _nextCanvas, onInsertElements: _nextOnInsertElements, appState: nextAppState } = nextProps, next = __rest(nextProps, [\"canvas\", \"onInsertElements\", \"appState\"]);\n return ((0,_utils__WEBPACK_IMPORTED_MODULE_8__.isShallowEqual)(stripIrrelevantAppStateProps(prevAppState), stripIrrelevantAppStateProps(nextAppState)) && (0,_utils__WEBPACK_IMPORTED_MODULE_8__.isShallowEqual)(prev, next));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_2___default().memo(LayerUI, areEqual));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFDZCxNQUFNLEVBQ0osTUFBTSxFQUFFLFdBQVcsRUFDbkIsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQ3ZDLFFBQVEsRUFBRSxZQUFZLEtBRXBCLFNBQVMsRUFEUixJQUFJLFVBQ0wsU0FBUyxFQUxQLDBDQUtMLENBQVksQ0FBQztJQUVkLE9BQU8sQ0FDTCxzREFBYyxDQUNaLDRCQUE0QixDQUFDLFlBQVksQ0FBQyxFQUMxQyw0QkFBNEIsQ0FBQyxZQUFZLENBQUMsQ0FDM0MsSUFBSSxzREFBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FDaEMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGlFQUFlLGlEQUFVLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvTGF5ZXJVSS50c3g/MDg3OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyBDTEFTU0VTLCBMSUJSQVJZX1NJREVCQVJfV0lEVEggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBleHBvcnRDYW52YXMgfSBmcm9tIFwiLi4vZGF0YVwiO1xuaW1wb3J0IHsgaXNUZXh0RWxlbWVudCwgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBMYW5ndWFnZSwgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVTY3JvbGxDZW50ZXIgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmltcG9ydCB7IEV4cG9ydFR5cGUgfSBmcm9tIFwiLi4vc2NlbmUvdHlwZXNcIjtcbmltcG9ydCB7IEFwcFByb3BzLCBBcHBTdGF0ZSwgRXhjYWxpZHJhd1Byb3BzLCBCaW5hcnlGaWxlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgaXNTaGFsbG93RXF1YWwsIG11dGVGU0Fib3J0RXJyb3IgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFNlbGVjdGVkU2hhcGVBY3Rpb25zLCBTaGFwZXNTd2l0Y2hlciB9IGZyb20gXCIuL0FjdGlvbnNcIjtcbmltcG9ydCB7IEVycm9yRGlhbG9nIH0gZnJvbSBcIi4vRXJyb3JEaWFsb2dcIjtcbmltcG9ydCB7IEV4cG9ydENCLCBJbWFnZUV4cG9ydERpYWxvZyB9IGZyb20gXCIuL0ltYWdlRXhwb3J0RGlhbG9nXCI7XG5pbXBvcnQgeyBGaXhlZFNpZGVDb250YWluZXIgfSBmcm9tIFwiLi9GaXhlZFNpZGVDb250YWluZXJcIjtcbmltcG9ydCB7IEhpbnRWaWV3ZXIgfSBmcm9tIFwiLi9IaW50Vmlld2VyXCI7XG5pbXBvcnQgeyBJc2xhbmQgfSBmcm9tIFwiLi9Jc2xhbmRcIjtcbmltcG9ydCB7IExvYWRpbmdNZXNzYWdlIH0gZnJvbSBcIi4vTG9hZGluZ01lc3NhZ2VcIjtcbmltcG9ydCB7IExvY2tCdXR0b24gfSBmcm9tIFwiLi9Mb2NrQnV0dG9uXCI7XG5pbXBvcnQgeyBNb2JpbGVNZW51IH0gZnJvbSBcIi4vTW9iaWxlTWVudVwiO1xuaW1wb3J0IHsgUGFzdGVDaGFydERpYWxvZyB9IGZyb20gXCIuL1Bhc3RlQ2hhcnREaWFsb2dcIjtcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tIFwiLi9TZWN0aW9uXCI7XG5pbXBvcnQgeyBIZWxwRGlhbG9nIH0gZnJvbSBcIi4vSGVscERpYWxvZ1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBVc2VyTGlzdCB9IGZyb20gXCIuL1VzZXJMaXN0XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwiLi4vZGF0YS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBKU09ORXhwb3J0RGlhbG9nIH0gZnJvbSBcIi4vSlNPTkV4cG9ydERpYWxvZ1wiO1xuaW1wb3J0IHsgTGlicmFyeUJ1dHRvbiB9IGZyb20gXCIuL0xpYnJhcnlCdXR0b25cIjtcbmltcG9ydCB7IGlzSW1hZ2VGaWxlSGFuZGxlIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuaW1wb3J0IHsgTGlicmFyeU1lbnUgfSBmcm9tIFwiLi9MaWJyYXJ5TWVudVwiO1xuXG5pbXBvcnQgXCIuL0xheWVyVUkuc2Nzc1wiO1xuaW1wb3J0IFwiLi9Ub29sYmFyLnNjc3NcIjtcbmltcG9ydCB7IFBlbk1vZGVCdXR0b24gfSBmcm9tIFwiLi9QZW5Nb2RlQnV0dG9uXCI7XG5pbXBvcnQgeyB0cmFja0V2ZW50IH0gZnJvbSBcIi4uL2FuYWx5dGljc1wiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgeyBTdGF0cyB9IGZyb20gXCIuL1N0YXRzXCI7XG5pbXBvcnQgeyBhY3Rpb25Ub2dnbGVTdGF0cyB9IGZyb20gXCIuLi9hY3Rpb25zL2FjdGlvblRvZ2dsZVN0YXRzXCI7XG5pbXBvcnQgRm9vdGVyIGZyb20gXCIuL2Zvb3Rlci9Gb290ZXJcIjtcbmltcG9ydCB7IGhvc3RTaWRlYmFyQ291bnRlcnNBdG9tIH0gZnJvbSBcIi4vU2lkZWJhci9TaWRlYmFyXCI7XG5pbXBvcnQgeyBqb3RhaVNjb3BlIH0gZnJvbSBcIi4uL2pvdGFpXCI7XG5pbXBvcnQgeyBQcm92aWRlciwgdXNlQXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IE1haW5NZW51IGZyb20gXCIuL21haW4tbWVudS9NYWluTWVudVwiO1xuaW1wb3J0IHsgQWN0aXZlQ29uZmlybURpYWxvZyB9IGZyb20gXCIuL0FjdGl2ZUNvbmZpcm1EaWFsb2dcIjtcbmltcG9ydCB7IEhhbmRCdXR0b24gfSBmcm9tIFwiLi9IYW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBpc0hhbmRUb29sQWN0aXZlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgdHVubmVsIGZyb20gXCJ0dW5uZWwtcmF0XCI7XG5cbmludGVyZmFjZSBMYXllclVJUHJvcHMge1xuICBhY3Rpb25NYW5hZ2VyOiBBY3Rpb25NYW5hZ2VyO1xuICBhcHBTdGF0ZTogQXBwU3RhdGU7XG4gIGZpbGVzOiBCaW5hcnlGaWxlcztcbiAgY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGw7XG4gIHNldEFwcFN0YXRlOiBSZWFjdC5Db21wb25lbnQ8YW55LCBBcHBTdGF0ZT5bXCJzZXRTdGF0ZVwiXTtcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdO1xuICBvbkxvY2tUb2dnbGU6ICgpID0+IHZvaWQ7XG4gIG9uSGFuZFRvb2xUb2dnbGU6ICgpID0+IHZvaWQ7XG4gIG9uUGVuTW9kZVRvZ2dsZTogKCkgPT4gdm9pZDtcbiAgb25JbnNlcnRFbGVtZW50czogKGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXSkgPT4gdm9pZDtcbiAgc2hvd0V4aXRaZW5Nb2RlQnRuOiBib29sZWFuO1xuICBsYW5nQ29kZTogTGFuZ3VhZ2VbXCJjb2RlXCJdO1xuICByZW5kZXJUb3BSaWdodFVJPzogRXhjYWxpZHJhd1Byb3BzW1wicmVuZGVyVG9wUmlnaHRVSVwiXTtcbiAgcmVuZGVyQ3VzdG9tU3RhdHM/OiBFeGNhbGlkcmF3UHJvcHNbXCJyZW5kZXJDdXN0b21TdGF0c1wiXTtcbiAgcmVuZGVyQ3VzdG9tU2lkZWJhcj86IEV4Y2FsaWRyYXdQcm9wc1tcInJlbmRlclNpZGViYXJcIl07XG4gIGxpYnJhcnlSZXR1cm5Vcmw6IEV4Y2FsaWRyYXdQcm9wc1tcImxpYnJhcnlSZXR1cm5VcmxcIl07XG4gIFVJT3B0aW9uczogQXBwUHJvcHNbXCJVSU9wdGlvbnNcIl07XG4gIGZvY3VzQ29udGFpbmVyOiAoKSA9PiB2b2lkO1xuICBsaWJyYXJ5OiBMaWJyYXJ5O1xuICBpZDogc3RyaW5nO1xuICBvbkltYWdlQWN0aW9uOiAoZGF0YTogeyBpbnNlcnRPbkNhbnZhc0RpcmVjdGx5OiBib29sZWFuIH0pID0+IHZvaWQ7XG4gIHJlbmRlcldlbGNvbWVTY3JlZW46IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5jb25zdCBEZWZhdWx0TWFpbk1lbnU6IFJlYWN0LkZDPHtcbiAgVUlPcHRpb25zOiBBcHBQcm9wc1tcIlVJT3B0aW9uc1wiXTtcbn0+ID0gKHsgVUlPcHRpb25zIH0pID0+IHtcbiAgcmV0dXJuIChcbiAgICA8TWFpbk1lbnUgX19mYWxsYmFjaz5cbiAgICAgIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuTG9hZFNjZW5lIC8+XG4gICAgICA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLlNhdmVUb0FjdGl2ZUZpbGUgLz5cbiAgICAgIHsvKiBGSVhNRSB3ZSBzaG91bGQgdG8gdGVzdCBmb3IgdGhpcyBpbnNpZGUgdGhlIGl0ZW0gaXRzZWxmICovfVxuICAgICAge1VJT3B0aW9ucy5jYW52YXNBY3Rpb25zLmV4cG9ydCAmJiA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLkV4cG9ydCAvPn1cbiAgICAgIHsvKiBGSVhNRSB3ZSBzaG91bGQgdG8gdGVzdCBmb3IgdGhpcyBpbnNpZGUgdGhlIGl0ZW0gaXRzZWxmICovfVxuICAgICAge1VJT3B0aW9ucy5jYW52YXNBY3Rpb25zLnNhdmVBc0ltYWdlICYmIChcbiAgICAgICAgPE1haW5NZW51LkRlZmF1bHRJdGVtcy5TYXZlQXNJbWFnZSAvPlxuICAgICAgKX1cbiAgICAgIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuSGVscCAvPlxuICAgICAgPE1haW5NZW51LkRlZmF1bHRJdGVtcy5DbGVhckNhbnZhcyAvPlxuICAgICAgPE1haW5NZW51LlNlcGFyYXRvciAvPlxuICAgICAgPE1haW5NZW51Lkdyb3VwIHRpdGxlPVwiRXhjYWxpZHJhdyBsaW5rc1wiPlxuICAgICAgICA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLlNvY2lhbHMgLz5cbiAgICAgIDwvTWFpbk1lbnUuR3JvdXA+XG4gICAgICA8TWFpbk1lbnUuU2VwYXJhdG9yIC8+XG4gICAgICA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLlRvZ2dsZVRoZW1lIC8+XG4gICAgICA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLkNoYW5nZUNhbnZhc0JhY2tncm91bmQgLz5cbiAgICA8L01haW5NZW51PlxuICApO1xufTtcblxudHlwZSBUdW5uZWwgPSBSZXR1cm5UeXBlPHR5cGVvZiB0dW5uZWw+O1xuZXhwb3J0IGNvbnN0IFR1bm5lbHNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDx7XG4gIG1haW5NZW51VHVubmVsOiBUdW5uZWw7XG4gIHdlbGNvbWVTY3JlZW5NZW51SGludFR1bm5lbDogVHVubmVsO1xuICB3ZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWw6IFR1bm5lbDtcbiAgd2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsOiBUdW5uZWw7XG4gIHdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWw6IFR1bm5lbDtcbiAgZm9vdGVyQ2VudGVyVHVubmVsOiBUdW5uZWw7XG4gIGpvdGFpU2NvcGU6IHN5bWJvbDtcbn0+KG51bGwhKTtcblxuY29uc3QgTGF5ZXJVSSA9ICh7XG4gIGFjdGlvbk1hbmFnZXIsXG4gIGFwcFN0YXRlLFxuICBmaWxlcyxcbiAgc2V0QXBwU3RhdGUsXG4gIGVsZW1lbnRzLFxuICBjYW52YXMsXG4gIG9uTG9ja1RvZ2dsZSxcbiAgb25IYW5kVG9vbFRvZ2dsZSxcbiAgb25QZW5Nb2RlVG9nZ2xlLFxuICBvbkluc2VydEVsZW1lbnRzLFxuICBzaG93RXhpdFplbk1vZGVCdG4sXG4gIHJlbmRlclRvcFJpZ2h0VUksXG4gIHJlbmRlckN1c3RvbVN0YXRzLFxuICByZW5kZXJDdXN0b21TaWRlYmFyLFxuICBsaWJyYXJ5UmV0dXJuVXJsLFxuICBVSU9wdGlvbnMsXG4gIGZvY3VzQ29udGFpbmVyLFxuICBsaWJyYXJ5LFxuICBpZCxcbiAgb25JbWFnZUFjdGlvbixcbiAgcmVuZGVyV2VsY29tZVNjcmVlbixcbiAgY2hpbGRyZW4sXG59OiBMYXllclVJUHJvcHMpID0+IHtcbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG5cbiAgY29uc3QgdHVubmVscyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBtYWluTWVudVR1bm5lbDogdHVubmVsKCksXG4gICAgICB3ZWxjb21lU2NyZWVuTWVudUhpbnRUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgd2VsY29tZVNjcmVlblRvb2xiYXJIaW50VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIHdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbDogdHVubmVsKCksXG4gICAgICB3ZWxjb21lU2NyZWVuQ2VudGVyVHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIGZvb3RlckNlbnRlclR1bm5lbDogdHVubmVsKCksXG4gICAgICBqb3RhaVNjb3BlOiBTeW1ib2woKSxcbiAgICB9O1xuICB9LCBbXSk7XG5cbiAgY29uc3QgcmVuZGVySlNPTkV4cG9ydERpYWxvZyA9ICgpID0+IHtcbiAgICBpZiAoIVVJT3B0aW9ucy5jYW52YXNBY3Rpb25zLmV4cG9ydCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxKU09ORXhwb3J0RGlhbG9nXG4gICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICBmaWxlcz17ZmlsZXN9XG4gICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgIGV4cG9ydE9wdHM9e1VJT3B0aW9ucy5jYW52YXNBY3Rpb25zLmV4cG9ydH1cbiAgICAgICAgY2FudmFzPXtjYW52YXN9XG4gICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJJbWFnZUV4cG9ydERpYWxvZyA9ICgpID0+IHtcbiAgICBpZiAoIVVJT3B0aW9ucy5jYW52YXNBY3Rpb25zLnNhdmVBc0ltYWdlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjcmVhdGVFeHBvcnRlciA9XG4gICAgICAodHlwZTogRXhwb3J0VHlwZSk6IEV4cG9ydENCID0+XG4gICAgICBhc3luYyAoZXhwb3J0ZWRFbGVtZW50cykgPT4ge1xuICAgICAgICB0cmFja0V2ZW50KFwiZXhwb3J0XCIsIHR5cGUsIFwidWlcIik7XG4gICAgICAgIGNvbnN0IGZpbGVIYW5kbGUgPSBhd2FpdCBleHBvcnRDYW52YXMoXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBleHBvcnRlZEVsZW1lbnRzLFxuICAgICAgICAgIGFwcFN0YXRlLFxuICAgICAgICAgIGZpbGVzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGV4cG9ydEJhY2tncm91bmQ6IGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQsXG4gICAgICAgICAgICBuYW1lOiBhcHBTdGF0ZS5uYW1lLFxuICAgICAgICAgICAgdmlld0JhY2tncm91bmRDb2xvcjogYXBwU3RhdGUudmlld0JhY2tncm91bmRDb2xvcixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgICAgLmNhdGNoKG11dGVGU0Fib3J0RXJyb3IpXG4gICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICBzZXRBcHBTdGF0ZSh7IGVycm9yTWVzc2FnZTogZXJyb3IubWVzc2FnZSB9KTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgYXBwU3RhdGUuZXhwb3J0RW1iZWRTY2VuZSAmJlxuICAgICAgICAgIGZpbGVIYW5kbGUgJiZcbiAgICAgICAgICBpc0ltYWdlRmlsZUhhbmRsZShmaWxlSGFuZGxlKVxuICAgICAgICApIHtcbiAgICAgICAgICBzZXRBcHBTdGF0ZSh7IGZpbGVIYW5kbGUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEltYWdlRXhwb3J0RGlhbG9nXG4gICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgb25FeHBvcnRUb1BuZz17Y3JlYXRlRXhwb3J0ZXIoXCJwbmdcIil9XG4gICAgICAgIG9uRXhwb3J0VG9Tdmc9e2NyZWF0ZUV4cG9ydGVyKFwic3ZnXCIpfVxuICAgICAgICBvbkV4cG9ydFRvQ2xpcGJvYXJkPXtjcmVhdGVFeHBvcnRlcihcImNsaXBib2FyZFwiKX1cbiAgICAgIC8+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJDYW52YXNBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxkaXYgc3R5bGU9e3sgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9fT5cbiAgICAgIHsvKiB3cmFwcGluZyB0byBGcmFnbWVudCBzdG9wcyBSZWFjdCBmcm9tIG9jY2FzaW9uYWxseSBjb21wbGFpbmluZ1xuICAgICAgICAgICAgICAgIGFib3V0IGlkZW50aWNhbCBLZXlzICovfVxuICAgICAgPHR1bm5lbHMubWFpbk1lbnVUdW5uZWwuT3V0IC8+XG4gICAgICB7cmVuZGVyV2VsY29tZVNjcmVlbiAmJiA8dHVubmVscy53ZWxjb21lU2NyZWVuTWVudUhpbnRUdW5uZWwuT3V0IC8+fVxuICAgIDwvZGl2PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zID0gKCkgPT4gKFxuICAgIDxTZWN0aW9uXG4gICAgICBoZWFkaW5nPVwic2VsZWN0ZWRTaGFwZUFjdGlvbnNcIlxuICAgICAgY2xhc3NOYW1lPXtjbHN4KFwic2VsZWN0ZWQtc2hhcGUtYWN0aW9ucyB6ZW4tbW9kZS10cmFuc2l0aW9uXCIsIHtcbiAgICAgICAgXCJ0cmFuc2l0aW9uLWxlZnRcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICA8SXNsYW5kXG4gICAgICAgIGNsYXNzTmFtZT17Q0xBU1NFUy5TSEFQRV9BQ1RJT05TX01FTlV9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhpcyBkb2Vzbid0IG92ZXJmbG93IHNvIHN1YnRyYWN0aW5nIHRoZVxuICAgICAgICAgIC8vIGFwcHJveGltYXRlIGhlaWdodCBvZiBoYW1idXJnZXJNZW51ICsgZm9vdGVyXG4gICAgICAgICAgbWF4SGVpZ2h0OiBgJHthcHBTdGF0ZS5oZWlnaHQgLSAxNjZ9cHhgLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8U2VsZWN0ZWRTaGFwZUFjdGlvbnNcbiAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICA8L0lzbGFuZD5cbiAgICA8L1NlY3Rpb24+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyRml4ZWRTaWRlQ29udGFpbmVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHNob3VsZFJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zID0gc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zKFxuICAgICAgYXBwU3RhdGUsXG4gICAgICBlbGVtZW50cyxcbiAgICApO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGaXhlZFNpZGVDb250YWluZXIgc2lkZT1cInRvcFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcC1tZW51IEFwcC1tZW51X3RvcFwiPlxuICAgICAgICAgIDxTdGFjay5Db2xcbiAgICAgICAgICAgIGdhcD17Nn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcIkFwcC1tZW51X3RvcF9fbGVmdFwiLCB7XG4gICAgICAgICAgICAgIFwiZGlzYWJsZS1wb2ludGVyRXZlbnRzXCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3JlbmRlckNhbnZhc0FjdGlvbnMoKX1cbiAgICAgICAgICAgIHtzaG91bGRSZW5kZXJTZWxlY3RlZFNoYXBlQWN0aW9ucyAmJiByZW5kZXJTZWxlY3RlZFNoYXBlQWN0aW9ucygpfVxuICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmIChcbiAgICAgICAgICAgIDxTZWN0aW9uIGhlYWRpbmc9XCJzaGFwZXNcIiBjbGFzc05hbWU9XCJzaGFwZXMtc2VjdGlvblwiPlxuICAgICAgICAgICAgICB7KGhlYWRpbmc6IFJlYWN0LlJlYWN0Tm9kZSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9fT5cbiAgICAgICAgICAgICAgICAgIHtyZW5kZXJXZWxjb21lU2NyZWVuICYmIChcbiAgICAgICAgICAgICAgICAgICAgPHR1bm5lbHMud2VsY29tZVNjcmVlblRvb2xiYXJIaW50VHVubmVsLk91dCAvPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDxTdGFjay5Db2wgZ2FwPXs0fSBhbGlnbj1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxTdGFjay5Sb3dcbiAgICAgICAgICAgICAgICAgICAgICBnYXA9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiQXBwLXRvb2xiYXItY29udGFpbmVyXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiemVuLW1vZGVcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8SXNsYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiQXBwLXRvb2xiYXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcInplbi1tb2RlXCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPEhpbnRWaWV3ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlPXtkZXZpY2UuaXNNb2JpbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZT17ZGV2aWNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtoZWFkaW5nfVxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0YWNrLlJvdyBnYXA9ezF9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8UGVuTW9kZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplbk1vZGVFbmFibGVkPXthcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5wZW5Nb2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblBlbk1vZGVUb2dnbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLnBlbk1vZGVcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVuRGV0ZWN0ZWQ9e2FwcFN0YXRlLnBlbkRldGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8TG9ja0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FwcFN0YXRlLmFjdGl2ZVRvb2wubG9ja2VkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkxvY2tUb2dnbGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLmxvY2tcIil9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJBcHAtdG9vbGJhcl9fZGl2aWRlclwiPjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxIYW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17aXNIYW5kVG9vbEFjdGl2ZShhcHBTdGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IG9uSGFuZFRvb2xUb2dnbGUoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIuaGFuZFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01vYmlsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxTaGFwZXNTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXM9e2NhbnZhc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sPXthcHBTdGF0ZS5hY3RpdmVUb29sfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uPXsoeyBwb2ludGVyVHlwZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogcG9pbnRlclR5cGUgIT09IFwibW91c2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8L0lzbGFuZD5cbiAgICAgICAgICAgICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrLkNvbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcbiAgICAgICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fdG9wLXJpZ2h0IHplbi1tb2RlLXRyYW5zaXRpb25cIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFwidHJhbnNpdGlvbi1yaWdodFwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFVzZXJMaXN0IGNvbGxhYm9yYXRvcnM9e2FwcFN0YXRlLmNvbGxhYm9yYXRvcnN9IC8+XG4gICAgICAgICAgICB7cmVuZGVyVG9wUmlnaHRVST8uKGRldmljZS5pc01vYmlsZSwgYXBwU3RhdGUpfVxuICAgICAgICAgICAgeyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICA8TGlicmFyeUJ1dHRvbiBhcHBTdGF0ZT17YXBwU3RhdGV9IHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX0gLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9GaXhlZFNpZGVDb250YWluZXI+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJTaWRlYmFycyA9ICgpID0+IHtcbiAgICByZXR1cm4gYXBwU3RhdGUub3BlblNpZGViYXIgPT09IFwiY3VzdG9tU2lkZWJhclwiID8gKFxuICAgICAgcmVuZGVyQ3VzdG9tU2lkZWJhcj8uKCkgfHwgbnVsbFxuICAgICkgOiBhcHBTdGF0ZS5vcGVuU2lkZWJhciA9PT0gXCJsaWJyYXJ5XCIgPyAoXG4gICAgICA8TGlicmFyeU1lbnVcbiAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICBvbkluc2VydEVsZW1lbnRzPXtvbkluc2VydEVsZW1lbnRzfVxuICAgICAgICBsaWJyYXJ5UmV0dXJuVXJsPXtsaWJyYXJ5UmV0dXJuVXJsfVxuICAgICAgICBmb2N1c0NvbnRhaW5lcj17Zm9jdXNDb250YWluZXJ9XG4gICAgICAgIGxpYnJhcnk9e2xpYnJhcnl9XG4gICAgICAgIGlkPXtpZH1cbiAgICAgIC8+XG4gICAgKSA6IG51bGw7XG4gIH07XG5cbiAgY29uc3QgW2hvc3RTaWRlYmFyQ291bnRlcnNdID0gdXNlQXRvbShob3N0U2lkZWJhckNvdW50ZXJzQXRvbSwgam90YWlTY29wZSk7XG5cbiAgY29uc3QgbGF5ZXJVSUpTWCA9IChcbiAgICA8PlxuICAgICAgey8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdHVubmVsZWQgVUkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL31cbiAgICAgIHsvKiBtYWtlIHN1cmUgd2UgcmVuZGVyIGhvc3QgYXBwIGNvbXBvbmVudHMgZmlyc3Qgc28gdGhhdCB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgdGhlbSBmaXJzdCBvbiBpbml0aWFsIHJlbmRlciB0byBvcHRpbWl6ZSBsYXlvdXQgc2hpZnQgKi99XG4gICAgICB7Y2hpbGRyZW59XG4gICAgICB7LyogcmVuZGVyIGNvbXBvbmVudCBmYWxsYmFja3MuIENhbiBiZSByZW5kZXJlZCBhbnl3aGVyZSBhcyB0aGV5J2xsIGJlXG4gICAgICAgICAgdHVubmVsZWQgYXdheS4gV2Ugb25seSByZW5kZXIgdHVubmVsZWQgY29tcG9uZW50cyB0aGF0IGFjdHVhbGx5XG4gICAgICAgICAgaGF2ZSBkZWZhdWx0cyB3aGVuIGhvc3QgZG8gbm90IHJlbmRlciBhbnl0aGluZy4gKi99XG4gICAgICA8RGVmYXVsdE1haW5NZW51IFVJT3B0aW9ucz17VUlPcHRpb25zfSAvPlxuICAgICAgey8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL31cblxuICAgICAge2FwcFN0YXRlLmlzTG9hZGluZyAmJiA8TG9hZGluZ01lc3NhZ2UgZGVsYXk9ezI1MH0gLz59XG4gICAgICB7YXBwU3RhdGUuZXJyb3JNZXNzYWdlICYmIChcbiAgICAgICAgPEVycm9yRGlhbG9nXG4gICAgICAgICAgbWVzc2FnZT17YXBwU3RhdGUuZXJyb3JNZXNzYWdlfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBudWxsIH0pfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHthcHBTdGF0ZS5vcGVuRGlhbG9nID09PSBcImhlbHBcIiAmJiAoXG4gICAgICAgIDxIZWxwRGlhbG9nXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgc2V0QXBwU3RhdGUoeyBvcGVuRGlhbG9nOiBudWxsIH0pO1xuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEFjdGl2ZUNvbmZpcm1EaWFsb2cgLz5cbiAgICAgIHtyZW5kZXJJbWFnZUV4cG9ydERpYWxvZygpfVxuICAgICAge3JlbmRlckpTT05FeHBvcnREaWFsb2coKX1cbiAgICAgIHthcHBTdGF0ZS5wYXN0ZURpYWxvZy5zaG93biAmJiAoXG4gICAgICAgIDxQYXN0ZUNoYXJ0RGlhbG9nXG4gICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICBvbkluc2VydENoYXJ0PXtvbkluc2VydEVsZW1lbnRzfVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+XG4gICAgICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgICAgIHBhc3RlRGlhbG9nOiB7IHNob3duOiBmYWxzZSwgZGF0YTogbnVsbCB9LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2RldmljZS5pc01vYmlsZSAmJiAoXG4gICAgICAgIDxNb2JpbGVNZW51XG4gICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICAgIHJlbmRlckpTT05FeHBvcnREaWFsb2c9e3JlbmRlckpTT05FeHBvcnREaWFsb2d9XG4gICAgICAgICAgcmVuZGVySW1hZ2VFeHBvcnREaWFsb2c9e3JlbmRlckltYWdlRXhwb3J0RGlhbG9nfVxuICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICBvbkxvY2tUb2dnbGU9e29uTG9ja1RvZ2dsZX1cbiAgICAgICAgICBvbkhhbmRUb29sVG9nZ2xlPXtvbkhhbmRUb29sVG9nZ2xlfVxuICAgICAgICAgIG9uUGVuTW9kZVRvZ2dsZT17b25QZW5Nb2RlVG9nZ2xlfVxuICAgICAgICAgIGNhbnZhcz17Y2FudmFzfVxuICAgICAgICAgIG9uSW1hZ2VBY3Rpb249e29uSW1hZ2VBY3Rpb259XG4gICAgICAgICAgcmVuZGVyVG9wUmlnaHRVST17cmVuZGVyVG9wUmlnaHRVSX1cbiAgICAgICAgICByZW5kZXJDdXN0b21TdGF0cz17cmVuZGVyQ3VzdG9tU3RhdHN9XG4gICAgICAgICAgcmVuZGVyU2lkZWJhcnM9e3JlbmRlclNpZGViYXJzfVxuICAgICAgICAgIGRldmljZT17ZGV2aWNlfVxuICAgICAgICAvPlxuICAgICAgKX1cblxuICAgICAgeyFkZXZpY2UuaXNNb2JpbGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChcImxheWVyLXVpX193cmFwcGVyXCIsIHtcbiAgICAgICAgICAgICAgXCJkaXNhYmxlLXBvaW50ZXJFdmVudHNcIjpcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZS5kcmFnZ2luZ0VsZW1lbnQgfHxcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZS5yZXNpemluZ0VsZW1lbnQgfHxcbiAgICAgICAgICAgICAgICAoYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQgJiZcbiAgICAgICAgICAgICAgICAgICFpc1RleHRFbGVtZW50KGFwcFN0YXRlLmVkaXRpbmdFbGVtZW50KSksXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICAgIHN0eWxlPXtcbiAgICAgICAgICAgICAgKChhcHBTdGF0ZS5vcGVuU2lkZWJhciA9PT0gXCJsaWJyYXJ5XCIgJiZcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZS5pc1NpZGViYXJEb2NrZWQpIHx8XG4gICAgICAgICAgICAgICAgaG9zdFNpZGViYXJDb3VudGVycy5kb2NrZWQpICYmXG4gICAgICAgICAgICAgIGRldmljZS5jYW5EZXZpY2VGaXRTaWRlYmFyXG4gICAgICAgICAgICAgICAgPyB7IHdpZHRoOiBgY2FsYygxMDAlIC0gJHtMSUJSQVJZX1NJREVCQVJfV0lEVEh9cHgpYCB9XG4gICAgICAgICAgICAgICAgOiB7fVxuICAgICAgICAgICAgfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtyZW5kZXJXZWxjb21lU2NyZWVuICYmIDx0dW5uZWxzLndlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWwuT3V0IC8+fVxuICAgICAgICAgICAge3JlbmRlckZpeGVkU2lkZUNvbnRhaW5lcigpfVxuICAgICAgICAgICAgPEZvb3RlclxuICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgICAgICAgIHNob3dFeGl0WmVuTW9kZUJ0bj17c2hvd0V4aXRaZW5Nb2RlQnRufVxuICAgICAgICAgICAgICByZW5kZXJXZWxjb21lU2NyZWVuPXtyZW5kZXJXZWxjb21lU2NyZWVufVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHthcHBTdGF0ZS5zaG93U3RhdHMgJiYgKFxuICAgICAgICAgICAgICA8U3RhdHNcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBhY3Rpb25NYW5hZ2VyLmV4ZWN1dGVBY3Rpb24oYWN0aW9uVG9nZ2xlU3RhdHMpO1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgcmVuZGVyQ3VzdG9tU3RhdHM9e3JlbmRlckN1c3RvbVN0YXRzfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHthcHBTdGF0ZS5zY3JvbGxlZE91dHNpZGUgJiYgKFxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2Nyb2xsLWJhY2stdG8tY29udGVudFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAuLi5jYWxjdWxhdGVTY3JvbGxDZW50ZXIoZWxlbWVudHMsIGFwcFN0YXRlLCBjYW52YXMpLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwiYnV0dG9ucy5zY3JvbGxCYWNrVG9Db250ZW50XCIpfVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge3JlbmRlclNpZGViYXJzKCl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzY29wZT17dHVubmVscy5qb3RhaVNjb3BlfT5cbiAgICAgIDxUdW5uZWxzQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dHVubmVsc30+XG4gICAgICAgIHtsYXllclVJSlNYfVxuICAgICAgPC9UdW5uZWxzQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuY29uc3Qgc3RyaXBJcnJlbGV2YW50QXBwU3RhdGVQcm9wcyA9IChcbiAgYXBwU3RhdGU6IEFwcFN0YXRlLFxuKTogUGFydGlhbDxBcHBTdGF0ZT4gPT4ge1xuICBjb25zdCB7IHN1Z2dlc3RlZEJpbmRpbmdzLCBzdGFydEJvdW5kRWxlbWVudCwgY3Vyc29yQnV0dG9uLCAuLi5yZXQgfSA9XG4gICAgYXBwU3RhdGU7XG4gIHJldHVybiByZXQ7XG59O1xuXG5jb25zdCBhcmVFcXVhbCA9IChwcmV2UHJvcHM6IExheWVyVUlQcm9wcywgbmV4dFByb3BzOiBMYXllclVJUHJvcHMpID0+IHtcbiAgLy8gc2hvcnQtY2lyY3VpdCBlYXJseVxuICBpZiAocHJldlByb3BzLmNoaWxkcmVuICE9PSBuZXh0UHJvcHMuY2hpbGRyZW4pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB7XG4gICAgY2FudmFzOiBfcHJldkNhbnZhcyxcbiAgICAvLyBub3Qgc3RhYmxlLCBidXQgc2hvdWxkbid0IG1hdHRlciBpbiBvdXIgY2FzZVxuICAgIG9uSW5zZXJ0RWxlbWVudHM6IF9wcmV2T25JbnNlcnRFbGVtZW50cyxcbiAgICBhcHBTdGF0ZTogcHJldkFwcFN0YXRlLFxuICAgIC4uLnByZXZcbiAgfSA9IHByZXZQcm9wcztcbiAgY29uc3Qge1xuICAgIGNhbnZhczogX25leHRDYW52YXMsXG4gICAgb25JbnNlcnRFbGVtZW50czogX25leHRPbkluc2VydEVsZW1lbnRzLFxuICAgIGFwcFN0YXRlOiBuZXh0QXBwU3RhdGUsXG4gICAgLi4ubmV4dFxuICB9ID0gbmV4dFByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgaXNTaGFsbG93RXF1YWwoXG4gICAgICBzdHJpcElycmVsZXZhbnRBcHBTdGF0ZVByb3BzKHByZXZBcHBTdGF0ZSksXG4gICAgICBzdHJpcElycmVsZXZhbnRBcHBTdGF0ZVByb3BzKG5leHRBcHBTdGF0ZSksXG4gICAgKSAmJiBpc1NoYWxsb3dFcXVhbChwcmV2LCBuZXh0KVxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhY3QubWVtbyhMYXllclVJLCBhcmVFcXVhbCk7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/LayerUI.tsx\n");
|
|
2682
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants */ \"../../constants.ts\");\n/* harmony import */ var _data__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../data */ \"../../data/index.ts\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils */ \"../../utils.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _ErrorDialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ErrorDialog */ \"../../components/ErrorDialog.tsx\");\n/* harmony import */ var _ImageExportDialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ImageExportDialog */ \"../../components/ImageExportDialog.tsx\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _LoadingMessage__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LoadingMessage */ \"../../components/LoadingMessage.tsx\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _MobileMenu__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./MobileMenu */ \"../../components/MobileMenu.tsx\");\n/* harmony import */ var _PasteChartDialog__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./PasteChartDialog */ \"../../components/PasteChartDialog.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _HelpDialog__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./HelpDialog */ \"../../components/HelpDialog.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _JSONExportDialog__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./JSONExportDialog */ \"../../components/JSONExportDialog.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _data_blob__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../data/blob */ \"../../data/blob.ts\");\n/* harmony import */ var _LibraryMenu__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./LibraryMenu */ \"../../components/LibraryMenu.tsx\");\n/* harmony import */ var _LayerUI_scss__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./LayerUI.scss */ \"../../components/LayerUI.scss\");\n/* harmony import */ var _Toolbar_scss__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Toolbar.scss */ \"../../components/Toolbar.scss\");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n/* harmony import */ var _analytics__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../analytics */ \"../../analytics.ts\");\n/* harmony import */ var _components_App__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../components/App */ \"../../components/App.tsx\");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./Stats */ \"../../components/Stats.tsx\");\n/* harmony import */ var _actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../actions/actionToggleStats */ \"../../actions/actionToggleStats.tsx\");\n/* harmony import */ var _footer_Footer__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./footer/Footer */ \"../../components/footer/Footer.tsx\");\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./Sidebar/Sidebar */ \"../../components/Sidebar/Sidebar.tsx\");\n/* harmony import */ var _jotai__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../jotai */ \"../../jotai.ts\");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! jotai */ \"../../../node_modules/jotai/esm/index.js\");\n/* harmony import */ var _main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./main-menu/MainMenu */ \"../../components/main-menu/MainMenu.tsx\");\n/* harmony import */ var _ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ActiveConfirmDialog */ \"../../components/ActiveConfirmDialog.tsx\");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./HandButton */ \"../../components/HandButton.tsx\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./context/tunnels */ \"../../components/context/tunnels.ts\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DefaultMainMenu = ({ UIOptions }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"], Object.assign({ __fallback: true }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.LoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.SaveToActiveFile, {}), UIOptions.canvasActions.export && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.Export, {}), UIOptions.canvasActions.saveAsImage && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.SaveAsImage, {})), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.Help, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.ClearCanvas, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].Group, Object.assign({ title: \"Excalidraw links\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.Socials, {}) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].Separator, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.ToggleTheme, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_main_menu_MainMenu__WEBPACK_IMPORTED_MODULE_37__[\"default\"].DefaultItems.ChangeCanvasBackground, {})] })));\n};\nconst LayerUI = ({ actionManager, appState, files, setAppState, elements, canvas, onLockToggle, onHandToolToggle, onPenModeToggle, onInsertElements, showExitZenModeBtn, renderTopRightUI, renderCustomStats, renderCustomSidebar, libraryReturnUrl, UIOptions, focusContainer, library, id, onImageAction, renderWelcomeScreen, children, }) => {\n const device = (0,_components_App__WEBPACK_IMPORTED_MODULE_31__.useDevice)();\n const tunnels = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_41__.useInitializeTunnels)();\n const renderJSONExportDialog = () => {\n if (!UIOptions.canvasActions.export) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_JSONExportDialog__WEBPACK_IMPORTED_MODULE_23__.JSONExportDialog, { elements: elements, appState: appState, files: files, actionManager: actionManager, exportOpts: UIOptions.canvasActions.export, canvas: canvas, setAppState: setAppState }));\n };\n const renderImageExportDialog = () => {\n if (!UIOptions.canvasActions.saveAsImage) {\n return null;\n }\n const createExporter = (type) => (exportedElements) => __awaiter(void 0, void 0, void 0, function* () {\n (0,_analytics__WEBPACK_IMPORTED_MODULE_30__.trackEvent)(\"export\", type, \"ui\");\n const fileHandle = yield (0,_data__WEBPACK_IMPORTED_MODULE_4__.exportCanvas)(type, exportedElements, appState, files, {\n exportBackground: appState.exportBackground,\n name: appState.name,\n viewBackgroundColor: appState.viewBackgroundColor,\n })\n .catch(_utils__WEBPACK_IMPORTED_MODULE_8__.muteFSAbortError)\n .catch((error) => {\n console.error(error);\n setAppState({ errorMessage: error.message });\n });\n if (appState.exportEmbedScene &&\n fileHandle &&\n (0,_data_blob__WEBPACK_IMPORTED_MODULE_25__.isImageFileHandle)(fileHandle)) {\n setAppState({ fileHandle });\n }\n });\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ImageExportDialog__WEBPACK_IMPORTED_MODULE_11__.ImageExportDialog, { elements: elements, appState: appState, setAppState: setAppState, files: files, actionManager: actionManager, onExportToPng: createExporter(\"png\"), onExportToSvg: createExporter(\"svg\"), onExportToClipboard: createExporter(\"clipboard\") }));\n };\n const renderCanvasActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { position: \"relative\" } }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.mainMenuTunnel.Out, {}), renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.welcomeScreenMenuHintTunnel.Out, {})] })));\n const renderSelectedShapeActions = () => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_19__.Section, Object.assign({ heading: \"selectedShapeActions\", className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"selected-shape-actions zen-mode-transition\", {\n \"transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Island__WEBPACK_IMPORTED_MODULE_14__.Island, Object.assign({ className: _constants__WEBPACK_IMPORTED_MODULE_3__.CLASSES.SHAPE_ACTIONS_MENU, padding: 2, style: {\n // we want to make sure this doesn't overflow so subtracting the\n // approximate height of hamburgerMenu + footer\n maxHeight: `${appState.height - 166}px`,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction }) })) })));\n const renderFixedSideContainer = () => {\n const shouldRenderSelectedShapeActions = (0,_element__WEBPACK_IMPORTED_MODULE_5__.showSelectedShapeActions)(appState, elements);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_12__.FixedSideContainer, Object.assign({ side: \"top\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-menu App-menu_top\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Col, Object.assign({ gap: 6, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-menu_top__left\", {\n \"disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: [renderCanvasActions(), shouldRenderSelectedShapeActions && renderSelectedShapeActions()] })), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_19__.Section, Object.assign({ heading: \"shapes\", className: \"shapes-section\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { position: \"relative\" } }, { children: [renderWelcomeScreen && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.welcomeScreenToolbarHintTunnel.Out, {})), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Col, Object.assign({ gap: 4, align: \"start\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Row, Object.assign({ gap: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar-container\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_14__.Island, Object.assign({ padding: 1, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"App-toolbar\", {\n \"zen-mode\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_13__.HintViewer, { appState: appState, elements: elements, isMobile: device.isMobile, device: device }), heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_21__[\"default\"].Row, Object.assign({ gap: 1 }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_29__.PenModeButton, { zenModeEnabled: appState.zenModeEnabled, checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.penMode\"), penDetected: appState.penDetected }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_16__.LockButton, { checked: appState.activeTool.locked, onChange: onLockToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.lock\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { className: \"App-toolbar__divider\" }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_39__.HandButton, { checked: (0,_appState__WEBPACK_IMPORTED_MODULE_40__.isHandToolActive)(appState), onChange: () => onHandToolToggle(), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"toolBar.hand\"), isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } })] }))] })) })) }))] }))) }))), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__top-right zen-mode-transition\", {\n \"transition-right\": appState.zenModeEnabled,\n }) }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_22__.UserList, { collaborators: appState.collaborators }), renderTopRightUI === null || renderTopRightUI === void 0 ? void 0 : renderTopRightUI(device.isMobile, appState), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_24__.LibraryButton, { appState: appState, setAppState: setAppState }))] }))] })) })));\n };\n const renderSidebars = () => {\n return appState.openSidebar === \"customSidebar\" ? ((renderCustomSidebar === null || renderCustomSidebar === void 0 ? void 0 : renderCustomSidebar()) || null) : appState.openSidebar === \"library\" ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryMenu__WEBPACK_IMPORTED_MODULE_26__.LibraryMenu, { appState: appState, onInsertElements: onInsertElements, libraryReturnUrl: libraryReturnUrl, focusContainer: focusContainer, library: library, id: id })) : null;\n };\n const [hostSidebarCounters] = (0,jotai__WEBPACK_IMPORTED_MODULE_42__.useAtom)(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_35__.hostSidebarCountersAtom, _jotai__WEBPACK_IMPORTED_MODULE_36__.jotaiScope);\n const layerUIJSX = ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [children, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(DefaultMainMenu, { UIOptions: UIOptions }), appState.isLoading && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LoadingMessage__WEBPACK_IMPORTED_MODULE_15__.LoadingMessage, { delay: 250 }), appState.errorMessage && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ErrorDialog__WEBPACK_IMPORTED_MODULE_10__.ErrorDialog, { message: appState.errorMessage, onClose: () => setAppState({ errorMessage: null }) })), appState.openDialog === \"help\" && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpDialog__WEBPACK_IMPORTED_MODULE_20__.HelpDialog, { onClose: () => {\n setAppState({ openDialog: null });\n } })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_ActiveConfirmDialog__WEBPACK_IMPORTED_MODULE_38__.ActiveConfirmDialog, {}), renderImageExportDialog(), renderJSONExportDialog(), appState.pasteDialog.shown && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PasteChartDialog__WEBPACK_IMPORTED_MODULE_18__.PasteChartDialog, { setAppState: setAppState, appState: appState, onInsertChart: onInsertElements, onClose: () => setAppState({\n pasteDialog: { shown: false, data: null },\n }) })), device.isMobile && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_MobileMenu__WEBPACK_IMPORTED_MODULE_17__.MobileMenu, { appState: appState, elements: elements, actionManager: actionManager, renderJSONExportDialog: renderJSONExportDialog, renderImageExportDialog: renderImageExportDialog, setAppState: setAppState, onLockToggle: onLockToggle, onHandToolToggle: onHandToolToggle, onPenModeToggle: onPenModeToggle, canvas: canvas, onImageAction: onImageAction, renderTopRightUI: renderTopRightUI, renderCustomStats: renderCustomStats, renderSidebars: renderSidebars, device: device })), !device.isMobile && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper\", {\n \"disable-pointerEvents\": appState.draggingElement ||\n appState.resizingElement ||\n (appState.editingElement &&\n !(0,_element__WEBPACK_IMPORTED_MODULE_5__.isTextElement)(appState.editingElement)),\n }), style: ((appState.openSidebar === \"library\" &&\n appState.isSidebarDocked) ||\n hostSidebarCounters.docked) &&\n device.canDeviceFitSidebar\n ? { width: `calc(100% - ${_constants__WEBPACK_IMPORTED_MODULE_3__.LIBRARY_SIDEBAR_WIDTH}px)` }\n : {} }, { children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(tunnels.welcomeScreenCenterTunnel.Out, {}), renderFixedSideContainer(), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_footer_Footer__WEBPACK_IMPORTED_MODULE_34__[\"default\"], { appState: appState, actionManager: actionManager, showExitZenModeBtn: showExitZenModeBtn, renderWelcomeScreen: renderWelcomeScreen }), appState.showStats && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_32__.Stats, { appState: appState, setAppState: setAppState, elements: elements, onClose: () => {\n actionManager.executeAction(_actions_actionToggleStats__WEBPACK_IMPORTED_MODULE_33__.actionToggleStats);\n }, renderCustomStats: renderCustomStats })), appState.scrolledOutside && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_7__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"buttons.scrollBackToContent\") })))] })), renderSidebars()] }))] }));\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(jotai__WEBPACK_IMPORTED_MODULE_42__.Provider, Object.assign({ scope: tunnels.jotaiScope }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_context_tunnels__WEBPACK_IMPORTED_MODULE_41__.TunnelsContext.Provider, Object.assign({ value: tunnels }, { children: layerUIJSX })) })));\n};\nconst stripIrrelevantAppStateProps = (appState) => {\n const { suggestedBindings, startBoundElement, cursorButton } = appState, ret = __rest(appState, [\"suggestedBindings\", \"startBoundElement\", \"cursorButton\"]);\n return ret;\n};\nconst areEqual = (prevProps, nextProps) => {\n // short-circuit early\n if (prevProps.children !== nextProps.children) {\n return false;\n }\n const { canvas: _prevCanvas, \n // not stable, but shouldn't matter in our case\n onInsertElements: _prevOnInsertElements, appState: prevAppState } = prevProps, prev = __rest(prevProps, [\"canvas\", \"onInsertElements\", \"appState\"]);\n const { canvas: _nextCanvas, onInsertElements: _nextOnInsertElements, appState: nextAppState } = nextProps, next = __rest(nextProps, [\"canvas\", \"onInsertElements\", \"appState\"]);\n return ((0,_utils__WEBPACK_IMPORTED_MODULE_8__.isShallowEqual)(stripIrrelevantAppStateProps(prevAppState), stripIrrelevantAppStateProps(nextAppState)) && (0,_utils__WEBPACK_IMPORTED_MODULE_8__.isShallowEqual)(prev, next));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (react__WEBPACK_IMPORTED_MODULE_2___default().memo(LayerUI, areEqual));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL0xheWVyVUkudHN4PzA4NzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyBDTEFTU0VTLCBMSUJSQVJZX1NJREVCQVJfV0lEVEggfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBleHBvcnRDYW52YXMgfSBmcm9tIFwiLi4vZGF0YVwiO1xuaW1wb3J0IHsgaXNUZXh0RWxlbWVudCwgc2hvd1NlbGVjdGVkU2hhcGVBY3Rpb25zIH0gZnJvbSBcIi4uL2VsZW1lbnRcIjtcbmltcG9ydCB7IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBMYW5ndWFnZSwgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVTY3JvbGxDZW50ZXIgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmltcG9ydCB7IEV4cG9ydFR5cGUgfSBmcm9tIFwiLi4vc2NlbmUvdHlwZXNcIjtcbmltcG9ydCB7IEFwcFByb3BzLCBBcHBTdGF0ZSwgRXhjYWxpZHJhd1Byb3BzLCBCaW5hcnlGaWxlcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgaXNTaGFsbG93RXF1YWwsIG11dGVGU0Fib3J0RXJyb3IgfSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7IFNlbGVjdGVkU2hhcGVBY3Rpb25zLCBTaGFwZXNTd2l0Y2hlciB9IGZyb20gXCIuL0FjdGlvbnNcIjtcbmltcG9ydCB7IEVycm9yRGlhbG9nIH0gZnJvbSBcIi4vRXJyb3JEaWFsb2dcIjtcbmltcG9ydCB7IEV4cG9ydENCLCBJbWFnZUV4cG9ydERpYWxvZyB9IGZyb20gXCIuL0ltYWdlRXhwb3J0RGlhbG9nXCI7XG5pbXBvcnQgeyBGaXhlZFNpZGVDb250YWluZXIgfSBmcm9tIFwiLi9GaXhlZFNpZGVDb250YWluZXJcIjtcbmltcG9ydCB7IEhpbnRWaWV3ZXIgfSBmcm9tIFwiLi9IaW50Vmlld2VyXCI7XG5pbXBvcnQgeyBJc2xhbmQgfSBmcm9tIFwiLi9Jc2xhbmRcIjtcbmltcG9ydCB7IExvYWRpbmdNZXNzYWdlIH0gZnJvbSBcIi4vTG9hZGluZ01lc3NhZ2VcIjtcbmltcG9ydCB7IExvY2tCdXR0b24gfSBmcm9tIFwiLi9Mb2NrQnV0dG9uXCI7XG5pbXBvcnQgeyBNb2JpbGVNZW51IH0gZnJvbSBcIi4vTW9iaWxlTWVudVwiO1xuaW1wb3J0IHsgUGFzdGVDaGFydERpYWxvZyB9IGZyb20gXCIuL1Bhc3RlQ2hhcnREaWFsb2dcIjtcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tIFwiLi9TZWN0aW9uXCI7XG5pbXBvcnQgeyBIZWxwRGlhbG9nIH0gZnJvbSBcIi4vSGVscERpYWxvZ1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBVc2VyTGlzdCB9IGZyb20gXCIuL1VzZXJMaXN0XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwiLi4vZGF0YS9saWJyYXJ5XCI7XG5pbXBvcnQgeyBKU09ORXhwb3J0RGlhbG9nIH0gZnJvbSBcIi4vSlNPTkV4cG9ydERpYWxvZ1wiO1xuaW1wb3J0IHsgTGlicmFyeUJ1dHRvbiB9IGZyb20gXCIuL0xpYnJhcnlCdXR0b25cIjtcbmltcG9ydCB7IGlzSW1hZ2VGaWxlSGFuZGxlIH0gZnJvbSBcIi4uL2RhdGEvYmxvYlwiO1xuaW1wb3J0IHsgTGlicmFyeU1lbnUgfSBmcm9tIFwiLi9MaWJyYXJ5TWVudVwiO1xuXG5pbXBvcnQgXCIuL0xheWVyVUkuc2Nzc1wiO1xuaW1wb3J0IFwiLi9Ub29sYmFyLnNjc3NcIjtcbmltcG9ydCB7IFBlbk1vZGVCdXR0b24gfSBmcm9tIFwiLi9QZW5Nb2RlQnV0dG9uXCI7XG5pbXBvcnQgeyB0cmFja0V2ZW50IH0gZnJvbSBcIi4uL2FuYWx5dGljc1wiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvQXBwXCI7XG5pbXBvcnQgeyBTdGF0cyB9IGZyb20gXCIuL1N0YXRzXCI7XG5pbXBvcnQgeyBhY3Rpb25Ub2dnbGVTdGF0cyB9IGZyb20gXCIuLi9hY3Rpb25zL2FjdGlvblRvZ2dsZVN0YXRzXCI7XG5pbXBvcnQgRm9vdGVyIGZyb20gXCIuL2Zvb3Rlci9Gb290ZXJcIjtcbmltcG9ydCB7IGhvc3RTaWRlYmFyQ291bnRlcnNBdG9tIH0gZnJvbSBcIi4vU2lkZWJhci9TaWRlYmFyXCI7XG5pbXBvcnQgeyBqb3RhaVNjb3BlIH0gZnJvbSBcIi4uL2pvdGFpXCI7XG5pbXBvcnQgeyBQcm92aWRlciwgdXNlQXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IE1haW5NZW51IGZyb20gXCIuL21haW4tbWVudS9NYWluTWVudVwiO1xuaW1wb3J0IHsgQWN0aXZlQ29uZmlybURpYWxvZyB9IGZyb20gXCIuL0FjdGl2ZUNvbmZpcm1EaWFsb2dcIjtcbmltcG9ydCB7IEhhbmRCdXR0b24gfSBmcm9tIFwiLi9IYW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBpc0hhbmRUb29sQWN0aXZlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBUdW5uZWxzQ29udGV4dCwgdXNlSW5pdGlhbGl6ZVR1bm5lbHMgfSBmcm9tIFwiLi9jb250ZXh0L3R1bm5lbHNcIjtcblxuaW50ZXJmYWNlIExheWVyVUlQcm9wcyB7XG4gIGFjdGlvbk1hbmFnZXI6IEFjdGlvbk1hbmFnZXI7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgZmlsZXM6IEJpbmFyeUZpbGVzO1xuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbDtcbiAgc2V0QXBwU3RhdGU6IFJlYWN0LkNvbXBvbmVudDxhbnksIEFwcFN0YXRlPltcInNldFN0YXRlXCJdO1xuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W107XG4gIG9uTG9ja1RvZ2dsZTogKCkgPT4gdm9pZDtcbiAgb25IYW5kVG9vbFRvZ2dsZTogKCkgPT4gdm9pZDtcbiAgb25QZW5Nb2RlVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvbkluc2VydEVsZW1lbnRzOiAoZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdKSA9PiB2b2lkO1xuICBzaG93RXhpdFplbk1vZGVCdG46IGJvb2xlYW47XG4gIGxhbmdDb2RlOiBMYW5ndWFnZVtcImNvZGVcIl07XG4gIHJlbmRlclRvcFJpZ2h0VUk/OiBFeGNhbGlkcmF3UHJvcHNbXCJyZW5kZXJUb3BSaWdodFVJXCJdO1xuICByZW5kZXJDdXN0b21TdGF0cz86IEV4Y2FsaWRyYXdQcm9wc1tcInJlbmRlckN1c3RvbVN0YXRzXCJdO1xuICByZW5kZXJDdXN0b21TaWRlYmFyPzogRXhjYWxpZHJhd1Byb3BzW1wicmVuZGVyU2lkZWJhclwiXTtcbiAgbGlicmFyeVJldHVyblVybDogRXhjYWxpZHJhd1Byb3BzW1wibGlicmFyeVJldHVyblVybFwiXTtcbiAgVUlPcHRpb25zOiBBcHBQcm9wc1tcIlVJT3B0aW9uc1wiXTtcbiAgZm9jdXNDb250YWluZXI6ICgpID0+IHZvaWQ7XG4gIGxpYnJhcnk6IExpYnJhcnk7XG4gIGlkOiBzdHJpbmc7XG4gIG9uSW1hZ2VBY3Rpb246IChkYXRhOiB7IGluc2VydE9uQ2FudmFzRGlyZWN0bHk6IGJvb2xlYW4gfSkgPT4gdm9pZDtcbiAgcmVuZGVyV2VsY29tZVNjcmVlbjogYm9vbGVhbjtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG59XG5cbmNvbnN0IERlZmF1bHRNYWluTWVudTogUmVhY3QuRkM8e1xuICBVSU9wdGlvbnM6IEFwcFByb3BzW1wiVUlPcHRpb25zXCJdO1xufT4gPSAoeyBVSU9wdGlvbnMgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxNYWluTWVudSBfX2ZhbGxiYWNrPlxuICAgICAgPE1haW5NZW51LkRlZmF1bHRJdGVtcy5Mb2FkU2NlbmUgLz5cbiAgICAgIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuU2F2ZVRvQWN0aXZlRmlsZSAvPlxuICAgICAgey8qIEZJWE1FIHdlIHNob3VsZCB0byB0ZXN0IGZvciB0aGlzIGluc2lkZSB0aGUgaXRlbSBpdHNlbGYgKi99XG4gICAgICB7VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0ICYmIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuRXhwb3J0IC8+fVxuICAgICAgey8qIEZJWE1FIHdlIHNob3VsZCB0byB0ZXN0IGZvciB0aGlzIGluc2lkZSB0aGUgaXRlbSBpdHNlbGYgKi99XG4gICAgICB7VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuc2F2ZUFzSW1hZ2UgJiYgKFxuICAgICAgICA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLlNhdmVBc0ltYWdlIC8+XG4gICAgICApfVxuICAgICAgPE1haW5NZW51LkRlZmF1bHRJdGVtcy5IZWxwIC8+XG4gICAgICA8TWFpbk1lbnUuRGVmYXVsdEl0ZW1zLkNsZWFyQ2FudmFzIC8+XG4gICAgICA8TWFpbk1lbnUuU2VwYXJhdG9yIC8+XG4gICAgICA8TWFpbk1lbnUuR3JvdXAgdGl0bGU9XCJFeGNhbGlkcmF3IGxpbmtzXCI+XG4gICAgICAgIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuU29jaWFscyAvPlxuICAgICAgPC9NYWluTWVudS5Hcm91cD5cbiAgICAgIDxNYWluTWVudS5TZXBhcmF0b3IgLz5cbiAgICAgIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuVG9nZ2xlVGhlbWUgLz5cbiAgICAgIDxNYWluTWVudS5EZWZhdWx0SXRlbXMuQ2hhbmdlQ2FudmFzQmFja2dyb3VuZCAvPlxuICAgIDwvTWFpbk1lbnU+XG4gICk7XG59O1xuXG5jb25zdCBMYXllclVJID0gKHtcbiAgYWN0aW9uTWFuYWdlcixcbiAgYXBwU3RhdGUsXG4gIGZpbGVzLFxuICBzZXRBcHBTdGF0ZSxcbiAgZWxlbWVudHMsXG4gIGNhbnZhcyxcbiAgb25Mb2NrVG9nZ2xlLFxuICBvbkhhbmRUb29sVG9nZ2xlLFxuICBvblBlbk1vZGVUb2dnbGUsXG4gIG9uSW5zZXJ0RWxlbWVudHMsXG4gIHNob3dFeGl0WmVuTW9kZUJ0bixcbiAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgcmVuZGVyQ3VzdG9tU3RhdHMsXG4gIHJlbmRlckN1c3RvbVNpZGViYXIsXG4gIGxpYnJhcnlSZXR1cm5VcmwsXG4gIFVJT3B0aW9ucyxcbiAgZm9jdXNDb250YWluZXIsXG4gIGxpYnJhcnksXG4gIGlkLFxuICBvbkltYWdlQWN0aW9uLFxuICByZW5kZXJXZWxjb21lU2NyZWVuLFxuICBjaGlsZHJlbixcbn06IExheWVyVUlQcm9wcykgPT4ge1xuICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcblxuICBjb25zdCB0dW5uZWxzID0gdXNlSW5pdGlhbGl6ZVR1bm5lbHMoKTtcblxuICBjb25zdCByZW5kZXJKU09ORXhwb3J0RGlhbG9nID0gKCkgPT4ge1xuICAgIGlmICghVUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEpTT05FeHBvcnREaWFsb2dcbiAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgIGZpbGVzPXtmaWxlc31cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgZXhwb3J0T3B0cz17VUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuZXhwb3J0fVxuICAgICAgICBjYW52YXM9e2NhbnZhc31cbiAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckltYWdlRXhwb3J0RGlhbG9nID0gKCkgPT4ge1xuICAgIGlmICghVUlPcHRpb25zLmNhbnZhc0FjdGlvbnMuc2F2ZUFzSW1hZ2UpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNyZWF0ZUV4cG9ydGVyID1cbiAgICAgICh0eXBlOiBFeHBvcnRUeXBlKTogRXhwb3J0Q0IgPT5cbiAgICAgIGFzeW5jIChleHBvcnRlZEVsZW1lbnRzKSA9PiB7XG4gICAgICAgIHRyYWNrRXZlbnQoXCJleHBvcnRcIiwgdHlwZSwgXCJ1aVwiKTtcbiAgICAgICAgY29uc3QgZmlsZUhhbmRsZSA9IGF3YWl0IGV4cG9ydENhbnZhcyhcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIGV4cG9ydGVkRWxlbWVudHMsXG4gICAgICAgICAgYXBwU3RhdGUsXG4gICAgICAgICAgZmlsZXMsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZXhwb3J0QmFja2dyb3VuZDogYXBwU3RhdGUuZXhwb3J0QmFja2dyb3VuZCxcbiAgICAgICAgICAgIG5hbWU6IGFwcFN0YXRlLm5hbWUsXG4gICAgICAgICAgICB2aWV3QmFja2dyb3VuZENvbG9yOiBhcHBTdGF0ZS52aWV3QmFja2dyb3VuZENvbG9yLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgICAuY2F0Y2gobXV0ZUZTQWJvcnRFcnJvcilcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgZXJyb3JNZXNzYWdlOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBhcHBTdGF0ZS5leHBvcnRFbWJlZFNjZW5lICYmXG4gICAgICAgICAgZmlsZUhhbmRsZSAmJlxuICAgICAgICAgIGlzSW1hZ2VGaWxlSGFuZGxlKGZpbGVIYW5kbGUpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldEFwcFN0YXRlKHsgZmlsZUhhbmRsZSB9KTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8SW1hZ2VFeHBvcnREaWFsb2dcbiAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgZmlsZXM9e2ZpbGVzfVxuICAgICAgICBhY3Rpb25NYW5hZ2VyPXthY3Rpb25NYW5hZ2VyfVxuICAgICAgICBvbkV4cG9ydFRvUG5nPXtjcmVhdGVFeHBvcnRlcihcInBuZ1wiKX1cbiAgICAgICAgb25FeHBvcnRUb1N2Zz17Y3JlYXRlRXhwb3J0ZXIoXCJzdmdcIil9XG4gICAgICAgIG9uRXhwb3J0VG9DbGlwYm9hcmQ9e2NyZWF0ZUV4cG9ydGVyKFwiY2xpcGJvYXJkXCIpfVxuICAgICAgLz5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlckNhbnZhc0FjdGlvbnMgPSAoKSA9PiAoXG4gICAgPGRpdiBzdHlsZT17eyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH19PlxuICAgICAgey8qIHdyYXBwaW5nIHRvIEZyYWdtZW50IHN0b3BzIFJlYWN0IGZyb20gb2NjYXNpb25hbGx5IGNvbXBsYWluaW5nXG4gICAgICAgICAgICAgICAgYWJvdXQgaWRlbnRpY2FsIEtleXMgKi99XG4gICAgICA8dHVubmVscy5tYWluTWVudVR1bm5lbC5PdXQgLz5cbiAgICAgIHtyZW5kZXJXZWxjb21lU2NyZWVuICYmIDx0dW5uZWxzLndlbGNvbWVTY3JlZW5NZW51SGludFR1bm5lbC5PdXQgLz59XG4gICAgPC9kaXY+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSAoKSA9PiAoXG4gICAgPFNlY3Rpb25cbiAgICAgIGhlYWRpbmc9XCJzZWxlY3RlZFNoYXBlQWN0aW9uc1wiXG4gICAgICBjbGFzc05hbWU9e2Nsc3goXCJzZWxlY3RlZC1zaGFwZS1hY3Rpb25zIHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICBcInRyYW5zaXRpb24tbGVmdFwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgIH0pfVxuICAgID5cbiAgICAgIDxJc2xhbmRcbiAgICAgICAgY2xhc3NOYW1lPXtDTEFTU0VTLlNIQVBFX0FDVElPTlNfTUVOVX1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAvLyB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGlzIGRvZXNuJ3Qgb3ZlcmZsb3cgc28gc3VidHJhY3RpbmcgdGhlXG4gICAgICAgICAgLy8gYXBwcm94aW1hdGUgaGVpZ2h0IG9mIGhhbWJ1cmdlck1lbnUgKyBmb290ZXJcbiAgICAgICAgICBtYXhIZWlnaHQ6IGAke2FwcFN0YXRlLmhlaWdodCAtIDE2Nn1weGAsXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxTZWxlY3RlZFNoYXBlQWN0aW9uc1xuICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgICAgcmVuZGVyQWN0aW9uPXthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbn1cbiAgICAgICAgLz5cbiAgICAgIDwvSXNsYW5kPlxuICAgIDwvU2VjdGlvbj5cbiAgKTtcblxuICBjb25zdCByZW5kZXJGaXhlZFNpZGVDb250YWluZXIgPSAoKSA9PiB7XG4gICAgY29uc3Qgc2hvdWxkUmVuZGVyU2VsZWN0ZWRTaGFwZUFjdGlvbnMgPSBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMoXG4gICAgICBhcHBTdGF0ZSxcbiAgICAgIGVsZW1lbnRzLFxuICAgICk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPEZpeGVkU2lkZUNvbnRhaW5lciBzaWRlPVwidG9wXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiQXBwLW1lbnUgQXBwLW1lbnVfdG9wXCI+XG4gICAgICAgICAgPFN0YWNrLkNvbFxuICAgICAgICAgICAgZ2FwPXs2fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiQXBwLW1lbnVfdG9wX19sZWZ0XCIsIHtcbiAgICAgICAgICAgICAgXCJkaXNhYmxlLXBvaW50ZXJFdmVudHNcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7cmVuZGVyQ2FudmFzQWN0aW9ucygpfVxuICAgICAgICAgICAge3Nob3VsZFJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zICYmIHJlbmRlclNlbGVjdGVkU2hhcGVBY3Rpb25zKCl9XG4gICAgICAgICAgPC9TdGFjay5Db2w+XG4gICAgICAgICAgeyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgPFNlY3Rpb24gaGVhZGluZz1cInNoYXBlc1wiIGNsYXNzTmFtZT1cInNoYXBlcy1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgIHsoaGVhZGluZzogUmVhY3QuUmVhY3ROb2RlKSA9PiAoXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH19PlxuICAgICAgICAgICAgICAgICAge3JlbmRlcldlbGNvbWVTY3JlZW4gJiYgKFxuICAgICAgICAgICAgICAgICAgICA8dHVubmVscy53ZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWwuT3V0IC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9IGFsaWduPVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPFN0YWNrLlJvd1xuICAgICAgICAgICAgICAgICAgICAgIGdhcD17MX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJBcHAtdG9vbGJhci1jb250YWluZXJcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJ6ZW4tbW9kZVwiOiBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxJc2xhbmRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJBcHAtdG9vbGJhclwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiemVuLW1vZGVcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8SGludFZpZXdlclxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGU9e2RldmljZS5pc01vYmlsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlPXtkZXZpY2V9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAge2hlYWRpbmd9XG4gICAgICAgICAgICAgICAgICAgICAgICA8U3RhY2suUm93IGdhcD17MX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxQZW5Nb2RlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgemVuTW9kZUVuYWJsZWQ9e2FwcFN0YXRlLnplbk1vZGVFbmFibGVkfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FwcFN0YXRlLnBlbk1vZGV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uUGVuTW9kZVRvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIucGVuTW9kZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5EZXRlY3RlZD17YXBwU3RhdGUucGVuRGV0ZWN0ZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxMb2NrQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17YXBwU3RhdGUuYWN0aXZlVG9vbC5sb2NrZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uTG9ja1RvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIubG9ja1wiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyX19kaXZpZGVyXCI+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPEhhbmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc0hhbmRUb29sQWN0aXZlKGFwcFN0YXRlKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gb25IYW5kVG9vbFRvZ2dsZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KFwidG9vbEJhci5oYW5kXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFNoYXBlc1N3aXRjaGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcz17Y2FudmFzfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2w9e2FwcFN0YXRlLmFjdGl2ZVRvb2x9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb249eyh7IHBvaW50ZXJUeXBlIH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uSW1hZ2VBY3Rpb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPbkNhbnZhc0RpcmVjdGx5OiBwb2ludGVyVHlwZSAhPT0gXCJtb3VzZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3RhY2suUm93PlxuICAgICAgICAgICAgICAgICAgICAgIDwvSXNsYW5kPlxuICAgICAgICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TZWN0aW9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFxuICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX190b3AtcmlnaHQgemVuLW1vZGUtdHJhbnNpdGlvblwiLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgXCJ0cmFuc2l0aW9uLXJpZ2h0XCI6IGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VXNlckxpc3QgY29sbGFib3JhdG9ycz17YXBwU3RhdGUuY29sbGFib3JhdG9yc30gLz5cbiAgICAgICAgICAgIHtyZW5kZXJUb3BSaWdodFVJPy4oZGV2aWNlLmlzTW9iaWxlLCBhcHBTdGF0ZSl9XG4gICAgICAgICAgICB7IWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiAoXG4gICAgICAgICAgICAgIDxMaWJyYXJ5QnV0dG9uIGFwcFN0YXRlPXthcHBTdGF0ZX0gc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfSAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0ZpeGVkU2lkZUNvbnRhaW5lcj5cbiAgICApO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclNpZGViYXJzID0gKCkgPT4ge1xuICAgIHJldHVybiBhcHBTdGF0ZS5vcGVuU2lkZWJhciA9PT0gXCJjdXN0b21TaWRlYmFyXCIgPyAoXG4gICAgICByZW5kZXJDdXN0b21TaWRlYmFyPy4oKSB8fCBudWxsXG4gICAgKSA6IGFwcFN0YXRlLm9wZW5TaWRlYmFyID09PSBcImxpYnJhcnlcIiA/IChcbiAgICAgIDxMaWJyYXJ5TWVudVxuICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgIG9uSW5zZXJ0RWxlbWVudHM9e29uSW5zZXJ0RWxlbWVudHN9XG4gICAgICAgIGxpYnJhcnlSZXR1cm5Vcmw9e2xpYnJhcnlSZXR1cm5Vcmx9XG4gICAgICAgIGZvY3VzQ29udGFpbmVyPXtmb2N1c0NvbnRhaW5lcn1cbiAgICAgICAgbGlicmFyeT17bGlicmFyeX1cbiAgICAgICAgaWQ9e2lkfVxuICAgICAgLz5cbiAgICApIDogbnVsbDtcbiAgfTtcblxuICBjb25zdCBbaG9zdFNpZGViYXJDb3VudGVyc10gPSB1c2VBdG9tKGhvc3RTaWRlYmFyQ291bnRlcnNBdG9tLCBqb3RhaVNjb3BlKTtcblxuICBjb25zdCBsYXllclVJSlNYID0gKFxuICAgIDw+XG4gICAgICB7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0dW5uZWxlZCBVSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovfVxuICAgICAgey8qIG1ha2Ugc3VyZSB3ZSByZW5kZXIgaG9zdCBhcHAgY29tcG9uZW50cyBmaXJzdCBzbyB0aGF0IHdlIGNhbiBkZXRlY3RcbiAgICAgICAgICB0aGVtIGZpcnN0IG9uIGluaXRpYWwgcmVuZGVyIHRvIG9wdGltaXplIGxheW91dCBzaGlmdCAqL31cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIHsvKiByZW5kZXIgY29tcG9uZW50IGZhbGxiYWNrcy4gQ2FuIGJlIHJlbmRlcmVkIGFueXdoZXJlIGFzIHRoZXknbGwgYmVcbiAgICAgICAgICB0dW5uZWxlZCBhd2F5LiBXZSBvbmx5IHJlbmRlciB0dW5uZWxlZCBjb21wb25lbnRzIHRoYXQgYWN0dWFsbHlcbiAgICAgICAgICBoYXZlIGRlZmF1bHRzIHdoZW4gaG9zdCBkbyBub3QgcmVuZGVyIGFueXRoaW5nLiAqL31cbiAgICAgIDxEZWZhdWx0TWFpbk1lbnUgVUlPcHRpb25zPXtVSU9wdGlvbnN9IC8+XG4gICAgICB7LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovfVxuXG4gICAgICB7YXBwU3RhdGUuaXNMb2FkaW5nICYmIDxMb2FkaW5nTWVzc2FnZSBkZWxheT17MjUwfSAvPn1cbiAgICAgIHthcHBTdGF0ZS5lcnJvck1lc3NhZ2UgJiYgKFxuICAgICAgICA8RXJyb3JEaWFsb2dcbiAgICAgICAgICBtZXNzYWdlPXthcHBTdGF0ZS5lcnJvck1lc3NhZ2V9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXBwU3RhdGUoeyBlcnJvck1lc3NhZ2U6IG51bGwgfSl9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge2FwcFN0YXRlLm9wZW5EaWFsb2cgPT09IFwiaGVscFwiICYmIChcbiAgICAgICAgPEhlbHBEaWFsb2dcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRBcHBTdGF0ZSh7IG9wZW5EaWFsb2c6IG51bGwgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8QWN0aXZlQ29uZmlybURpYWxvZyAvPlxuICAgICAge3JlbmRlckltYWdlRXhwb3J0RGlhbG9nKCl9XG4gICAgICB7cmVuZGVySlNPTkV4cG9ydERpYWxvZygpfVxuICAgICAge2FwcFN0YXRlLnBhc3RlRGlhbG9nLnNob3duICYmIChcbiAgICAgICAgPFBhc3RlQ2hhcnREaWFsb2dcbiAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgIG9uSW5zZXJ0Q2hhcnQ9e29uSW5zZXJ0RWxlbWVudHN9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT5cbiAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgcGFzdGVEaWFsb2c6IHsgc2hvd246IGZhbHNlLCBkYXRhOiBudWxsIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7ZGV2aWNlLmlzTW9iaWxlICYmIChcbiAgICAgICAgPE1vYmlsZU1lbnVcbiAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgIGFjdGlvbk1hbmFnZXI9e2FjdGlvbk1hbmFnZXJ9XG4gICAgICAgICAgcmVuZGVySlNPTkV4cG9ydERpYWxvZz17cmVuZGVySlNPTkV4cG9ydERpYWxvZ31cbiAgICAgICAgICByZW5kZXJJbWFnZUV4cG9ydERpYWxvZz17cmVuZGVySW1hZ2VFeHBvcnREaWFsb2d9XG4gICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgIG9uTG9ja1RvZ2dsZT17b25Mb2NrVG9nZ2xlfVxuICAgICAgICAgIG9uSGFuZFRvb2xUb2dnbGU9e29uSGFuZFRvb2xUb2dnbGV9XG4gICAgICAgICAgb25QZW5Nb2RlVG9nZ2xlPXtvblBlbk1vZGVUb2dnbGV9XG4gICAgICAgICAgY2FudmFzPXtjYW52YXN9XG4gICAgICAgICAgb25JbWFnZUFjdGlvbj17b25JbWFnZUFjdGlvbn1cbiAgICAgICAgICByZW5kZXJUb3BSaWdodFVJPXtyZW5kZXJUb3BSaWdodFVJfVxuICAgICAgICAgIHJlbmRlckN1c3RvbVN0YXRzPXtyZW5kZXJDdXN0b21TdGF0c31cbiAgICAgICAgICByZW5kZXJTaWRlYmFycz17cmVuZGVyU2lkZWJhcnN9XG4gICAgICAgICAgZGV2aWNlPXtkZXZpY2V9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICB7IWRldmljZS5pc01vYmlsZSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwibGF5ZXItdWlfX3dyYXBwZXJcIiwge1xuICAgICAgICAgICAgICBcImRpc2FibGUtcG9pbnRlckV2ZW50c1wiOlxuICAgICAgICAgICAgICAgIGFwcFN0YXRlLmRyYWdnaW5nRWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIGFwcFN0YXRlLnJlc2l6aW5nRWxlbWVudCB8fFxuICAgICAgICAgICAgICAgIChhcHBTdGF0ZS5lZGl0aW5nRWxlbWVudCAmJlxuICAgICAgICAgICAgICAgICAgIWlzVGV4dEVsZW1lbnQoYXBwU3RhdGUuZWRpdGluZ0VsZW1lbnQpKSxcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgc3R5bGU9e1xuICAgICAgICAgICAgICAoKGFwcFN0YXRlLm9wZW5TaWRlYmFyID09PSBcImxpYnJhcnlcIiAmJlxuICAgICAgICAgICAgICAgIGFwcFN0YXRlLmlzU2lkZWJhckRvY2tlZCkgfHxcbiAgICAgICAgICAgICAgICBob3N0U2lkZWJhckNvdW50ZXJzLmRvY2tlZCkgJiZcbiAgICAgICAgICAgICAgZGV2aWNlLmNhbkRldmljZUZpdFNpZGViYXJcbiAgICAgICAgICAgICAgICA/IHsgd2lkdGg6IGBjYWxjKDEwMCUgLSAke0xJQlJBUllfU0lERUJBUl9XSURUSH1weClgIH1cbiAgICAgICAgICAgICAgICA6IHt9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3JlbmRlcldlbGNvbWVTY3JlZW4gJiYgPHR1bm5lbHMud2VsY29tZVNjcmVlbkNlbnRlclR1bm5lbC5PdXQgLz59XG4gICAgICAgICAgICB7cmVuZGVyRml4ZWRTaWRlQ29udGFpbmVyKCl9XG4gICAgICAgICAgICA8Rm9vdGVyXG4gICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgICAgICAgc2hvd0V4aXRaZW5Nb2RlQnRuPXtzaG93RXhpdFplbk1vZGVCdG59XG4gICAgICAgICAgICAgIHJlbmRlcldlbGNvbWVTY3JlZW49e3JlbmRlcldlbGNvbWVTY3JlZW59XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAge2FwcFN0YXRlLnNob3dTdGF0cyAmJiAoXG4gICAgICAgICAgICAgIDxTdGF0c1xuICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgIGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25Ub2dnbGVTdGF0cyk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICByZW5kZXJDdXN0b21TdGF0cz17cmVuZGVyQ3VzdG9tU3RhdHN9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2FwcFN0YXRlLnNjcm9sbGVkT3V0c2lkZSAmJiAoXG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzY3JvbGwtYmFjay10by1jb250ZW50XCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNhbGN1bGF0ZVNjcm9sbENlbnRlcihlbGVtZW50cywgYXBwU3RhdGUsIGNhbnZhcyksXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJidXR0b25zLnNjcm9sbEJhY2tUb0NvbnRlbnRcIil9XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB7cmVuZGVyU2lkZWJhcnMoKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHNjb3BlPXt0dW5uZWxzLmpvdGFpU2NvcGV9PlxuICAgICAgPFR1bm5lbHNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0dW5uZWxzfT5cbiAgICAgICAge2xheWVyVUlKU1h9XG4gICAgICA8L1R1bm5lbHNDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5jb25zdCBzdHJpcElycmVsZXZhbnRBcHBTdGF0ZVByb3BzID0gKFxuICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4pOiBQYXJ0aWFsPEFwcFN0YXRlPiA9PiB7XG4gIGNvbnN0IHsgc3VnZ2VzdGVkQmluZGluZ3MsIHN0YXJ0Qm91bmRFbGVtZW50LCBjdXJzb3JCdXR0b24sIC4uLnJldCB9ID1cbiAgICBhcHBTdGF0ZTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbmNvbnN0IGFyZUVxdWFsID0gKHByZXZQcm9wczogTGF5ZXJVSVByb3BzLCBuZXh0UHJvcHM6IExheWVyVUlQcm9wcykgPT4ge1xuICAvLyBzaG9ydC1jaXJjdWl0IGVhcmx5XG4gIGlmIChwcmV2UHJvcHMuY2hpbGRyZW4gIT09IG5leHRQcm9wcy5jaGlsZHJlbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjYW52YXM6IF9wcmV2Q2FudmFzLFxuICAgIC8vIG5vdCBzdGFibGUsIGJ1dCBzaG91bGRuJ3QgbWF0dGVyIGluIG91ciBjYXNlXG4gICAgb25JbnNlcnRFbGVtZW50czogX3ByZXZPbkluc2VydEVsZW1lbnRzLFxuICAgIGFwcFN0YXRlOiBwcmV2QXBwU3RhdGUsXG4gICAgLi4ucHJldlxuICB9ID0gcHJldlByb3BzO1xuICBjb25zdCB7XG4gICAgY2FudmFzOiBfbmV4dENhbnZhcyxcbiAgICBvbkluc2VydEVsZW1lbnRzOiBfbmV4dE9uSW5zZXJ0RWxlbWVudHMsXG4gICAgYXBwU3RhdGU6IG5leHRBcHBTdGF0ZSxcbiAgICAuLi5uZXh0XG4gIH0gPSBuZXh0UHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICBpc1NoYWxsb3dFcXVhbChcbiAgICAgIHN0cmlwSXJyZWxldmFudEFwcFN0YXRlUHJvcHMocHJldkFwcFN0YXRlKSxcbiAgICAgIHN0cmlwSXJyZWxldmFudEFwcFN0YXRlUHJvcHMobmV4dEFwcFN0YXRlKSxcbiAgICApICYmIGlzU2hhbGxvd0VxdWFsKHByZXYsIG5leHQpXG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFjdC5tZW1vKExheWVyVUksIGFyZUVxdWFsKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/LayerUI.tsx\n");
|
|
2683
2683
|
|
|
2684
2684
|
/***/ }),
|
|
2685
2685
|
|
|
@@ -2778,7 +2778,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2778
2778
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2779
2779
|
|
|
2780
2780
|
"use strict";
|
|
2781
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MobileMenu\": () => (/* binding */ MobileMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/scrollbars */ \"../../scene/scrollbars.ts\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Stats */ \"../../components/Stats.tsx\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../actions */ \"../../actions/index.ts\");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./HandButton */ \"../../components/HandButton.tsx\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _LayerUI__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./LayerUI */ \"../../components/LayerUI.tsx\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MobileMenu = ({ appState, elements, actionManager, setAppState, onLockToggle, onHandToolToggle, onPenModeToggle, canvas, onImageAction, renderTopRightUI, renderCustomStats, renderSidebars, device, }) => {\n const { welcomeScreenCenterTunnel, mainMenuTunnel } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_LayerUI__WEBPACK_IMPORTED_MODULE_19__.TunnelsContext);\n const renderToolbar = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__.FixedSideContainer, Object.assign({ side: \"top\", className: \"App-top-bar\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ heading: \"shapes\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Col, Object.assign({ gap: 4, align: \"center\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1, className: \"App-toolbar-container\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 1, className: \"App-toolbar App-toolbar--mobile\" }, { children: [heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } }) }))] })), renderTopRightUI && renderTopRightUI(true, appState), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"mobile-misc-tools-container\" }, { children: [!appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_13__.LibraryButton, { appState: appState, setAppState: setAppState, isMobile: true })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_14__.PenModeButton, { checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.penMode\"), isMobile: true, penDetected: appState.penDetected }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_12__.LockButton, { checked: appState.activeTool.locked, onChange: onLockToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.lock\"), isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_17__.HandButton, { checked: (0,_appState__WEBPACK_IMPORTED_MODULE_18__.isHandToolActive)(appState), onChange: () => onHandToolToggle(), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.hand\"), isMobile: true })] }))] })) }))) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_7__.HintViewer, { appState: appState, elements: elements, isMobile: true, device: device })] })));\n };\n const renderAppToolbar = () => {\n if (appState.viewModeEnabled) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(mainMenuTunnel.Out, {}) })));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(mainMenuTunnel.Out, {}), actionManager.renderAction(\"toggleEditMenu\"), actionManager.renderAction(\"undo\"), actionManager.renderAction(\"redo\"), actionManager.renderAction(appState.multiElement ? \"finalize\" : \"duplicateSelection\"), actionManager.renderAction(\"deleteSelectedElements\")] })));\n };\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderSidebars(), !appState.viewModeEnabled && renderToolbar(), !appState.openMenu && appState.showStats && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_15__.Stats, { appState: appState, setAppState: setAppState, elements: elements, onClose: () => {\n actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_16__.actionToggleStats);\n }, renderCustomStats: renderCustomStats })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-bottom-bar\", style: {\n marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 0 }, { children: [appState.openMenu === \"shape\" &&\n !appState.viewModeEnabled &&\n (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements) ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ className: \"App-mobile-menu\", heading: \"selectedShapeActions\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction }) }))) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ className: \"App-toolbar\" }, { children: [renderAppToolbar(), appState.scrolledOutside &&\n !appState.openMenu &&\n appState.openSidebar !== \"library\" && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_8__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"buttons.scrollBackToContent\") })))] }))] })) }))] }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9Nb2JpbGVNZW51LnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUEwQztBQUdkO0FBQ0E7QUFDMEI7QUFFSTtBQUN4QjtBQUNRO0FBQ087QUFDZ0I7QUFDN0I7QUFDb0M7QUFDOUI7QUFDTTtBQUNBO0FBQ2hCO0FBQ2U7QUFDTDtBQUNLO0FBQ0o7QUF3QnBDLE1BQU0sVUFBVSxHQUFHLENBQUMsRUFDekIsUUFBUSxFQUNSLFFBQVEsRUFDUixhQUFhLEVBQ2IsV0FBVyxFQUNYLFlBQVksRUFDWixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLE1BQU0sRUFDTixhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsTUFBTSxHQUNVLEVBQUUsRUFBRTtJQUNwQixNQUFNLEVBQUUseUJBQXlCLEVBQUUsY0FBYyxFQUFFLEdBQ2pELGlEQUFVLENBQUMscURBQWMsQ0FBQyxDQUFDO0lBQzdCLE1BQU0sYUFBYSxHQUFHLEdBQUcsRUFBRTtRQUN6QixPQUFPLENBQ0wsd0RBQUMsbUVBQWtCLGtCQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsU0FBUyxFQUFDLGFBQWEsaUJBQ3BELHVEQUFDLHlCQUF5QixDQUFDLEdBQUcsS0FBRyxFQUNqQyx1REFBQyw4Q0FBTyxrQkFBQyxPQUFPLEVBQUMsUUFBUSxnQkFDdEIsQ0FBQyxPQUF3QixFQUFFLEVBQUUsQ0FBQyxDQUM3Qix1REFBQyxrREFBUyxrQkFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBQyxRQUFRLGdCQUMvQix3REFBQyxrREFBUyxrQkFBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBQyx1QkFBdUIsaUJBQ2xELHdEQUFDLDJDQUFNLGtCQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFDLGlDQUFpQyxpQkFDNUQsT0FBTyxFQUNSLHVEQUFDLGtEQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUNmLHVEQUFDLG9EQUFjLElBQ2IsUUFBUSxFQUFFLFFBQVEsRUFDbEIsTUFBTSxFQUFFLE1BQU0sRUFDZCxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFDL0IsV0FBVyxFQUFFLFdBQVcsRUFDeEIsYUFBYSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO29EQUNqQyxhQUFhLENBQUM7d0RBQ1osc0JBQXNCLEVBQUUsV0FBVyxLQUFLLE9BQU87cURBQ2hELENBQUMsQ0FBQztnREFDTCxDQUFDLEdBQ0QsSUFDUSxLQUNMLEVBQ1IsZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUNyRCwrRUFBSyxTQUFTLEVBQUMsNkJBQTZCLGlCQUN6QyxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FDNUIsdURBQUMsMERBQWEsSUFDWixRQUFRLEVBQUUsUUFBUSxFQUNsQixXQUFXLEVBQUUsV0FBVyxFQUN4QixRQUFRLFNBQ1IsQ0FDSCxFQUNELHVEQUFDLDBEQUFhLElBQ1osT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLEVBQ3pCLFFBQVEsRUFBRSxlQUFlLEVBQ3pCLEtBQUssRUFBRSx3Q0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQzNCLFFBQVEsUUFDUixXQUFXLEVBQUUsUUFBUSxDQUFDLFdBQVcsR0FDakMsRUFDRix1REFBQyxvREFBVSxJQUNULE9BQU8sRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFDbkMsUUFBUSxFQUFFLFlBQVksRUFDdEIsS0FBSyxFQUFFLHdDQUFDLENBQUMsY0FBYyxDQUFDLEVBQ3hCLFFBQVEsU0FDUixFQUNGLHVEQUFDLG9EQUFVLElBQ1QsT0FBTyxFQUFFLDREQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUNuQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsRUFDbEMsS0FBSyxFQUFFLHdDQUFDLENBQUMsY0FBYyxDQUFDLEVBQ3hCLFFBQVEsU0FDUixLQUNFLEtBQ0ksSUFDRixDQUNiLElBQ08sRUFDVix1REFBQyxtREFBVSxJQUNULFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFFBQVEsRUFBRSxJQUFJLEVBQ2QsTUFBTSxFQUFFLE1BQU0sR0FDZCxLQUNpQixDQUN0QixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUU7UUFDNUIsSUFBSSxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQzVCLE9BQU8sQ0FDTCw4RUFBSyxTQUFTLEVBQUMscUJBQXFCLGdCQUNsQyx1REFBQyxjQUFjLENBQUMsR0FBRyxLQUFHLElBQ2xCLENBQ1AsQ0FBQztTQUNIO1FBRUQsT0FBTyxDQUNMLCtFQUFLLFNBQVMsRUFBQyxxQkFBcUIsaUJBQ2xDLHVEQUFDLGNBQWMsQ0FBQyxHQUFHLEtBQUcsRUFDckIsYUFBYSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUM1QyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUNsQyxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUNsQyxhQUFhLENBQUMsWUFBWSxDQUN6QixRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUMxRCxFQUNBLGFBQWEsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsS0FDakQsQ0FDUCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUNMLDhIQUNHLGNBQWMsRUFBRSxFQUNoQixDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksYUFBYSxFQUFFLEVBQzVDLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsU0FBUyxJQUFJLENBQzNDLHVEQUFDLDBDQUFLLElBQ0osUUFBUSxFQUFFLFFBQVEsRUFDbEIsV0FBVyxFQUFFLFdBQVcsRUFDeEIsUUFBUSxFQUFFLFFBQVEsRUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDWixhQUFhLENBQUMsYUFBYSxDQUFDLHdEQUFpQixDQUFDLENBQUM7Z0JBQ2pELENBQUMsRUFDRCxpQkFBaUIsRUFBRSxpQkFBaUIsR0FDcEMsQ0FDSCxFQUNELDhFQUNFLFNBQVMsRUFBQyxnQkFBZ0IsRUFDMUIsS0FBSyxFQUFFO29CQUNMLFlBQVksRUFBRSwrREFBZSxHQUFHLGdFQUFnQixHQUFHLENBQUM7b0JBQ3BELFVBQVUsRUFBRSwrREFBZSxHQUFHLGdFQUFnQixHQUFHLENBQUM7b0JBQ2xELFdBQVcsRUFBRSwrREFBZSxHQUFHLGdFQUFnQixHQUFHLENBQUM7aUJBQ3BELGdCQUVELHdEQUFDLDJDQUFNLGtCQUFDLE9BQU8sRUFBRSxDQUFDLGlCQUNmLFFBQVEsQ0FBQyxRQUFRLEtBQUssT0FBTzs0QkFDOUIsQ0FBQyxRQUFRLENBQUMsZUFBZTs0QkFDekIsa0VBQXdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM3Qyx1REFBQyw4Q0FBTyxrQkFBQyxTQUFTLEVBQUMsaUJBQWlCLEVBQUMsT0FBTyxFQUFDLHNCQUFzQixnQkFDakUsdURBQUMsMERBQW9CLElBQ25CLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxHQUN4QyxJQUNNLENBQ1gsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUNSLGtGQUFRLFNBQVMsRUFBQyxhQUFhLGlCQUM1QixnQkFBZ0IsRUFBRSxFQUNsQixRQUFRLENBQUMsZUFBZTtvQ0FDdkIsQ0FBQyxRQUFRLENBQUMsUUFBUTtvQ0FDbEIsUUFBUSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksQ0FDcEMsaUZBQ0UsU0FBUyxFQUFDLHdCQUF3QixFQUNsQyxPQUFPLEVBQUUsR0FBRyxFQUFFO3dDQUNaLFdBQVcsbUJBQ04sNkRBQXFCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFDcEQsQ0FBQztvQ0FDTCxDQUFDLGdCQUVBLHdDQUFDLENBQUMsNkJBQTZCLENBQUMsSUFDMUIsQ0FDVixLQUNJLEtBQ0YsSUFDTCxJQUNMLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL01vYmlsZU1lbnUudHN4PzA4YzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEFwcFN0YXRlLCBEZXZpY2UsIEV4Y2FsaWRyYXdQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgQWN0aW9uTWFuYWdlciB9IGZyb20gXCIuLi9hY3Rpb25zL21hbmFnZXJcIjtcbmltcG9ydCB7IHQgfSBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCIuL1N0YWNrXCI7XG5pbXBvcnQgeyBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMgfSBmcm9tIFwiLi4vZWxlbWVudFwiO1xuaW1wb3J0IHsgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50IH0gZnJvbSBcIi4uL2VsZW1lbnQvdHlwZXNcIjtcbmltcG9ydCB7IEZpeGVkU2lkZUNvbnRhaW5lciB9IGZyb20gXCIuL0ZpeGVkU2lkZUNvbnRhaW5lclwiO1xuaW1wb3J0IHsgSXNsYW5kIH0gZnJvbSBcIi4vSXNsYW5kXCI7XG5pbXBvcnQgeyBIaW50Vmlld2VyIH0gZnJvbSBcIi4vSGludFZpZXdlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlU2Nyb2xsQ2VudGVyIH0gZnJvbSBcIi4uL3NjZW5lXCI7XG5pbXBvcnQgeyBTZWxlY3RlZFNoYXBlQWN0aW9ucywgU2hhcGVzU3dpdGNoZXIgfSBmcm9tIFwiLi9BY3Rpb25zXCI7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSBcIi4vU2VjdGlvblwiO1xuaW1wb3J0IHsgU0NST0xMQkFSX1dJRFRILCBTQ1JPTExCQVJfTUFSR0lOIH0gZnJvbSBcIi4uL3NjZW5lL3Njcm9sbGJhcnNcIjtcbmltcG9ydCB7IExvY2tCdXR0b24gfSBmcm9tIFwiLi9Mb2NrQnV0dG9uXCI7XG5pbXBvcnQgeyBMaWJyYXJ5QnV0dG9uIH0gZnJvbSBcIi4vTGlicmFyeUJ1dHRvblwiO1xuaW1wb3J0IHsgUGVuTW9kZUJ1dHRvbiB9IGZyb20gXCIuL1Blbk1vZGVCdXR0b25cIjtcbmltcG9ydCB7IFN0YXRzIH0gZnJvbSBcIi4vU3RhdHNcIjtcbmltcG9ydCB7IGFjdGlvblRvZ2dsZVN0YXRzIH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IEhhbmRCdXR0b24gfSBmcm9tIFwiLi9IYW5kQnV0dG9uXCI7XG5pbXBvcnQgeyBpc0hhbmRUb29sQWN0aXZlIH0gZnJvbSBcIi4uL2FwcFN0YXRlXCI7XG5pbXBvcnQgeyBUdW5uZWxzQ29udGV4dCB9IGZyb20gXCIuL0xheWVyVUlcIjtcblxudHlwZSBNb2JpbGVNZW51UHJvcHMgPSB7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgcmVuZGVySlNPTkV4cG9ydERpYWxvZzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICByZW5kZXJJbWFnZUV4cG9ydERpYWxvZzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXTtcbiAgb25Mb2NrVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvbkhhbmRUb29sVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvblBlbk1vZGVUb2dnbGU6ICgpID0+IHZvaWQ7XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsO1xuXG4gIG9uSW1hZ2VBY3Rpb246IChkYXRhOiB7IGluc2VydE9uQ2FudmFzRGlyZWN0bHk6IGJvb2xlYW4gfSkgPT4gdm9pZDtcbiAgcmVuZGVyVG9wUmlnaHRVST86IChcbiAgICBpc01vYmlsZTogYm9vbGVhbixcbiAgICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4gICkgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuICByZW5kZXJDdXN0b21TdGF0cz86IEV4Y2FsaWRyYXdQcm9wc1tcInJlbmRlckN1c3RvbVN0YXRzXCJdO1xuICByZW5kZXJTaWRlYmFyczogKCkgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuICBkZXZpY2U6IERldmljZTtcbn07XG5cbmV4cG9ydCBjb25zdCBNb2JpbGVNZW51ID0gKHtcbiAgYXBwU3RhdGUsXG4gIGVsZW1lbnRzLFxuICBhY3Rpb25NYW5hZ2VyLFxuICBzZXRBcHBTdGF0ZSxcbiAgb25Mb2NrVG9nZ2xlLFxuICBvbkhhbmRUb29sVG9nZ2xlLFxuICBvblBlbk1vZGVUb2dnbGUsXG4gIGNhbnZhcyxcbiAgb25JbWFnZUFjdGlvbixcbiAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgcmVuZGVyQ3VzdG9tU3RhdHMsXG4gIHJlbmRlclNpZGViYXJzLFxuICBkZXZpY2UsXG59OiBNb2JpbGVNZW51UHJvcHMpID0+IHtcbiAgY29uc3QgeyB3ZWxjb21lU2NyZWVuQ2VudGVyVHVubmVsLCBtYWluTWVudVR1bm5lbCB9ID1cbiAgICB1c2VDb250ZXh0KFR1bm5lbHNDb250ZXh0KTtcbiAgY29uc3QgcmVuZGVyVG9vbGJhciA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPEZpeGVkU2lkZUNvbnRhaW5lciBzaWRlPVwidG9wXCIgY2xhc3NOYW1lPVwiQXBwLXRvcC1iYXJcIj5cbiAgICAgICAgPHdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWwuT3V0IC8+XG4gICAgICAgIDxTZWN0aW9uIGhlYWRpbmc9XCJzaGFwZXNcIj5cbiAgICAgICAgICB7KGhlYWRpbmc6IFJlYWN0LlJlYWN0Tm9kZSkgPT4gKFxuICAgICAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezR9IGFsaWduPVwiY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxTdGFjay5Sb3cgZ2FwPXsxfSBjbGFzc05hbWU9XCJBcHAtdG9vbGJhci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8SXNsYW5kIHBhZGRpbmc9ezF9IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyIEFwcC10b29sYmFyLS1tb2JpbGVcIj5cbiAgICAgICAgICAgICAgICAgIHtoZWFkaW5nfVxuICAgICAgICAgICAgICAgICAgPFN0YWNrLlJvdyBnYXA9ezF9PlxuICAgICAgICAgICAgICAgICAgICA8U2hhcGVzU3dpdGNoZXJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgY2FudmFzPXtjYW52YXN9XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aXZlVG9vbD17YXBwU3RhdGUuYWN0aXZlVG9vbH1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgb25JbWFnZUFjdGlvbj17KHsgcG9pbnRlclR5cGUgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25JbWFnZUFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydE9uQ2FudmFzRGlyZWN0bHk6IHBvaW50ZXJUeXBlICE9PSBcIm1vdXNlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgICAgICAgPC9Jc2xhbmQ+XG4gICAgICAgICAgICAgICAge3JlbmRlclRvcFJpZ2h0VUkgJiYgcmVuZGVyVG9wUmlnaHRVSSh0cnVlLCBhcHBTdGF0ZSl9XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtb2JpbGUtbWlzYy10b29scy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgICAgICAgPExpYnJhcnlCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPFBlbk1vZGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17YXBwU3RhdGUucGVuTW9kZX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uUGVuTW9kZVRvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLnBlbk1vZGVcIil9XG4gICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAgIHBlbkRldGVjdGVkPXthcHBTdGF0ZS5wZW5EZXRlY3RlZH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8TG9ja0J1dHRvblxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5hY3RpdmVUb29sLmxvY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uTG9ja1RvZ2dsZX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLmxvY2tcIil9XG4gICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPEhhbmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17aXNIYW5kVG9vbEFjdGl2ZShhcHBTdGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBvbkhhbmRUb29sVG9nZ2xlKCl9XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KFwidG9vbEJhci5oYW5kXCIpfVxuICAgICAgICAgICAgICAgICAgICBpc01vYmlsZVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9TdGFjay5Sb3c+XG4gICAgICAgICAgICA8L1N0YWNrLkNvbD5cbiAgICAgICAgICApfVxuICAgICAgICA8L1NlY3Rpb24+XG4gICAgICAgIDxIaW50Vmlld2VyXG4gICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICBpc01vYmlsZT17dHJ1ZX1cbiAgICAgICAgICBkZXZpY2U9e2RldmljZX1cbiAgICAgICAgLz5cbiAgICAgIDwvRml4ZWRTaWRlQ29udGFpbmVyPlxuICAgICk7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyQXBwVG9vbGJhciA9ICgpID0+IHtcbiAgICBpZiAoYXBwU3RhdGUudmlld01vZGVFbmFibGVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyLWNvbnRlbnRcIj5cbiAgICAgICAgICA8bWFpbk1lbnVUdW5uZWwuT3V0IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJBcHAtdG9vbGJhci1jb250ZW50XCI+XG4gICAgICAgIDxtYWluTWVudVR1bm5lbC5PdXQgLz5cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidG9nZ2xlRWRpdE1lbnVcIil9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInVuZG9cIil9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcInJlZG9cIil9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcbiAgICAgICAgICBhcHBTdGF0ZS5tdWx0aUVsZW1lbnQgPyBcImZpbmFsaXplXCIgOiBcImR1cGxpY2F0ZVNlbGVjdGlvblwiLFxuICAgICAgICApfVxuICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJkZWxldGVTZWxlY3RlZEVsZW1lbnRzXCIpfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7cmVuZGVyU2lkZWJhcnMoKX1cbiAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmIHJlbmRlclRvb2xiYXIoKX1cbiAgICAgIHshYXBwU3RhdGUub3Blbk1lbnUgJiYgYXBwU3RhdGUuc2hvd1N0YXRzICYmIChcbiAgICAgICAgPFN0YXRzXG4gICAgICAgICAgYXBwU3RhdGU9e2FwcFN0YXRlfVxuICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgICAgb25DbG9zZT17KCkgPT4ge1xuICAgICAgICAgICAgYWN0aW9uTWFuYWdlci5leGVjdXRlQWN0aW9uKGFjdGlvblRvZ2dsZVN0YXRzKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlbmRlckN1c3RvbVN0YXRzPXtyZW5kZXJDdXN0b21TdGF0c31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT1cIkFwcC1ib3R0b20tYmFyXCJcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBtYXJnaW5Cb3R0b206IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICAgIG1hcmdpbkxlZnQ6IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICAgIG1hcmdpblJpZ2h0OiBTQ1JPTExCQVJfV0lEVEggKyBTQ1JPTExCQVJfTUFSR0lOICogMixcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPElzbGFuZCBwYWRkaW5nPXswfT5cbiAgICAgICAgICB7YXBwU3RhdGUub3Blbk1lbnUgPT09IFwic2hhcGVcIiAmJlxuICAgICAgICAgICFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiZcbiAgICAgICAgICBzaG93U2VsZWN0ZWRTaGFwZUFjdGlvbnMoYXBwU3RhdGUsIGVsZW1lbnRzKSA/IChcbiAgICAgICAgICAgIDxTZWN0aW9uIGNsYXNzTmFtZT1cIkFwcC1tb2JpbGUtbWVudVwiIGhlYWRpbmc9XCJzZWxlY3RlZFNoYXBlQWN0aW9uc1wiPlxuICAgICAgICAgICAgICA8U2VsZWN0ZWRTaGFwZUFjdGlvbnNcbiAgICAgICAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1NlY3Rpb24+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJBcHAtdG9vbGJhclwiPlxuICAgICAgICAgICAge3JlbmRlckFwcFRvb2xiYXIoKX1cbiAgICAgICAgICAgIHthcHBTdGF0ZS5zY3JvbGxlZE91dHNpZGUgJiZcbiAgICAgICAgICAgICAgIWFwcFN0YXRlLm9wZW5NZW51ICYmXG4gICAgICAgICAgICAgIGFwcFN0YXRlLm9wZW5TaWRlYmFyICE9PSBcImxpYnJhcnlcIiAmJiAoXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwic2Nyb2xsLWJhY2stdG8tY29udGVudFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jYWxjdWxhdGVTY3JvbGxDZW50ZXIoZWxlbWVudHMsIGFwcFN0YXRlLCBjYW52YXMpLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJidXR0b25zLnNjcm9sbEJhY2tUb0NvbnRlbnRcIil9XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9mb290ZXI+XG4gICAgICAgIDwvSXNsYW5kPlxuICAgICAgPC9kaXY+XG4gICAgPC8+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\n");
|
|
2781
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MobileMenu\": () => (/* binding */ MobileMenu)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Stack */ \"../../components/Stack.tsx\");\n/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../element */ \"../../element/index.ts\");\n/* harmony import */ var _FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FixedSideContainer */ \"../../components/FixedSideContainer.tsx\");\n/* harmony import */ var _Island__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Island */ \"../../components/Island.tsx\");\n/* harmony import */ var _HintViewer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HintViewer */ \"../../components/HintViewer.tsx\");\n/* harmony import */ var _scene__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../scene */ \"../../scene/index.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../scene/scrollbars */ \"../../scene/scrollbars.ts\");\n/* harmony import */ var _LockButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LockButton */ \"../../components/LockButton.tsx\");\n/* harmony import */ var _LibraryButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LibraryButton */ \"../../components/LibraryButton.tsx\");\n/* harmony import */ var _PenModeButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PenModeButton */ \"../../components/PenModeButton.tsx\");\n/* harmony import */ var _Stats__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Stats */ \"../../components/Stats.tsx\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../actions */ \"../../actions/index.ts\");\n/* harmony import */ var _HandButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./HandButton */ \"../../components/HandButton.tsx\");\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../appState */ \"../../appState.ts\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./context/tunnels */ \"../../components/context/tunnels.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst MobileMenu = ({ appState, elements, actionManager, setAppState, onLockToggle, onHandToolToggle, onPenModeToggle, canvas, onImageAction, renderTopRightUI, renderCustomStats, renderSidebars, device, }) => {\n const { welcomeScreenCenterTunnel, mainMenuTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_19__.useTunnels)();\n const renderToolbar = () => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_FixedSideContainer__WEBPACK_IMPORTED_MODULE_5__.FixedSideContainer, Object.assign({ side: \"top\", className: \"App-top-bar\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ heading: \"shapes\" }, { children: (heading) => ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Col, Object.assign({ gap: 4, align: \"center\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1, className: \"App-toolbar-container\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 1, className: \"App-toolbar App-toolbar--mobile\" }, { children: [heading, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Row, Object.assign({ gap: 1 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.ShapesSwitcher, { appState: appState, canvas: canvas, activeTool: appState.activeTool, setAppState: setAppState, onImageAction: ({ pointerType }) => {\n onImageAction({\n insertOnCanvasDirectly: pointerType !== \"mouse\",\n });\n } }) }))] })), renderTopRightUI && renderTopRightUI(true, appState), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"mobile-misc-tools-container\" }, { children: [!appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LibraryButton__WEBPACK_IMPORTED_MODULE_13__.LibraryButton, { appState: appState, setAppState: setAppState, isMobile: true })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_PenModeButton__WEBPACK_IMPORTED_MODULE_14__.PenModeButton, { checked: appState.penMode, onChange: onPenModeToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.penMode\"), isMobile: true, penDetected: appState.penDetected }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_LockButton__WEBPACK_IMPORTED_MODULE_12__.LockButton, { checked: appState.activeTool.locked, onChange: onLockToggle, title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.lock\"), isMobile: true }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HandButton__WEBPACK_IMPORTED_MODULE_17__.HandButton, { checked: (0,_appState__WEBPACK_IMPORTED_MODULE_18__.isHandToolActive)(appState), onChange: () => onHandToolToggle(), title: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"toolBar.hand\"), isMobile: true })] }))] })) }))) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HintViewer__WEBPACK_IMPORTED_MODULE_7__.HintViewer, { appState: appState, elements: elements, isMobile: true, device: device })] })));\n };\n const renderAppToolbar = () => {\n if (appState.viewModeEnabled) {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(mainMenuTunnel.Out, {}) })));\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"App-toolbar-content\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(mainMenuTunnel.Out, {}), actionManager.renderAction(\"toggleEditMenu\"), actionManager.renderAction(\"undo\"), actionManager.renderAction(\"redo\"), actionManager.renderAction(appState.multiElement ? \"finalize\" : \"duplicateSelection\"), actionManager.renderAction(\"deleteSelectedElements\")] })));\n };\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [renderSidebars(), !appState.viewModeEnabled && renderToolbar(), !appState.openMenu && appState.showStats && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stats__WEBPACK_IMPORTED_MODULE_15__.Stats, { appState: appState, setAppState: setAppState, elements: elements, onClose: () => {\n actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_16__.actionToggleStats);\n }, renderCustomStats: renderCustomStats })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"App-bottom-bar\", style: {\n marginBottom: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n marginLeft: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n marginRight: _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_WIDTH + _scene_scrollbars__WEBPACK_IMPORTED_MODULE_11__.SCROLLBAR_MARGIN * 2,\n } }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Island__WEBPACK_IMPORTED_MODULE_6__.Island, Object.assign({ padding: 0 }, { children: [appState.openMenu === \"shape\" &&\n !appState.viewModeEnabled &&\n (0,_element__WEBPACK_IMPORTED_MODULE_4__.showSelectedShapeActions)(appState, elements) ? ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Section__WEBPACK_IMPORTED_MODULE_10__.Section, Object.assign({ className: \"App-mobile-menu\", heading: \"selectedShapeActions\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_9__.SelectedShapeActions, { appState: appState, elements: elements, renderAction: actionManager.renderAction }) }))) : null, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ className: \"App-toolbar\" }, { children: [renderAppToolbar(), appState.scrolledOutside &&\n !appState.openMenu &&\n appState.openSidebar !== \"library\" && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({ className: \"scroll-back-to-content\", onClick: () => {\n setAppState(Object.assign({}, (0,_scene__WEBPACK_IMPORTED_MODULE_8__.calculateScrollCenter)(elements, appState, canvas)));\n } }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_2__.t)(\"buttons.scrollBackToContent\") })))] }))] })) }))] }));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL01vYmlsZU1lbnUudHN4PzA4YzQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXBwU3RhdGUsIERldmljZSwgRXhjYWxpZHJhd1Byb3BzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBBY3Rpb25NYW5hZ2VyIH0gZnJvbSBcIi4uL2FjdGlvbnMvbWFuYWdlclwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4vU3RhY2tcIjtcbmltcG9ydCB7IHNob3dTZWxlY3RlZFNoYXBlQWN0aW9ucyB9IGZyb20gXCIuLi9lbGVtZW50XCI7XG5pbXBvcnQgeyBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnQgfSBmcm9tIFwiLi4vZWxlbWVudC90eXBlc1wiO1xuaW1wb3J0IHsgRml4ZWRTaWRlQ29udGFpbmVyIH0gZnJvbSBcIi4vRml4ZWRTaWRlQ29udGFpbmVyXCI7XG5pbXBvcnQgeyBJc2xhbmQgfSBmcm9tIFwiLi9Jc2xhbmRcIjtcbmltcG9ydCB7IEhpbnRWaWV3ZXIgfSBmcm9tIFwiLi9IaW50Vmlld2VyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVTY3JvbGxDZW50ZXIgfSBmcm9tIFwiLi4vc2NlbmVcIjtcbmltcG9ydCB7IFNlbGVjdGVkU2hhcGVBY3Rpb25zLCBTaGFwZXNTd2l0Y2hlciB9IGZyb20gXCIuL0FjdGlvbnNcIjtcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tIFwiLi9TZWN0aW9uXCI7XG5pbXBvcnQgeyBTQ1JPTExCQVJfV0lEVEgsIFNDUk9MTEJBUl9NQVJHSU4gfSBmcm9tIFwiLi4vc2NlbmUvc2Nyb2xsYmFyc1wiO1xuaW1wb3J0IHsgTG9ja0J1dHRvbiB9IGZyb20gXCIuL0xvY2tCdXR0b25cIjtcbmltcG9ydCB7IExpYnJhcnlCdXR0b24gfSBmcm9tIFwiLi9MaWJyYXJ5QnV0dG9uXCI7XG5pbXBvcnQgeyBQZW5Nb2RlQnV0dG9uIH0gZnJvbSBcIi4vUGVuTW9kZUJ1dHRvblwiO1xuaW1wb3J0IHsgU3RhdHMgfSBmcm9tIFwiLi9TdGF0c1wiO1xuaW1wb3J0IHsgYWN0aW9uVG9nZ2xlU3RhdHMgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgSGFuZEJ1dHRvbiB9IGZyb20gXCIuL0hhbmRCdXR0b25cIjtcbmltcG9ydCB7IGlzSGFuZFRvb2xBY3RpdmUgfSBmcm9tIFwiLi4vYXBwU3RhdGVcIjtcbmltcG9ydCB7IHVzZVR1bm5lbHMgfSBmcm9tIFwiLi9jb250ZXh0L3R1bm5lbHNcIjtcblxudHlwZSBNb2JpbGVNZW51UHJvcHMgPSB7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgcmVuZGVySlNPTkV4cG9ydERpYWxvZzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICByZW5kZXJJbWFnZUV4cG9ydERpYWxvZzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICBzZXRBcHBTdGF0ZTogUmVhY3QuQ29tcG9uZW50PGFueSwgQXBwU3RhdGU+W1wic2V0U3RhdGVcIl07XG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXTtcbiAgb25Mb2NrVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvbkhhbmRUb29sVG9nZ2xlOiAoKSA9PiB2b2lkO1xuICBvblBlbk1vZGVUb2dnbGU6ICgpID0+IHZvaWQ7XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsO1xuXG4gIG9uSW1hZ2VBY3Rpb246IChkYXRhOiB7IGluc2VydE9uQ2FudmFzRGlyZWN0bHk6IGJvb2xlYW4gfSkgPT4gdm9pZDtcbiAgcmVuZGVyVG9wUmlnaHRVST86IChcbiAgICBpc01vYmlsZTogYm9vbGVhbixcbiAgICBhcHBTdGF0ZTogQXBwU3RhdGUsXG4gICkgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuICByZW5kZXJDdXN0b21TdGF0cz86IEV4Y2FsaWRyYXdQcm9wc1tcInJlbmRlckN1c3RvbVN0YXRzXCJdO1xuICByZW5kZXJTaWRlYmFyczogKCkgPT4gSlNYLkVsZW1lbnQgfCBudWxsO1xuICBkZXZpY2U6IERldmljZTtcbn07XG5cbmV4cG9ydCBjb25zdCBNb2JpbGVNZW51ID0gKHtcbiAgYXBwU3RhdGUsXG4gIGVsZW1lbnRzLFxuICBhY3Rpb25NYW5hZ2VyLFxuICBzZXRBcHBTdGF0ZSxcbiAgb25Mb2NrVG9nZ2xlLFxuICBvbkhhbmRUb29sVG9nZ2xlLFxuICBvblBlbk1vZGVUb2dnbGUsXG4gIGNhbnZhcyxcbiAgb25JbWFnZUFjdGlvbixcbiAgcmVuZGVyVG9wUmlnaHRVSSxcbiAgcmVuZGVyQ3VzdG9tU3RhdHMsXG4gIHJlbmRlclNpZGViYXJzLFxuICBkZXZpY2UsXG59OiBNb2JpbGVNZW51UHJvcHMpID0+IHtcbiAgY29uc3QgeyB3ZWxjb21lU2NyZWVuQ2VudGVyVHVubmVsLCBtYWluTWVudVR1bm5lbCB9ID0gdXNlVHVubmVscygpO1xuICBjb25zdCByZW5kZXJUb29sYmFyID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICA8Rml4ZWRTaWRlQ29udGFpbmVyIHNpZGU9XCJ0b3BcIiBjbGFzc05hbWU9XCJBcHAtdG9wLWJhclwiPlxuICAgICAgICA8d2VsY29tZVNjcmVlbkNlbnRlclR1bm5lbC5PdXQgLz5cbiAgICAgICAgPFNlY3Rpb24gaGVhZGluZz1cInNoYXBlc1wiPlxuICAgICAgICAgIHsoaGVhZGluZzogUmVhY3QuUmVhY3ROb2RlKSA9PiAoXG4gICAgICAgICAgICA8U3RhY2suQ29sIGdhcD17NH0gYWxpZ249XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgPFN0YWNrLlJvdyBnYXA9ezF9IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxJc2xhbmQgcGFkZGluZz17MX0gY2xhc3NOYW1lPVwiQXBwLXRvb2xiYXIgQXBwLXRvb2xiYXItLW1vYmlsZVwiPlxuICAgICAgICAgICAgICAgICAge2hlYWRpbmd9XG4gICAgICAgICAgICAgICAgICA8U3RhY2suUm93IGdhcD17MX0+XG4gICAgICAgICAgICAgICAgICAgIDxTaGFwZXNTd2l0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBjYW52YXM9e2NhbnZhc31cbiAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sPXthcHBTdGF0ZS5hY3RpdmVUb29sfVxuICAgICAgICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlPXtzZXRBcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uPXsoeyBwb2ludGVyVHlwZSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkltYWdlQWN0aW9uKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T25DYW52YXNEaXJlY3RseTogcG9pbnRlclR5cGUgIT09IFwibW91c2VcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgICAgICA8L0lzbGFuZD5cbiAgICAgICAgICAgICAgICB7cmVuZGVyVG9wUmlnaHRVSSAmJiByZW5kZXJUb3BSaWdodFVJKHRydWUsIGFwcFN0YXRlKX1cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vYmlsZS1taXNjLXRvb2xzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgeyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8TGlicmFyeUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZT17c2V0QXBwU3RhdGV9XG4gICAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8UGVuTW9kZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXthcHBTdGF0ZS5wZW5Nb2RlfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25QZW5Nb2RlVG9nZ2xlfVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIucGVuTW9kZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgICAgcGVuRGV0ZWN0ZWQ9e2FwcFN0YXRlLnBlbkRldGVjdGVkfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxMb2NrQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FwcFN0YXRlLmFjdGl2ZVRvb2wubG9ja2VkfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25Mb2NrVG9nZ2xlfVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17dChcInRvb2xCYXIubG9ja1wiKX1cbiAgICAgICAgICAgICAgICAgICAgaXNNb2JpbGVcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SGFuZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtpc0hhbmRUb29sQWN0aXZlKGFwcFN0YXRlKX1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IG9uSGFuZFRvb2xUb2dnbGUoKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoXCJ0b29sQmFyLmhhbmRcIil9XG4gICAgICAgICAgICAgICAgICAgIGlzTW9iaWxlXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L1N0YWNrLlJvdz5cbiAgICAgICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgPEhpbnRWaWV3ZXJcbiAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgZWxlbWVudHM9e2VsZW1lbnRzfVxuICAgICAgICAgIGlzTW9iaWxlPXt0cnVlfVxuICAgICAgICAgIGRldmljZT17ZGV2aWNlfVxuICAgICAgICAvPlxuICAgICAgPC9GaXhlZFNpZGVDb250YWluZXI+XG4gICAgKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJBcHBUb29sYmFyID0gKCkgPT4ge1xuICAgIGlmIChhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiQXBwLXRvb2xiYXItY29udGVudFwiPlxuICAgICAgICAgIDxtYWluTWVudVR1bm5lbC5PdXQgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIkFwcC10b29sYmFyLWNvbnRlbnRcIj5cbiAgICAgICAgPG1haW5NZW51VHVubmVsLk91dCAvPlxuICAgICAgICB7YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb24oXCJ0b2dnbGVFZGl0TWVudVwiKX1cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwidW5kb1wiKX1cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFwicmVkb1wiKX1cbiAgICAgICAge2FjdGlvbk1hbmFnZXIucmVuZGVyQWN0aW9uKFxuICAgICAgICAgIGFwcFN0YXRlLm11bHRpRWxlbWVudCA/IFwiZmluYWxpemVcIiA6IFwiZHVwbGljYXRlU2VsZWN0aW9uXCIsXG4gICAgICAgICl9XG4gICAgICAgIHthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbihcImRlbGV0ZVNlbGVjdGVkRWxlbWVudHNcIil9XG4gICAgICA8L2Rpdj5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtyZW5kZXJTaWRlYmFycygpfVxuICAgICAgeyFhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQgJiYgcmVuZGVyVG9vbGJhcigpfVxuICAgICAgeyFhcHBTdGF0ZS5vcGVuTWVudSAmJiBhcHBTdGF0ZS5zaG93U3RhdHMgJiYgKFxuICAgICAgICA8U3RhdHNcbiAgICAgICAgICBhcHBTdGF0ZT17YXBwU3RhdGV9XG4gICAgICAgICAgc2V0QXBwU3RhdGU9e3NldEFwcFN0YXRlfVxuICAgICAgICAgIGVsZW1lbnRzPXtlbGVtZW50c31cbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgICBhY3Rpb25NYW5hZ2VyLmV4ZWN1dGVBY3Rpb24oYWN0aW9uVG9nZ2xlU3RhdHMpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgcmVuZGVyQ3VzdG9tU3RhdHM9e3JlbmRlckN1c3RvbVN0YXRzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPVwiQXBwLWJvdHRvbS1iYXJcIlxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIG1hcmdpbkJvdHRvbTogU0NST0xMQkFSX1dJRFRIICsgU0NST0xMQkFSX01BUkdJTiAqIDIsXG4gICAgICAgICAgbWFyZ2luTGVmdDogU0NST0xMQkFSX1dJRFRIICsgU0NST0xMQkFSX01BUkdJTiAqIDIsXG4gICAgICAgICAgbWFyZ2luUmlnaHQ6IFNDUk9MTEJBUl9XSURUSCArIFNDUk9MTEJBUl9NQVJHSU4gKiAyLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8SXNsYW5kIHBhZGRpbmc9ezB9PlxuICAgICAgICAgIHthcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJzaGFwZVwiICYmXG4gICAgICAgICAgIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJlxuICAgICAgICAgIHNob3dTZWxlY3RlZFNoYXBlQWN0aW9ucyhhcHBTdGF0ZSwgZWxlbWVudHMpID8gKFxuICAgICAgICAgICAgPFNlY3Rpb24gY2xhc3NOYW1lPVwiQXBwLW1vYmlsZS1tZW51XCIgaGVhZGluZz1cInNlbGVjdGVkU2hhcGVBY3Rpb25zXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RlZFNoYXBlQWN0aW9uc1xuICAgICAgICAgICAgICAgIGFwcFN0YXRlPXthcHBTdGF0ZX1cbiAgICAgICAgICAgICAgICBlbGVtZW50cz17ZWxlbWVudHN9XG4gICAgICAgICAgICAgICAgcmVuZGVyQWN0aW9uPXthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbn1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU2VjdGlvbj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Zm9vdGVyIGNsYXNzTmFtZT1cIkFwcC10b29sYmFyXCI+XG4gICAgICAgICAgICB7cmVuZGVyQXBwVG9vbGJhcigpfVxuICAgICAgICAgICAge2FwcFN0YXRlLnNjcm9sbGVkT3V0c2lkZSAmJlxuICAgICAgICAgICAgICAhYXBwU3RhdGUub3Blbk1lbnUgJiZcbiAgICAgICAgICAgICAgYXBwU3RhdGUub3BlblNpZGViYXIgIT09IFwibGlicmFyeVwiICYmIChcbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzY3JvbGwtYmFjay10by1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmNhbGN1bGF0ZVNjcm9sbENlbnRlcihlbGVtZW50cywgYXBwU3RhdGUsIGNhbnZhcyksXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dChcImJ1dHRvbnMuc2Nyb2xsQmFja1RvQ29udGVudFwiKX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Zvb3Rlcj5cbiAgICAgICAgPC9Jc2xhbmQ+XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/MobileMenu.tsx\n");
|
|
2782
2782
|
|
|
2783
2783
|
/***/ }),
|
|
2784
2784
|
|
|
@@ -2980,6 +2980,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2980
2980
|
|
|
2981
2981
|
/***/ }),
|
|
2982
2982
|
|
|
2983
|
+
/***/ "../../components/context/tunnels.ts":
|
|
2984
|
+
/*!*******************************************!*\
|
|
2985
|
+
!*** ../../components/context/tunnels.ts ***!
|
|
2986
|
+
\*******************************************/
|
|
2987
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2988
|
+
|
|
2989
|
+
"use strict";
|
|
2990
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"TunnelsContext\": () => (/* binding */ TunnelsContext),\n/* harmony export */ \"useInitializeTunnels\": () => (/* binding */ useInitializeTunnels),\n/* harmony export */ \"useTunnels\": () => (/* binding */ useTunnels)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @dwelle/tunnel-rat */ \"../../../node_modules/@dwelle/tunnel-rat/dist/index.js\");\n\n\nconst TunnelsContext = react__WEBPACK_IMPORTED_MODULE_0___default().createContext(null);\nconst useTunnels = () => react__WEBPACK_IMPORTED_MODULE_0___default().useContext(TunnelsContext);\nconst useInitializeTunnels = () => {\n return react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(() => {\n return {\n mainMenuTunnel: (0,_dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n welcomeScreenMenuHintTunnel: (0,_dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n welcomeScreenToolbarHintTunnel: (0,_dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n welcomeScreenHelpHintTunnel: (0,_dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n welcomeScreenCenterTunnel: (0,_dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n footerCenterTunnel: (0,_dwelle_tunnel_rat__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(),\n jotaiScope: Symbol(),\n };\n }, []);\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9jb250ZXh0L3R1bm5lbHMudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQTBCO0FBQ2M7QUFjakMsTUFBTSxjQUFjLEdBQUcsMERBQW1CLENBQXNCLElBQUssQ0FBQyxDQUFDO0FBRXZFLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLHVEQUFnQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRTFELE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO0lBQ3ZDLE9BQU8sb0RBQWEsQ0FBQyxHQUF3QixFQUFFO1FBQzdDLE9BQU87WUFDTCxjQUFjLEVBQUUsOERBQU0sRUFBRTtZQUN4QiwyQkFBMkIsRUFBRSw4REFBTSxFQUFFO1lBQ3JDLDhCQUE4QixFQUFFLDhEQUFNLEVBQUU7WUFDeEMsMkJBQTJCLEVBQUUsOERBQU0sRUFBRTtZQUNyQyx5QkFBeUIsRUFBRSw4REFBTSxFQUFFO1lBQ25DLGtCQUFrQixFQUFFLDhEQUFNLEVBQUU7WUFDNUIsVUFBVSxFQUFFLE1BQU0sRUFBRTtTQUNyQixDQUFDO0lBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvY29udGV4dC90dW5uZWxzLnRzPzc1ZDgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR1bm5lbCBmcm9tIFwiQGR3ZWxsZS90dW5uZWwtcmF0XCI7XG5cbnR5cGUgVHVubmVsID0gUmV0dXJuVHlwZTx0eXBlb2YgdHVubmVsPjtcblxudHlwZSBUdW5uZWxzQ29udGV4dFZhbHVlID0ge1xuICBtYWluTWVudVR1bm5lbDogVHVubmVsO1xuICB3ZWxjb21lU2NyZWVuTWVudUhpbnRUdW5uZWw6IFR1bm5lbDtcbiAgd2VsY29tZVNjcmVlblRvb2xiYXJIaW50VHVubmVsOiBUdW5uZWw7XG4gIHdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbDogVHVubmVsO1xuICB3ZWxjb21lU2NyZWVuQ2VudGVyVHVubmVsOiBUdW5uZWw7XG4gIGZvb3RlckNlbnRlclR1bm5lbDogVHVubmVsO1xuICBqb3RhaVNjb3BlOiBzeW1ib2w7XG59O1xuXG5leHBvcnQgY29uc3QgVHVubmVsc0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PFR1bm5lbHNDb250ZXh0VmFsdWU+KG51bGwhKTtcblxuZXhwb3J0IGNvbnN0IHVzZVR1bm5lbHMgPSAoKSA9PiBSZWFjdC51c2VDb250ZXh0KFR1bm5lbHNDb250ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRpYWxpemVUdW5uZWxzID0gKCkgPT4ge1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKTogVHVubmVsc0NvbnRleHRWYWx1ZSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1haW5NZW51VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIHdlbGNvbWVTY3JlZW5NZW51SGludFR1bm5lbDogdHVubmVsKCksXG4gICAgICB3ZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgd2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIHdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWw6IHR1bm5lbCgpLFxuICAgICAgZm9vdGVyQ2VudGVyVHVubmVsOiB0dW5uZWwoKSxcbiAgICAgIGpvdGFpU2NvcGU6IFN5bWJvbCgpLFxuICAgIH07XG4gIH0sIFtdKTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/context/tunnels.ts\n");
|
|
2991
|
+
|
|
2992
|
+
/***/ }),
|
|
2993
|
+
|
|
2983
2994
|
/***/ "../../components/dropdownMenu/DropdownMenu.tsx":
|
|
2984
2995
|
/*!******************************************************!*\
|
|
2985
2996
|
!*** ../../components/dropdownMenu/DropdownMenu.tsx ***!
|
|
@@ -3108,7 +3119,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3108
3119
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3109
3120
|
|
|
3110
3121
|
"use strict";
|
|
3111
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../actions */ \"../../actions/index.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _HelpButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../HelpButton */ \"../../components/HelpButton.tsx\");\n/* harmony import */ var _LayerUI__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LayerUI */ \"../../components/LayerUI.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Stack */ \"../../components/Stack.tsx\");\n\n\n\n\n\n\n\n\n\n\nconst Footer = ({ appState, actionManager, showExitZenModeBtn, renderWelcomeScreen, }) => {\n const { footerCenterTunnel, welcomeScreenHelpHintTunnel } = (0,react__WEBPACK_IMPORTED_MODULE_2__.useContext)(_LayerUI__WEBPACK_IMPORTED_MODULE_7__.TunnelsContext);\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useDevice)();\n const showFinalize = !appState.viewModeEnabled && appState.multiElement && device.isTouchScreen;\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ role: \"contentinfo\", className: \"layer-ui__wrapper__footer App-menu App-menu_bottom\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-left zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Col, Object.assign({ gap: 2 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_8__.Section, Object.assign({ heading: \"canvasActions\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_4__.ZoomActions, { renderAction: actionManager.renderAction, zoom: appState.zoom }), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_4__.UndoRedoActions, { renderAction: actionManager.renderAction, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) })), showFinalize && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_4__.FinalizeAction, { renderAction: actionManager.renderAction, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }))] })) })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(footerCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-right zen-mode-transition\", {\n \"transition-right disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { position: \"relative\" } }, { children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenHelpHintTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpButton__WEBPACK_IMPORTED_MODULE_6__.HelpButton, { onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_3__.actionShortcuts) })] })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_4__.ExitZenModeAction, { actionManager: actionManager, showExitZenModeBtn: showExitZenModeBtn })] })));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Footer);\nFooter.displayName = \"Footer\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQXdCO0FBQ1c7QUFDYTtBQVE1QjtBQUNlO0FBQ1E7QUFDQztBQUNQO0FBQ1I7QUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUNkLFFBQVEsRUFDUixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLG1CQUFtQixHQU1wQixFQUFFLEVBQUU7SUFDSCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsR0FDdkQsaURBQVUsQ0FBQyxvREFBYyxDQUFDLENBQUM7SUFFN0IsTUFBTSxNQUFNLEdBQUcsK0NBQVMsRUFBRSxDQUFDO0lBQzNCLE1BQU0sWUFBWSxHQUNoQixDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDO0lBRTdFLE9BQU8sQ0FDTCxrRkFDRSxJQUFJLEVBQUMsYUFBYSxFQUNsQixTQUFTLEVBQUMsb0RBQW9ELGlCQUU5RCw4RUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxvREFBb0QsRUFBRTtvQkFDcEUsaURBQWlELEVBQy9DLFFBQVEsQ0FBQyxjQUFjO2lCQUMxQixDQUFDLGdCQUVGLHVEQUFDLGtEQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUNmLHdEQUFDLDZDQUFPLGtCQUFDLE9BQU8sRUFBQyxlQUFlLGlCQUM5Qix1REFBQyxpREFBVyxJQUNWLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksR0FDbkIsRUFFRCxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FDNUIsdURBQUMscURBQWUsSUFDZCxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFDeEMsU0FBUyxFQUFFLGdEQUFJLENBQUMscUJBQXFCLEVBQUU7b0NBQ3JDLG1EQUFtRCxFQUNqRCxRQUFRLENBQUMsY0FBYztpQ0FDMUIsQ0FBQyxHQUNGLENBQ0gsRUFDQSxZQUFZLElBQUksQ0FDZix1REFBQyxvREFBYyxJQUNiLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxxQkFBcUIsRUFBRTtvQ0FDckMsaURBQWlELEVBQy9DLFFBQVEsQ0FBQyxjQUFjO2lDQUMxQixDQUFDLEdBQ0YsQ0FDSCxLQUNPLElBQ0EsSUFDUixFQUNOLHVEQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBRyxFQUMxQiw4RUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxxREFBcUQsRUFBRTtvQkFDckUsd0NBQXdDLEVBQUUsUUFBUSxDQUFDLGNBQWM7aUJBQ2xFLENBQUMsZ0JBRUYsK0VBQUssS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFDakMsbUJBQW1CLElBQUksdURBQUMsMkJBQTJCLENBQUMsR0FBRyxLQUFHLEVBQzNELHVEQUFDLG1EQUFVLElBQ1QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscURBQWUsQ0FBQyxHQUMzRCxLQUNFLElBQ0YsRUFDTix1REFBQyx1REFBaUIsSUFDaEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsa0JBQWtCLEVBQUUsa0JBQWtCLEdBQ3RDLEtBQ0ssQ0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUVBQWUsTUFBTSxFQUFDO0FBQ3RCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL0Zvb3Rlci50c3g/NWE0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgYWN0aW9uU2hvcnRjdXRzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgRXhpdFplbk1vZGVBY3Rpb24sXG4gIEZpbmFsaXplQWN0aW9uLFxuICBVbmRvUmVkb0FjdGlvbnMsXG4gIFpvb21BY3Rpb25zLFxufSBmcm9tIFwiLi4vQWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IHsgSGVscEJ1dHRvbiB9IGZyb20gXCIuLi9IZWxwQnV0dG9uXCI7XG5pbXBvcnQgeyBUdW5uZWxzQ29udGV4dCB9IGZyb20gXCIuLi9MYXllclVJXCI7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSBcIi4uL1NlY3Rpb25cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiLi4vU3RhY2tcIjtcblxuY29uc3QgRm9vdGVyID0gKHtcbiAgYXBwU3RhdGUsXG4gIGFjdGlvbk1hbmFnZXIsXG4gIHNob3dFeGl0WmVuTW9kZUJ0bixcbiAgcmVuZGVyV2VsY29tZVNjcmVlbixcbn06IHtcbiAgYXBwU3RhdGU6IEFwcFN0YXRlO1xuICBhY3Rpb25NYW5hZ2VyOiBBY3Rpb25NYW5hZ2VyO1xuICBzaG93RXhpdFplbk1vZGVCdG46IGJvb2xlYW47XG4gIHJlbmRlcldlbGNvbWVTY3JlZW46IGJvb2xlYW47XG59KSA9PiB7XG4gIGNvbnN0IHsgZm9vdGVyQ2VudGVyVHVubmVsLCB3ZWxjb21lU2NyZWVuSGVscEhpbnRUdW5uZWwgfSA9XG4gICAgdXNlQ29udGV4dChUdW5uZWxzQ29udGV4dCk7XG5cbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIGNvbnN0IHNob3dGaW5hbGl6ZSA9XG4gICAgIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiBhcHBTdGF0ZS5tdWx0aUVsZW1lbnQgJiYgZGV2aWNlLmlzVG91Y2hTY3JlZW47XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9vdGVyXG4gICAgICByb2xlPVwiY29udGVudGluZm9cIlxuICAgICAgY2xhc3NOYW1lPVwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3RlciBBcHAtbWVudSBBcHAtbWVudV9ib3R0b21cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0IHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0LS10cmFuc2l0aW9uLWxlZnRcIjpcbiAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezJ9PlxuICAgICAgICAgIDxTZWN0aW9uIGhlYWRpbmc9XCJjYW52YXNBY3Rpb25zXCI+XG4gICAgICAgICAgICA8Wm9vbUFjdGlvbnNcbiAgICAgICAgICAgICAgcmVuZGVyQWN0aW9uPXthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbn1cbiAgICAgICAgICAgICAgem9vbT17YXBwU3RhdGUuem9vbX1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPFVuZG9SZWRvQWN0aW9uc1xuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1ib3R0b21cIjpcbiAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3dGaW5hbGl6ZSAmJiAoXG4gICAgICAgICAgICAgIDxGaW5hbGl6ZUFjdGlvblxuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1sZWZ0XCI6XG4gICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NlY3Rpb24+XG4gICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9vdGVyQ2VudGVyVHVubmVsLk91dCAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLXJpZ2h0IHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgIFwidHJhbnNpdGlvbi1yaWdodCBkaXNhYmxlLXBvaW50ZXJFdmVudHNcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2IHN0eWxlPXt7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfX0+XG4gICAgICAgICAge3JlbmRlcldlbGNvbWVTY3JlZW4gJiYgPHdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbC5PdXQgLz59XG4gICAgICAgICAgPEhlbHBCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25TaG9ydGN1dHMpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8RXhpdFplbk1vZGVBY3Rpb25cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgc2hvd0V4aXRaZW5Nb2RlQnRuPXtzaG93RXhpdFplbk1vZGVCdG59XG4gICAgICAvPlxuICAgIDwvZm9vdGVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9vdGVyO1xuRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXJcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/footer/Footer.tsx\n");
|
|
3122
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions */ \"../../actions/index.ts\");\n/* harmony import */ var _Actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Actions */ \"../../components/Actions.tsx\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/tunnels */ \"../../components/context/tunnels.ts\");\n/* harmony import */ var _HelpButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../HelpButton */ \"../../components/HelpButton.tsx\");\n/* harmony import */ var _Section__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Section */ \"../../components/Section.tsx\");\n/* harmony import */ var _Stack__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../Stack */ \"../../components/Stack.tsx\");\n\n\n\n\n\n\n\n\n\nconst Footer = ({ appState, actionManager, showExitZenModeBtn, renderWelcomeScreen, }) => {\n const { footerCenterTunnel, welcomeScreenHelpHintTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_5__.useTunnels)();\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n const showFinalize = !appState.viewModeEnabled && appState.multiElement && device.isTouchScreen;\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"footer\", Object.assign({ role: \"contentinfo\", className: \"layer-ui__wrapper__footer App-menu App-menu_bottom\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-left zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Stack__WEBPACK_IMPORTED_MODULE_8__[\"default\"].Col, Object.assign({ gap: 2 }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_Section__WEBPACK_IMPORTED_MODULE_7__.Section, Object.assign({ heading: \"canvasActions\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.ZoomActions, { renderAction: actionManager.renderAction, zoom: appState.zoom }), !appState.viewModeEnabled && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.UndoRedoActions, { renderAction: actionManager.renderAction, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) })), showFinalize && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.FinalizeAction, { renderAction: actionManager.renderAction, className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-left\": appState.zenModeEnabled,\n }) }))] })) })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(footerCenterTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"layer-ui__wrapper__footer-right zen-mode-transition\", {\n \"transition-right disable-pointerEvents\": appState.zenModeEnabled,\n }) }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ style: { position: \"relative\" } }, { children: [renderWelcomeScreen && (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenHelpHintTunnel.Out, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_HelpButton__WEBPACK_IMPORTED_MODULE_6__.HelpButton, { onClick: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_2__.actionShortcuts) })] })) })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_Actions__WEBPACK_IMPORTED_MODULE_3__.ExitZenModeAction, { actionManager: actionManager, showExitZenModeBtn: showExitZenModeBtn })] })));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Footer);\nFooter.displayName = \"Footer\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUF3QjtBQUN3QjtBQVE1QjtBQUNlO0FBQ2E7QUFDTDtBQUNOO0FBQ1I7QUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUNkLFFBQVEsRUFDUixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLG1CQUFtQixHQU1wQixFQUFFLEVBQUU7SUFDSCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsMkJBQTJCLEVBQUUsR0FBRyw0REFBVSxFQUFFLENBQUM7SUFFekUsTUFBTSxNQUFNLEdBQUcsK0NBQVMsRUFBRSxDQUFDO0lBQzNCLE1BQU0sWUFBWSxHQUNoQixDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsYUFBYSxDQUFDO0lBRTdFLE9BQU8sQ0FDTCxrRkFDRSxJQUFJLEVBQUMsYUFBYSxFQUNsQixTQUFTLEVBQUMsb0RBQW9ELGlCQUU5RCw4RUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxvREFBb0QsRUFBRTtvQkFDcEUsaURBQWlELEVBQy9DLFFBQVEsQ0FBQyxjQUFjO2lCQUMxQixDQUFDLGdCQUVGLHVEQUFDLGtEQUFTLGtCQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUNmLHdEQUFDLDZDQUFPLGtCQUFDLE9BQU8sRUFBQyxlQUFlLGlCQUM5Qix1REFBQyxpREFBVyxJQUNWLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksR0FDbkIsRUFFRCxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksQ0FDNUIsdURBQUMscURBQWUsSUFDZCxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFDeEMsU0FBUyxFQUFFLGdEQUFJLENBQUMscUJBQXFCLEVBQUU7b0NBQ3JDLG1EQUFtRCxFQUNqRCxRQUFRLENBQUMsY0FBYztpQ0FDMUIsQ0FBQyxHQUNGLENBQ0gsRUFDQSxZQUFZLElBQUksQ0FDZix1REFBQyxvREFBYyxJQUNiLFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWSxFQUN4QyxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxxQkFBcUIsRUFBRTtvQ0FDckMsaURBQWlELEVBQy9DLFFBQVEsQ0FBQyxjQUFjO2lDQUMxQixDQUFDLEdBQ0YsQ0FDSCxLQUNPLElBQ0EsSUFDUixFQUNOLHVEQUFDLGtCQUFrQixDQUFDLEdBQUcsS0FBRyxFQUMxQiw4RUFDRSxTQUFTLEVBQUUsZ0RBQUksQ0FBQyxxREFBcUQsRUFBRTtvQkFDckUsd0NBQXdDLEVBQUUsUUFBUSxDQUFDLGNBQWM7aUJBQ2xFLENBQUMsZ0JBRUYsK0VBQUssS0FBSyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFDakMsbUJBQW1CLElBQUksdURBQUMsMkJBQTJCLENBQUMsR0FBRyxLQUFHLEVBQzNELHVEQUFDLG1EQUFVLElBQ1QsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMscURBQWUsQ0FBQyxHQUMzRCxLQUNFLElBQ0YsRUFDTix1REFBQyx1REFBaUIsSUFDaEIsYUFBYSxFQUFFLGFBQWEsRUFDNUIsa0JBQWtCLEVBQUUsa0JBQWtCLEdBQ3RDLEtBQ0ssQ0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsaUVBQWUsTUFBTSxFQUFDO0FBQ3RCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvZm9vdGVyL0Zvb3Rlci50c3g/NWE0OCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xzeCBmcm9tIFwiY2xzeFwiO1xuaW1wb3J0IHsgYWN0aW9uU2hvcnRjdXRzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IEFjdGlvbk1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9ucy9tYW5hZ2VyXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgRXhpdFplbk1vZGVBY3Rpb24sXG4gIEZpbmFsaXplQWN0aW9uLFxuICBVbmRvUmVkb0FjdGlvbnMsXG4gIFpvb21BY3Rpb25zLFxufSBmcm9tIFwiLi4vQWN0aW9uc1wiO1xuaW1wb3J0IHsgdXNlRGV2aWNlIH0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IHsgdXNlVHVubmVscyB9IGZyb20gXCIuLi9jb250ZXh0L3R1bm5lbHNcIjtcbmltcG9ydCB7IEhlbHBCdXR0b24gfSBmcm9tIFwiLi4vSGVscEJ1dHRvblwiO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gXCIuLi9TZWN0aW9uXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIi4uL1N0YWNrXCI7XG5cbmNvbnN0IEZvb3RlciA9ICh7XG4gIGFwcFN0YXRlLFxuICBhY3Rpb25NYW5hZ2VyLFxuICBzaG93RXhpdFplbk1vZGVCdG4sXG4gIHJlbmRlcldlbGNvbWVTY3JlZW4sXG59OiB7XG4gIGFwcFN0YXRlOiBBcHBTdGF0ZTtcbiAgYWN0aW9uTWFuYWdlcjogQWN0aW9uTWFuYWdlcjtcbiAgc2hvd0V4aXRaZW5Nb2RlQnRuOiBib29sZWFuO1xuICByZW5kZXJXZWxjb21lU2NyZWVuOiBib29sZWFuO1xufSkgPT4ge1xuICBjb25zdCB7IGZvb3RlckNlbnRlclR1bm5lbCwgd2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsIH0gPSB1c2VUdW5uZWxzKCk7XG5cbiAgY29uc3QgZGV2aWNlID0gdXNlRGV2aWNlKCk7XG4gIGNvbnN0IHNob3dGaW5hbGl6ZSA9XG4gICAgIWFwcFN0YXRlLnZpZXdNb2RlRW5hYmxlZCAmJiBhcHBTdGF0ZS5tdWx0aUVsZW1lbnQgJiYgZGV2aWNlLmlzVG91Y2hTY3JlZW47XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9vdGVyXG4gICAgICByb2xlPVwiY29udGVudGluZm9cIlxuICAgICAgY2xhc3NOYW1lPVwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3RlciBBcHAtbWVudSBBcHAtbWVudV9ib3R0b21cIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0IHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgIFwibGF5ZXItdWlfX3dyYXBwZXJfX2Zvb3Rlci1sZWZ0LS10cmFuc2l0aW9uLWxlZnRcIjpcbiAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrLkNvbCBnYXA9ezJ9PlxuICAgICAgICAgIDxTZWN0aW9uIGhlYWRpbmc9XCJjYW52YXNBY3Rpb25zXCI+XG4gICAgICAgICAgICA8Wm9vbUFjdGlvbnNcbiAgICAgICAgICAgICAgcmVuZGVyQWN0aW9uPXthY3Rpb25NYW5hZ2VyLnJlbmRlckFjdGlvbn1cbiAgICAgICAgICAgICAgem9vbT17YXBwU3RhdGUuem9vbX1cbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIHshYXBwU3RhdGUudmlld01vZGVFbmFibGVkICYmIChcbiAgICAgICAgICAgICAgPFVuZG9SZWRvQWN0aW9uc1xuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1ib3R0b21cIjpcbiAgICAgICAgICAgICAgICAgICAgYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge3Nob3dGaW5hbGl6ZSAmJiAoXG4gICAgICAgICAgICAgIDxGaW5hbGl6ZUFjdGlvblxuICAgICAgICAgICAgICAgIHJlbmRlckFjdGlvbj17YWN0aW9uTWFuYWdlci5yZW5kZXJBY3Rpb259XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KFwiemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgICAgICAgICBcImxheWVyLXVpX193cmFwcGVyX19mb290ZXItbGVmdC0tdHJhbnNpdGlvbi1sZWZ0XCI6XG4gICAgICAgICAgICAgICAgICAgIGFwcFN0YXRlLnplbk1vZGVFbmFibGVkLFxuICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1NlY3Rpb24+XG4gICAgICAgIDwvU3RhY2suQ29sPlxuICAgICAgPC9kaXY+XG4gICAgICA8Zm9vdGVyQ2VudGVyVHVubmVsLk91dCAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLXJpZ2h0IHplbi1tb2RlLXRyYW5zaXRpb25cIiwge1xuICAgICAgICAgIFwidHJhbnNpdGlvbi1yaWdodCBkaXNhYmxlLXBvaW50ZXJFdmVudHNcIjogYXBwU3RhdGUuemVuTW9kZUVuYWJsZWQsXG4gICAgICAgIH0pfVxuICAgICAgPlxuICAgICAgICA8ZGl2IHN0eWxlPXt7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfX0+XG4gICAgICAgICAge3JlbmRlcldlbGNvbWVTY3JlZW4gJiYgPHdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbC5PdXQgLz59XG4gICAgICAgICAgPEhlbHBCdXR0b25cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25TaG9ydGN1dHMpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8RXhpdFplbk1vZGVBY3Rpb25cbiAgICAgICAgYWN0aW9uTWFuYWdlcj17YWN0aW9uTWFuYWdlcn1cbiAgICAgICAgc2hvd0V4aXRaZW5Nb2RlQnRuPXtzaG93RXhpdFplbk1vZGVCdG59XG4gICAgICAvPlxuICAgIDwvZm9vdGVyPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9vdGVyO1xuRm9vdGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXJcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/footer/Footer.tsx\n");
|
|
3112
3123
|
|
|
3113
3124
|
/***/ }),
|
|
3114
3125
|
|
|
@@ -3119,7 +3130,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3119
3130
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3120
3131
|
|
|
3121
3132
|
"use strict";
|
|
3122
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var
|
|
3133
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clsx */ \"../../../node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../context/tunnels */ \"../../components/context/tunnels.ts\");\n/* harmony import */ var _FooterCenter_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FooterCenter.scss */ \"../../components/footer/FooterCenter.scss\");\n\n\n\n\n\nconst FooterCenter = ({ children }) => {\n const { footerCenterTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_3__.useTunnels)();\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawAppState)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(footerCenterTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: (0,clsx__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\"footer-center zen-mode-transition\", {\n \"layer-ui__wrapper__footer-left--transition-bottom\": appState.zenModeEnabled,\n }) }, { children: children })) }));\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FooterCenter);\nFooterCenter.displayName = \"FooterCenter\";\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9mb290ZXIvRm9vdGVyQ2VudGVyLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQXdCO0FBQ3VCO0FBQ0M7QUFDbkI7QUFFN0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBa0MsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxHQUFHLDREQUFVLEVBQUUsQ0FBQztJQUM1QyxNQUFNLFFBQVEsR0FBRywyREFBcUIsRUFBRSxDQUFDO0lBQ3pDLE9BQU8sQ0FDTCx1REFBQyxrQkFBa0IsQ0FBQyxFQUFFLGNBQ3BCLDhFQUNFLFNBQVMsRUFBRSxnREFBSSxDQUFDLG1DQUFtQyxFQUFFO2dCQUNuRCxtREFBbUQsRUFDakQsUUFBUSxDQUFDLGNBQWM7YUFDMUIsQ0FBQyxnQkFFRCxRQUFRLElBQ0wsR0FDZ0IsQ0FDekIsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGlFQUFlLFlBQVksRUFBQztBQUM1QixZQUFZLENBQUMsV0FBVyxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL2Zvb3Rlci9Gb290ZXJDZW50ZXIudHN4P2ZhMjAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcbmltcG9ydCB7IHVzZUV4Y2FsaWRyYXdBcHBTdGF0ZSB9IGZyb20gXCIuLi9BcHBcIjtcbmltcG9ydCB7IHVzZVR1bm5lbHMgfSBmcm9tIFwiLi4vY29udGV4dC90dW5uZWxzXCI7XG5pbXBvcnQgXCIuL0Zvb3RlckNlbnRlci5zY3NzXCI7XG5cbmNvbnN0IEZvb3RlckNlbnRlciA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICBjb25zdCB7IGZvb3RlckNlbnRlclR1bm5lbCB9ID0gdXNlVHVubmVscygpO1xuICBjb25zdCBhcHBTdGF0ZSA9IHVzZUV4Y2FsaWRyYXdBcHBTdGF0ZSgpO1xuICByZXR1cm4gKFxuICAgIDxmb290ZXJDZW50ZXJUdW5uZWwuSW4+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xzeChcImZvb3Rlci1jZW50ZXIgemVuLW1vZGUtdHJhbnNpdGlvblwiLCB7XG4gICAgICAgICAgXCJsYXllci11aV9fd3JhcHBlcl9fZm9vdGVyLWxlZnQtLXRyYW5zaXRpb24tYm90dG9tXCI6XG4gICAgICAgICAgICBhcHBTdGF0ZS56ZW5Nb2RlRW5hYmxlZCxcbiAgICAgICAgfSl9XG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9vdGVyQ2VudGVyVHVubmVsLkluPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9vdGVyQ2VudGVyO1xuRm9vdGVyQ2VudGVyLmRpc3BsYXlOYW1lID0gXCJGb290ZXJDZW50ZXJcIjtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/footer/FooterCenter.tsx\n");
|
|
3123
3134
|
|
|
3124
3135
|
/***/ }),
|
|
3125
3136
|
|
|
@@ -3130,7 +3141,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3130
3141
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3131
3142
|
|
|
3132
3143
|
"use strict";
|
|
3133
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"withInternalFallback\": () => (/* binding */ withInternalFallback)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jotai */ \"../../../node_modules/jotai/esm/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var
|
|
3144
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"withInternalFallback\": () => (/* binding */ withInternalFallback)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var jotai__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! jotai */ \"../../../node_modules/jotai/esm/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/tunnels */ \"../../components/context/tunnels.ts\");\n\n\n\n\nconst withInternalFallback = (componentName, Component) => {\n const counterAtom = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.atom)(0);\n // flag set on initial render to tell the fallback component to skip the\n // render until mount counter are initialized. This is because the counter\n // is initialized in an effect, and thus we could end rendering both\n // components at the same time until counter is initialized.\n let preferHost = false;\n const WrapperComponent = (props) => {\n const { jotaiScope } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n const [counter, setCounter] = (0,jotai__WEBPACK_IMPORTED_MODULE_3__.useAtom)(counterAtom, jotaiScope);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useLayoutEffect)(() => {\n setCounter((counter) => counter + 1);\n return () => {\n setCounter((counter) => counter - 1);\n };\n }, [setCounter]);\n if (!props.__fallback) {\n preferHost = true;\n }\n // ensure we don't render fallback and host components at the same time\n if (\n // either before the counters are initialized\n (!counter && props.__fallback && preferHost) ||\n // or after the counters are initialized, and both are rendered\n // (this is the default when host renders as well)\n (counter > 1 && props.__fallback)) {\n return null;\n }\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Component, Object.assign({}, props));\n };\n WrapperComponent.displayName = componentName;\n return WrapperComponent;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9ob2Mvd2l0aEludGVybmFsRmFsbGJhY2sudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBc0M7QUFDUztBQUNDO0FBRXpDLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsYUFBcUIsRUFDckIsU0FBc0IsRUFDdEIsRUFBRTtJQUNGLE1BQU0sV0FBVyxHQUFHLDJDQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsd0VBQXdFO0lBQ3hFLDBFQUEwRTtJQUMxRSxvRUFBb0U7SUFDcEUsNERBQTREO0lBQzVELElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixNQUFNLGdCQUFnQixHQUlsQixDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ1osTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLDREQUFVLEVBQUUsQ0FBQztRQUNwQyxNQUFNLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUFHLDhDQUFPLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRS9ELHNEQUFlLENBQUMsR0FBRyxFQUFFO1lBQ25CLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sR0FBRyxFQUFFO2dCQUNWLFVBQVUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQztRQUNKLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFDckIsVUFBVSxHQUFHLElBQUksQ0FBQztTQUNuQjtRQUVELHVFQUF1RTtRQUN2RTtRQUNFLDZDQUE2QztRQUM3QyxDQUFDLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDO1lBQzVDLCtEQUErRDtZQUMvRCxrREFBa0Q7WUFDbEQsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFDakM7WUFDQSxPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsT0FBTyx1REFBQyxTQUFTLG9CQUFLLEtBQUssRUFBSSxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUM7SUFFN0MsT0FBTyxnQkFBZ0IsQ0FBQztBQUMxQixDQUFDLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9ob2Mvd2l0aEludGVybmFsRmFsbGJhY2sudHN4P2M3N2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXRvbSwgdXNlQXRvbSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IFJlYWN0LCB7IHVzZUxheW91dEVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHVubmVscyB9IGZyb20gXCIuLi9jb250ZXh0L3R1bm5lbHNcIjtcblxuZXhwb3J0IGNvbnN0IHdpdGhJbnRlcm5hbEZhbGxiYWNrID0gPFAsPihcbiAgY29tcG9uZW50TmFtZTogc3RyaW5nLFxuICBDb21wb25lbnQ6IFJlYWN0LkZDPFA+LFxuKSA9PiB7XG4gIGNvbnN0IGNvdW50ZXJBdG9tID0gYXRvbSgwKTtcbiAgLy8gZmxhZyBzZXQgb24gaW5pdGlhbCByZW5kZXIgdG8gdGVsbCB0aGUgZmFsbGJhY2sgY29tcG9uZW50IHRvIHNraXAgdGhlXG4gIC8vIHJlbmRlciB1bnRpbCBtb3VudCBjb3VudGVyIGFyZSBpbml0aWFsaXplZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBjb3VudGVyXG4gIC8vIGlzIGluaXRpYWxpemVkIGluIGFuIGVmZmVjdCwgYW5kIHRodXMgd2UgY291bGQgZW5kIHJlbmRlcmluZyBib3RoXG4gIC8vIGNvbXBvbmVudHMgYXQgdGhlIHNhbWUgdGltZSB1bnRpbCBjb3VudGVyIGlzIGluaXRpYWxpemVkLlxuICBsZXQgcHJlZmVySG9zdCA9IGZhbHNlO1xuXG4gIGNvbnN0IFdyYXBwZXJDb21wb25lbnQ6IFJlYWN0LkZDPFxuICAgIFAgJiB7XG4gICAgICBfX2ZhbGxiYWNrPzogYm9vbGVhbjtcbiAgICB9XG4gID4gPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGpvdGFpU2NvcGUgfSA9IHVzZVR1bm5lbHMoKTtcbiAgICBjb25zdCBbY291bnRlciwgc2V0Q291bnRlcl0gPSB1c2VBdG9tKGNvdW50ZXJBdG9tLCBqb3RhaVNjb3BlKTtcblxuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICBzZXRDb3VudGVyKChjb3VudGVyKSA9PiBjb3VudGVyICsgMSk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBzZXRDb3VudGVyKChjb3VudGVyKSA9PiBjb3VudGVyIC0gMSk7XG4gICAgICB9O1xuICAgIH0sIFtzZXRDb3VudGVyXSk7XG5cbiAgICBpZiAoIXByb3BzLl9fZmFsbGJhY2spIHtcbiAgICAgIHByZWZlckhvc3QgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIGVuc3VyZSB3ZSBkb24ndCByZW5kZXIgZmFsbGJhY2sgYW5kIGhvc3QgY29tcG9uZW50cyBhdCB0aGUgc2FtZSB0aW1lXG4gICAgaWYgKFxuICAgICAgLy8gZWl0aGVyIGJlZm9yZSB0aGUgY291bnRlcnMgYXJlIGluaXRpYWxpemVkXG4gICAgICAoIWNvdW50ZXIgJiYgcHJvcHMuX19mYWxsYmFjayAmJiBwcmVmZXJIb3N0KSB8fFxuICAgICAgLy8gb3IgYWZ0ZXIgdGhlIGNvdW50ZXJzIGFyZSBpbml0aWFsaXplZCwgYW5kIGJvdGggYXJlIHJlbmRlcmVkXG4gICAgICAvLyAodGhpcyBpcyB0aGUgZGVmYXVsdCB3aGVuIGhvc3QgcmVuZGVycyBhcyB3ZWxsKVxuICAgICAgKGNvdW50ZXIgPiAxICYmIHByb3BzLl9fZmFsbGJhY2spXG4gICAgKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gPENvbXBvbmVudCB7Li4ucHJvcHN9IC8+O1xuICB9O1xuXG4gIFdyYXBwZXJDb21wb25lbnQuZGlzcGxheU5hbWUgPSBjb21wb25lbnROYW1lO1xuXG4gIHJldHVybiBXcmFwcGVyQ29tcG9uZW50O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/hoc/withInternalFallback.tsx\n");
|
|
3134
3145
|
|
|
3135
3146
|
/***/ }),
|
|
3136
3147
|
|
|
@@ -3185,7 +3196,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3185
3196
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3186
3197
|
|
|
3187
3198
|
"use strict";
|
|
3188
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenu */ \"../../components/dropdownMenu/DropdownMenu.tsx\");\n/* harmony import */ var _DefaultItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DefaultItems */ \"../../components/main-menu/DefaultItems.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hoc/withInternalFallback */ \"../../components/hoc/withInternalFallback.tsx\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ \"../../utils.ts\");\n/* harmony import */ var _LayerUI__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../LayerUI */ \"../../components/LayerUI.tsx\");\n\n\n\n\n\n\n\n\n\n\n\nconst MainMenu = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__.withInternalFallback)(\"MainMenu\", ({ children, onSelect, }) => {\n const { mainMenuTunnel } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_LayerUI__WEBPACK_IMPORTED_MODULE_10__.TunnelsContext);\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawAppState)();\n const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawSetAppState)();\n const onClickOutside = device.isMobile\n ? undefined\n : () => setAppState({ openMenu: null });\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(mainMenuTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object.assign({ open: appState.openMenu === \"canvas\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Trigger, Object.assign({ onToggle: () => {\n setAppState({\n openMenu: appState.openMenu === \"canvas\" ? null : \"canvas\",\n });\n } }, { children: _icons__WEBPACK_IMPORTED_MODULE_7__.HamburgerMenuIcon })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Content, Object.assign({ onClickOutside: onClickOutside, onSelect: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(onSelect, () => {\n setAppState({ openMenu: null });\n }) }, { children: [children, device.isMobile && appState.collaborators.size > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", Object.assign({ className: \"UserList-Wrapper\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"labels.collaborators\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_5__.UserList, { mobile: true, collaborators: appState.collaborators })] })))] }))] })) }));\n}), {\n Trigger: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Trigger,\n Item: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Item,\n ItemLink: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ItemLink,\n ItemCustom: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ItemCustom,\n Group: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Group,\n Separator: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Separator,\n DefaultItems: _DefaultItems__WEBPACK_IMPORTED_MODULE_4__,\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MainMenu);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvTWFpbk1lbnUudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTBDO0FBSzFCO0FBQ3dDO0FBRVQ7QUFFUjtBQUNSO0FBQ2M7QUFDc0I7QUFDaEI7QUFDUDtBQUU1QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUM1QiwrRUFBb0IsQ0FDbEIsVUFBVSxFQUNWLENBQUMsRUFDQyxRQUFRLEVBQ1IsUUFBUSxHQU9ULEVBQUUsRUFBRTtJQUNILE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxpREFBVSxDQUFDLHFEQUFjLENBQUMsQ0FBQztJQUN0RCxNQUFNLE1BQU0sR0FBRywrQ0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxRQUFRLEdBQUcsMkRBQXFCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLFdBQVcsR0FBRyw4REFBd0IsRUFBRSxDQUFDO0lBQy9DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRO1FBQ3BDLENBQUMsQ0FBQyxTQUFTO1FBQ1gsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLE9BQU8sQ0FDTCx1REFBQyxjQUFjLENBQUMsRUFBRSxjQUNoQix3REFBQyxrRUFBWSxrQkFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLGlCQUNoRCx1REFBQywwRUFBb0Isa0JBQ25CLFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ2IsV0FBVyxDQUFDOzRCQUNWLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO3lCQUMzRCxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxnQkFFQSxxREFBaUIsSUFDRyxFQUN2Qix3REFBQywwRUFBb0Isa0JBQ25CLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFFBQVEsRUFBRSw0REFBb0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUM1QyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLGlCQUVELFFBQVEsRUFDUixNQUFNLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUNyRCxvRkFBVSxTQUFTLEVBQUMsa0JBQWtCLGlCQUNwQyw2RUFBUyx3Q0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQVUsRUFDNUMsdURBQUMsK0NBQVEsSUFDUCxNQUFNLEVBQUUsSUFBSSxFQUNaLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYSxHQUNyQyxLQUNPLENBQ1osS0FDb0IsS0FDVixHQUNHLENBQ3JCLENBQUM7QUFDSixDQUFDLENBQ0YsRUFDRDtJQUNFLE9BQU8sRUFBRSwwRUFBb0I7SUFDN0IsSUFBSSxFQUFFLHVFQUFpQjtJQUN2QixRQUFRLEVBQUUsMkVBQXFCO0lBQy9CLFVBQVUsRUFBRSw2RUFBdUI7SUFDbkMsS0FBSyxFQUFFLHdFQUFrQjtJQUN6QixTQUFTLEVBQUUsNEVBQXNCO0lBQ2pDLFlBQVk7Q0FDYixDQUNGLENBQUM7QUFFRixpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvTWFpbk1lbnUudHN4PzQyYTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7XG4gIHVzZURldmljZSxcbiAgdXNlRXhjYWxpZHJhd0FwcFN0YXRlLFxuICB1c2VFeGNhbGlkcmF3U2V0QXBwU3RhdGUsXG59IGZyb20gXCIuLi9BcHBcIjtcbmltcG9ydCBEcm9wZG93bk1lbnUgZnJvbSBcIi4uL2Ryb3Bkb3duTWVudS9Ecm9wZG93bk1lbnVcIjtcblxuaW1wb3J0ICogYXMgRGVmYXVsdEl0ZW1zIGZyb20gXCIuL0RlZmF1bHRJdGVtc1wiO1xuXG5pbXBvcnQgeyBVc2VyTGlzdCB9IGZyb20gXCIuLi9Vc2VyTGlzdFwiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi8uLi9pMThuXCI7XG5pbXBvcnQgeyBIYW1idXJnZXJNZW51SWNvbiB9IGZyb20gXCIuLi9pY29uc1wiO1xuaW1wb3J0IHsgd2l0aEludGVybmFsRmFsbGJhY2sgfSBmcm9tIFwiLi4vaG9jL3dpdGhJbnRlcm5hbEZhbGxiYWNrXCI7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgVHVubmVsc0NvbnRleHQgfSBmcm9tIFwiLi4vTGF5ZXJVSVwiO1xuXG5jb25zdCBNYWluTWVudSA9IE9iamVjdC5hc3NpZ24oXG4gIHdpdGhJbnRlcm5hbEZhbGxiYWNrKFxuICAgIFwiTWFpbk1lbnVcIixcbiAgICAoe1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBvblNlbGVjdCxcbiAgICB9OiB7XG4gICAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICAgIC8qKlxuICAgICAgICogQ2FsbGVkIHdoZW4gYW55IG1lbnUgaXRlbSBpcyBzZWxlY3RlZCAoY2xpY2tlZCBvbikuXG4gICAgICAgKi9cbiAgICAgIG9uU2VsZWN0PzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCB7IG1haW5NZW51VHVubmVsIH0gPSB1c2VDb250ZXh0KFR1bm5lbHNDb250ZXh0KTtcbiAgICAgIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpO1xuICAgICAgY29uc3QgYXBwU3RhdGUgPSB1c2VFeGNhbGlkcmF3QXBwU3RhdGUoKTtcbiAgICAgIGNvbnN0IHNldEFwcFN0YXRlID0gdXNlRXhjYWxpZHJhd1NldEFwcFN0YXRlKCk7XG4gICAgICBjb25zdCBvbkNsaWNrT3V0c2lkZSA9IGRldmljZS5pc01vYmlsZVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6ICgpID0+IHNldEFwcFN0YXRlKHsgb3Blbk1lbnU6IG51bGwgfSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxtYWluTWVudVR1bm5lbC5Jbj5cbiAgICAgICAgICA8RHJvcGRvd25NZW51IG9wZW49e2FwcFN0YXRlLm9wZW5NZW51ID09PSBcImNhbnZhc1wifT5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnUuVHJpZ2dlclxuICAgICAgICAgICAgICBvblRvZ2dsZT17KCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIG9wZW5NZW51OiBhcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJjYW52YXNcIiA/IG51bGwgOiBcImNhbnZhc1wiLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7SGFtYnVyZ2VyTWVudUljb259XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudS5UcmlnZ2VyPlxuICAgICAgICAgICAgPERyb3Bkb3duTWVudS5Db250ZW50XG4gICAgICAgICAgICAgIG9uQ2xpY2tPdXRzaWRlPXtvbkNsaWNrT3V0c2lkZX1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e2NvbXBvc2VFdmVudEhhbmRsZXJzKG9uU2VsZWN0LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2V0QXBwU3RhdGUoeyBvcGVuTWVudTogbnVsbCB9KTtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICAgICAge2RldmljZS5pc01vYmlsZSAmJiBhcHBTdGF0ZS5jb2xsYWJvcmF0b3JzLnNpemUgPiAwICYmIChcbiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3NOYW1lPVwiVXNlckxpc3QtV3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgPGxlZ2VuZD57dChcImxhYmVscy5jb2xsYWJvcmF0b3JzXCIpfTwvbGVnZW5kPlxuICAgICAgICAgICAgICAgICAgPFVzZXJMaXN0XG4gICAgICAgICAgICAgICAgICAgIG1vYmlsZT17dHJ1ZX1cbiAgICAgICAgICAgICAgICAgICAgY29sbGFib3JhdG9ycz17YXBwU3RhdGUuY29sbGFib3JhdG9yc31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9maWVsZHNldD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25NZW51LkNvbnRlbnQ+XG4gICAgICAgICAgPC9Ecm9wZG93bk1lbnU+XG4gICAgICAgIDwvbWFpbk1lbnVUdW5uZWwuSW4+XG4gICAgICApO1xuICAgIH0sXG4gICksXG4gIHtcbiAgICBUcmlnZ2VyOiBEcm9wZG93bk1lbnUuVHJpZ2dlcixcbiAgICBJdGVtOiBEcm9wZG93bk1lbnUuSXRlbSxcbiAgICBJdGVtTGluazogRHJvcGRvd25NZW51Lkl0ZW1MaW5rLFxuICAgIEl0ZW1DdXN0b206IERyb3Bkb3duTWVudS5JdGVtQ3VzdG9tLFxuICAgIEdyb3VwOiBEcm9wZG93bk1lbnUuR3JvdXAsXG4gICAgU2VwYXJhdG9yOiBEcm9wZG93bk1lbnUuU2VwYXJhdG9yLFxuICAgIERlZmF1bHRJdGVtcyxcbiAgfSxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IE1haW5NZW51O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/main-menu/MainMenu.tsx\n");
|
|
3199
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dropdownMenu/DropdownMenu */ \"../../components/dropdownMenu/DropdownMenu.tsx\");\n/* harmony import */ var _DefaultItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DefaultItems */ \"../../components/main-menu/DefaultItems.tsx\");\n/* harmony import */ var _UserList__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../UserList */ \"../../components/UserList.tsx\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../hoc/withInternalFallback */ \"../../components/hoc/withInternalFallback.tsx\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../utils */ \"../../utils.ts\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../context/tunnels */ \"../../components/context/tunnels.ts\");\n\n\n\n\n\n\n\n\n\n\n\nconst MainMenu = Object.assign((0,_hoc_withInternalFallback__WEBPACK_IMPORTED_MODULE_8__.withInternalFallback)(\"MainMenu\", ({ children, onSelect, }) => {\n const { mainMenuTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_10__.useTunnels)();\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useDevice)();\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawAppState)();\n const setAppState = (0,_App__WEBPACK_IMPORTED_MODULE_2__.useExcalidrawSetAppState)();\n const onClickOutside = device.isMobile\n ? undefined\n : () => setAppState({ openMenu: null });\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(mainMenuTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"], Object.assign({ open: appState.openMenu === \"canvas\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Trigger, Object.assign({ onToggle: () => {\n setAppState({\n openMenu: appState.openMenu === \"canvas\" ? null : \"canvas\",\n });\n } }, { children: _icons__WEBPACK_IMPORTED_MODULE_7__.HamburgerMenuIcon })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Content, Object.assign({ onClickOutside: onClickOutside, onSelect: (0,_utils__WEBPACK_IMPORTED_MODULE_9__.composeEventHandlers)(onSelect, () => {\n setAppState({ openMenu: null });\n }) }, { children: [children, device.isMobile && appState.collaborators.size > 0 && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"fieldset\", Object.assign({ className: \"UserList-Wrapper\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"legend\", { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_6__.t)(\"labels.collaborators\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_UserList__WEBPACK_IMPORTED_MODULE_5__.UserList, { mobile: true, collaborators: appState.collaborators })] })))] }))] })) }));\n}), {\n Trigger: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Trigger,\n Item: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Item,\n ItemLink: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ItemLink,\n ItemCustom: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].ItemCustom,\n Group: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Group,\n Separator: _dropdownMenu_DropdownMenu__WEBPACK_IMPORTED_MODULE_3__[\"default\"].Separator,\n DefaultItems: _DefaultItems__WEBPACK_IMPORTED_MODULE_4__,\n});\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MainMenu);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvTWFpbk1lbnUudHN4LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQTBCO0FBS1Y7QUFDd0M7QUFFVDtBQUVSO0FBQ1I7QUFDYztBQUNzQjtBQUNoQjtBQUNIO0FBRWhELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQzVCLCtFQUFvQixDQUNsQixVQUFVLEVBQ1YsQ0FBQyxFQUNDLFFBQVEsRUFDUixRQUFRLEdBT1QsRUFBRSxFQUFFO0lBQ0gsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLDZEQUFVLEVBQUUsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRywrQ0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxRQUFRLEdBQUcsMkRBQXFCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLFdBQVcsR0FBRyw4REFBd0IsRUFBRSxDQUFDO0lBQy9DLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxRQUFRO1FBQ3BDLENBQUMsQ0FBQyxTQUFTO1FBQ1gsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTFDLE9BQU8sQ0FDTCx1REFBQyxjQUFjLENBQUMsRUFBRSxjQUNoQix3REFBQyxrRUFBWSxrQkFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsS0FBSyxRQUFRLGlCQUNoRCx1REFBQywwRUFBb0Isa0JBQ25CLFFBQVEsRUFBRSxHQUFHLEVBQUU7d0JBQ2IsV0FBVyxDQUFDOzRCQUNWLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRO3lCQUMzRCxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxnQkFFQSxxREFBaUIsSUFDRyxFQUN2Qix3REFBQywwRUFBb0Isa0JBQ25CLGNBQWMsRUFBRSxjQUFjLEVBQzlCLFFBQVEsRUFBRSw0REFBb0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO3dCQUM1QyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDbEMsQ0FBQyxDQUFDLGlCQUVELFFBQVEsRUFDUixNQUFNLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUNyRCxvRkFBVSxTQUFTLEVBQUMsa0JBQWtCLGlCQUNwQyw2RUFBUyx3Q0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQVUsRUFDNUMsdURBQUMsK0NBQVEsSUFDUCxNQUFNLEVBQUUsSUFBSSxFQUNaLGFBQWEsRUFBRSxRQUFRLENBQUMsYUFBYSxHQUNyQyxLQUNPLENBQ1osS0FDb0IsS0FDVixHQUNHLENBQ3JCLENBQUM7QUFDSixDQUFDLENBQ0YsRUFDRDtJQUNFLE9BQU8sRUFBRSwwRUFBb0I7SUFDN0IsSUFBSSxFQUFFLHVFQUFpQjtJQUN2QixRQUFRLEVBQUUsMkVBQXFCO0lBQy9CLFVBQVUsRUFBRSw2RUFBdUI7SUFDbkMsS0FBSyxFQUFFLHdFQUFrQjtJQUN6QixTQUFTLEVBQUUsNEVBQXNCO0lBQ2pDLFlBQVk7Q0FDYixDQUNGLENBQUM7QUFFRixpRUFBZSxRQUFRLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vY29tcG9uZW50cy9tYWluLW1lbnUvTWFpbk1lbnUudHN4PzQyYTAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgdXNlRGV2aWNlLFxuICB1c2VFeGNhbGlkcmF3QXBwU3RhdGUsXG4gIHVzZUV4Y2FsaWRyYXdTZXRBcHBTdGF0ZSxcbn0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IERyb3Bkb3duTWVudSBmcm9tIFwiLi4vZHJvcGRvd25NZW51L0Ryb3Bkb3duTWVudVwiO1xuXG5pbXBvcnQgKiBhcyBEZWZhdWx0SXRlbXMgZnJvbSBcIi4vRGVmYXVsdEl0ZW1zXCI7XG5cbmltcG9ydCB7IFVzZXJMaXN0IH0gZnJvbSBcIi4uL1VzZXJMaXN0XCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmltcG9ydCB7IEhhbWJ1cmdlck1lbnVJY29uIH0gZnJvbSBcIi4uL2ljb25zXCI7XG5pbXBvcnQgeyB3aXRoSW50ZXJuYWxGYWxsYmFjayB9IGZyb20gXCIuLi9ob2Mvd2l0aEludGVybmFsRmFsbGJhY2tcIjtcbmltcG9ydCB7IGNvbXBvc2VFdmVudEhhbmRsZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB1c2VUdW5uZWxzIH0gZnJvbSBcIi4uL2NvbnRleHQvdHVubmVsc1wiO1xuXG5jb25zdCBNYWluTWVudSA9IE9iamVjdC5hc3NpZ24oXG4gIHdpdGhJbnRlcm5hbEZhbGxiYWNrKFxuICAgIFwiTWFpbk1lbnVcIixcbiAgICAoe1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBvblNlbGVjdCxcbiAgICB9OiB7XG4gICAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICAgIC8qKlxuICAgICAgICogQ2FsbGVkIHdoZW4gYW55IG1lbnUgaXRlbSBpcyBzZWxlY3RlZCAoY2xpY2tlZCBvbikuXG4gICAgICAgKi9cbiAgICAgIG9uU2VsZWN0PzogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgICB9KSA9PiB7XG4gICAgICBjb25zdCB7IG1haW5NZW51VHVubmVsIH0gPSB1c2VUdW5uZWxzKCk7XG4gICAgICBjb25zdCBkZXZpY2UgPSB1c2VEZXZpY2UoKTtcbiAgICAgIGNvbnN0IGFwcFN0YXRlID0gdXNlRXhjYWxpZHJhd0FwcFN0YXRlKCk7XG4gICAgICBjb25zdCBzZXRBcHBTdGF0ZSA9IHVzZUV4Y2FsaWRyYXdTZXRBcHBTdGF0ZSgpO1xuICAgICAgY29uc3Qgb25DbGlja091dHNpZGUgPSBkZXZpY2UuaXNNb2JpbGVcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiAoKSA9PiBzZXRBcHBTdGF0ZSh7IG9wZW5NZW51OiBudWxsIH0pO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8bWFpbk1lbnVUdW5uZWwuSW4+XG4gICAgICAgICAgPERyb3Bkb3duTWVudSBvcGVuPXthcHBTdGF0ZS5vcGVuTWVudSA9PT0gXCJjYW52YXNcIn0+XG4gICAgICAgICAgICA8RHJvcGRvd25NZW51LlRyaWdnZXJcbiAgICAgICAgICAgICAgb25Ub2dnbGU9eygpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRBcHBTdGF0ZSh7XG4gICAgICAgICAgICAgICAgICBvcGVuTWVudTogYXBwU3RhdGUub3Blbk1lbnUgPT09IFwiY2FudmFzXCIgPyBudWxsIDogXCJjYW52YXNcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge0hhbWJ1cmdlck1lbnVJY29ufVxuICAgICAgICAgICAgPC9Ecm9wZG93bk1lbnUuVHJpZ2dlcj5cbiAgICAgICAgICAgIDxEcm9wZG93bk1lbnUuQ29udGVudFxuICAgICAgICAgICAgICBvbkNsaWNrT3V0c2lkZT17b25DbGlja091dHNpZGV9XG4gICAgICAgICAgICAgIG9uU2VsZWN0PXtjb21wb3NlRXZlbnRIYW5kbGVycyhvblNlbGVjdCwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNldEFwcFN0YXRlKHsgb3Blbk1lbnU6IG51bGwgfSk7XG4gICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgICAgICAgIHtkZXZpY2UuaXNNb2JpbGUgJiYgYXBwU3RhdGUuY29sbGFib3JhdG9ycy5zaXplID4gMCAmJiAoXG4gICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzTmFtZT1cIlVzZXJMaXN0LVdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+e3QoXCJsYWJlbHMuY29sbGFib3JhdG9yc1wiKX08L2xlZ2VuZD5cbiAgICAgICAgICAgICAgICAgIDxVc2VyTGlzdFxuICAgICAgICAgICAgICAgICAgICBtb2JpbGU9e3RydWV9XG4gICAgICAgICAgICAgICAgICAgIGNvbGxhYm9yYXRvcnM9e2FwcFN0YXRlLmNvbGxhYm9yYXRvcnN9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0Ryb3Bkb3duTWVudS5Db250ZW50PlxuICAgICAgICAgIDwvRHJvcGRvd25NZW51PlxuICAgICAgICA8L21haW5NZW51VHVubmVsLkluPlxuICAgICAgKTtcbiAgICB9LFxuICApLFxuICB7XG4gICAgVHJpZ2dlcjogRHJvcGRvd25NZW51LlRyaWdnZXIsXG4gICAgSXRlbTogRHJvcGRvd25NZW51Lkl0ZW0sXG4gICAgSXRlbUxpbms6IERyb3Bkb3duTWVudS5JdGVtTGluayxcbiAgICBJdGVtQ3VzdG9tOiBEcm9wZG93bk1lbnUuSXRlbUN1c3RvbSxcbiAgICBHcm91cDogRHJvcGRvd25NZW51Lkdyb3VwLFxuICAgIFNlcGFyYXRvcjogRHJvcGRvd25NZW51LlNlcGFyYXRvcixcbiAgICBEZWZhdWx0SXRlbXMsXG4gIH0sXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBNYWluTWVudTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../components/main-menu/MainMenu.tsx\n");
|
|
3189
3200
|
|
|
3190
3201
|
/***/ }),
|
|
3191
3202
|
|
|
@@ -3196,7 +3207,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3196
3207
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3197
3208
|
|
|
3198
3209
|
"use strict";
|
|
3199
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Center\": () => (/* binding */ Center)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions */ \"../../actions/index.ts\");\n/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../actions/shortcuts */ \"../../actions/shortcuts.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ \"../../components/icons.tsx\");\n/* harmony import */ var _LayerUI__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../LayerUI */ \"../../components/LayerUI.tsx\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\n\nconst WelcomeScreenMenuItemContent = ({ icon, shortcut, children, }) => {\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useDevice)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu-item__icon\" }, { children: icon })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu-item__text\" }, { children: children })), shortcut && !device.isMobile && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu-item__shortcut\" }, { children: shortcut })))] }));\n};\nWelcomeScreenMenuItemContent.displayName = \"WelcomeScreenMenuItemContent\";\nconst WelcomeScreenMenuItem = (_a) => {\n var { onSelect, children, icon, shortcut, className = \"\" } = _a, props = __rest(_a, [\"onSelect\", \"children\", \"icon\", \"shortcut\", \"className\"]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({}, props, { type: \"button\", className: `welcome-screen-menu-item ${className}`, onClick: onSelect }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({ icon: icon, shortcut: shortcut }, { children: children })) })));\n};\nWelcomeScreenMenuItem.displayName = \"WelcomeScreenMenuItem\";\nconst WelcomeScreenMenuItemLink = (_a) => {\n var { children, href, icon, shortcut, className = \"\" } = _a, props = __rest(_a, [\"children\", \"href\", \"icon\", \"shortcut\", \"className\"]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({}, props, { className: `welcome-screen-menu-item ${className}`, href: href, target: \"_blank\", rel: \"noreferrer\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({ icon: icon, shortcut: shortcut }, { children: children })) })));\n};\nWelcomeScreenMenuItemLink.displayName = \"WelcomeScreenMenuItemLink\";\nconst Center = ({ children }) => {\n const { welcomeScreenCenterTunnel } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_LayerUI__WEBPACK_IMPORTED_MODULE_7__.TunnelsContext);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenCenterTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-center\" }, { children: children || ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Logo, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Heading, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"welcomeScreen.defaults.center_heading\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(Menu, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemLoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemHelp, {})] })] })) })) }));\n};\nCenter.displayName = \"Center\";\nconst Logo = ({ children }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-center__logo virgil welcome-screen-decor\" }, { children: children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [_icons__WEBPACK_IMPORTED_MODULE_6__.ExcalLogo, \" Excalidraw\"] }) })));\n};\nLogo.displayName = \"Logo\";\nconst Heading = ({ children }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-center__heading welcome-screen-decor virgil\" }, { children: children })));\n};\nHeading.displayName = \"Heading\";\nconst Menu = ({ children }) => {\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu\" }, { children: children }));\n};\nMenu.displayName = \"Menu\";\nconst MenuItemHelp = () => {\n const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawActionManager)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({ onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_2__.actionShortcuts), shortcut: \"?\", icon: _icons__WEBPACK_IMPORTED_MODULE_6__.HelpIcon }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"helpDialog.title\") })));\n};\nMenuItemHelp.displayName = \"MenuItemHelp\";\nconst MenuItemLoadScene = () => {\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawAppState)();\n const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawActionManager)();\n if (appState.viewModeEnabled) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({ onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_2__.actionLoadScene), shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_3__.getShortcutFromShortcutName)(\"loadScene\"), icon: _icons__WEBPACK_IMPORTED_MODULE_6__.LoadIcon }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"buttons.load\") })));\n};\nMenuItemLoadScene.displayName = \"MenuItemLoadScene\";\nconst MenuItemLiveCollaborationTrigger = ({ onSelect, }) => {\n // FIXME when we tie t() to lang state\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_5__.useExcalidrawAppState)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({ shortcut: null, onSelect: onSelect, icon: _icons__WEBPACK_IMPORTED_MODULE_6__.usersIcon }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_4__.t)(\"labels.liveCollaboration\") })));\n};\nMenuItemLiveCollaborationTrigger.displayName =\n \"MenuItemLiveCollaborationTrigger\";\n// -----------------------------------------------------------------------------\nCenter.Logo = Logo;\nCenter.Heading = Heading;\nCenter.Menu = Menu;\nCenter.MenuItem = WelcomeScreenMenuItem;\nCenter.MenuItemLink = WelcomeScreenMenuItemLink;\nCenter.MenuItemHelp = MenuItemHelp;\nCenter.MenuItemLoadScene = MenuItemLoadScene;\nCenter.MenuItemLiveCollaborationTrigger = MenuItemLiveCollaborationTrigger;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLkNlbnRlci50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFtQztBQUM4QjtBQUNLO0FBQ3ZDO0FBS2Y7QUFDb0Q7QUFDeEI7QUFFNUMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEVBQ3BDLElBQUksRUFDSixRQUFRLEVBQ1IsUUFBUSxHQUtULEVBQUUsRUFBRTtJQUNILE1BQU0sTUFBTSxHQUFHLCtDQUFTLEVBQUUsQ0FBQztJQUMzQixPQUFPLENBQ0wsOEhBQ0UsOEVBQUssU0FBUyxFQUFDLGdDQUFnQyxnQkFBRSxJQUFJLElBQU8sRUFDNUQsOEVBQUssU0FBUyxFQUFDLGdDQUFnQyxnQkFBRSxRQUFRLElBQU8sRUFDL0QsUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUMvQiw4RUFBSyxTQUFTLEVBQUMsb0NBQW9DLGdCQUFFLFFBQVEsSUFBTyxDQUNyRSxJQUNBLENBQ0osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUNGLDRCQUE0QixDQUFDLFdBQVcsR0FBRyw4QkFBOEIsQ0FBQztBQUUxRSxNQUFNLHFCQUFxQixHQUFHLENBQUMsRUFZa0IsRUFBRSxFQUFFO1FBWnRCLEVBQzdCLFFBQVEsRUFDUixRQUFRLEVBQ1IsSUFBSSxFQUNKLFFBQVEsRUFDUixTQUFTLEdBQUcsRUFBRSxPQU9pQyxFQU41QyxLQUFLLGNBTnFCLHlEQU85QixDQURTO0lBT1IsT0FBTyxDQUNMLG1GQUNNLEtBQUssSUFDVCxJQUFJLEVBQUMsUUFBUSxFQUNiLFNBQVMsRUFBRSw0QkFBNEIsU0FBUyxFQUFFLEVBQ2xELE9BQU8sRUFBRSxRQUFRLGdCQUVqQix1REFBQyw0QkFBNEIsa0JBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxnQkFDekQsUUFBUSxJQUNvQixJQUN4QixDQUNWLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixxQkFB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R0FBRyxnQ0FBZ0MsQ0FBQztBQUV6RCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi9jb21wb25lbnRzL3dlbGNvbWUtc2NyZWVuL1dlbGNvbWVTY3JlZW4uQ2VudGVyLnRzeD9kN2M4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGFjdGlvbkxvYWRTY2VuZSwgYWN0aW9uU2hvcnRjdXRzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldFNob3J0Y3V0RnJvbVNob3J0Y3V0TmFtZSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zL3Nob3J0Y3V0c1wiO1xuaW1wb3J0IHsgdCB9IGZyb20gXCIuLi8uLi9pMThuXCI7XG5pbXBvcnQge1xuICB1c2VEZXZpY2UsXG4gIHVzZUV4Y2FsaWRyYXdBY3Rpb25NYW5hZ2VyLFxuICB1c2VFeGNhbGlkcmF3QXBwU3RhdGUsXG59IGZyb20gXCIuLi9BcHBcIjtcbmltcG9ydCB7IEV4Y2FsTG9nbywgSGVscEljb24sIExvYWRJY29uLCB1c2Vyc0ljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcbmltcG9ydCB7IFR1bm5lbHNDb250ZXh0IH0gZnJvbSBcIi4uL0xheWVyVUlcIjtcblxuY29uc3QgV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudCA9ICh7XG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjaGlsZHJlbixcbn06IHtcbiAgaWNvbj86IEpTWC5FbGVtZW50O1xuICBzaG9ydGN1dD86IHN0cmluZyB8IG51bGw7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59KSA9PiB7XG4gIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIndlbGNvbWUtc2NyZWVuLW1lbnUtaXRlbV9faWNvblwiPntpY29ufTwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1tZW51LWl0ZW1fX3RleHRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgICB7c2hvcnRjdXQgJiYgIWRldmljZS5pc01vYmlsZSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2VsY29tZS1zY3JlZW4tbWVudS1pdGVtX19zaG9ydGN1dFwiPntzaG9ydGN1dH08L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudC5kaXNwbGF5TmFtZSA9IFwiV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudFwiO1xuXG5jb25zdCBXZWxjb21lU2NyZWVuTWVudUl0ZW0gPSAoe1xuICBvblNlbGVjdCxcbiAgY2hpbGRyZW4sXG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICAuLi5wcm9wc1xufToge1xuICBvblNlbGVjdDogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgaWNvbj86IEpTWC5FbGVtZW50O1xuICBzaG9ydGN1dD86IHN0cmluZyB8IG51bGw7XG59ICYgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgey4uLnByb3BzfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2B3ZWxjb21lLXNjcmVlbi1tZW51LWl0ZW0gJHtjbGFzc05hbWV9YH1cbiAgICAgIG9uQ2xpY2s9e29uU2VsZWN0fVxuICAgID5cbiAgICAgIDxXZWxjb21lU2NyZWVuTWVudUl0ZW1Db250ZW50IGljb249e2ljb259IHNob3J0Y3V0PXtzaG9ydGN1dH0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudD5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5XZWxjb21lU2NyZWVuTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBcIldlbGNvbWVTY3JlZW5NZW51SXRlbVwiO1xuXG5jb25zdCBXZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rID0gKHtcbiAgY2hpbGRyZW4sXG4gIGhyZWYsXG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICAuLi5wcm9wc1xufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBocmVmOiBzdHJpbmc7XG4gIGljb24/OiBKU1guRWxlbWVudDtcbiAgc2hvcnRjdXQ/OiBzdHJpbmcgfCBudWxsO1xufSAmIFJlYWN0LkFuY2hvckhUTUxBdHRyaWJ1dGVzPEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2B3ZWxjb21lLXNjcmVlbi1tZW51LWl0ZW0gJHtjbGFzc05hbWV9YH1cbiAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAgPFdlbGNvbWVTY3JlZW5NZW51SXRlbUNvbnRlbnQgaWNvbj17aWNvbn0gc2hvcnRjdXQ9e3Nob3J0Y3V0fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9XZWxjb21lU2NyZWVuTWVudUl0ZW1Db250ZW50PlxuICAgIDwvYT5cbiAgKTtcbn07XG5XZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rLmRpc3BsYXlOYW1lID0gXCJXZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rXCI7XG5cbmNvbnN0IENlbnRlciA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICBjb25zdCB7IHdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWwgfSA9IHVzZUNvbnRleHQoVHVubmVsc0NvbnRleHQpO1xuICByZXR1cm4gKFxuICAgIDx3ZWxjb21lU2NyZWVuQ2VudGVyVHVubmVsLkluPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1jZW50ZXJcIj5cbiAgICAgICAge2NoaWxkcmVuIHx8IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPExvZ28gLz5cbiAgICAgICAgICAgIDxIZWFkaW5nPnt0KFwid2VsY29tZVNjcmVlbi5kZWZhdWx0cy5jZW50ZXJfaGVhZGluZ1wiKX08L0hlYWRpbmc+XG4gICAgICAgICAgICA8TWVudT5cbiAgICAgICAgICAgICAgPE1lbnVJdGVtTG9hZFNjZW5lIC8+XG4gICAgICAgICAgICAgIDxNZW51SXRlbUhlbHAgLz5cbiAgICAgICAgICAgIDwvTWVudT5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvd2VsY29tZVNjcmVlbkNlbnRlclR1bm5lbC5Jbj5cbiAgKTtcbn07XG5DZW50ZXIuZGlzcGxheU5hbWUgPSBcIkNlbnRlclwiO1xuXG5jb25zdCBMb2dvID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1jZW50ZXJfX2xvZ28gdmlyZ2lsIHdlbGNvbWUtc2NyZWVuLWRlY29yXCI+XG4gICAgICB7Y2hpbGRyZW4gfHwgPD57RXhjYWxMb2dvfSBFeGNhbGlkcmF3PC8+fVxuICAgIDwvZGl2PlxuICApO1xufTtcbkxvZ28uZGlzcGxheU5hbWUgPSBcIkxvZ29cIjtcblxuY29uc3QgSGVhZGluZyA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1jZW50ZXJfX2hlYWRpbmcgd2VsY29tZS1zY3JlZW4tZGVjb3IgdmlyZ2lsXCI+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9kaXY+XG4gICk7XG59O1xuSGVhZGluZy5kaXNwbGF5TmFtZSA9IFwiSGVhZGluZ1wiO1xuXG5jb25zdCBNZW51ID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiB7XG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT1cIndlbGNvbWUtc2NyZWVuLW1lbnVcIj57Y2hpbGRyZW59PC9kaXY+O1xufTtcbk1lbnUuZGlzcGxheU5hbWUgPSBcIk1lbnVcIjtcblxuY29uc3QgTWVudUl0ZW1IZWxwID0gKCkgPT4ge1xuICBjb25zdCBhY3Rpb25NYW5hZ2VyID0gdXNlRXhjYWxpZHJhd0FjdGlvbk1hbmFnZXIoKTtcblxuICByZXR1cm4gKFxuICAgIDxXZWxjb21lU2NyZWVuTWVudUl0ZW1cbiAgICAgIG9uU2VsZWN0PXsoKSA9PiBhY3Rpb25NYW5hZ2VyLmV4ZWN1dGVBY3Rpb24oYWN0aW9uU2hvcnRjdXRzKX1cbiAgICAgIHNob3J0Y3V0PVwiP1wiXG4gICAgICBpY29uPXtIZWxwSWNvbn1cbiAgICA+XG4gICAgICB7dChcImhlbHBEaWFsb2cudGl0bGVcIil9XG4gICAgPC9XZWxjb21lU2NyZWVuTWVudUl0ZW0+XG4gICk7XG59O1xuTWVudUl0ZW1IZWxwLmRpc3BsYXlOYW1lID0gXCJNZW51SXRlbUhlbHBcIjtcblxuY29uc3QgTWVudUl0ZW1Mb2FkU2NlbmUgPSAoKSA9PiB7XG4gIGNvbnN0IGFwcFN0YXRlID0gdXNlRXhjYWxpZHJhd0FwcFN0YXRlKCk7XG4gIGNvbnN0IGFjdGlvbk1hbmFnZXIgPSB1c2VFeGNhbGlkcmF3QWN0aW9uTWFuYWdlcigpO1xuXG4gIGlmIChhcHBTdGF0ZS52aWV3TW9kZUVuYWJsZWQpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFdlbGNvbWVTY3JlZW5NZW51SXRlbVxuICAgICAgb25TZWxlY3Q9eygpID0+IGFjdGlvbk1hbmFnZXIuZXhlY3V0ZUFjdGlvbihhY3Rpb25Mb2FkU2NlbmUpfVxuICAgICAgc2hvcnRjdXQ9e2dldFNob3J0Y3V0RnJvbVNob3J0Y3V0TmFtZShcImxvYWRTY2VuZVwiKX1cbiAgICAgIGljb249e0xvYWRJY29ufVxuICAgID5cbiAgICAgIHt0KFwiYnV0dG9ucy5sb2FkXCIpfVxuICAgIDwvV2VsY29tZVNjcmVlbk1lbnVJdGVtPlxuICApO1xufTtcbk1lbnVJdGVtTG9hZFNjZW5lLmRpc3BsYXlOYW1lID0gXCJNZW51SXRlbUxvYWRTY2VuZVwiO1xuXG5jb25zdCBNZW51SXRlbUxpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlciA9ICh7XG4gIG9uU2VsZWN0LFxufToge1xuICBvblNlbGVjdDogKCkgPT4gYW55O1xufSkgPT4ge1xuICAvLyBGSVhNRSB3aGVuIHdlIHRpZSB0KCkgdG8gbGFuZyBzdGF0ZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIGNvbnN0IGFwcFN0YXRlID0gdXNlRXhjYWxpZHJhd0FwcFN0YXRlKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8V2VsY29tZVNjcmVlbk1lbnVJdGVtIHNob3J0Y3V0PXtudWxsfSBvblNlbGVjdD17b25TZWxlY3R9IGljb249e3VzZXJzSWNvbn0+XG4gICAgICB7dChcImxhYmVscy5saXZlQ29sbGFib3JhdGlvblwiKX1cbiAgICA8L1dlbGNvbWVTY3JlZW5NZW51SXRlbT5cbiAgKTtcbn07XG5NZW51SXRlbUxpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlci5kaXNwbGF5TmFtZSA9XG4gIFwiTWVudUl0ZW1MaXZlQ29sbGFib3JhdGlvblRyaWdnZXJcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQ2VudGVyLkxvZ28gPSBMb2dvO1xuQ2VudGVyLkhlYWRpbmcgPSBIZWFkaW5nO1xuQ2VudGVyLk1lbnUgPSBNZW51O1xuQ2VudGVyLk1lbnVJdGVtID0gV2VsY29tZVNjcmVlbk1lbnVJdGVtO1xuQ2VudGVyLk1lbnVJdGVtTGluayA9IFdlbGNvbWVTY3JlZW5NZW51SXRlbUxpbms7XG5DZW50ZXIuTWVudUl0ZW1IZWxwID0gTWVudUl0ZW1IZWxwO1xuQ2VudGVyLk1lbnVJdGVtTG9hZFNjZW5lID0gTWVudUl0ZW1Mb2FkU2NlbmU7XG5DZW50ZXIuTWVudUl0ZW1MaXZlQ29sbGFib3JhdGlvblRyaWdnZXIgPSBNZW51SXRlbUxpdmVDb2xsYWJvcmF0aW9uVHJpZ2dlcjtcblxuZXhwb3J0IHsgQ2VudGVyIH07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Center.tsx\n");
|
|
3210
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Center\": () => (/* binding */ Center)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../actions */ \"../../actions/index.ts\");\n/* harmony import */ var _actions_shortcuts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../actions/shortcuts */ \"../../actions/shortcuts.ts\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../App */ \"../../components/App.tsx\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../context/tunnels */ \"../../components/context/tunnels.ts\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ \"../../components/icons.tsx\");\nvar __rest = (undefined && undefined.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\n\n\n\n\n\n\n\nconst WelcomeScreenMenuItemContent = ({ icon, shortcut, children, }) => {\n const device = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useDevice)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu-item__icon\" }, { children: icon })), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu-item__text\" }, { children: children })), shortcut && !device.isMobile && ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu-item__shortcut\" }, { children: shortcut })))] }));\n};\nWelcomeScreenMenuItemContent.displayName = \"WelcomeScreenMenuItemContent\";\nconst WelcomeScreenMenuItem = (_a) => {\n var { onSelect, children, icon, shortcut, className = \"\" } = _a, props = __rest(_a, [\"onSelect\", \"children\", \"icon\", \"shortcut\", \"className\"]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"button\", Object.assign({}, props, { type: \"button\", className: `welcome-screen-menu-item ${className}`, onClick: onSelect }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({ icon: icon, shortcut: shortcut }, { children: children })) })));\n};\nWelcomeScreenMenuItem.displayName = \"WelcomeScreenMenuItem\";\nconst WelcomeScreenMenuItemLink = (_a) => {\n var { children, href, icon, shortcut, className = \"\" } = _a, props = __rest(_a, [\"children\", \"href\", \"icon\", \"shortcut\", \"className\"]);\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"a\", Object.assign({}, props, { className: `welcome-screen-menu-item ${className}`, href: href, target: \"_blank\", rel: \"noreferrer\" }, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItemContent, Object.assign({ icon: icon, shortcut: shortcut }, { children: children })) })));\n};\nWelcomeScreenMenuItemLink.displayName = \"WelcomeScreenMenuItemLink\";\nconst Center = ({ children }) => {\n const { welcomeScreenCenterTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_5__.useTunnels)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenCenterTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-center\" }, { children: children || ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Logo, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(Heading, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"welcomeScreen.defaults.center_heading\") }), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(Menu, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemLoadScene, {}), (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(MenuItemHelp, {})] })] })) })) }));\n};\nCenter.displayName = \"Center\";\nconst Logo = ({ children }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-center__logo virgil welcome-screen-decor\" }, { children: children || (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, { children: [_icons__WEBPACK_IMPORTED_MODULE_6__.ExcalLogo, \" Excalidraw\"] }) })));\n};\nLogo.displayName = \"Logo\";\nconst Heading = ({ children }) => {\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-center__heading welcome-screen-decor virgil\" }, { children: children })));\n};\nHeading.displayName = \"Heading\";\nconst Menu = ({ children }) => {\n return (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-menu\" }, { children: children }));\n};\nMenu.displayName = \"Menu\";\nconst MenuItemHelp = () => {\n const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({ onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionShortcuts), shortcut: \"?\", icon: _icons__WEBPACK_IMPORTED_MODULE_6__.HelpIcon }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"helpDialog.title\") })));\n};\nMenuItemHelp.displayName = \"MenuItemHelp\";\nconst MenuItemLoadScene = () => {\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawAppState)();\n const actionManager = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawActionManager)();\n if (appState.viewModeEnabled) {\n return null;\n }\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({ onSelect: () => actionManager.executeAction(_actions__WEBPACK_IMPORTED_MODULE_1__.actionLoadScene), shortcut: (0,_actions_shortcuts__WEBPACK_IMPORTED_MODULE_2__.getShortcutFromShortcutName)(\"loadScene\"), icon: _icons__WEBPACK_IMPORTED_MODULE_6__.LoadIcon }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"buttons.load\") })));\n};\nMenuItemLoadScene.displayName = \"MenuItemLoadScene\";\nconst MenuItemLiveCollaborationTrigger = ({ onSelect, }) => {\n // FIXME when we tie t() to lang state\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const appState = (0,_App__WEBPACK_IMPORTED_MODULE_4__.useExcalidrawAppState)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(WelcomeScreenMenuItem, Object.assign({ shortcut: null, onSelect: onSelect, icon: _icons__WEBPACK_IMPORTED_MODULE_6__.usersIcon }, { children: (0,_i18n__WEBPACK_IMPORTED_MODULE_3__.t)(\"labels.liveCollaboration\") })));\n};\nMenuItemLiveCollaborationTrigger.displayName =\n \"MenuItemLiveCollaborationTrigger\";\n// -----------------------------------------------------------------------------\nCenter.Logo = Logo;\nCenter.Heading = Heading;\nCenter.Menu = Menu;\nCenter.MenuItem = WelcomeScreenMenuItem;\nCenter.MenuItemLink = WelcomeScreenMenuItemLink;\nCenter.MenuItemHelp = MenuItemHelp;\nCenter.MenuItemLoadScene = MenuItemLoadScene;\nCenter.MenuItemLiveCollaborationTrigger = MenuItemLiveCollaborationTrigger;\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLkNlbnRlci50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUU7QUFDSztBQUN2QztBQUtmO0FBQ2dDO0FBQ29CO0FBRXBFLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxFQUNwQyxJQUFJLEVBQ0osUUFBUSxFQUNSLFFBQVEsR0FLVCxFQUFFLEVBQUU7SUFDSCxNQUFNLE1BQU0sR0FBRywrQ0FBUyxFQUFFLENBQUM7SUFDM0IsT0FBTyxDQUNMLDhIQUNFLDhFQUFLLFNBQVMsRUFBQyxnQ0FBZ0MsZ0JBQUUsSUFBSSxJQUFPLEVBQzVELDhFQUFLLFNBQVMsRUFBQyxnQ0FBZ0MsZ0JBQUUsUUFBUSxJQUFPLEVBQy9ELFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FDL0IsOEVBQUssU0FBUyxFQUFDLG9DQUFvQyxnQkFBRSxRQUFRLElBQU8sQ0FDckUsSUFDQSxDQUNKLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRiw0QkFBNEIsQ0FBQyxXQUFXLEdBQUcsOEJBQThCLENBQUM7QUFFMUUsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEVBWWtCLEVBQUUsRUFBRTtRQVp0QixFQUM3QixRQUFRLEVBQ1IsUUFBUSxFQUNSLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxHQUFHLEVBQUUsT0FPaUMsRUFONUMsS0FBSyxjQU5xQix5REFPOUIsQ0FEUztJQU9SLE9BQU8sQ0FDTCxtRkFDTSxLQUFLLElBQ1QsSUFBSSxFQUFDLFFBQVEsRUFDYixTQUFTLEVBQUUsNEJBQTRCLFNBQVMsRUFBRSxFQUNsRCxPQUFPLEVBQUUsUUFBUSxnQkFFakIsdURBQUMsNEJBQTRCLGtCQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsZ0JBQ3pELFFBQVEsSUFDb0IsSUFDeEIsQ0FDVixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBQ0YscUJBQXFCLENBQUMs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RXpEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvd2VsY29tZS1zY3JlZW4vV2VsY29tZVNjcmVlbi5DZW50ZXIudHN4P2Q3YzgiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWN0aW9uTG9hZFNjZW5lLCBhY3Rpb25TaG9ydGN1dHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0U2hvcnRjdXRGcm9tU2hvcnRjdXROYW1lIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnMvc2hvcnRjdXRzXCI7XG5pbXBvcnQgeyB0IH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIHVzZURldmljZSxcbiAgdXNlRXhjYWxpZHJhd0FjdGlvbk1hbmFnZXIsXG4gIHVzZUV4Y2FsaWRyYXdBcHBTdGF0ZSxcbn0gZnJvbSBcIi4uL0FwcFwiO1xuaW1wb3J0IHsgdXNlVHVubmVscyB9IGZyb20gXCIuLi9jb250ZXh0L3R1bm5lbHNcIjtcbmltcG9ydCB7IEV4Y2FsTG9nbywgSGVscEljb24sIExvYWRJY29uLCB1c2Vyc0ljb24gfSBmcm9tIFwiLi4vaWNvbnNcIjtcblxuY29uc3QgV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudCA9ICh7XG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjaGlsZHJlbixcbn06IHtcbiAgaWNvbj86IEpTWC5FbGVtZW50O1xuICBzaG9ydGN1dD86IHN0cmluZyB8IG51bGw7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59KSA9PiB7XG4gIGNvbnN0IGRldmljZSA9IHVzZURldmljZSgpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIndlbGNvbWUtc2NyZWVuLW1lbnUtaXRlbV9faWNvblwiPntpY29ufTwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1tZW51LWl0ZW1fX3RleHRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgICB7c2hvcnRjdXQgJiYgIWRldmljZS5pc01vYmlsZSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2VsY29tZS1zY3JlZW4tbWVudS1pdGVtX19zaG9ydGN1dFwiPntzaG9ydGN1dH08L2Rpdj5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudC5kaXNwbGF5TmFtZSA9IFwiV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudFwiO1xuXG5jb25zdCBXZWxjb21lU2NyZWVuTWVudUl0ZW0gPSAoe1xuICBvblNlbGVjdCxcbiAgY2hpbGRyZW4sXG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICAuLi5wcm9wc1xufToge1xuICBvblNlbGVjdDogKCkgPT4gdm9pZDtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbiAgaWNvbj86IEpTWC5FbGVtZW50O1xuICBzaG9ydGN1dD86IHN0cmluZyB8IG51bGw7XG59ICYgUmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgey4uLnByb3BzfVxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzc05hbWU9e2B3ZWxjb21lLXNjcmVlbi1tZW51LWl0ZW0gJHtjbGFzc05hbWV9YH1cbiAgICAgIG9uQ2xpY2s9e29uU2VsZWN0fVxuICAgID5cbiAgICAgIDxXZWxjb21lU2NyZWVuTWVudUl0ZW1Db250ZW50IGljb249e2ljb259IHNob3J0Y3V0PXtzaG9ydGN1dH0+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvV2VsY29tZVNjcmVlbk1lbnVJdGVtQ29udGVudD5cbiAgICA8L2J1dHRvbj5cbiAgKTtcbn07XG5XZWxjb21lU2NyZWVuTWVudUl0ZW0uZGlzcGxheU5hbWUgPSBcIldlbGNvbWVTY3JlZW5NZW51SXRlbVwiO1xuXG5jb25zdCBXZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rID0gKHtcbiAgY2hpbGRyZW4sXG4gIGhyZWYsXG4gIGljb24sXG4gIHNob3J0Y3V0LFxuICBjbGFzc05hbWUgPSBcIlwiLFxuICAuLi5wcm9wc1xufToge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBocmVmOiBzdHJpbmc7XG4gIGljb24/OiBKU1guRWxlbWVudDtcbiAgc2hvcnRjdXQ/OiBzdHJpbmcgfCBudWxsO1xufSAmIFJlYWN0LkFuY2hvckhUTUxBdHRyaWJ1dGVzPEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICB7Li4ucHJvcHN9XG4gICAgICBjbGFzc05hbWU9e2B3ZWxjb21lLXNjcmVlbi1tZW51LWl0ZW0gJHtjbGFzc05hbWV9YH1cbiAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgcmVsPVwibm9yZWZlcnJlclwiXG4gICAgPlxuICAgICAgPFdlbGNvbWVTY3JlZW5NZW51SXRlbUNvbnRlbnQgaWNvbj17aWNvbn0gc2hvcnRjdXQ9e3Nob3J0Y3V0fT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9XZWxjb21lU2NyZWVuTWVudUl0ZW1Db250ZW50PlxuICAgIDwvYT5cbiAgKTtcbn07XG5XZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rLmRpc3BsYXlOYW1lID0gXCJXZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rXCI7XG5cbmNvbnN0IENlbnRlciA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICBjb25zdCB7IHdlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWwgfSA9IHVzZVR1bm5lbHMoKTtcbiAgcmV0dXJuIChcbiAgICA8d2VsY29tZVNjcmVlbkNlbnRlclR1bm5lbC5Jbj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwid2VsY29tZS1zY3JlZW4tY2VudGVyXCI+XG4gICAgICAgIHtjaGlsZHJlbiB8fCAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxMb2dvIC8+XG4gICAgICAgICAgICA8SGVhZGluZz57dChcIndlbGNvbWVTY3JlZW4uZGVmYXVsdHMuY2VudGVyX2hlYWRpbmdcIil9PC9IZWFkaW5nPlxuICAgICAgICAgICAgPE1lbnU+XG4gICAgICAgICAgICAgIDxNZW51SXRlbUxvYWRTY2VuZSAvPlxuICAgICAgICAgICAgICA8TWVudUl0ZW1IZWxwIC8+XG4gICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L3dlbGNvbWVTY3JlZW5DZW50ZXJUdW5uZWwuSW4+XG4gICk7XG59O1xuQ2VudGVyLmRpc3BsYXlOYW1lID0gXCJDZW50ZXJcIjtcblxuY29uc3QgTG9nbyA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2VsY29tZS1zY3JlZW4tY2VudGVyX19sb2dvIHZpcmdpbCB3ZWxjb21lLXNjcmVlbi1kZWNvclwiPlxuICAgICAge2NoaWxkcmVuIHx8IDw+e0V4Y2FsTG9nb30gRXhjYWxpZHJhdzwvPn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5Mb2dvLmRpc3BsYXlOYW1lID0gXCJMb2dvXCI7XG5cbmNvbnN0IEhlYWRpbmcgPSAoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwid2VsY29tZS1zY3JlZW4tY2VudGVyX19oZWFkaW5nIHdlbGNvbWUtc2NyZWVuLWRlY29yIHZpcmdpbFwiPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcbkhlYWRpbmcuZGlzcGxheU5hbWUgPSBcIkhlYWRpbmdcIjtcblxuY29uc3QgTWVudSA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1tZW51XCI+e2NoaWxkcmVufTwvZGl2Pjtcbn07XG5NZW51LmRpc3BsYXlOYW1lID0gXCJNZW51XCI7XG5cbmNvbnN0IE1lbnVJdGVtSGVscCA9ICgpID0+IHtcbiAgY29uc3QgYWN0aW9uTWFuYWdlciA9IHVzZUV4Y2FsaWRyYXdBY3Rpb25NYW5hZ2VyKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8V2VsY29tZVNjcmVlbk1lbnVJdGVtXG4gICAgICBvblNlbGVjdD17KCkgPT4gYWN0aW9uTWFuYWdlci5leGVjdXRlQWN0aW9uKGFjdGlvblNob3J0Y3V0cyl9XG4gICAgICBzaG9ydGN1dD1cIj9cIlxuICAgICAgaWNvbj17SGVscEljb259XG4gICAgPlxuICAgICAge3QoXCJoZWxwRGlhbG9nLnRpdGxlXCIpfVxuICAgIDwvV2VsY29tZVNjcmVlbk1lbnVJdGVtPlxuICApO1xufTtcbk1lbnVJdGVtSGVscC5kaXNwbGF5TmFtZSA9IFwiTWVudUl0ZW1IZWxwXCI7XG5cbmNvbnN0IE1lbnVJdGVtTG9hZFNjZW5lID0gKCkgPT4ge1xuICBjb25zdCBhcHBTdGF0ZSA9IHVzZUV4Y2FsaWRyYXdBcHBTdGF0ZSgpO1xuICBjb25zdCBhY3Rpb25NYW5hZ2VyID0gdXNlRXhjYWxpZHJhd0FjdGlvbk1hbmFnZXIoKTtcblxuICBpZiAoYXBwU3RhdGUudmlld01vZGVFbmFibGVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxXZWxjb21lU2NyZWVuTWVudUl0ZW1cbiAgICAgIG9uU2VsZWN0PXsoKSA9PiBhY3Rpb25NYW5hZ2VyLmV4ZWN1dGVBY3Rpb24oYWN0aW9uTG9hZFNjZW5lKX1cbiAgICAgIHNob3J0Y3V0PXtnZXRTaG9ydGN1dEZyb21TaG9ydGN1dE5hbWUoXCJsb2FkU2NlbmVcIil9XG4gICAgICBpY29uPXtMb2FkSWNvbn1cbiAgICA+XG4gICAgICB7dChcImJ1dHRvbnMubG9hZFwiKX1cbiAgICA8L1dlbGNvbWVTY3JlZW5NZW51SXRlbT5cbiAgKTtcbn07XG5NZW51SXRlbUxvYWRTY2VuZS5kaXNwbGF5TmFtZSA9IFwiTWVudUl0ZW1Mb2FkU2NlbmVcIjtcblxuY29uc3QgTWVudUl0ZW1MaXZlQ29sbGFib3JhdGlvblRyaWdnZXIgPSAoe1xuICBvblNlbGVjdCxcbn06IHtcbiAgb25TZWxlY3Q6ICgpID0+IGFueTtcbn0pID0+IHtcbiAgLy8gRklYTUUgd2hlbiB3ZSB0aWUgdCgpIHRvIGxhbmcgc3RhdGVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBjb25zdCBhcHBTdGF0ZSA9IHVzZUV4Y2FsaWRyYXdBcHBTdGF0ZSgpO1xuXG4gIHJldHVybiAoXG4gICAgPFdlbGNvbWVTY3JlZW5NZW51SXRlbSBzaG9ydGN1dD17bnVsbH0gb25TZWxlY3Q9e29uU2VsZWN0fSBpY29uPXt1c2Vyc0ljb259PlxuICAgICAge3QoXCJsYWJlbHMubGl2ZUNvbGxhYm9yYXRpb25cIil9XG4gICAgPC9XZWxjb21lU2NyZWVuTWVudUl0ZW0+XG4gICk7XG59O1xuTWVudUl0ZW1MaXZlQ29sbGFib3JhdGlvblRyaWdnZXIuZGlzcGxheU5hbWUgPVxuICBcIk1lbnVJdGVtTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkNlbnRlci5Mb2dvID0gTG9nbztcbkNlbnRlci5IZWFkaW5nID0gSGVhZGluZztcbkNlbnRlci5NZW51ID0gTWVudTtcbkNlbnRlci5NZW51SXRlbSA9IFdlbGNvbWVTY3JlZW5NZW51SXRlbTtcbkNlbnRlci5NZW51SXRlbUxpbmsgPSBXZWxjb21lU2NyZWVuTWVudUl0ZW1MaW5rO1xuQ2VudGVyLk1lbnVJdGVtSGVscCA9IE1lbnVJdGVtSGVscDtcbkNlbnRlci5NZW51SXRlbUxvYWRTY2VuZSA9IE1lbnVJdGVtTG9hZFNjZW5lO1xuQ2VudGVyLk1lbnVJdGVtTGl2ZUNvbGxhYm9yYXRpb25UcmlnZ2VyID0gTWVudUl0ZW1MaXZlQ29sbGFib3JhdGlvblRyaWdnZXI7XG5cbmV4cG9ydCB7IENlbnRlciB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Center.tsx\n");
|
|
3200
3211
|
|
|
3201
3212
|
/***/ }),
|
|
3202
3213
|
|
|
@@ -3207,7 +3218,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3207
3218
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3208
3219
|
|
|
3209
3220
|
"use strict";
|
|
3210
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"HelpHint\": () => (/* binding */ HelpHint),\n/* harmony export */ \"MenuHint\": () => (/* binding */ MenuHint),\n/* harmony export */ \"ToolbarHint\": () => (/* binding */ ToolbarHint)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var
|
|
3221
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"HelpHint\": () => (/* binding */ HelpHint),\n/* harmony export */ \"MenuHint\": () => (/* binding */ MenuHint),\n/* harmony export */ \"ToolbarHint\": () => (/* binding */ ToolbarHint)\n/* harmony export */ });\n/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-runtime */ \"../../../node_modules/react/jsx-runtime.js\");\n/* harmony import */ var _i18n__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../i18n */ \"../../i18n.ts\");\n/* harmony import */ var _context_tunnels__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/tunnels */ \"../../components/context/tunnels.ts\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons */ \"../../components/icons.tsx\");\n\n\n\n\nconst MenuHint = ({ children }) => {\n const { welcomeScreenMenuHintTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenMenuHintTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--menu\" }, { children: [_icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenMenuArrow, (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-decor-hint__label\" }, { children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\"welcomeScreen.defaults.menuHint\") }))] })) }));\n};\nMenuHint.displayName = \"MenuHint\";\nconst ToolbarHint = ({ children }) => {\n const { welcomeScreenToolbarHintTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenToolbarHintTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--toolbar\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", Object.assign({ className: \"welcome-screen-decor-hint__label\" }, { children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\"welcomeScreen.defaults.toolbarHint\") })), _icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenTopToolbarArrow] })) }));\n};\nToolbarHint.displayName = \"ToolbarHint\";\nconst HelpHint = ({ children }) => {\n const { welcomeScreenHelpHintTunnel } = (0,_context_tunnels__WEBPACK_IMPORTED_MODULE_2__.useTunnels)();\n return ((0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(welcomeScreenHelpHintTunnel.In, { children: (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(\"div\", Object.assign({ className: \"virgil welcome-screen-decor welcome-screen-decor-hint welcome-screen-decor-hint--help\" }, { children: [(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(\"div\", { children: children || (0,_i18n__WEBPACK_IMPORTED_MODULE_1__.t)(\"welcomeScreen.defaults.helpHint\") }), _icons__WEBPACK_IMPORTED_MODULE_3__.WelcomeScreenHelpArrow] })) }));\n};\nHelpHint.displayName = \"HelpHint\";\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vY29tcG9uZW50cy93ZWxjb21lLXNjcmVlbi9XZWxjb21lU2NyZWVuLkhpbnRzLnRzeC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUErQjtBQUNpQjtBQUs5QjtBQUVsQixNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFrQyxFQUFFLEVBQUU7SUFDaEUsTUFBTSxFQUFFLDJCQUEyQixFQUFFLEdBQUcsNERBQVUsRUFBRSxDQUFDO0lBQ3JELE9BQU8sQ0FDTCx1REFBQywyQkFBMkIsQ0FBQyxFQUFFLGNBQzdCLCtFQUFLLFNBQVMsRUFBQyx1RkFBdUYsaUJBQ25HLDBEQUFzQixFQUN2Qiw4RUFBSyxTQUFTLEVBQUMsa0NBQWtDLGdCQUM5QyxRQUFRLElBQUksd0NBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUM3QyxLQUNGLEdBQ3lCLENBQ2xDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztBQUVsQyxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFrQyxFQUFFLEVBQUU7SUFDbkUsTUFBTSxFQUFFLDhCQUE4QixFQUFFLEdBQUcsNERBQVUsRUFBRSxDQUFDO0lBQ3hELE9BQU8sQ0FDTCx1REFBQyw4QkFBOEIsQ0FBQyxFQUFFLGNBQ2hDLCtFQUFLLFNBQVMsRUFBQywwRkFBMEYsaUJBQ3ZHLDhFQUFLLFNBQVMsRUFBQyxrQ0FBa0MsZ0JBQzlDLFFBQVEsSUFBSSx3Q0FBQyxDQUFDLG9DQUFvQyxDQUFDLElBQ2hELEVBQ0wsZ0VBQTRCLEtBQ3pCLEdBQzRCLENBQ3JDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixXQUFXLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztBQUV4QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFrQyxFQUFFLEVBQUU7SUFDaEUsTUFBTSxFQUFFLDJCQUEyQixFQUFFLEdBQUcsNERBQVUsRUFBRSxDQUFDO0lBQ3JELE9BQU8sQ0FDTCx1REFBQywyQkFBMkIsQ0FBQyxFQUFFLGNBQzdCLCtFQUFLLFNBQVMsRUFBQyx1RkFBdUYsaUJBQ3BHLDBFQUFNLFFBQVEsSUFBSSx3Q0FBQyxDQUFDLGlDQUFpQyxDQUFDLEdBQU8sRUFDNUQsMERBQXNCLEtBQ25CLEdBQ3lCLENBQ2xDLENBQUM7QUFDSixDQUFDLENBQUM7QUFDRixRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztBQUVTIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL2NvbXBvbmVudHMvd2VsY29tZS1zY3JlZW4vV2VsY29tZVNjcmVlbi5IaW50cy50c3g/NGU2MSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0IH0gZnJvbSBcIi4uLy4uL2kxOG5cIjtcbmltcG9ydCB7IHVzZVR1bm5lbHMgfSBmcm9tIFwiLi4vY29udGV4dC90dW5uZWxzXCI7XG5pbXBvcnQge1xuICBXZWxjb21lU2NyZWVuSGVscEFycm93LFxuICBXZWxjb21lU2NyZWVuTWVudUFycm93LFxuICBXZWxjb21lU2NyZWVuVG9wVG9vbGJhckFycm93LFxufSBmcm9tIFwiLi4vaWNvbnNcIjtcblxuY29uc3QgTWVudUhpbnQgPSAoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH0pID0+IHtcbiAgY29uc3QgeyB3ZWxjb21lU2NyZWVuTWVudUhpbnRUdW5uZWwgfSA9IHVzZVR1bm5lbHMoKTtcbiAgcmV0dXJuIChcbiAgICA8d2VsY29tZVNjcmVlbk1lbnVIaW50VHVubmVsLkluPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ2aXJnaWwgd2VsY29tZS1zY3JlZW4tZGVjb3Igd2VsY29tZS1zY3JlZW4tZGVjb3ItaGludCB3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50LS1tZW51XCI+XG4gICAgICAgIHtXZWxjb21lU2NyZWVuTWVudUFycm93fVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnRfX2xhYmVsXCI+XG4gICAgICAgICAge2NoaWxkcmVuIHx8IHQoXCJ3ZWxjb21lU2NyZWVuLmRlZmF1bHRzLm1lbnVIaW50XCIpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvd2VsY29tZVNjcmVlbk1lbnVIaW50VHVubmVsLkluPlxuICApO1xufTtcbk1lbnVIaW50LmRpc3BsYXlOYW1lID0gXCJNZW51SGludFwiO1xuXG5jb25zdCBUb29sYmFySGludCA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfSkgPT4ge1xuICBjb25zdCB7IHdlbGNvbWVTY3JlZW5Ub29sYmFySGludFR1bm5lbCB9ID0gdXNlVHVubmVscygpO1xuICByZXR1cm4gKFxuICAgIDx3ZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWwuSW4+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cInZpcmdpbCB3ZWxjb21lLXNjcmVlbi1kZWNvciB3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50IHdlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnQtLXRvb2xiYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWxjb21lLXNjcmVlbi1kZWNvci1oaW50X19sYWJlbFwiPlxuICAgICAgICAgIHtjaGlsZHJlbiB8fCB0KFwid2VsY29tZVNjcmVlbi5kZWZhdWx0cy50b29sYmFySGludFwiKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHtXZWxjb21lU2NyZWVuVG9wVG9vbGJhckFycm93fVxuICAgICAgPC9kaXY+XG4gICAgPC93ZWxjb21lU2NyZWVuVG9vbGJhckhpbnRUdW5uZWwuSW4+XG4gICk7XG59O1xuVG9vbGJhckhpbnQuZGlzcGxheU5hbWUgPSBcIlRvb2xiYXJIaW50XCI7XG5cbmNvbnN0IEhlbHBIaW50ID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiB7XG4gIGNvbnN0IHsgd2VsY29tZVNjcmVlbkhlbHBIaW50VHVubmVsIH0gPSB1c2VUdW5uZWxzKCk7XG4gIHJldHVybiAoXG4gICAgPHdlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbC5Jbj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidmlyZ2lsIHdlbGNvbWUtc2NyZWVuLWRlY29yIHdlbGNvbWUtc2NyZWVuLWRlY29yLWhpbnQgd2VsY29tZS1zY3JlZW4tZGVjb3ItaGludC0taGVscFwiPlxuICAgICAgICA8ZGl2PntjaGlsZHJlbiB8fCB0KFwid2VsY29tZVNjcmVlbi5kZWZhdWx0cy5oZWxwSGludFwiKX08L2Rpdj5cbiAgICAgICAge1dlbGNvbWVTY3JlZW5IZWxwQXJyb3d9XG4gICAgICA8L2Rpdj5cbiAgICA8L3dlbGNvbWVTY3JlZW5IZWxwSGludFR1bm5lbC5Jbj5cbiAgKTtcbn07XG5IZWxwSGludC5kaXNwbGF5TmFtZSA9IFwiSGVscEhpbnRcIjtcblxuZXhwb3J0IHsgSGVscEhpbnQsIE1lbnVIaW50LCBUb29sYmFySGludCB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../components/welcome-screen/WelcomeScreen.Hints.tsx\n");
|
|
3211
3222
|
|
|
3212
3223
|
/***/ }),
|
|
3213
3224
|
|
|
@@ -3746,7 +3757,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3746
3757
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3747
3758
|
|
|
3748
3759
|
"use strict";
|
|
3749
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n /* global __webpack_public_path__:writable */\n __webpack_require__.p =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.14.1-6178-
|
|
3760
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../constants */ \"../../constants.ts\");\n\nif (\"development\" !== _constants__WEBPACK_IMPORTED_MODULE_0__.ENV.TEST) {\n /* eslint-disable */\n /* global __webpack_public_path__:writable */\n __webpack_require__.p =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.14.1-6178-2acbae3\"}/dist/`;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wdWJsaWNQYXRoLmpzLmpzIiwibWFwcGluZ3MiOiI7O0FBQXNDO0FBQ3RDLElBQUksYUFBb0IsS0FBSyxnREFBUSxFQUFFO0lBQ3JDLG9CQUFvQjtJQUNwQiw2Q0FBNkM7SUFDN0MscUJBQXVCO1FBQ3JCLE1BQU0sQ0FBQyxxQkFBcUI7WUFDNUIscUJBQXFCLHdCQUFvQixJQUFJLHFCQUF1QixRQUFRLENBQUM7Q0FDaEYiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9wdWJsaWNQYXRoLmpzP2E4N2QiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRU5WIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBFTlYuVEVTVCkge1xuICAvKiBlc2xpbnQtZGlzYWJsZSAqL1xuICAvKiBnbG9iYWwgX193ZWJwYWNrX3B1YmxpY19wYXRoX186d3JpdGFibGUgKi9cbiAgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gPVxuICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICBgaHR0cHM6Ly91bnBrZy5jb20vJHtwcm9jZXNzLmVudi5QS0dfTkFNRX1AJHtwcm9jZXNzLmVudi5QS0dfVkVSU0lPTn0vZGlzdC9gO1xufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./publicPath.js\n");
|
|
3750
3761
|
|
|
3751
3762
|
/***/ }),
|
|
3752
3763
|
|
|
@@ -3867,7 +3878,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3867
3878
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3868
3879
|
|
|
3869
3880
|
"use strict";
|
|
3870
|
-
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\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\nconst exportToCanvas = (elements, appState, files, { exportBackground, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, }, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return { canvas, scale: appState.exportScale };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n const { canvas, scale = 1 } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const { imageCache } = 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 (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderScene)({\n elements,\n appState,\n scale,\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas),\n canvas,\n renderConfig: {\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n remotePointerViewportCoords: {},\n remoteSelectedElementIds: {},\n shouldCacheIgnoreZoom: false,\n remotePointerUsernames: {},\n remotePointerUserStates: {},\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\",\n imageCache,\n renderScrollbars: false,\n renderSelection: false,\n renderGrid: false,\n isExporting: true,\n },\n });\n return canvas;\n});\nconst exportToSvg = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n const { exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, exportScale = 1, exportEmbedScene, } = appState;\n let metadata = \"\";\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: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\"),\n });\n }\n catch (error) {\n console.error(error);\n }\n }\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n // initialize SVG root\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 if (appState.exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n let assetPath = \"https://excalidraw.com/\";\n // Asset path needs to be determined only when using package\n if (true) {\n assetPath =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.14.1-6178-cc37e69\"}`;\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\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 </defs>\n `;\n // render background rect\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 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: -minX + exportPadding,\n offsetY: -minY + exportPadding,\n exportWithDarkMode: appState.exportWithDarkMode,\n });\n return svgRoot;\n});\n// calculate smallest area to fit the contents in\nconst getCanvasSize = (elements, exportPadding) => {\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) + exportPadding * 2;\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding + exportPadding;\n return [minX, minY, width, height];\n};\nconst getExportSize = (elements, exportPadding, scale) => {\n const [, , width, height] = getCanvasSize(elements, exportPadding).map((dimension) => Math.trunc(dimension * scale));\n return [width, height];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vc2NlbmUvZXhwb3J0LnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFzQztBQUVjO0FBQ29CO0FBQ3BDO0FBRXdDO0FBQzNCO0FBQ0Y7QUFJckI7QUFFbkIsTUFBTSxjQUFjLEdBQUcsZ0NBQWdDLENBQUM7QUFFeEQsTUFBTSxjQUFjLEdBQUcsQ0FDNUIsUUFBZ0QsRUFDaEQsUUFBa0IsRUFDbEIsS0FBa0IsRUFDbEIsRUFDRSxnQkFBZ0IsRUFDaEIsYUFBYSxHQUFHLDhEQUFzQixFQUN0QyxtQkFBbUIsR0FLcEIsRUFDRCxlQUdvRCxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDNUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDakQsQ0FBQyxFQUNELEVBQUU7SUFDRixNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUUzRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsR0FBRyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFELE1BQU0sZUFBZSxHQUFHLDZEQUFrQixFQUFFLENBQUM7SUFFN0MsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sZ0VBQWdCLENBQUM7UUFDNUMsVUFBVSxFQUFFLElBQUksR0FBRyxFQUFFO1FBQ3JCLE9BQU8sRUFBRSwyRUFBMkIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQ2hELENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUM1QjtRQUNELEtBQUs7S0FDTixDQUFDLENBQUM7SUFFSCxrRUFBVyxDQUFDO1FBQ1YsUUFBUTtRQUNSLFFBQVE7UUFDUixLQUFLO1FBQ0wsRUFBRSxFQUFFLGdFQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3hCLE1BQU07UUFDTixZQUFZLEVBQUU7WUFDWixtQkFBbUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEUsT0FBTyxFQUFFLENBQUMsSUFBSSxHQUFHLGFBQWE7WUFDOUIsT0FBTyxFQUFFLENBQUMsSUFBSSxHQUFHLGFBQWE7WUFDOUIsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJO1lBQzFCLDJCQUEyQixFQUFFLEVBQUU7WUFDL0Isd0JBQXdCLEVBQUUsRUFBRTtZQUM1QixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLHNCQUFzQixFQUFFLEVBQUU7WUFDMUIsdUJBQXVCLEVBQUUsRUFBRTtZQUMzQixLQUFLLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDckQsVUFBVTtZQUNWLGdCQUFnQixFQUFFLEtBQUs7WUFDdkIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsVUFBVSxFQUFFLEtBQUs7WUFDakIsV0FBVyxFQUFFLElBQUk7U0FDbEI7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLEVBQUM7QUFFSyxNQUFNLFdBQVcsR0FBRyxDQUN6QixRQUFnRCxFQUNoRCxRQU9DLEVBQ0QsS0FBeUIsRUFDRCxFQUFFO0lBQzFCLE1BQU0sRUFDSixhQUFhLEdBQUcsOERBQXNCLEVBQ3RDLG1CQUFtQixFQUNuQixXQUFXLEdBQUcsQ0FBQyxFQUNmLGdCQUFnQixHQUNqQixHQUFHLFFBQVEsQ0FBQztJQUNiLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLGdCQUFnQixFQUFFO1FBQ3BCLElBQUk7WUFDRixRQUFRLEdBQUcsTUFBTSxDQUNmLE1BQU0sdUlBQThELENBQ3JFLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2xCLElBQUksRUFBRSwyREFBZSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxJQUFJLEVBQUUsRUFBRSxPQUFPLENBQUM7YUFDaEUsQ0FBQyxDQUFDO1NBQ0o7UUFBQyxPQUFPLEtBQVUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RCO0tBQ0Y7SUFDRCxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUUzRSxzQkFBc0I7SUFDdEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGVBQWUsQ0FBQyw4Q0FBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLDhDQUFNLENBQUMsQ0FBQztJQUN0QyxPQUFPLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzFELE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEdBQUcsS0FBSyxHQUFHLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDeEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLEdBQUcsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUMxRCxJQUFJLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRTtRQUMvQixPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxvREFBWSxDQUFDLENBQUM7S0FDOUM7SUFFRCxJQUFJLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQztJQUUxQyw0REFBNEQ7SUFDNUQsSUFBSSxJQUFxQyxFQUFFO1FBQ3pDLFNBQVM7WUFDUCxNQUFNLENBQUMscUJBQXFCO2dCQUM1QixxQkFBcUIsd0JBQW9CLElBQUkscUJBQXVCLEVBQUUsQ0FBQztRQUV6RSxJQUFJLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsQ0FBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDOUIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsU0FBUyxHQUFHLEdBQUcsU0FBUywwQkFBMEIsQ0FBQztLQUNwRDtJQUNELE9BQU8sQ0FBQyxTQUFTLEdBQUc7SUFDbEIsY0FBYztJQUNkLFFBQVE7Ozs7O29CQUtRLFNBQVM7Ozs7b0JBSVQsU0FBUzs7OztHQUkxQixDQUFDO0lBQ0YseUJBQXlCO0lBQ3pCLElBQUksUUFBUSxDQUFDLGdCQUFnQixJQUFJLG1CQUFtQixFQUFFO1FBQ3BELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxhQUFjLENBQUMsZUFBZSxDQUFDLDhDQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDM0I7SUFFRCxNQUFNLElBQUksR0FBRyw2REFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLHVFQUFnQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUU7UUFDckQsT0FBTyxFQUFFLENBQUMsSUFBSSxHQUFHLGFBQWE7UUFDOUIsT0FBTyxFQUFFLENBQUMsSUFBSSxHQUFHLGFBQWE7UUFDOUIsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLGtCQUFrQjtLQUNoRCxDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLEVBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxhQUFhLEdBQUcsQ0FDcEIsUUFBZ0QsRUFDaEQsYUFBcUIsRUFDYSxFQUFFO0lBQ3BDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxnRUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELE1BQU0sS0FBSyxHQUFHLGdEQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDdkQsTUFBTSxNQUFNLEdBQUcsZ0RBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUVwRSxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckMsQ0FBQyxDQUFDO0FBRUssTUFBTSxhQUFhLEdBQUcsQ0FDM0IsUUFBZ0QsRUFDaEQsYUFBcUIsRUFDckIsS0FBYSxFQUNLLEVBQUU7SUFDcEIsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQ3BFLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FDN0MsQ0FBQztJQUVGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDekIsQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3NjZW5lL2V4cG9ydC50cz85YmY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRDb21tb25Cb3VuZHMgfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IHJlbmRlclNjZW5lLCByZW5kZXJTY2VuZVRvU3ZnIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlclNjZW5lXCI7XG5pbXBvcnQgeyBkaXN0YW5jZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgQXBwU3RhdGUsIEJpbmFyeUZpbGVzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBTVkdfTlMsIFRIRU1FX0ZJTFRFUiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuaW1wb3J0IHtcbiAgZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzLFxuICB1cGRhdGVJbWFnZUNhY2hlLFxufSBmcm9tIFwiLi4vZWxlbWVudC9pbWFnZVwiO1xuXG5leHBvcnQgY29uc3QgU1ZHX0VYUE9SVF9UQUcgPSBgPCEtLSBzdmctc291cmNlOmV4Y2FsaWRyYXcgLS0+YDtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gYXN5bmMgKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGFwcFN0YXRlOiBBcHBTdGF0ZSxcbiAgZmlsZXM6IEJpbmFyeUZpbGVzLFxuICB7XG4gICAgZXhwb3J0QmFja2dyb3VuZCxcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICB9OiB7XG4gICAgZXhwb3J0QmFja2dyb3VuZDogYm9vbGVhbjtcbiAgICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgfSxcbiAgY3JlYXRlQ2FudmFzOiAoXG4gICAgd2lkdGg6IG51bWJlcixcbiAgICBoZWlnaHQ6IG51bWJlcixcbiAgKSA9PiB7IGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7IHNjYWxlOiBudW1iZXIgfSA9ICh3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSB3aWR0aCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQgKiBhcHBTdGF0ZS5leHBvcnRTY2FsZTtcbiAgICByZXR1cm4geyBjYW52YXMsIHNjYWxlOiBhcHBTdGF0ZS5leHBvcnRTY2FsZSB9O1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpO1xuXG4gIGNvbnN0IHsgY2FudmFzLCBzY2FsZSA9IDEgfSA9IGNyZWF0ZUNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcblxuICBjb25zdCBkZWZhdWx0QXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKTtcblxuICBjb25zdCB7IGltYWdlQ2FjaGUgfSA9IGF3YWl0IHVwZGF0ZUltYWdlQ2FjaGUoe1xuICAgIGltYWdlQ2FjaGU6IG5ldyBNYXAoKSxcbiAgICBmaWxlSWRzOiBnZXRJbml0aWFsaXplZEltYWdlRWxlbWVudHMoZWxlbWVudHMpLm1hcChcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LmZpbGVJZCxcbiAgICApLFxuICAgIGZpbGVzLFxuICB9KTtcblxuICByZW5kZXJTY2VuZSh7XG4gICAgZWxlbWVudHMsXG4gICAgYXBwU3RhdGUsXG4gICAgc2NhbGUsXG4gICAgcmM6IHJvdWdoLmNhbnZhcyhjYW52YXMpLFxuICAgIGNhbnZhcyxcbiAgICByZW5kZXJDb25maWc6IHtcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICAgIHNjcm9sbFg6IC1taW5YICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIHNjcm9sbFk6IC1taW5ZICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgICAgcmVtb3RlUG9pbnRlclZpZXdwb3J0Q29vcmRzOiB7fSxcbiAgICAgIHJlbW90ZVNlbGVjdGVkRWxlbWVudElkczoge30sXG4gICAgICBzaG91bGRDYWNoZUlnbm9yZVpvb206IGZhbHNlLFxuICAgICAgcmVtb3RlUG9pbnRlclVzZXJuYW1lczoge30sXG4gICAgICByZW1vdGVQb2ludGVyVXNlclN0YXRlczoge30sXG4gICAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIsXG4gICAgICBpbWFnZUNhY2hlLFxuICAgICAgcmVuZGVyU2Nyb2xsYmFyczogZmFsc2UsXG4gICAgICByZW5kZXJTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgcmVuZGVyR3JpZDogZmFsc2UsXG4gICAgICBpc0V4cG9ydGluZzogdHJ1ZSxcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gY2FudmFzO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gYXN5bmMgKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGFwcFN0YXRlOiB7XG4gICAgZXhwb3J0QmFja2dyb3VuZDogYm9vbGVhbjtcbiAgICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICAgIGV4cG9ydFNjYWxlPzogbnVtYmVyO1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICBleHBvcnRXaXRoRGFya01vZGU/OiBib29sZWFuO1xuICAgIGV4cG9ydEVtYmVkU2NlbmU/OiBib29sZWFuO1xuICB9LFxuICBmaWxlczogQmluYXJ5RmlsZXMgfCBudWxsLFxuKTogUHJvbWlzZTxTVkdTVkdFbGVtZW50PiA9PiB7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgIGV4cG9ydFNjYWxlID0gMSxcbiAgICBleHBvcnRFbWJlZFNjZW5lLFxuICB9ID0gYXBwU3RhdGU7XG4gIGxldCBtZXRhZGF0YSA9IFwiXCI7XG4gIGlmIChleHBvcnRFbWJlZFNjZW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1ldGFkYXRhID0gYXdhaXQgKFxuICAgICAgICBhd2FpdCBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIilcbiAgICAgICkuZW5jb2RlU3ZnTWV0YWRhdGEoe1xuICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcblxuICAvLyBpbml0aWFsaXplIFNWRyByb290XG4gIGNvbnN0IHN2Z1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInN2Z1wiKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2ZXJzaW9uXCIsIFwiMS4xXCIpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInhtbG5zXCIsIFNWR19OUyk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwidmlld0JveFwiLCBgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWApO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRoICogZXhwb3J0U2NhbGV9YCk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodCAqIGV4cG9ydFNjYWxlfWApO1xuICBpZiAoYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgVEhFTUVfRklMVEVSKTtcbiAgfVxuXG4gIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7XG5cbiAgLy8gQXNzZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkIG9ubHkgd2hlbiB1c2luZyBwYWNrYWdlXG4gIGlmIChwcm9jZXNzLmVudi5JU19FWENBTElEUkFXX05QTV9QQUNLQUdFKSB7XG4gICAgYXNzZXRQYXRoID1cbiAgICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICAgIGBodHRwczovL3VucGtnLmNvbS8ke3Byb2Nlc3MuZW52LlBLR19OQU1FfUAke3Byb2Nlc3MuZW52LlBLR19WRVJTSU9OfWA7XG5cbiAgICBpZiAoYXNzZXRQYXRoPy5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgYXNzZXRQYXRoID0gYXNzZXRQYXRoLnJlcGxhY2UoXCIvXCIsIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApO1xuICAgIH1cbiAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgfVxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlIGNsYXNzPVwic3R5bGUtZm9udHNcIj5cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJWaXJnaWxcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1WaXJnaWwud29mZjJcIik7XG4gICAgICB9XG4gICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiQ2FzY2FkaWFcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1DYXNjYWRpYS53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L2RlZnM+XG4gIGA7XG4gIC8vIHJlbmRlciBiYWNrZ3JvdW5kIHJlY3RcbiAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgIGNvbnN0IHJlY3QgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwicmVjdFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcInhcIiwgXCIwXCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieVwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBgJHt3aWR0aH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtoZWlnaHR9YCk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIHZpZXdCYWNrZ3JvdW5kQ29sb3IpO1xuICAgIHN2Z1Jvb3QuYXBwZW5kQ2hpbGQocmVjdCk7XG4gIH1cblxuICBjb25zdCByc3ZnID0gcm91Z2guc3ZnKHN2Z1Jvb3QpO1xuICByZW5kZXJTY2VuZVRvU3ZnKGVsZW1lbnRzLCByc3ZnLCBzdmdSb290LCBmaWxlcyB8fCB7fSwge1xuICAgIG9mZnNldFg6IC1taW5YICsgZXhwb3J0UGFkZGluZyxcbiAgICBvZmZzZXRZOiAtbWluWSArIGV4cG9ydFBhZGRpbmcsXG4gICAgZXhwb3J0V2l0aERhcmtNb2RlOiBhcHBTdGF0ZS5leHBvcnRXaXRoRGFya01vZGUsXG4gIH0pO1xuXG4gIHJldHVybiBzdmdSb290O1xufTtcblxuLy8gY2FsY3VsYXRlIHNtYWxsZXN0IGFyZWEgdG8gZml0IHRoZSBjb250ZW50cyBpblxuY29uc3QgZ2V0Q2FudmFzU2l6ZSA9IChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBleHBvcnRQYWRkaW5nOiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIGNvbnN0IHdpZHRoID0gZGlzdGFuY2UobWluWCwgbWF4WCkgKyBleHBvcnRQYWRkaW5nICogMjtcbiAgY29uc3QgaGVpZ2h0ID0gZGlzdGFuY2UobWluWSwgbWF4WSkgKyBleHBvcnRQYWRkaW5nICsgZXhwb3J0UGFkZGluZztcblxuICByZXR1cm4gW21pblgsIG1pblksIHdpZHRoLCBoZWlnaHRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV4cG9ydFNpemUgPSAoXG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXSxcbiAgZXhwb3J0UGFkZGluZzogbnVtYmVyLFxuICBzY2FsZTogbnVtYmVyLFxuKTogW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IFssICwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKS5tYXAoXG4gICAgKGRpbWVuc2lvbikgPT4gTWF0aC50cnVuYyhkaW1lbnNpb24gKiBzY2FsZSksXG4gICk7XG5cbiAgcmV0dXJuIFt3aWR0aCwgaGVpZ2h0XTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
|
|
3881
|
+
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\");\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\n\n\n\n\nconst SVG_EXPORT_TAG = `<!-- svg-source:excalidraw -->`;\nconst exportToCanvas = (elements, appState, files, { exportBackground, exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, }, createCanvas = (width, height) => {\n const canvas = document.createElement(\"canvas\");\n canvas.width = width * appState.exportScale;\n canvas.height = height * appState.exportScale;\n return { canvas, scale: appState.exportScale };\n}) => __awaiter(void 0, void 0, void 0, function* () {\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n const { canvas, scale = 1 } = createCanvas(width, height);\n const defaultAppState = (0,_appState__WEBPACK_IMPORTED_MODULE_5__.getDefaultAppState)();\n const { imageCache } = 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 (0,_renderer_renderScene__WEBPACK_IMPORTED_MODULE_2__.renderScene)({\n elements,\n appState,\n scale,\n rc: roughjs_bin_rough__WEBPACK_IMPORTED_MODULE_0__[\"default\"].canvas(canvas),\n canvas,\n renderConfig: {\n viewBackgroundColor: exportBackground ? viewBackgroundColor : null,\n scrollX: -minX + exportPadding,\n scrollY: -minY + exportPadding,\n zoom: defaultAppState.zoom,\n remotePointerViewportCoords: {},\n remoteSelectedElementIds: {},\n shouldCacheIgnoreZoom: false,\n remotePointerUsernames: {},\n remotePointerUserStates: {},\n theme: appState.exportWithDarkMode ? \"dark\" : \"light\",\n imageCache,\n renderScrollbars: false,\n renderSelection: false,\n renderGrid: false,\n isExporting: true,\n },\n });\n return canvas;\n});\nconst exportToSvg = (elements, appState, files) => __awaiter(void 0, void 0, void 0, function* () {\n const { exportPadding = _constants__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_EXPORT_PADDING, viewBackgroundColor, exportScale = 1, exportEmbedScene, } = appState;\n let metadata = \"\";\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: (0,_data_json__WEBPACK_IMPORTED_MODULE_6__.serializeAsJSON)(elements, appState, files || {}, \"local\"),\n });\n }\n catch (error) {\n console.error(error);\n }\n }\n const [minX, minY, width, height] = getCanvasSize(elements, exportPadding);\n // initialize SVG root\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 if (appState.exportWithDarkMode) {\n svgRoot.setAttribute(\"filter\", _constants__WEBPACK_IMPORTED_MODULE_4__.THEME_FILTER);\n }\n let assetPath = \"https://excalidraw.com/\";\n // Asset path needs to be determined only when using package\n if (true) {\n assetPath =\n window.EXCALIDRAW_ASSET_PATH ||\n `https://unpkg.com/${\"@excalidraw/excalidraw\"}@${\"0.14.1-6178-2acbae3\"}`;\n if (assetPath === null || assetPath === void 0 ? void 0 : assetPath.startsWith(\"/\")) {\n assetPath = assetPath.replace(\"/\", `${window.location.origin}/`);\n }\n assetPath = `${assetPath}/dist/excalidraw-assets/`;\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 </defs>\n `;\n // render background rect\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 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: -minX + exportPadding,\n offsetY: -minY + exportPadding,\n exportWithDarkMode: appState.exportWithDarkMode,\n });\n return svgRoot;\n});\n// calculate smallest area to fit the contents in\nconst getCanvasSize = (elements, exportPadding) => {\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) + exportPadding * 2;\n const height = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.distance)(minY, maxY) + exportPadding + exportPadding;\n return [minX, minY, width, height];\n};\nconst getExportSize = (elements, exportPadding, scale) => {\n const [, , width, height] = getCanvasSize(elements, exportPadding).map((dimension) => Math.trunc(dimension * scale));\n return [width, height];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Iiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3NjZW5lL2V4cG9ydC50cz85YmY3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByb3VnaCBmcm9tIFwicm91Z2hqcy9iaW4vcm91Z2hcIjtcbmltcG9ydCB7IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudCB9IGZyb20gXCIuLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRDb21tb25Cb3VuZHMgfSBmcm9tIFwiLi4vZWxlbWVudC9ib3VuZHNcIjtcbmltcG9ydCB7IHJlbmRlclNjZW5lLCByZW5kZXJTY2VuZVRvU3ZnIH0gZnJvbSBcIi4uL3JlbmRlcmVyL3JlbmRlclNjZW5lXCI7XG5pbXBvcnQgeyBkaXN0YW5jZSB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgQXBwU3RhdGUsIEJpbmFyeUZpbGVzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VYUE9SVF9QQURESU5HLCBTVkdfTlMsIFRIRU1FX0ZJTFRFUiB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGdldERlZmF1bHRBcHBTdGF0ZSB9IGZyb20gXCIuLi9hcHBTdGF0ZVwiO1xuaW1wb3J0IHsgc2VyaWFsaXplQXNKU09OIH0gZnJvbSBcIi4uL2RhdGEvanNvblwiO1xuaW1wb3J0IHtcbiAgZ2V0SW5pdGlhbGl6ZWRJbWFnZUVsZW1lbnRzLFxuICB1cGRhdGVJbWFnZUNhY2hlLFxufSBmcm9tIFwiLi4vZWxlbWVudC9pbWFnZVwiO1xuXG5leHBvcnQgY29uc3QgU1ZHX0VYUE9SVF9UQUcgPSBgPCEtLSBzdmctc291cmNlOmV4Y2FsaWRyYXcgLS0+YDtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvQ2FudmFzID0gYXN5bmMgKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGFwcFN0YXRlOiBBcHBTdGF0ZSxcbiAgZmlsZXM6IEJpbmFyeUZpbGVzLFxuICB7XG4gICAgZXhwb3J0QmFja2dyb3VuZCxcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICB9OiB7XG4gICAgZXhwb3J0QmFja2dyb3VuZDogYm9vbGVhbjtcbiAgICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgfSxcbiAgY3JlYXRlQ2FudmFzOiAoXG4gICAgd2lkdGg6IG51bWJlcixcbiAgICBoZWlnaHQ6IG51bWJlcixcbiAgKSA9PiB7IGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7IHNjYWxlOiBudW1iZXIgfSA9ICh3aWR0aCwgaGVpZ2h0KSA9PiB7XG4gICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgICBjYW52YXMud2lkdGggPSB3aWR0aCAqIGFwcFN0YXRlLmV4cG9ydFNjYWxlO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQgKiBhcHBTdGF0ZS5leHBvcnRTY2FsZTtcbiAgICByZXR1cm4geyBjYW52YXMsIHNjYWxlOiBhcHBTdGF0ZS5leHBvcnRTY2FsZSB9O1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCB3aWR0aCwgaGVpZ2h0XSA9IGdldENhbnZhc1NpemUoZWxlbWVudHMsIGV4cG9ydFBhZGRpbmcpO1xuXG4gIGNvbnN0IHsgY2FudmFzLCBzY2FsZSA9IDEgfSA9IGNyZWF0ZUNhbnZhcyh3aWR0aCwgaGVpZ2h0KTtcblxuICBjb25zdCBkZWZhdWx0QXBwU3RhdGUgPSBnZXREZWZhdWx0QXBwU3RhdGUoKTtcblxuICBjb25zdCB7IGltYWdlQ2FjaGUgfSA9IGF3YWl0IHVwZGF0ZUltYWdlQ2FjaGUoe1xuICAgIGltYWdlQ2FjaGU6IG5ldyBNYXAoKSxcbiAgICBmaWxlSWRzOiBnZXRJbml0aWFsaXplZEltYWdlRWxlbWVudHMoZWxlbWVudHMpLm1hcChcbiAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LmZpbGVJZCxcbiAgICApLFxuICAgIGZpbGVzLFxuICB9KTtcblxuICByZW5kZXJTY2VuZSh7XG4gICAgZWxlbWVudHMsXG4gICAgYXBwU3RhdGUsXG4gICAgc2NhbGUsXG4gICAgcmM6IHJvdWdoLmNhbnZhcyhjYW52YXMpLFxuICAgIGNhbnZhcyxcbiAgICByZW5kZXJDb25maWc6IHtcbiAgICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IGV4cG9ydEJhY2tncm91bmQgPyB2aWV3QmFja2dyb3VuZENvbG9yIDogbnVsbCxcbiAgICAgIHNjcm9sbFg6IC1taW5YICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIHNjcm9sbFk6IC1taW5ZICsgZXhwb3J0UGFkZGluZyxcbiAgICAgIHpvb206IGRlZmF1bHRBcHBTdGF0ZS56b29tLFxuICAgICAgcmVtb3RlUG9pbnRlclZpZXdwb3J0Q29vcmRzOiB7fSxcbiAgICAgIHJlbW90ZVNlbGVjdGVkRWxlbWVudElkczoge30sXG4gICAgICBzaG91bGRDYWNoZUlnbm9yZVpvb206IGZhbHNlLFxuICAgICAgcmVtb3RlUG9pbnRlclVzZXJuYW1lczoge30sXG4gICAgICByZW1vdGVQb2ludGVyVXNlclN0YXRlczoge30sXG4gICAgICB0aGVtZTogYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlID8gXCJkYXJrXCIgOiBcImxpZ2h0XCIsXG4gICAgICBpbWFnZUNhY2hlLFxuICAgICAgcmVuZGVyU2Nyb2xsYmFyczogZmFsc2UsXG4gICAgICByZW5kZXJTZWxlY3Rpb246IGZhbHNlLFxuICAgICAgcmVuZGVyR3JpZDogZmFsc2UsXG4gICAgICBpc0V4cG9ydGluZzogdHJ1ZSxcbiAgICB9LFxuICB9KTtcblxuICByZXR1cm4gY2FudmFzO1xufTtcblxuZXhwb3J0IGNvbnN0IGV4cG9ydFRvU3ZnID0gYXN5bmMgKFxuICBlbGVtZW50czogcmVhZG9ubHkgTm9uRGVsZXRlZEV4Y2FsaWRyYXdFbGVtZW50W10sXG4gIGFwcFN0YXRlOiB7XG4gICAgZXhwb3J0QmFja2dyb3VuZDogYm9vbGVhbjtcbiAgICBleHBvcnRQYWRkaW5nPzogbnVtYmVyO1xuICAgIGV4cG9ydFNjYWxlPzogbnVtYmVyO1xuICAgIHZpZXdCYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgICBleHBvcnRXaXRoRGFya01vZGU/OiBib29sZWFuO1xuICAgIGV4cG9ydEVtYmVkU2NlbmU/OiBib29sZWFuO1xuICB9LFxuICBmaWxlczogQmluYXJ5RmlsZXMgfCBudWxsLFxuKTogUHJvbWlzZTxTVkdTVkdFbGVtZW50PiA9PiB7XG4gIGNvbnN0IHtcbiAgICBleHBvcnRQYWRkaW5nID0gREVGQVVMVF9FWFBPUlRfUEFERElORyxcbiAgICB2aWV3QmFja2dyb3VuZENvbG9yLFxuICAgIGV4cG9ydFNjYWxlID0gMSxcbiAgICBleHBvcnRFbWJlZFNjZW5lLFxuICB9ID0gYXBwU3RhdGU7XG4gIGxldCBtZXRhZGF0YSA9IFwiXCI7XG4gIGlmIChleHBvcnRFbWJlZFNjZW5lKSB7XG4gICAgdHJ5IHtcbiAgICAgIG1ldGFkYXRhID0gYXdhaXQgKFxuICAgICAgICBhd2FpdCBpbXBvcnQoLyogd2VicGFja0NodW5rTmFtZTogXCJpbWFnZVwiICovIFwiLi4vLi4vc3JjL2RhdGEvaW1hZ2VcIilcbiAgICAgICkuZW5jb2RlU3ZnTWV0YWRhdGEoe1xuICAgICAgICB0ZXh0OiBzZXJpYWxpemVBc0pTT04oZWxlbWVudHMsIGFwcFN0YXRlLCBmaWxlcyB8fCB7fSwgXCJsb2NhbFwiKSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuICBjb25zdCBbbWluWCwgbWluWSwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKTtcblxuICAvLyBpbml0aWFsaXplIFNWRyByb290XG4gIGNvbnN0IHN2Z1Jvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05TLCBcInN2Z1wiKTtcbiAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJ2ZXJzaW9uXCIsIFwiMS4xXCIpO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcInhtbG5zXCIsIFNWR19OUyk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwidmlld0JveFwiLCBgMCAwICR7d2lkdGh9ICR7aGVpZ2h0fWApO1xuICBzdmdSb290LnNldEF0dHJpYnV0ZShcIndpZHRoXCIsIGAke3dpZHRoICogZXhwb3J0U2NhbGV9YCk7XG4gIHN2Z1Jvb3Quc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodCAqIGV4cG9ydFNjYWxlfWApO1xuICBpZiAoYXBwU3RhdGUuZXhwb3J0V2l0aERhcmtNb2RlKSB7XG4gICAgc3ZnUm9vdC5zZXRBdHRyaWJ1dGUoXCJmaWx0ZXJcIiwgVEhFTUVfRklMVEVSKTtcbiAgfVxuXG4gIGxldCBhc3NldFBhdGggPSBcImh0dHBzOi8vZXhjYWxpZHJhdy5jb20vXCI7XG5cbiAgLy8gQXNzZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkIG9ubHkgd2hlbiB1c2luZyBwYWNrYWdlXG4gIGlmIChwcm9jZXNzLmVudi5JU19FWENBTElEUkFXX05QTV9QQUNLQUdFKSB7XG4gICAgYXNzZXRQYXRoID1cbiAgICAgIHdpbmRvdy5FWENBTElEUkFXX0FTU0VUX1BBVEggfHxcbiAgICAgIGBodHRwczovL3VucGtnLmNvbS8ke3Byb2Nlc3MuZW52LlBLR19OQU1FfUAke3Byb2Nlc3MuZW52LlBLR19WRVJTSU9OfWA7XG5cbiAgICBpZiAoYXNzZXRQYXRoPy5zdGFydHNXaXRoKFwiL1wiKSkge1xuICAgICAgYXNzZXRQYXRoID0gYXNzZXRQYXRoLnJlcGxhY2UoXCIvXCIsIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59L2ApO1xuICAgIH1cbiAgICBhc3NldFBhdGggPSBgJHthc3NldFBhdGh9L2Rpc3QvZXhjYWxpZHJhdy1hc3NldHMvYDtcbiAgfVxuICBzdmdSb290LmlubmVySFRNTCA9IGBcbiAgJHtTVkdfRVhQT1JUX1RBR31cbiAgJHttZXRhZGF0YX1cbiAgPGRlZnM+XG4gICAgPHN0eWxlIGNsYXNzPVwic3R5bGUtZm9udHNcIj5cbiAgICAgIEBmb250LWZhY2Uge1xuICAgICAgICBmb250LWZhbWlseTogXCJWaXJnaWxcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1WaXJnaWwud29mZjJcIik7XG4gICAgICB9XG4gICAgICBAZm9udC1mYWNlIHtcbiAgICAgICAgZm9udC1mYW1pbHk6IFwiQ2FzY2FkaWFcIjtcbiAgICAgICAgc3JjOiB1cmwoXCIke2Fzc2V0UGF0aH1DYXNjYWRpYS53b2ZmMlwiKTtcbiAgICAgIH1cbiAgICA8L3N0eWxlPlxuICA8L2RlZnM+XG4gIGA7XG4gIC8vIHJlbmRlciBiYWNrZ3JvdW5kIHJlY3RcbiAgaWYgKGFwcFN0YXRlLmV4cG9ydEJhY2tncm91bmQgJiYgdmlld0JhY2tncm91bmRDb2xvcikge1xuICAgIGNvbnN0IHJlY3QgPSBzdmdSb290Lm93bmVyRG9jdW1lbnQhLmNyZWF0ZUVsZW1lbnROUyhTVkdfTlMsIFwicmVjdFwiKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcInhcIiwgXCIwXCIpO1xuICAgIHJlY3Quc2V0QXR0cmlidXRlKFwieVwiLCBcIjBcIik7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJ3aWR0aFwiLCBgJHt3aWR0aH1gKTtcbiAgICByZWN0LnNldEF0dHJpYnV0ZShcImhlaWdodFwiLCBgJHtoZWlnaHR9YCk7XG4gICAgcmVjdC5zZXRBdHRyaWJ1dGUoXCJmaWxsXCIsIHZpZXdCYWNrZ3JvdW5kQ29sb3IpO1xuICAgIHN2Z1Jvb3QuYXBwZW5kQ2hpbGQocmVjdCk7XG4gIH1cblxuICBjb25zdCByc3ZnID0gcm91Z2guc3ZnKHN2Z1Jvb3QpO1xuICByZW5kZXJTY2VuZVRvU3ZnKGVsZW1lbnRzLCByc3ZnLCBzdmdSb290LCBmaWxlcyB8fCB7fSwge1xuICAgIG9mZnNldFg6IC1taW5YICsgZXhwb3J0UGFkZGluZyxcbiAgICBvZmZzZXRZOiAtbWluWSArIGV4cG9ydFBhZGRpbmcsXG4gICAgZXhwb3J0V2l0aERhcmtNb2RlOiBhcHBTdGF0ZS5leHBvcnRXaXRoRGFya01vZGUsXG4gIH0pO1xuXG4gIHJldHVybiBzdmdSb290O1xufTtcblxuLy8gY2FsY3VsYXRlIHNtYWxsZXN0IGFyZWEgdG8gZml0IHRoZSBjb250ZW50cyBpblxuY29uc3QgZ2V0Q2FudmFzU2l6ZSA9IChcbiAgZWxlbWVudHM6IHJlYWRvbmx5IE5vbkRlbGV0ZWRFeGNhbGlkcmF3RWxlbWVudFtdLFxuICBleHBvcnRQYWRkaW5nOiBudW1iZXIsXG4pOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSA9IGdldENvbW1vbkJvdW5kcyhlbGVtZW50cyk7XG4gIGNvbnN0IHdpZHRoID0gZGlzdGFuY2UobWluWCwgbWF4WCkgKyBleHBvcnRQYWRkaW5nICogMjtcbiAgY29uc3QgaGVpZ2h0ID0gZGlzdGFuY2UobWluWSwgbWF4WSkgKyBleHBvcnRQYWRkaW5nICsgZXhwb3J0UGFkZGluZztcblxuICByZXR1cm4gW21pblgsIG1pblksIHdpZHRoLCBoZWlnaHRdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEV4cG9ydFNpemUgPSAoXG4gIGVsZW1lbnRzOiByZWFkb25seSBOb25EZWxldGVkRXhjYWxpZHJhd0VsZW1lbnRbXSxcbiAgZXhwb3J0UGFkZGluZzogbnVtYmVyLFxuICBzY2FsZTogbnVtYmVyLFxuKTogW251bWJlciwgbnVtYmVyXSA9PiB7XG4gIGNvbnN0IFssICwgd2lkdGgsIGhlaWdodF0gPSBnZXRDYW52YXNTaXplKGVsZW1lbnRzLCBleHBvcnRQYWRkaW5nKS5tYXAoXG4gICAgKGRpbWVuc2lvbikgPT4gTWF0aC50cnVuYyhkaW1lbnNpb24gKiBzY2FsZSksXG4gICk7XG5cbiAgcmV0dXJuIFt3aWR0aCwgaGVpZ2h0XTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../scene/export.ts\n");
|
|
3871
3882
|
|
|
3872
3883
|
/***/ }),
|
|
3873
3884
|
|
|
@@ -3955,7 +3966,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
3955
3966
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
3956
3967
|
|
|
3957
3968
|
"use strict";
|
|
3958
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"allowFullScreen\": () => (/* binding */ allowFullScreen),\n/* harmony export */ \"arrayToMap\": () => (/* binding */ arrayToMap),\n/* harmony export */ \"bytesToHexString\": () => (/* binding */ bytesToHexString),\n/* harmony export */ \"capitalizeString\": () => (/* binding */ capitalizeString),\n/* harmony export */ \"chunk\": () => (/* binding */ chunk),\n/* harmony export */ \"composeEventHandlers\": () => (/* binding */ composeEventHandlers),\n/* harmony export */ \"debounce\": () => (/* binding */ debounce),\n/* harmony export */ \"distance\": () => (/* binding */ distance),\n/* harmony export */ \"exitFullScreen\": () => (/* binding */ exitFullScreen),\n/* harmony export */ \"findIndex\": () => (/* binding */ findIndex),\n/* harmony export */ \"findLastIndex\": () => (/* binding */ findLastIndex),\n/* harmony export */ \"focusNearestParent\": () => (/* binding */ focusNearestParent),\n/* harmony export */ \"getDateTime\": () => (/* binding */ getDateTime),\n/* harmony export */ \"getFontFamilyString\": () => (/* binding */ getFontFamilyString),\n/* harmony export */ \"getFontString\": () => (/* binding */ getFontString),\n/* harmony export */ \"getFrame\": () => (/* binding */ getFrame),\n/* harmony export */ \"getGlobalCSSVariable\": () => (/* binding */ getGlobalCSSVariable),\n/* harmony export */ \"getNearestScrollableContainer\": () => (/* binding */ getNearestScrollableContainer),\n/* harmony export */ \"getShortcutKey\": () => (/* binding */ getShortcutKey),\n/* harmony export */ \"getUpdatedTimestamp\": () => (/* binding */ getUpdatedTimestamp),\n/* harmony export */ \"getVersion\": () => (/* binding */ getVersion),\n/* harmony export */ \"isFullScreen\": () => (/* binding */ isFullScreen),\n/* harmony export */ \"isInputLike\": () => (/* binding */ isInputLike),\n/* harmony export */ \"isPrimitive\": () => (/* binding */ isPrimitive),\n/* harmony export */ \"isProdEnv\": () => (/* binding */ isProdEnv),\n/* harmony export */ \"isPromiseLike\": () => (/* binding */ isPromiseLike),\n/* harmony export */ \"isRTL\": () => (/* binding */ isRTL),\n/* harmony export */ \"isShallowEqual\": () => (/* binding */ isShallowEqual),\n/* harmony export */ \"isTestEnv\": () => (/* binding */ isTestEnv),\n/* harmony export */ \"isToolIcon\": () => (/* binding */ isToolIcon),\n/* harmony export */ \"isTransparent\": () => (/* binding */ isTransparent),\n/* harmony export */ \"isWritableElement\": () => (/* binding */ isWritableElement),\n/* harmony export */ \"muteFSAbortError\": () => (/* binding */ muteFSAbortError),\n/* harmony export */ \"nFormatter\": () => (/* binding */ nFormatter),\n/* harmony export */ \"preventUnload\": () => (/* binding */ preventUnload),\n/* harmony export */ \"queryFocusableElements\": () => (/* binding */ queryFocusableElements),\n/* harmony export */ \"removeSelection\": () => (/* binding */ removeSelection),\n/* harmony export */ \"resetCursor\": () => (/* binding */ resetCursor),\n/* harmony export */ \"resolvablePromise\": () => (/* binding */ resolvablePromise),\n/* harmony export */ \"sceneCoordsToViewportCoords\": () => (/* binding */ sceneCoordsToViewportCoords),\n/* harmony export */ \"selectNode\": () => (/* binding */ selectNode),\n/* harmony export */ \"setCursor\": () => (/* binding */ setCursor),\n/* harmony export */ \"setCursorForShape\": () => (/* binding */ setCursorForShape),\n/* harmony export */ \"setDateTimeForTests\": () => (/* binding */ setDateTimeForTests),\n/* harmony export */ \"setEraserCursor\": () => (/* binding */ setEraserCursor),\n/* harmony export */ \"supportsEmoji\": () => (/* binding */ supportsEmoji),\n/* harmony export */ \"throttleRAF\": () => (/* binding */ throttleRAF),\n/* harmony export */ \"tupleToCoors\": () => (/* binding */ tupleToCoors),\n/* harmony export */ \"updateActiveTool\": () => (/* binding */ updateActiveTool),\n/* harmony export */ \"updateObject\": () => (/* binding */ updateObject),\n/* harmony export */ \"viewportCoordsToSceneCoords\": () => (/* binding */ viewportCoordsToSceneCoords),\n/* harmony export */ \"withBatchedUpdates\": () => (/* binding */ withBatchedUpdates),\n/* harmony export */ \"withBatchedUpdatesThrottled\": () => (/* binding */ withBatchedUpdatesThrottled),\n/* harmony export */ \"wrapEvent\": () => (/* binding */ wrapEvent)\n/* harmony export */ });\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ \"../../colors.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"../../constants.ts\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./appState */ \"../../appState.ts\");\n\n\n\n\n\nlet mockDateTime = null;\nconst setDateTimeForTests = (dateTime) => {\n mockDateTime = dateTime;\n};\nconst getDateTime = () => {\n if (mockDateTime) {\n return mockDateTime;\n }\n const date = new Date();\n const year = date.getFullYear();\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const hr = `${date.getHours()}`.padStart(2, \"0\");\n const min = `${date.getMinutes()}`.padStart(2, \"0\");\n return `${year}-${month}-${day}-${hr}${min}`;\n};\nconst capitalizeString = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nconst isToolIcon = (target) => target instanceof HTMLElement && target.className.includes(\"ToolIcon\");\nconst isInputLike = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement;\nconst isWritableElement = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLTextAreaElement ||\n (target instanceof HTMLInputElement &&\n (target.type === \"text\" || target.type === \"number\"));\nconst getFontFamilyString = ({ fontFamily, }) => {\n for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY)) {\n if (id === fontFamily) {\n return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT}`;\n }\n }\n return _constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT;\n};\n/** returns fontSize+fontFamily string for assignment to DOM elements */\nconst getFontString = ({ fontSize, fontFamily, }) => {\n return `${fontSize}px ${getFontFamilyString({ fontFamily })}`;\n};\nconst debounce = (fn, timeout) => {\n let handle = 0;\n let lastArgs = null;\n const ret = (...args) => {\n lastArgs = args;\n clearTimeout(handle);\n handle = window.setTimeout(() => {\n lastArgs = null;\n fn(...args);\n }, timeout);\n };\n ret.flush = () => {\n clearTimeout(handle);\n if (lastArgs) {\n const _lastArgs = lastArgs;\n lastArgs = null;\n fn(..._lastArgs);\n }\n };\n ret.cancel = () => {\n lastArgs = null;\n clearTimeout(handle);\n };\n return ret;\n};\n// throttle callback to execute once per animation frame\nconst throttleRAF = (fn, opts) => {\n let timerId = null;\n let lastArgs = null;\n let lastArgsTrailing = null;\n const scheduleFunc = (args) => {\n timerId = window.requestAnimationFrame(() => {\n timerId = null;\n fn(...args);\n lastArgs = null;\n if (lastArgsTrailing) {\n lastArgs = lastArgsTrailing;\n lastArgsTrailing = null;\n scheduleFunc(lastArgs);\n }\n });\n };\n const ret = (...args) => {\n if (false) {}\n lastArgs = args;\n if (timerId === null) {\n scheduleFunc(lastArgs);\n }\n else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\n lastArgsTrailing = args;\n }\n };\n ret.flush = () => {\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n if (lastArgs) {\n fn(...(lastArgsTrailing || lastArgs));\n lastArgs = lastArgsTrailing = null;\n }\n };\n ret.cancel = () => {\n lastArgs = lastArgsTrailing = null;\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n };\n return ret;\n};\n// https://github.com/lodash/lodash/blob/es/chunk.js\nconst chunk = (array, size) => {\n if (!array.length || size < 1) {\n return [];\n }\n let index = 0;\n let resIndex = 0;\n const result = Array(Math.ceil(array.length / size));\n while (index < array.length) {\n result[resIndex++] = array.slice(index, (index += size));\n }\n return result;\n};\nconst selectNode = (node) => {\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n};\nconst removeSelection = () => {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n};\nconst distance = (x, y) => Math.abs(x - y);\nconst updateActiveTool = (appState, data) => {\n if (data.type === \"custom\") {\n return Object.assign(Object.assign({}, appState.activeTool), { type: \"custom\", customType: data.customType });\n }\n return Object.assign(Object.assign({}, appState.activeTool), { lastActiveTool: data.lastActiveToolBeforeEraser === undefined\n ? appState.activeTool.lastActiveTool\n : data.lastActiveToolBeforeEraser, type: data.type, customType: null });\n};\nconst resetCursor = (canvas) => {\n if (canvas) {\n canvas.style.cursor = \"\";\n }\n};\nconst setCursor = (canvas, cursor) => {\n if (canvas) {\n canvas.style.cursor = cursor;\n }\n};\nlet eraserCanvasCache;\nlet previewDataURL;\nconst setEraserCursor = (canvas, theme) => {\n const cursorImageSizePx = 20;\n const drawCanvas = () => {\n const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_2__.THEME.DARK;\n eraserCanvasCache = document.createElement(\"canvas\");\n eraserCanvasCache.theme = theme;\n eraserCanvasCache.height = cursorImageSizePx;\n eraserCanvasCache.width = cursorImageSizePx;\n const context = eraserCanvasCache.getContext(\"2d\");\n context.lineWidth = 1;\n context.beginPath();\n context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\n context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.black : open_color__WEBPACK_IMPORTED_MODULE_0__.white;\n context.fill();\n context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.white : open_color__WEBPACK_IMPORTED_MODULE_0__.black;\n context.stroke();\n previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.svg);\n };\n if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\n drawCanvas();\n }\n setCursor(canvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\n};\nconst setCursorForShape = (canvas, appState) => {\n if (!canvas) {\n return;\n }\n if (appState.activeTool.type === \"selection\") {\n resetCursor(canvas);\n }\n else if ((0,_appState__WEBPACK_IMPORTED_MODULE_4__.isHandToolActive)(appState)) {\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_2__.CURSOR_TYPE.GRAB;\n }\n else if ((0,_appState__WEBPACK_IMPORTED_MODULE_4__.isEraserActive)(appState)) {\n setEraserCursor(canvas, appState.theme);\n // do nothing if image tool is selected which suggests there's\n // a image-preview set as the cursor\n // Ignore custom type as well and let host decide\n }\n else if (![\"image\", \"custom\"].includes(appState.activeTool.type)) {\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_2__.CURSOR_TYPE.CROSSHAIR;\n }\n};\nconst isFullScreen = () => { var _a; return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === \"HTML\"; };\nconst allowFullScreen = () => document.documentElement.requestFullscreen();\nconst exitFullScreen = () => document.exitFullscreen();\nconst getShortcutKey = (shortcut) => {\n shortcut = shortcut\n .replace(/\\bAlt\\b/i, \"Alt\")\n .replace(/\\bShift\\b/i, \"Shift\")\n .replace(/\\b(Enter|Return)\\b/i, \"Enter\");\n if (_constants__WEBPACK_IMPORTED_MODULE_2__.isDarwin) {\n return shortcut\n .replace(/\\bCtrlOrCmd\\b/gi, \"Cmd\")\n .replace(/\\bAlt\\b/i, \"Option\");\n }\n return shortcut.replace(/\\bCtrlOrCmd\\b/gi, \"Ctrl\");\n};\nconst viewportCoordsToSceneCoords = ({ clientX, clientY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const x = (clientX - offsetLeft) / zoom.value - scrollX;\n const y = (clientY - offsetTop) / zoom.value - scrollY;\n return { x, y };\n};\nconst sceneCoordsToViewportCoords = ({ sceneX, sceneY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const x = (sceneX + scrollX) * zoom.value + offsetLeft;\n const y = (sceneY + scrollY) * zoom.value + offsetTop;\n return { x, y };\n};\nconst getGlobalCSSVariable = (name) => getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\nconst RS_LTR_CHARS = \"A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\" +\n \"\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF\";\nconst RS_RTL_CHARS = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\n/**\n * Checks whether first directional character is RTL. Meaning whether it starts\n * with RTL characters, or indeterminate (numbers etc.) characters followed by\n * RTL.\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\n */\nconst isRTL = (text) => RE_RTL_CHECK.test(text);\nconst tupleToCoors = (xyTuple) => {\n const [x, y] = xyTuple;\n return { x, y };\n};\n/** use as a rejectionHandler to mute filesystem Abort errors */\nconst muteFSAbortError = (error) => {\n if ((error === null || error === void 0 ? void 0 : error.name) === \"AbortError\") {\n console.warn(error);\n return;\n }\n throw error;\n};\nconst findIndex = (array, cb, fromIndex = 0) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\n let index = fromIndex - 1;\n while (++index < array.length) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst findLastIndex = (array, cb, fromIndex = array.length - 1) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\n let index = fromIndex + 1;\n while (--index > -1) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst isTransparent = (color) => {\n const isRGBTransparent = color.length === 5 && color.substr(4, 1) === \"0\";\n const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === \"00\";\n return (isRGBTransparent ||\n isRRGGBBTransparent ||\n color === _colors__WEBPACK_IMPORTED_MODULE_1__[\"default\"].elementBackground[0]);\n};\nconst resolvablePromise = () => {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n promise.resolve = resolve;\n promise.reject = reject;\n return promise;\n};\n/**\n * @param func handler taking at most single parameter (event).\n */\nconst withBatchedUpdates = (func) => ((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n});\n/**\n * barches React state updates and throttles the calls to a single call per\n * animation frame\n */\nconst withBatchedUpdatesThrottled = (func) => {\n // @ts-ignore\n return throttleRAF(((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n }));\n};\n//https://stackoverflow.com/a/9462382/8418\nconst nFormatter = (num, digits) => {\n const si = [\n { value: 1, symbol: \"b\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"M\" },\n { value: 1e9, symbol: \"G\" },\n ];\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n let index;\n for (index = si.length - 1; index > 0; index--) {\n if (num >= si[index].value) {\n break;\n }\n }\n return ((num / si[index].value).toFixed(digits).replace(rx, \"$1\") + si[index].symbol);\n};\nconst getVersion = () => {\n var _a;\n return (((_a = document.querySelector('meta[name=\"version\"]')) === null || _a === void 0 ? void 0 : _a.content) ||\n _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_VERSION);\n};\n// Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\nconst supportsEmoji = () => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return false;\n }\n const offset = 12;\n ctx.fillStyle = \"#f00\";\n ctx.textBaseline = \"top\";\n ctx.font = \"32px Arial\";\n // Modernizr used 🐨, but it is sort of supported on Windows 7.\n // Luckily 😀 isn't supported.\n ctx.fillText(\"😀\", 0, 0);\n return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\n};\nconst getNearestScrollableContainer = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent === document.body) {\n return document;\n }\n const { overflowY } = window.getComputedStyle(parent);\n const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\n if (hasScrollableContent &&\n (overflowY === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowY === \"overlay\")) {\n return parent;\n }\n parent = parent.parentElement;\n }\n return document;\n};\nconst focusNearestParent = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent.tabIndex > -1) {\n parent.focus();\n return;\n }\n parent = parent.parentElement;\n }\n};\nconst preventUnload = (event) => {\n event.preventDefault();\n // NOTE: modern browsers no longer allow showing a custom message here\n event.returnValue = \"\";\n};\nconst bytesToHexString = (bytes) => {\n return Array.from(bytes)\n .map((byte) => `0${byte.toString(16)}`.slice(-2))\n .join(\"\");\n};\nconst getUpdatedTimestamp = () => (isTestEnv() ? 1 : Date.now());\n/**\n * Transforms array of objects containing `id` attribute,\n * or array of ids (strings), into a Map, keyd by `id`.\n */\nconst arrayToMap = (items) => {\n return items.reduce((acc, element) => {\n acc.set(typeof element === \"string\" ? element : element.id, element);\n return acc;\n }, new Map());\n};\nconst isTestEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-cc37e69\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"test\"; };\nconst isProdEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-cc37e69\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"production\"; };\nconst wrapEvent = (name, nativeEvent) => {\n return new CustomEvent(name, {\n detail: {\n nativeEvent,\n },\n cancelable: true,\n });\n};\nconst updateObject = (obj, updates) => {\n let didChange = false;\n for (const key in updates) {\n const value = updates[key];\n if (typeof value !== \"undefined\") {\n if (obj[key] === value &&\n // if object, always update because its attrs could have changed\n (typeof value !== \"object\" || value === null)) {\n continue;\n }\n didChange = true;\n }\n }\n if (!didChange) {\n return obj;\n }\n return Object.assign(Object.assign({}, obj), updates);\n};\nconst isPrimitive = (val) => {\n const type = typeof val;\n return val == null || (type !== \"object\" && type !== \"function\");\n};\nconst getFrame = () => {\n try {\n return window.self === window.top ? \"top\" : \"iframe\";\n }\n catch (error) {\n return \"iframe\";\n }\n};\nconst isPromiseLike = (value) => {\n return (!!value &&\n typeof value === \"object\" &&\n \"then\" in value &&\n \"catch\" in value &&\n \"finally\" in value);\n};\nconst queryFocusableElements = (container) => {\n const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll(\"button, a, input, select, textarea, div[tabindex], label[tabindex]\");\n return focusableElements\n ? Array.from(focusableElements).filter((element) => element.tabIndex > -1 && !element.disabled)\n : [];\n};\nconst isShallowEqual = (objA, objB) => {\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objA);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every((key) => objA[key] === objB[key]);\n};\n// taken from Radix UI\n// https://github.com/radix-ui/primitives/blob/main/packages/core/primitive/src/primitive.tsx\nconst composeEventHandlers = (originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) => {\n return function handleEvent(event) {\n originalEventHandler === null || originalEventHandler === void 0 ? void 0 : originalEventHandler(event);\n if (!checkForDefaultPrevented ||\n !event.defaultPrevented) {\n return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFFRixzQkFBc0I7QUFDdEIsNkZBQTZGO0FBQ3RGLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsb0JBQXlDLEVBQ3pDLGVBQW9DLEVBQ3BDLEVBQUUsd0JBQXdCLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUN4QyxFQUFFO0lBQ0YsT0FBTyxTQUFTLFdBQVcsQ0FBQyxLQUFRO1FBQ2xDLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFHLEtBQUssQ0FBQyxDQUFDO1FBRTlCLElBQ0UsQ0FBQyx3QkFBd0I7WUFDekIsQ0FBRSxLQUEwQixDQUFDLGdCQUFnQixFQUM3QztZQUNBLE9BQU8sZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3V0aWxzLnRzPzc2M2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9jIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcIi4vY29sb3JzXCI7XG5pbXBvcnQge1xuICBDVVJTT1JfVFlQRSxcbiAgREVGQVVMVF9WRVJTSU9OLFxuICBFVkVOVCxcbiAgRk9OVF9GQU1JTFksXG4gIGlzRGFyd2luLFxuICBNSU1FX1RZUEVTLFxuICBUSEVNRSxcbiAgV0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05ULFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEZvbnRGYW1pbHlWYWx1ZXMsIEZvbnRTdHJpbmcgfSBmcm9tIFwiLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgRGF0YVVSTCwgTGFzdEFjdGl2ZVRvb2wsIFpvb20gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBTSEFQRVMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB7IGlzRXJhc2VyQWN0aXZlLCBpc0hhbmRUb29sQWN0aXZlIH0gZnJvbSBcIi4vYXBwU3RhdGVcIjtcblxubGV0IG1vY2tEYXRlVGltZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBjb25zdCBzZXREYXRlVGltZUZvclRlc3RzID0gKGRhdGVUaW1lOiBzdHJpbmcpID0+IHtcbiAgbW9ja0RhdGVUaW1lID0gZGF0ZVRpbWU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0ZVRpbWUgPSAoKSA9PiB7XG4gIGlmIChtb2NrRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gbW9ja0RhdGVUaW1lO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoID0gYCR7ZGF0ZS5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgY29uc3QgZGF5ID0gYCR7ZGF0ZS5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCBcIjBcIik7XG4gIGNvbnN0IGhyID0gYCR7ZGF0ZS5nZXRIb3VycygpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICBjb25zdCBtaW4gPSBgJHtkYXRlLmdldE1pbnV0ZXMoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcblxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9LSR7aHJ9JHttaW59YDtcbn07XG5cbmV4cG9ydCBjb25zdCBjYXBpdGFsaXplU3RyaW5nID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG5cbmV4cG9ydCBjb25zdCBpc1Rvb2xJY29uID0gKFxuICB0YXJnZXQ6IEVsZW1lbnQgfCBFdmVudFRhcmdldCB8IG51bGwsXG4pOiB0YXJnZXQgaXMgSFRNTEVsZW1lbnQgPT5cbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgdGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRvb2xJY29uXCIpO1xuXG5leHBvcnQgY29uc3QgaXNJbnB1dExpa2UgPSAoXG4gIHRhcmdldDogRWxlbWVudCB8IEV2ZW50VGFyZ2V0IHwgbnVsbCxcbik6IHRhcmdldCBpc1xuICB8IEhUTUxJbnB1dEVsZW1lbnRcbiAgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gIHwgSFRNTFNlbGVjdEVsZW1lbnRcbiAgfCBIVE1MQlJFbGVtZW50XG4gIHwgSFRNTERpdkVsZW1lbnQgPT5cbiAgKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5kYXRhc2V0LnR5cGUgPT09IFwid3lzaXd5Z1wiKSB8fFxuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MQlJFbGVtZW50IHx8IC8vIG5ld2xpbmUgaW4gd3lzaXd5Z1xuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8XG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgfHxcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQ7XG5cbmV4cG9ydCBjb25zdCBpc1dyaXRhYmxlRWxlbWVudCA9IChcbiAgdGFyZ2V0OiBFbGVtZW50IHwgRXZlbnRUYXJnZXQgfCBudWxsLFxuKTogdGFyZ2V0IGlzXG4gIHwgSFRNTElucHV0RWxlbWVudFxuICB8IEhUTUxUZXh0QXJlYUVsZW1lbnRcbiAgfCBIVE1MQlJFbGVtZW50XG4gIHwgSFRNTERpdkVsZW1lbnQgPT5cbiAgKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5kYXRhc2V0LnR5cGUgPT09IFwid3lzaXd5Z1wiKSB8fFxuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MQlJFbGVtZW50IHx8IC8vIG5ld2xpbmUgaW4gd3lzaXd5Z1xuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8XG4gICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgKHRhcmdldC50eXBlID09PSBcInRleHRcIiB8fCB0YXJnZXQudHlwZSA9PT0gXCJudW1iZXJcIikpO1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9udEZhbWlseVN0cmluZyA9ICh7XG4gIGZvbnRGYW1pbHksXG59OiB7XG4gIGZvbnRGYW1pbHk6IEZvbnRGYW1pbHlWYWx1ZXM7XG59KSA9PiB7XG4gIGZvciAoY29uc3QgW2ZvbnRGYW1pbHlTdHJpbmcsIGlkXSBvZiBPYmplY3QuZW50cmllcyhGT05UX0ZBTUlMWSkpIHtcbiAgICBpZiAoaWQgPT09IGZvbnRGYW1pbHkpIHtcbiAgICAgIHJldHVybiBgJHtmb250RmFtaWx5U3RyaW5nfSwgJHtXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlR9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFdJTkRPV1NfRU1PSklfRkFMTEJBQ0tfRk9OVDtcbn07XG5cbi8qKiByZXR1cm5zIGZvbnRTaXplK2ZvbnRGYW1pbHkgc3RyaW5nIGZvciBhc3NpZ25tZW50IHRvIERPTSBlbGVtZW50cyAqL1xuZXhwb3J0IGNvbnN0IGdldEZvbnRTdHJpbmcgPSAoe1xuICBmb250U2l6ZSxcbiAgZm9udEZhbWlseSxcbn06IHtcbiAgZm9udFNpemU6IG51bWJlcjtcbiAgZm9udEZhbWlseTogRm9udEZhbWlseVZhbHVlcztcbn0pID0+IHtcbiAgcmV0dXJuIGAke2ZvbnRTaXplfXB4ICR7Z2V0Rm9udEZhbWlseVN0cmluZyh7IGZvbnRGYW1pbHkgfSl9YCBhcyBGb250U3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gPFQgZXh0ZW5kcyBhbnlbXT4oXG4gIGZuOiAoLi4uYXJnczogVCkgPT4gdm9pZCxcbiAgdGltZW91dDogbnVtYmVyLFxuKSA9PiB7XG4gIGxldCBoYW5kbGUgPSAwO1xuICBsZXQgbGFzdEFyZ3M6IFQgfCBudWxsID0gbnVsbDtcbiAgY29uc3QgcmV0ID0gKC4uLmFyZ3M6IFQpID0+IHtcbiAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gICAgaGFuZGxlID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgZm4oLi4uYXJncyk7XG4gICAgfSwgdGltZW91dCk7XG4gIH07XG4gIHJldC5mbHVzaCA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgICBpZiAobGFzdEFyZ3MpIHtcbiAgICAgIGNvbnN0IF9sYXN0QXJncyA9IGxhc3RBcmdzO1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgZm4oLi4uX2xhc3RBcmdzKTtcbiAgICB9XG4gIH07XG4gIHJldC5jYW5jZWwgPSAoKSA9PiB7XG4gICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgIGNsZWFyVGltZW91dChoYW5kbGUpO1xuICB9O1xuICByZXR1cm4gcmV0O1xufTtcblxuLy8gdGhyb3R0bGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBvbmNlIHBlciBhbmltYXRpb24gZnJhbWVcbmV4cG9ydCBjb25zdCB0aHJvdHRsZVJBRiA9IDxUIGV4dGVuZHMgYW55W10+KFxuICBmbjogKC4uLmFyZ3M6IFQpID0+IHZvaWQsXG4gIG9wdHM/OiB7IHRyYWlsaW5nPzogYm9vbGVhbiB9LFxuKSA9PiB7XG4gIGxldCB0aW1lcklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IGxhc3RBcmdzOiBUIHwgbnVsbCA9IG51bGw7XG4gIGxldCBsYXN0QXJnc1RyYWlsaW5nOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3Qgc2NoZWR1bGVGdW5jID0gKGFyZ3M6IFQpID0+IHtcbiAgICB0aW1lcklkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgaWYgKGxhc3RBcmdzVHJhaWxpbmcpIHtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0QXJnc1RyYWlsaW5nO1xuICAgICAgICBsYXN0QXJnc1RyYWlsaW5nID0gbnVsbDtcbiAgICAgICAgc2NoZWR1bGVGdW5jKGxhc3RBcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZXQgPSAoLi4uYXJnczogVCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgaWYgKHRpbWVySWQgPT09IG51bGwpIHtcbiAgICAgIHNjaGVkdWxlRnVuYyhsYXN0QXJncyk7XG4gICAgfSBlbHNlIGlmIChvcHRzPy50cmFpbGluZykge1xuICAgICAgbGFzdEFyZ3NUcmFpbGluZyA9IGFyZ3M7XG4gICAgfVxuICB9O1xuICByZXQuZmx1c2ggPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChsYXN0QXJncykge1xuICAgICAgZm4oLi4uKGxhc3RBcmdzVHJhaWxpbmcgfHwgbGFzdEFyZ3MpKTtcbiAgICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgfVxuICB9O1xuICByZXQuY2FuY2VsID0gKCkgPT4ge1xuICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuICB9O1xuICByZXR1cm4gcmV0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9lcy9jaHVuay5qc1xuZXhwb3J0IGNvbnN0IGNodW5rID0gPFQgZXh0ZW5kcyBhbnk+KFxuICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICBzaXplOiBudW1iZXIsXG4pOiBUW11bXSA9PiB7XG4gIGlmICghYXJyYXkubGVuZ3RoIHx8IHNpemUgPCAxKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCByZXNJbmRleCA9IDA7XG4gIGNvbnN0IHJlc3VsdCA9IEFycmF5KE1hdGguY2VpbChhcnJheS5sZW5ndGggLyBzaXplKSk7XG4gIHdoaWxlIChpbmRleCA8IGFycmF5Lmxlbmd0aCkge1xuICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGFycmF5LnNsaWNlKGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0Tm9kZSA9IChub2RlOiBFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKHNlbGVjdGlvbikge1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3Rpb24gPSAoKSA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKHNlbGVjdGlvbikge1xuICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiBNYXRoLmFicyh4IC0geSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY3RpdmVUb29sID0gKFxuICBhcHBTdGF0ZTogUGljazxBcHBTdGF0ZSwgXCJhY3RpdmVUb29sXCI+LFxuICBkYXRhOiAoXG4gICAgfCB7IHR5cGU6IHR5cGVvZiBTSEFQRVNbbnVtYmVyXVtcInZhbHVlXCJdIHwgXCJlcmFzZXJcIiB8IFwiaGFuZFwiIH1cbiAgICB8IHsgdHlwZTogXCJjdXN0b21cIjsgY3VzdG9tVHlwZTogc3RyaW5nIH1cbiAgKSAmIHsgbGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXI/OiBMYXN0QWN0aXZlVG9vbCB9LFxuKTogQXBwU3RhdGVbXCJhY3RpdmVUb29sXCJdID0+IHtcbiAgaWYgKGRhdGEudHlwZSA9PT0gXCJjdXN0b21cIikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5hcHBTdGF0ZS5hY3RpdmVUb29sLFxuICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgIGN1c3RvbVR5cGU6IGRhdGEuY3VzdG9tVHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5hcHBTdGF0ZS5hY3RpdmVUb29sLFxuICAgIGxhc3RBY3RpdmVUb29sOlxuICAgICAgZGF0YS5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gYXBwU3RhdGUuYWN0aXZlVG9vbC5sYXN0QWN0aXZlVG9vbFxuICAgICAgICA6IGRhdGEubGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXIsXG4gICAgdHlwZTogZGF0YS50eXBlLFxuICAgIGN1c3RvbVR5cGU6IG51bGwsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRDdXJzb3IgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwpID0+IHtcbiAgaWYgKGNhbnZhcykge1xuICAgIGNhbnZhcy5zdHlsZS5jdXJzb3IgPSBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yID0gKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsLCBjdXJzb3I6IHN0cmluZykgPT4ge1xuICBpZiAoY2FudmFzKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IGN1cnNvcjtcbiAgfVxufTtcblxubGV0IGVyYXNlckNhbnZhc0NhY2hlOiBhbnk7XG5sZXQgcHJldmlld0RhdGFVUkw6IHN0cmluZztcbmV4cG9ydCBjb25zdCBzZXRFcmFzZXJDdXJzb3IgPSAoXG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsLFxuICB0aGVtZTogQXBwU3RhdGVbXCJ0aGVtZVwiXSxcbikgPT4ge1xuICBjb25zdCBjdXJzb3JJbWFnZVNpemVQeCA9IDIwO1xuXG4gIGNvbnN0IGRyYXdDYW52YXMgPSAoKSA9PiB7XG4gICAgY29uc3QgaXNEYXJrVGhlbWUgPSB0aGVtZSA9PT0gVEhFTUUuREFSSztcbiAgICBlcmFzZXJDYW52YXNDYWNoZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgZXJhc2VyQ2FudmFzQ2FjaGUudGhlbWUgPSB0aGVtZTtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS5oZWlnaHQgPSBjdXJzb3JJbWFnZVNpemVQeDtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS53aWR0aCA9IGN1cnNvckltYWdlU2l6ZVB4O1xuICAgIGNvbnN0IGNvbnRleHQgPSBlcmFzZXJDYW52YXNDYWNoZS5nZXRDb250ZXh0KFwiMmRcIikhO1xuICAgIGNvbnRleHQubGluZVdpZHRoID0gMTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQuYXJjKFxuICAgICAgZXJhc2VyQ2FudmFzQ2FjaGUud2lkdGggLyAyLFxuICAgICAgZXJhc2VyQ2FudmFzQ2FjaGUuaGVpZ2h0IC8gMixcbiAgICAgIDUsXG4gICAgICAwLFxuICAgICAgMiAqIE1hdGguUEksXG4gICAgKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGlzRGFya1RoZW1lID8gb2MuYmxhY2sgOiBvYy53aGl0ZTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gaXNEYXJrVGhlbWUgPyBvYy53aGl0ZSA6IG9jLmJsYWNrO1xuICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgcHJldmlld0RhdGFVUkwgPSBlcmFzZXJDYW52YXNDYWNoZS50b0RhdGFVUkwoTUlNRV9UWVBFUy5zdmcpIGFzIERhdGFVUkw7XG4gIH07XG4gIGlmICghZXJhc2VyQ2FudmFzQ2FjaGUgfHwgZXJhc2VyQ2FudmFzQ2FjaGUudGhlbWUgIT09IHRoZW1lKSB7XG4gICAgZHJhd0NhbnZhcygpO1xuICB9XG5cbiAgc2V0Q3Vyc29yKFxuICAgIGNhbnZhcyxcbiAgICBgdXJsKCR7cHJldmlld0RhdGFVUkx9KSAke2N1cnNvckltYWdlU2l6ZVB4IC8gMn0gJHtcbiAgICAgIGN1cnNvckltYWdlU2l6ZVB4IC8gMlxuICAgIH0sIGF1dG9gLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEN1cnNvckZvclNoYXBlID0gKFxuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCxcbiAgYXBwU3RhdGU6IEFwcFN0YXRlLFxuKSA9PiB7XG4gIGlmICghY2FudmFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUgPT09IFwic2VsZWN0aW9uXCIpIHtcbiAgICByZXNldEN1cnNvcihjYW52YXMpO1xuICB9IGVsc2UgaWYgKGlzSGFuZFRvb2xBY3RpdmUoYXBwU3RhdGUpKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IENVUlNPUl9UWVBFLkdSQUI7XG4gIH0gZWxzZSBpZiAoaXNFcmFzZXJBY3RpdmUoYXBwU3RhdGUpKSB7XG4gICAgc2V0RXJhc2VyQ3Vyc29yKGNhbnZhcywgYXBwU3RhdGUudGhlbWUpO1xuICAgIC8vIGRvIG5vdGhpbmcgaWYgaW1hZ2UgdG9vbCBpcyBzZWxlY3RlZCB3aGljaCBzdWdnZXN0cyB0aGVyZSdzXG4gICAgLy8gYSBpbWFnZS1wcmV2aWV3IHNldCBhcyB0aGUgY3Vyc29yXG4gICAgLy8gSWdub3JlIGN1c3RvbSB0eXBlIGFzIHdlbGwgYW5kIGxldCBob3N0IGRlY2lkZVxuICB9IGVsc2UgaWYgKCFbXCJpbWFnZVwiLCBcImN1c3RvbVwiXS5pbmNsdWRlcyhhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IENVUlNPUl9UWVBFLkNST1NTSEFJUjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzRnVsbFNjcmVlbiA9ICgpID0+XG4gIGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50Py5ub2RlTmFtZSA9PT0gXCJIVE1MXCI7XG5cbmV4cG9ydCBjb25zdCBhbGxvd0Z1bGxTY3JlZW4gPSAoKSA9PlxuICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGV4aXRGdWxsU2NyZWVuID0gKCkgPT4gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGdldFNob3J0Y3V0S2V5ID0gKHNob3J0Y3V0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzaG9ydGN1dCA9IHNob3J0Y3V0XG4gICAgLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIkFsdFwiKVxuICAgIC5yZXBsYWNlKC9cXGJTaGlmdFxcYi9pLCBcIlNoaWZ0XCIpXG4gICAgLnJlcGxhY2UoL1xcYihFbnRlcnxSZXR1cm4pXFxiL2ksIFwiRW50ZXJcIik7XG4gIGlmIChpc0Rhcndpbikge1xuICAgIHJldHVybiBzaG9ydGN1dFxuICAgICAgLnJlcGxhY2UoL1xcYkN0cmxPckNtZFxcYi9naSwgXCJDbWRcIilcbiAgICAgIC5yZXBsYWNlKC9cXGJBbHRcXGIvaSwgXCJPcHRpb25cIik7XG4gIH1cbiAgcmV0dXJuIHNob3J0Y3V0LnJlcGxhY2UoL1xcYkN0cmxPckNtZFxcYi9naSwgXCJDdHJsXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZpZXdwb3J0Q29vcmRzVG9TY2VuZUNvb3JkcyA9IChcbiAgeyBjbGllbnRYLCBjbGllbnRZIH06IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXIgfSxcbiAge1xuICAgIHpvb20sXG4gICAgb2Zmc2V0TGVmdCxcbiAgICBvZmZzZXRUb3AsXG4gICAgc2Nyb2xsWCxcbiAgICBzY3JvbGxZLFxuICB9OiB7XG4gICAgem9vbTogWm9vbTtcbiAgICBvZmZzZXRMZWZ0OiBudW1iZXI7XG4gICAgb2Zmc2V0VG9wOiBudW1iZXI7XG4gICAgc2Nyb2xsWDogbnVtYmVyO1xuICAgIHNjcm9sbFk6IG51bWJlcjtcbiAgfSxcbikgPT4ge1xuICBjb25zdCB4ID0gKGNsaWVudFggLSBvZmZzZXRMZWZ0KSAvIHpvb20udmFsdWUgLSBzY3JvbGxYO1xuICBjb25zdCB5ID0gKGNsaWVudFkgLSBvZmZzZXRUb3ApIC8gem9vbS52YWx1ZSAtIHNjcm9sbFk7XG5cbiAgcmV0dXJuIHsgeCwgeSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNjZW5lQ29vcmRzVG9WaWV3cG9ydENvb3JkcyA9IChcbiAgeyBzY2VuZVgsIHNjZW5lWSB9OiB7IHNjZW5lWDogbnVtYmVyOyBzY2VuZVk6IG51bWJlciB9LFxuICB7XG4gICAgem9vbSxcbiAgICBvZmZzZXRMZWZ0LFxuICAgIG9mZnNldFRvcCxcbiAgICBzY3JvbGxYLFxuICAgIHNjcm9sbFksXG4gIH06IHtcbiAgICB6b29tOiBab29tO1xuICAgIG9mZnNldExlZnQ6IG51bWJlcjtcbiAgICBvZmZzZXRUb3A6IG51bWJlcjtcbiAgICBzY3JvbGxYOiBudW1iZXI7XG4gICAgc2Nyb2xsWTogbnVtYmVyO1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IHggPSAoc2NlbmVYICsgc2Nyb2xsWCkgKiB6b29tLnZhbHVlICsgb2Zmc2V0TGVmdDtcbiAgY29uc3QgeSA9IChzY2VuZVkgKyBzY3JvbGxZKSAqIHpvb20udmFsdWUgKyBvZmZzZXRUb3A7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxDU1NWYXJpYWJsZSA9IChuYW1lOiBzdHJpbmcpID0+XG4gIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLSR7bmFtZX1gKTtcblxuY29uc3QgUlNfTFRSX0NIQVJTID1cbiAgXCJBLVphLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQjhcXHUwMzAwLVxcdTA1OTBcXHUwODAwLVxcdTFGRkZcIiArXG4gIFwiXFx1MkMwMC1cXHVGQjFDXFx1RkRGRS1cXHVGRTZGXFx1RkVGRC1cXHVGRkZGXCI7XG5jb25zdCBSU19SVExfQ0hBUlMgPSBcIlxcdTA1OTEtXFx1MDdGRlxcdUZCMUQtXFx1RkRGRFxcdUZFNzAtXFx1RkVGQ1wiO1xuY29uc3QgUkVfUlRMX0NIRUNLID0gbmV3IFJlZ0V4cChgXlteJHtSU19MVFJfQ0hBUlN9XSpbJHtSU19SVExfQ0hBUlN9XWApO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBmaXJzdCBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIgaXMgUlRMLiBNZWFuaW5nIHdoZXRoZXIgaXQgc3RhcnRzXG4gKiAgd2l0aCBSVEwgY2hhcmFjdGVycywgb3IgaW5kZXRlcm1pbmF0ZSAobnVtYmVycyBldGMuKSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5XG4gKiAgUlRMLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNzIyI2Rpc2N1c3Npb25fcjQzNjM0MDE3MVxuICovXG5leHBvcnQgY29uc3QgaXNSVEwgPSAodGV4dDogc3RyaW5nKSA9PiBSRV9SVExfQ0hFQ0sudGVzdCh0ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHR1cGxlVG9Db29ycyA9IChcbiAgeHlUdXBsZTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSxcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IFt4LCB5XSA9IHh5VHVwbGU7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbi8qKiB1c2UgYXMgYSByZWplY3Rpb25IYW5kbGVyIHRvIG11dGUgZmlsZXN5c3RlbSBBYm9ydCBlcnJvcnMgKi9cbmV4cG9ydCBjb25zdCBtdXRlRlNBYm9ydEVycm9yID0gKGVycm9yPzogRXJyb3IpID0+IHtcbiAgaWYgKGVycm9yPy5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRJbmRleCA9IDxUPihcbiAgYXJyYXk6IHJlYWRvbmx5IFRbXSxcbiAgY2I6IChlbGVtZW50OiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogcmVhZG9ubHkgVFtdKSA9PiBib29sZWFuLFxuICBmcm9tSW5kZXg6IG51bWJlciA9IDAsXG4pID0+IHtcbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBhcnJheS5sZW5ndGggKyBmcm9tSW5kZXg7XG4gIH1cbiAgZnJvbUluZGV4ID0gTWF0aC5taW4oYXJyYXkubGVuZ3RoLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4IC0gMTtcbiAgd2hpbGUgKCsraW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICBpZiAoY2IoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGFzdEluZGV4ID0gPFQ+KFxuICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICBjYjogKGVsZW1lbnQ6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiByZWFkb25seSBUW10pID0+IGJvb2xlYW4sXG4gIGZyb21JbmRleDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMSxcbikgPT4ge1xuICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgfVxuICBmcm9tSW5kZXggPSBNYXRoLm1pbihhcnJheS5sZW5ndGggLSAxLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgd2hpbGUgKC0taW5kZXggPiAtMSkge1xuICAgIGlmIChjYihhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBjb25zdCBpc1JHQlRyYW5zcGFyZW50ID0gY29sb3IubGVuZ3RoID09PSA1ICYmIGNvbG9yLnN1YnN0cig0LCAxKSA9PT0gXCIwXCI7XG4gIGNvbnN0IGlzUlJHR0JCVHJhbnNwYXJlbnQgPSBjb2xvci5sZW5ndGggPT09IDkgJiYgY29sb3Iuc3Vic3RyKDcsIDIpID09PSBcIjAwXCI7XG4gIHJldHVybiAoXG4gICAgaXNSR0JUcmFuc3BhcmVudCB8fFxuICAgIGlzUlJHR0JCVHJhbnNwYXJlbnQgfHxcbiAgICBjb2xvciA9PT0gY29sb3JzLmVsZW1lbnRCYWNrZ3JvdW5kWzBdXG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZhYmxlUHJvbWlzZTxUPiA9IFByb21pc2U8VD4gJiB7XG4gIHJlc29sdmU6IFtUXSBleHRlbmRzIFt1bmRlZmluZWRdID8gKHZhbHVlPzogVCkgPT4gdm9pZCA6ICh2YWx1ZTogVCkgPT4gdm9pZDtcbiAgcmVqZWN0OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufTtcbmV4cG9ydCBjb25zdCByZXNvbHZhYmxlUHJvbWlzZSA9IDxUPigpID0+IHtcbiAgbGV0IHJlc29sdmUhOiBhbnk7XG4gIGxldCByZWplY3QhOiBhbnk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgcmVqZWN0ID0gX3JlamVjdDtcbiAgfSk7XG4gIChwcm9taXNlIGFzIGFueSkucmVzb2x2ZSA9IHJlc29sdmU7XG4gIChwcm9taXNlIGFzIGFueSkucmVqZWN0ID0gcmVqZWN0O1xuICByZXR1cm4gcHJvbWlzZSBhcyBSZXNvbHZhYmxlUHJvbWlzZTxUPjtcbn07XG5cbi8qKlxuICogQHBhcmFtIGZ1bmMgaGFuZGxlciB0YWtpbmcgYXQgbW9zdCBzaW5nbGUgcGFyYW1ldGVyIChldmVudCkuXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXMgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PlxuICAoKGV2ZW50KSA9PiB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYyBhcyBURnVuY3Rpb24sIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uO1xuXG4vKipcbiAqIGJhcmNoZXMgUmVhY3Qgc3RhdGUgdXBkYXRlcyBhbmQgdGhyb3R0bGVzIHRoZSBjYWxscyB0byBhIHNpbmdsZSBjYWxsIHBlclxuICogYW5pbWF0aW9uIGZyYW1lXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXNUaHJvdHRsZWQgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIHRocm90dGxlUkFGPFBhcmFtZXRlcnM8VEZ1bmN0aW9uPj4oKChldmVudCkgPT4ge1xuICAgIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzKGZ1bmMsIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uKTtcbn07XG5cbi8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk0NjIzODIvODQxOFxuZXhwb3J0IGNvbnN0IG5Gb3JtYXR0ZXIgPSAobnVtOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc2kgPSBbXG4gICAgeyB2YWx1ZTogMSwgc3ltYm9sOiBcImJcIiB9LFxuICAgIHsgdmFsdWU6IDFlMywgc3ltYm9sOiBcImtcIiB9LFxuICAgIHsgdmFsdWU6IDFlNiwgc3ltYm9sOiBcIk1cIiB9LFxuICAgIHsgdmFsdWU6IDFlOSwgc3ltYm9sOiBcIkdcIiB9LFxuICBdO1xuICBjb25zdCByeCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG4gIGxldCBpbmRleDtcbiAgZm9yIChpbmRleCA9IHNpLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGlmIChudW0gPj0gc2lbaW5kZXhdLnZhbHVlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChcbiAgICAobnVtIC8gc2lbaW5kZXhdLnZhbHVlKS50b0ZpeGVkKGRpZ2l0cykucmVwbGFjZShyeCwgXCIkMVwiKSArIHNpW2luZGV4XS5zeW1ib2xcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTE1ldGFFbGVtZW50PignbWV0YVtuYW1lPVwidmVyc2lvblwiXScpPy5jb250ZW50IHx8XG4gICAgREVGQVVMVF9WRVJTSU9OXG4gICk7XG59O1xuXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL01vZGVybml6ci9Nb2Rlcm5penIvYmxvYi9tYXN0ZXIvZmVhdHVyZS1kZXRlY3RzL2Vtb2ppLmpzXG5leHBvcnQgY29uc3Qgc3VwcG9ydHNFbW9qaSA9ICgpID0+IHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb2Zmc2V0ID0gMTI7XG4gIGN0eC5maWxsU3R5bGUgPSBcIiNmMDBcIjtcbiAgY3R4LnRleHRCYXNlbGluZSA9IFwidG9wXCI7XG4gIGN0eC5mb250ID0gXCIzMnB4IEFyaWFsXCI7XG4gIC8vIE1vZGVybml6ciB1c2VkIPCfkKgsIGJ1dCBpdCBpcyBzb3J0IG9mIHN1cHBvcnRlZCBvbiBXaW5kb3dzIDcuXG4gIC8vIEx1Y2tpbHkg8J+YgCBpc24ndCBzdXBwb3J0ZWQuXG4gIGN0eC5maWxsVGV4dChcIvCfmIBcIiwgMCwgMCk7XG4gIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKG9mZnNldCwgb2Zmc2V0LCAxLCAxKS5kYXRhWzBdICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5lYXJlc3RTY3JvbGxhYmxlQ29udGFpbmVyID0gKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cbiAgICBjb25zdCB7IG92ZXJmbG93WSB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBjb25zdCBoYXNTY3JvbGxhYmxlQ29udGVudCA9IHBhcmVudC5zY3JvbGxIZWlnaHQgPiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIGlmIChcbiAgICAgIGhhc1Njcm9sbGFibGVDb250ZW50ICYmXG4gICAgICAob3ZlcmZsb3dZID09PSBcImF1dG9cIiB8fFxuICAgICAgICBvdmVyZmxvd1kgPT09IFwic2Nyb2xsXCIgfHxcbiAgICAgICAgb3ZlcmZsb3dZID09PSBcIm92ZXJsYXlcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBkb2N1bWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb2N1c05lYXJlc3RQYXJlbnQgPSAoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC50YWJJbmRleCA+IC0xKSB7XG4gICAgICBwYXJlbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwcmV2ZW50VW5sb2FkID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBOT1RFOiBtb2Rlcm4gYnJvd3NlcnMgbm8gbG9uZ2VyIGFsbG93IHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBoZXJlXG4gIGV2ZW50LnJldHVyblZhbHVlID0gXCJcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBieXRlc1RvSGV4U3RyaW5nID0gKGJ5dGVzOiBVaW50OEFycmF5KSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKGJ5dGVzKVxuICAgIC5tYXAoKGJ5dGUpID0+IGAwJHtieXRlLnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcbiAgICAuam9pbihcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVkVGltZXN0YW1wID0gKCkgPT4gKGlzVGVzdEVudigpID8gMSA6IERhdGUubm93KCkpO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGBpZGAgYXR0cmlidXRlLFxuICogb3IgYXJyYXkgb2YgaWRzIChzdHJpbmdzKSwgaW50byBhIE1hcCwga2V5ZCBieSBgaWRgLlxuICovXG5leHBvcnQgY29uc3QgYXJyYXlUb01hcCA9IDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0gfCBzdHJpbmc+KFxuICBpdGVtczogcmVhZG9ubHkgVFtdLFxuKSA9PiB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogTWFwPHN0cmluZywgVD4sIGVsZW1lbnQpID0+IHtcbiAgICBhY2Muc2V0KHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiID8gZWxlbWVudCA6IGVsZW1lbnQuaWQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIG5ldyBNYXAoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZXN0RW52ID0gKCkgPT5cbiAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInRlc3RcIjtcblxuZXhwb3J0IGNvbnN0IGlzUHJvZEVudiA9ICgpID0+XG4gIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCI7XG5cbmV4cG9ydCBjb25zdCB3cmFwRXZlbnQgPSA8VCBleHRlbmRzIEV2ZW50PihuYW1lOiBFVkVOVCwgbmF0aXZlRXZlbnQ6IFQpID0+IHtcbiAgcmV0dXJuIG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgZGV0YWlsOiB7XG4gICAgICBuYXRpdmVFdmVudCxcbiAgICB9LFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU9iamVjdCA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIG9iajogVCxcbiAgdXBkYXRlczogUGFydGlhbDxUPixcbik6IFQgPT4ge1xuICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gIGZvciAoY29uc3Qga2V5IGluIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh1cGRhdGVzIGFzIGFueSlba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChvYmogYXMgYW55KVtrZXldID09PSB2YWx1ZSAmJlxuICAgICAgICAvLyBpZiBvYmplY3QsIGFsd2F5cyB1cGRhdGUgYmVjYXVzZSBpdHMgYXR0cnMgY291bGQgaGF2ZSBjaGFuZ2VkXG4gICAgICAgICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBkaWRDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlkQ2hhbmdlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ub2JqLFxuICAgIC4uLnVwZGF0ZXMsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAodmFsOiBhbnkpID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCAodHlwZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlICE9PSBcImZ1bmN0aW9uXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZyYW1lID0gKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcCA/IFwidG9wXCIgOiBcImlmcmFtZVwiO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBcImlmcmFtZVwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcm9taXNlTGlrZSA9IChcbiAgdmFsdWU6IGFueSxcbik6IHZhbHVlIGlzIFByb21pc2U8UmVzb2x1dGlvblR5cGU8dHlwZW9mIHZhbHVlPj4gPT4ge1xuICByZXR1cm4gKFxuICAgICEhdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIFwiY2F0Y2hcIiBpbiB2YWx1ZSAmJlxuICAgIFwiZmluYWxseVwiIGluIHZhbHVlXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcXVlcnlGb2N1c2FibGVFbGVtZW50cyA9IChjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgXCJidXR0b24sIGEsIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBkaXZbdGFiaW5kZXhdLCBsYWJlbFt0YWJpbmRleF1cIixcbiAgKTtcblxuICByZXR1cm4gZm9jdXNhYmxlRWxlbWVudHNcbiAgICA/IEFycmF5LmZyb20oZm9jdXNhYmxlRWxlbWVudHMpLmZpbHRlcihcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgZWxlbWVudC50YWJJbmRleCA+IC0xICYmICEoZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5kaXNhYmxlZCxcbiAgICAgIClcbiAgICA6IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2hhbGxvd0VxdWFsID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgb2JqQTogVCxcbiAgb2JqQjogVCxcbikgPT4ge1xuICBjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGFLZXlzLmV2ZXJ5KChrZXkpID0+IG9iakFba2V5XSA9PT0gb2JqQltrZXldKTtcbn07XG5cbi8vIHRha2VuIGZyb20gUmFkaXggVUlcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpeC11aS9wcmltaXRpdmVzL2Jsb2IvbWFpbi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZS9zcmMvcHJpbWl0aXZlLnRzeFxuZXhwb3J0IGNvbnN0IGNvbXBvc2VFdmVudEhhbmRsZXJzID0gPEU+KFxuICBvcmlnaW5hbEV2ZW50SGFuZGxlcj86IChldmVudDogRSkgPT4gdm9pZCxcbiAgb3VyRXZlbnRIYW5kbGVyPzogKGV2ZW50OiBFKSA9PiB2b2lkLFxuICB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZCA9IHRydWUgfSA9IHt9LFxuKSA9PiB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVFdmVudChldmVudDogRSkge1xuICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyPy4oZXZlbnQpO1xuXG4gICAgaWYgKFxuICAgICAgIWNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZCB8fFxuICAgICAgIShldmVudCBhcyB1bmtub3duIGFzIEV2ZW50KS5kZWZhdWx0UHJldmVudGVkXG4gICAgKSB7XG4gICAgICByZXR1cm4gb3VyRXZlbnRIYW5kbGVyPy4oZXZlbnQpO1xuICAgIH1cbiAgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../utils.ts\n");
|
|
3969
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"allowFullScreen\": () => (/* binding */ allowFullScreen),\n/* harmony export */ \"arrayToMap\": () => (/* binding */ arrayToMap),\n/* harmony export */ \"bytesToHexString\": () => (/* binding */ bytesToHexString),\n/* harmony export */ \"capitalizeString\": () => (/* binding */ capitalizeString),\n/* harmony export */ \"chunk\": () => (/* binding */ chunk),\n/* harmony export */ \"composeEventHandlers\": () => (/* binding */ composeEventHandlers),\n/* harmony export */ \"debounce\": () => (/* binding */ debounce),\n/* harmony export */ \"distance\": () => (/* binding */ distance),\n/* harmony export */ \"exitFullScreen\": () => (/* binding */ exitFullScreen),\n/* harmony export */ \"findIndex\": () => (/* binding */ findIndex),\n/* harmony export */ \"findLastIndex\": () => (/* binding */ findLastIndex),\n/* harmony export */ \"focusNearestParent\": () => (/* binding */ focusNearestParent),\n/* harmony export */ \"getDateTime\": () => (/* binding */ getDateTime),\n/* harmony export */ \"getFontFamilyString\": () => (/* binding */ getFontFamilyString),\n/* harmony export */ \"getFontString\": () => (/* binding */ getFontString),\n/* harmony export */ \"getFrame\": () => (/* binding */ getFrame),\n/* harmony export */ \"getGlobalCSSVariable\": () => (/* binding */ getGlobalCSSVariable),\n/* harmony export */ \"getNearestScrollableContainer\": () => (/* binding */ getNearestScrollableContainer),\n/* harmony export */ \"getShortcutKey\": () => (/* binding */ getShortcutKey),\n/* harmony export */ \"getUpdatedTimestamp\": () => (/* binding */ getUpdatedTimestamp),\n/* harmony export */ \"getVersion\": () => (/* binding */ getVersion),\n/* harmony export */ \"isFullScreen\": () => (/* binding */ isFullScreen),\n/* harmony export */ \"isInputLike\": () => (/* binding */ isInputLike),\n/* harmony export */ \"isPrimitive\": () => (/* binding */ isPrimitive),\n/* harmony export */ \"isProdEnv\": () => (/* binding */ isProdEnv),\n/* harmony export */ \"isPromiseLike\": () => (/* binding */ isPromiseLike),\n/* harmony export */ \"isRTL\": () => (/* binding */ isRTL),\n/* harmony export */ \"isShallowEqual\": () => (/* binding */ isShallowEqual),\n/* harmony export */ \"isTestEnv\": () => (/* binding */ isTestEnv),\n/* harmony export */ \"isToolIcon\": () => (/* binding */ isToolIcon),\n/* harmony export */ \"isTransparent\": () => (/* binding */ isTransparent),\n/* harmony export */ \"isWritableElement\": () => (/* binding */ isWritableElement),\n/* harmony export */ \"muteFSAbortError\": () => (/* binding */ muteFSAbortError),\n/* harmony export */ \"nFormatter\": () => (/* binding */ nFormatter),\n/* harmony export */ \"preventUnload\": () => (/* binding */ preventUnload),\n/* harmony export */ \"queryFocusableElements\": () => (/* binding */ queryFocusableElements),\n/* harmony export */ \"removeSelection\": () => (/* binding */ removeSelection),\n/* harmony export */ \"resetCursor\": () => (/* binding */ resetCursor),\n/* harmony export */ \"resolvablePromise\": () => (/* binding */ resolvablePromise),\n/* harmony export */ \"sceneCoordsToViewportCoords\": () => (/* binding */ sceneCoordsToViewportCoords),\n/* harmony export */ \"selectNode\": () => (/* binding */ selectNode),\n/* harmony export */ \"setCursor\": () => (/* binding */ setCursor),\n/* harmony export */ \"setCursorForShape\": () => (/* binding */ setCursorForShape),\n/* harmony export */ \"setDateTimeForTests\": () => (/* binding */ setDateTimeForTests),\n/* harmony export */ \"setEraserCursor\": () => (/* binding */ setEraserCursor),\n/* harmony export */ \"supportsEmoji\": () => (/* binding */ supportsEmoji),\n/* harmony export */ \"throttleRAF\": () => (/* binding */ throttleRAF),\n/* harmony export */ \"tupleToCoors\": () => (/* binding */ tupleToCoors),\n/* harmony export */ \"updateActiveTool\": () => (/* binding */ updateActiveTool),\n/* harmony export */ \"updateObject\": () => (/* binding */ updateObject),\n/* harmony export */ \"viewportCoordsToSceneCoords\": () => (/* binding */ viewportCoordsToSceneCoords),\n/* harmony export */ \"withBatchedUpdates\": () => (/* binding */ withBatchedUpdates),\n/* harmony export */ \"withBatchedUpdatesThrottled\": () => (/* binding */ withBatchedUpdatesThrottled),\n/* harmony export */ \"wrapEvent\": () => (/* binding */ wrapEvent)\n/* harmony export */ });\n/* harmony import */ var open_color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! open-color */ \"../../../node_modules/open-color/open-color.json\");\n/* harmony import */ var _colors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./colors */ \"../../colors.ts\");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./constants */ \"../../constants.ts\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-dom */ \"react-dom\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _appState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./appState */ \"../../appState.ts\");\n\n\n\n\n\nlet mockDateTime = null;\nconst setDateTimeForTests = (dateTime) => {\n mockDateTime = dateTime;\n};\nconst getDateTime = () => {\n if (mockDateTime) {\n return mockDateTime;\n }\n const date = new Date();\n const year = date.getFullYear();\n const month = `${date.getMonth() + 1}`.padStart(2, \"0\");\n const day = `${date.getDate()}`.padStart(2, \"0\");\n const hr = `${date.getHours()}`.padStart(2, \"0\");\n const min = `${date.getMinutes()}`.padStart(2, \"0\");\n return `${year}-${month}-${day}-${hr}${min}`;\n};\nconst capitalizeString = (str) => str.charAt(0).toUpperCase() + str.slice(1);\nconst isToolIcon = (target) => target instanceof HTMLElement && target.className.includes(\"ToolIcon\");\nconst isInputLike = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n target instanceof HTMLSelectElement;\nconst isWritableElement = (target) => (target instanceof HTMLElement && target.dataset.type === \"wysiwyg\") ||\n target instanceof HTMLBRElement || // newline in wysiwyg\n target instanceof HTMLTextAreaElement ||\n (target instanceof HTMLInputElement &&\n (target.type === \"text\" || target.type === \"number\"));\nconst getFontFamilyString = ({ fontFamily, }) => {\n for (const [fontFamilyString, id] of Object.entries(_constants__WEBPACK_IMPORTED_MODULE_2__.FONT_FAMILY)) {\n if (id === fontFamily) {\n return `${fontFamilyString}, ${_constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT}`;\n }\n }\n return _constants__WEBPACK_IMPORTED_MODULE_2__.WINDOWS_EMOJI_FALLBACK_FONT;\n};\n/** returns fontSize+fontFamily string for assignment to DOM elements */\nconst getFontString = ({ fontSize, fontFamily, }) => {\n return `${fontSize}px ${getFontFamilyString({ fontFamily })}`;\n};\nconst debounce = (fn, timeout) => {\n let handle = 0;\n let lastArgs = null;\n const ret = (...args) => {\n lastArgs = args;\n clearTimeout(handle);\n handle = window.setTimeout(() => {\n lastArgs = null;\n fn(...args);\n }, timeout);\n };\n ret.flush = () => {\n clearTimeout(handle);\n if (lastArgs) {\n const _lastArgs = lastArgs;\n lastArgs = null;\n fn(..._lastArgs);\n }\n };\n ret.cancel = () => {\n lastArgs = null;\n clearTimeout(handle);\n };\n return ret;\n};\n// throttle callback to execute once per animation frame\nconst throttleRAF = (fn, opts) => {\n let timerId = null;\n let lastArgs = null;\n let lastArgsTrailing = null;\n const scheduleFunc = (args) => {\n timerId = window.requestAnimationFrame(() => {\n timerId = null;\n fn(...args);\n lastArgs = null;\n if (lastArgsTrailing) {\n lastArgs = lastArgsTrailing;\n lastArgsTrailing = null;\n scheduleFunc(lastArgs);\n }\n });\n };\n const ret = (...args) => {\n if (false) {}\n lastArgs = args;\n if (timerId === null) {\n scheduleFunc(lastArgs);\n }\n else if (opts === null || opts === void 0 ? void 0 : opts.trailing) {\n lastArgsTrailing = args;\n }\n };\n ret.flush = () => {\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n if (lastArgs) {\n fn(...(lastArgsTrailing || lastArgs));\n lastArgs = lastArgsTrailing = null;\n }\n };\n ret.cancel = () => {\n lastArgs = lastArgsTrailing = null;\n if (timerId !== null) {\n cancelAnimationFrame(timerId);\n timerId = null;\n }\n };\n return ret;\n};\n// https://github.com/lodash/lodash/blob/es/chunk.js\nconst chunk = (array, size) => {\n if (!array.length || size < 1) {\n return [];\n }\n let index = 0;\n let resIndex = 0;\n const result = Array(Math.ceil(array.length / size));\n while (index < array.length) {\n result[resIndex++] = array.slice(index, (index += size));\n }\n return result;\n};\nconst selectNode = (node) => {\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(node);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n};\nconst removeSelection = () => {\n const selection = window.getSelection();\n if (selection) {\n selection.removeAllRanges();\n }\n};\nconst distance = (x, y) => Math.abs(x - y);\nconst updateActiveTool = (appState, data) => {\n if (data.type === \"custom\") {\n return Object.assign(Object.assign({}, appState.activeTool), { type: \"custom\", customType: data.customType });\n }\n return Object.assign(Object.assign({}, appState.activeTool), { lastActiveTool: data.lastActiveToolBeforeEraser === undefined\n ? appState.activeTool.lastActiveTool\n : data.lastActiveToolBeforeEraser, type: data.type, customType: null });\n};\nconst resetCursor = (canvas) => {\n if (canvas) {\n canvas.style.cursor = \"\";\n }\n};\nconst setCursor = (canvas, cursor) => {\n if (canvas) {\n canvas.style.cursor = cursor;\n }\n};\nlet eraserCanvasCache;\nlet previewDataURL;\nconst setEraserCursor = (canvas, theme) => {\n const cursorImageSizePx = 20;\n const drawCanvas = () => {\n const isDarkTheme = theme === _constants__WEBPACK_IMPORTED_MODULE_2__.THEME.DARK;\n eraserCanvasCache = document.createElement(\"canvas\");\n eraserCanvasCache.theme = theme;\n eraserCanvasCache.height = cursorImageSizePx;\n eraserCanvasCache.width = cursorImageSizePx;\n const context = eraserCanvasCache.getContext(\"2d\");\n context.lineWidth = 1;\n context.beginPath();\n context.arc(eraserCanvasCache.width / 2, eraserCanvasCache.height / 2, 5, 0, 2 * Math.PI);\n context.fillStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.black : open_color__WEBPACK_IMPORTED_MODULE_0__.white;\n context.fill();\n context.strokeStyle = isDarkTheme ? open_color__WEBPACK_IMPORTED_MODULE_0__.white : open_color__WEBPACK_IMPORTED_MODULE_0__.black;\n context.stroke();\n previewDataURL = eraserCanvasCache.toDataURL(_constants__WEBPACK_IMPORTED_MODULE_2__.MIME_TYPES.svg);\n };\n if (!eraserCanvasCache || eraserCanvasCache.theme !== theme) {\n drawCanvas();\n }\n setCursor(canvas, `url(${previewDataURL}) ${cursorImageSizePx / 2} ${cursorImageSizePx / 2}, auto`);\n};\nconst setCursorForShape = (canvas, appState) => {\n if (!canvas) {\n return;\n }\n if (appState.activeTool.type === \"selection\") {\n resetCursor(canvas);\n }\n else if ((0,_appState__WEBPACK_IMPORTED_MODULE_4__.isHandToolActive)(appState)) {\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_2__.CURSOR_TYPE.GRAB;\n }\n else if ((0,_appState__WEBPACK_IMPORTED_MODULE_4__.isEraserActive)(appState)) {\n setEraserCursor(canvas, appState.theme);\n // do nothing if image tool is selected which suggests there's\n // a image-preview set as the cursor\n // Ignore custom type as well and let host decide\n }\n else if (![\"image\", \"custom\"].includes(appState.activeTool.type)) {\n canvas.style.cursor = _constants__WEBPACK_IMPORTED_MODULE_2__.CURSOR_TYPE.CROSSHAIR;\n }\n};\nconst isFullScreen = () => { var _a; return ((_a = document.fullscreenElement) === null || _a === void 0 ? void 0 : _a.nodeName) === \"HTML\"; };\nconst allowFullScreen = () => document.documentElement.requestFullscreen();\nconst exitFullScreen = () => document.exitFullscreen();\nconst getShortcutKey = (shortcut) => {\n shortcut = shortcut\n .replace(/\\bAlt\\b/i, \"Alt\")\n .replace(/\\bShift\\b/i, \"Shift\")\n .replace(/\\b(Enter|Return)\\b/i, \"Enter\");\n if (_constants__WEBPACK_IMPORTED_MODULE_2__.isDarwin) {\n return shortcut\n .replace(/\\bCtrlOrCmd\\b/gi, \"Cmd\")\n .replace(/\\bAlt\\b/i, \"Option\");\n }\n return shortcut.replace(/\\bCtrlOrCmd\\b/gi, \"Ctrl\");\n};\nconst viewportCoordsToSceneCoords = ({ clientX, clientY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const x = (clientX - offsetLeft) / zoom.value - scrollX;\n const y = (clientY - offsetTop) / zoom.value - scrollY;\n return { x, y };\n};\nconst sceneCoordsToViewportCoords = ({ sceneX, sceneY }, { zoom, offsetLeft, offsetTop, scrollX, scrollY, }) => {\n const x = (sceneX + scrollX) * zoom.value + offsetLeft;\n const y = (sceneY + scrollY) * zoom.value + offsetTop;\n return { x, y };\n};\nconst getGlobalCSSVariable = (name) => getComputedStyle(document.documentElement).getPropertyValue(`--${name}`);\nconst RS_LTR_CHARS = \"A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\" +\n \"\\u2C00-\\uFB1C\\uFDFE-\\uFE6F\\uFEFD-\\uFFFF\";\nconst RS_RTL_CHARS = \"\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC\";\nconst RE_RTL_CHECK = new RegExp(`^[^${RS_LTR_CHARS}]*[${RS_RTL_CHARS}]`);\n/**\n * Checks whether first directional character is RTL. Meaning whether it starts\n * with RTL characters, or indeterminate (numbers etc.) characters followed by\n * RTL.\n * See https://github.com/excalidraw/excalidraw/pull/1722#discussion_r436340171\n */\nconst isRTL = (text) => RE_RTL_CHECK.test(text);\nconst tupleToCoors = (xyTuple) => {\n const [x, y] = xyTuple;\n return { x, y };\n};\n/** use as a rejectionHandler to mute filesystem Abort errors */\nconst muteFSAbortError = (error) => {\n if ((error === null || error === void 0 ? void 0 : error.name) === \"AbortError\") {\n console.warn(error);\n return;\n }\n throw error;\n};\nconst findIndex = (array, cb, fromIndex = 0) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length, Math.max(fromIndex, 0));\n let index = fromIndex - 1;\n while (++index < array.length) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst findLastIndex = (array, cb, fromIndex = array.length - 1) => {\n if (fromIndex < 0) {\n fromIndex = array.length + fromIndex;\n }\n fromIndex = Math.min(array.length - 1, Math.max(fromIndex, 0));\n let index = fromIndex + 1;\n while (--index > -1) {\n if (cb(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n};\nconst isTransparent = (color) => {\n const isRGBTransparent = color.length === 5 && color.substr(4, 1) === \"0\";\n const isRRGGBBTransparent = color.length === 9 && color.substr(7, 2) === \"00\";\n return (isRGBTransparent ||\n isRRGGBBTransparent ||\n color === _colors__WEBPACK_IMPORTED_MODULE_1__[\"default\"].elementBackground[0]);\n};\nconst resolvablePromise = () => {\n let resolve;\n let reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n promise.resolve = resolve;\n promise.reject = reject;\n return promise;\n};\n/**\n * @param func handler taking at most single parameter (event).\n */\nconst withBatchedUpdates = (func) => ((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n});\n/**\n * barches React state updates and throttles the calls to a single call per\n * animation frame\n */\nconst withBatchedUpdatesThrottled = (func) => {\n // @ts-ignore\n return throttleRAF(((event) => {\n (0,react_dom__WEBPACK_IMPORTED_MODULE_3__.unstable_batchedUpdates)(func, event);\n }));\n};\n//https://stackoverflow.com/a/9462382/8418\nconst nFormatter = (num, digits) => {\n const si = [\n { value: 1, symbol: \"b\" },\n { value: 1e3, symbol: \"k\" },\n { value: 1e6, symbol: \"M\" },\n { value: 1e9, symbol: \"G\" },\n ];\n const rx = /\\.0+$|(\\.[0-9]*[1-9])0+$/;\n let index;\n for (index = si.length - 1; index > 0; index--) {\n if (num >= si[index].value) {\n break;\n }\n }\n return ((num / si[index].value).toFixed(digits).replace(rx, \"$1\") + si[index].symbol);\n};\nconst getVersion = () => {\n var _a;\n return (((_a = document.querySelector('meta[name=\"version\"]')) === null || _a === void 0 ? void 0 : _a.content) ||\n _constants__WEBPACK_IMPORTED_MODULE_2__.DEFAULT_VERSION);\n};\n// Adapted from https://github.com/Modernizr/Modernizr/blob/master/feature-detects/emoji.js\nconst supportsEmoji = () => {\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) {\n return false;\n }\n const offset = 12;\n ctx.fillStyle = \"#f00\";\n ctx.textBaseline = \"top\";\n ctx.font = \"32px Arial\";\n // Modernizr used 🐨, but it is sort of supported on Windows 7.\n // Luckily 😀 isn't supported.\n ctx.fillText(\"😀\", 0, 0);\n return ctx.getImageData(offset, offset, 1, 1).data[0] !== 0;\n};\nconst getNearestScrollableContainer = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent === document.body) {\n return document;\n }\n const { overflowY } = window.getComputedStyle(parent);\n const hasScrollableContent = parent.scrollHeight > parent.clientHeight;\n if (hasScrollableContent &&\n (overflowY === \"auto\" ||\n overflowY === \"scroll\" ||\n overflowY === \"overlay\")) {\n return parent;\n }\n parent = parent.parentElement;\n }\n return document;\n};\nconst focusNearestParent = (element) => {\n let parent = element.parentElement;\n while (parent) {\n if (parent.tabIndex > -1) {\n parent.focus();\n return;\n }\n parent = parent.parentElement;\n }\n};\nconst preventUnload = (event) => {\n event.preventDefault();\n // NOTE: modern browsers no longer allow showing a custom message here\n event.returnValue = \"\";\n};\nconst bytesToHexString = (bytes) => {\n return Array.from(bytes)\n .map((byte) => `0${byte.toString(16)}`.slice(-2))\n .join(\"\");\n};\nconst getUpdatedTimestamp = () => (isTestEnv() ? 1 : Date.now());\n/**\n * Transforms array of objects containing `id` attribute,\n * or array of ids (strings), into a Map, keyd by `id`.\n */\nconst arrayToMap = (items) => {\n return items.reduce((acc, element) => {\n acc.set(typeof element === \"string\" ? element : element.id, element);\n return acc;\n }, new Map());\n};\nconst isTestEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-2acbae3\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"test\"; };\nconst isProdEnv = () => { var _a; return typeof process !== \"undefined\" && ((_a = ({\"REACT_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"REACT_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"REACT_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"REACT_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"REACT_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"REACT_APP_PORTAL_URL\":\"\",\"REACT_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\\\"}\",\"REACT_APP_DEV_ENABLE_SW\":\"\",\"REACT_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"FAST_REFRESH\":\"false\",\"PKG_NAME\":\"@excalidraw/excalidraw\",\"PKG_VERSION\":\"0.14.1-6178-2acbae3\",\"IS_EXCALIDRAW_NPM_PACKAGE\":true})) === null || _a === void 0 ? void 0 : _a.NODE_ENV) === \"production\"; };\nconst wrapEvent = (name, nativeEvent) => {\n return new CustomEvent(name, {\n detail: {\n nativeEvent,\n },\n cancelable: true,\n });\n};\nconst updateObject = (obj, updates) => {\n let didChange = false;\n for (const key in updates) {\n const value = updates[key];\n if (typeof value !== \"undefined\") {\n if (obj[key] === value &&\n // if object, always update because its attrs could have changed\n (typeof value !== \"object\" || value === null)) {\n continue;\n }\n didChange = true;\n }\n }\n if (!didChange) {\n return obj;\n }\n return Object.assign(Object.assign({}, obj), updates);\n};\nconst isPrimitive = (val) => {\n const type = typeof val;\n return val == null || (type !== \"object\" && type !== \"function\");\n};\nconst getFrame = () => {\n try {\n return window.self === window.top ? \"top\" : \"iframe\";\n }\n catch (error) {\n return \"iframe\";\n }\n};\nconst isPromiseLike = (value) => {\n return (!!value &&\n typeof value === \"object\" &&\n \"then\" in value &&\n \"catch\" in value &&\n \"finally\" in value);\n};\nconst queryFocusableElements = (container) => {\n const focusableElements = container === null || container === void 0 ? void 0 : container.querySelectorAll(\"button, a, input, select, textarea, div[tabindex], label[tabindex]\");\n return focusableElements\n ? Array.from(focusableElements).filter((element) => element.tabIndex > -1 && !element.disabled)\n : [];\n};\nconst isShallowEqual = (objA, objB) => {\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objA);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every((key) => objA[key] === objB[key]);\n};\n// taken from Radix UI\n// https://github.com/radix-ui/primitives/blob/main/packages/core/primitive/src/primitive.tsx\nconst composeEventHandlers = (originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) => {\n return function handleEvent(event) {\n originalEventHandler === null || originalEventHandler === void 0 ? void 0 : originalEventHandler(event);\n if (!checkForDefaultPrevented ||\n !event.defaultPrevented) {\n return ourEventHandler === null || ourEventHandler === void 0 ? void 0 : ourEventHandler(event);\n }\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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R0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFO1FBQ2pDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDLENBQUM7QUFFRixzQkFBc0I7QUFDdEIsNkZBQTZGO0FBQ3RGLE1BQU0sb0JBQW9CLEdBQUcsQ0FDbEMsb0JBQXlDLEVBQ3pDLGVBQW9DLEVBQ3BDLEVBQUUsd0JBQXdCLEdBQUcsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUN4QyxFQUFFO0lBQ0YsT0FBTyxTQUFTLFdBQVcsQ0FBQyxLQUFRO1FBQ2xDLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFHLEtBQUssQ0FBQyxDQUFDO1FBRTlCLElBQ0UsQ0FBQyx3QkFBd0I7WUFDekIsQ0FBRSxLQUEwQixDQUFDLGdCQUFnQixFQUM3QztZQUNBLE9BQU8sZUFBZSxhQUFmLGVBQWUsdUJBQWYsZUFBZSxDQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2pDO0lBQ0gsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uL3V0aWxzLnRzPzc2M2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG9jIGZyb20gXCJvcGVuLWNvbG9yXCI7XG5cbmltcG9ydCBjb2xvcnMgZnJvbSBcIi4vY29sb3JzXCI7XG5pbXBvcnQge1xuICBDVVJTT1JfVFlQRSxcbiAgREVGQVVMVF9WRVJTSU9OLFxuICBFVkVOVCxcbiAgRk9OVF9GQU1JTFksXG4gIGlzRGFyd2luLFxuICBNSU1FX1RZUEVTLFxuICBUSEVNRSxcbiAgV0lORE9XU19FTU9KSV9GQUxMQkFDS19GT05ULFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IEZvbnRGYW1pbHlWYWx1ZXMsIEZvbnRTdHJpbmcgfSBmcm9tIFwiLi9lbGVtZW50L3R5cGVzXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZSwgRGF0YVVSTCwgTGFzdEFjdGl2ZVRvb2wsIFpvb20gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBTSEFQRVMgfSBmcm9tIFwiLi9zaGFwZXNcIjtcbmltcG9ydCB7IGlzRXJhc2VyQWN0aXZlLCBpc0hhbmRUb29sQWN0aXZlIH0gZnJvbSBcIi4vYXBwU3RhdGVcIjtcblxubGV0IG1vY2tEYXRlVGltZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBjb25zdCBzZXREYXRlVGltZUZvclRlc3RzID0gKGRhdGVUaW1lOiBzdHJpbmcpID0+IHtcbiAgbW9ja0RhdGVUaW1lID0gZGF0ZVRpbWU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0ZVRpbWUgPSAoKSA9PiB7XG4gIGlmIChtb2NrRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gbW9ja0RhdGVUaW1lO1xuICB9XG5cbiAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gIGNvbnN0IG1vbnRoID0gYCR7ZGF0ZS5nZXRNb250aCgpICsgMX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcbiAgY29uc3QgZGF5ID0gYCR7ZGF0ZS5nZXREYXRlKCl9YC5wYWRTdGFydCgyLCBcIjBcIik7XG4gIGNvbnN0IGhyID0gYCR7ZGF0ZS5nZXRIb3VycygpfWAucGFkU3RhcnQoMiwgXCIwXCIpO1xuICBjb25zdCBtaW4gPSBgJHtkYXRlLmdldE1pbnV0ZXMoKX1gLnBhZFN0YXJ0KDIsIFwiMFwiKTtcblxuICByZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9LSR7aHJ9JHttaW59YDtcbn07XG5cbmV4cG9ydCBjb25zdCBjYXBpdGFsaXplU3RyaW5nID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSk7XG5cbmV4cG9ydCBjb25zdCBpc1Rvb2xJY29uID0gKFxuICB0YXJnZXQ6IEVsZW1lbnQgfCBFdmVudFRhcmdldCB8IG51bGwsXG4pOiB0YXJnZXQgaXMgSFRNTEVsZW1lbnQgPT5cbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgJiYgdGFyZ2V0LmNsYXNzTmFtZS5pbmNsdWRlcyhcIlRvb2xJY29uXCIpO1xuXG5leHBvcnQgY29uc3QgaXNJbnB1dExpa2UgPSAoXG4gIHRhcmdldDogRWxlbWVudCB8IEV2ZW50VGFyZ2V0IHwgbnVsbCxcbik6IHRhcmdldCBpc1xuICB8IEhUTUxJbnB1dEVsZW1lbnRcbiAgfCBIVE1MVGV4dEFyZWFFbGVtZW50XG4gIHwgSFRNTFNlbGVjdEVsZW1lbnRcbiAgfCBIVE1MQlJFbGVtZW50XG4gIHwgSFRNTERpdkVsZW1lbnQgPT5cbiAgKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5kYXRhc2V0LnR5cGUgPT09IFwid3lzaXd5Z1wiKSB8fFxuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MQlJFbGVtZW50IHx8IC8vIG5ld2xpbmUgaW4gd3lzaXd5Z1xuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50IHx8XG4gIHRhcmdldCBpbnN0YW5jZW9mIEhUTUxUZXh0QXJlYUVsZW1lbnQgfHxcbiAgdGFyZ2V0IGluc3RhbmNlb2YgSFRNTFNlbGVjdEVsZW1lbnQ7XG5cbmV4cG9ydCBjb25zdCBpc1dyaXRhYmxlRWxlbWVudCA9IChcbiAgdGFyZ2V0OiBFbGVtZW50IHwgRXZlbnRUYXJnZXQgfCBudWxsLFxuKTogdGFyZ2V0IGlzXG4gIHwgSFRNTElucHV0RWxlbWVudFxuICB8IEhUTUxUZXh0QXJlYUVsZW1lbnRcbiAgfCBIVE1MQlJFbGVtZW50XG4gIHwgSFRNTERpdkVsZW1lbnQgPT5cbiAgKHRhcmdldCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50ICYmIHRhcmdldC5kYXRhc2V0LnR5cGUgPT09IFwid3lzaXd5Z1wiKSB8fFxuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MQlJFbGVtZW50IHx8IC8vIG5ld2xpbmUgaW4gd3lzaXd5Z1xuICB0YXJnZXQgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50IHx8XG4gICh0YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50ICYmXG4gICAgKHRhcmdldC50eXBlID09PSBcInRleHRcIiB8fCB0YXJnZXQudHlwZSA9PT0gXCJudW1iZXJcIikpO1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9udEZhbWlseVN0cmluZyA9ICh7XG4gIGZvbnRGYW1pbHksXG59OiB7XG4gIGZvbnRGYW1pbHk6IEZvbnRGYW1pbHlWYWx1ZXM7XG59KSA9PiB7XG4gIGZvciAoY29uc3QgW2ZvbnRGYW1pbHlTdHJpbmcsIGlkXSBvZiBPYmplY3QuZW50cmllcyhGT05UX0ZBTUlMWSkpIHtcbiAgICBpZiAoaWQgPT09IGZvbnRGYW1pbHkpIHtcbiAgICAgIHJldHVybiBgJHtmb250RmFtaWx5U3RyaW5nfSwgJHtXSU5ET1dTX0VNT0pJX0ZBTExCQUNLX0ZPTlR9YDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFdJTkRPV1NfRU1PSklfRkFMTEJBQ0tfRk9OVDtcbn07XG5cbi8qKiByZXR1cm5zIGZvbnRTaXplK2ZvbnRGYW1pbHkgc3RyaW5nIGZvciBhc3NpZ25tZW50IHRvIERPTSBlbGVtZW50cyAqL1xuZXhwb3J0IGNvbnN0IGdldEZvbnRTdHJpbmcgPSAoe1xuICBmb250U2l6ZSxcbiAgZm9udEZhbWlseSxcbn06IHtcbiAgZm9udFNpemU6IG51bWJlcjtcbiAgZm9udEZhbWlseTogRm9udEZhbWlseVZhbHVlcztcbn0pID0+IHtcbiAgcmV0dXJuIGAke2ZvbnRTaXplfXB4ICR7Z2V0Rm9udEZhbWlseVN0cmluZyh7IGZvbnRGYW1pbHkgfSl9YCBhcyBGb250U3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlYm91bmNlID0gPFQgZXh0ZW5kcyBhbnlbXT4oXG4gIGZuOiAoLi4uYXJnczogVCkgPT4gdm9pZCxcbiAgdGltZW91dDogbnVtYmVyLFxuKSA9PiB7XG4gIGxldCBoYW5kbGUgPSAwO1xuICBsZXQgbGFzdEFyZ3M6IFQgfCBudWxsID0gbnVsbDtcbiAgY29uc3QgcmV0ID0gKC4uLmFyZ3M6IFQpID0+IHtcbiAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgY2xlYXJUaW1lb3V0KGhhbmRsZSk7XG4gICAgaGFuZGxlID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgZm4oLi4uYXJncyk7XG4gICAgfSwgdGltZW91dCk7XG4gIH07XG4gIHJldC5mbHVzaCA9ICgpID0+IHtcbiAgICBjbGVhclRpbWVvdXQoaGFuZGxlKTtcbiAgICBpZiAobGFzdEFyZ3MpIHtcbiAgICAgIGNvbnN0IF9sYXN0QXJncyA9IGxhc3RBcmdzO1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgZm4oLi4uX2xhc3RBcmdzKTtcbiAgICB9XG4gIH07XG4gIHJldC5jYW5jZWwgPSAoKSA9PiB7XG4gICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgIGNsZWFyVGltZW91dChoYW5kbGUpO1xuICB9O1xuICByZXR1cm4gcmV0O1xufTtcblxuLy8gdGhyb3R0bGUgY2FsbGJhY2sgdG8gZXhlY3V0ZSBvbmNlIHBlciBhbmltYXRpb24gZnJhbWVcbmV4cG9ydCBjb25zdCB0aHJvdHRsZVJBRiA9IDxUIGV4dGVuZHMgYW55W10+KFxuICBmbjogKC4uLmFyZ3M6IFQpID0+IHZvaWQsXG4gIG9wdHM/OiB7IHRyYWlsaW5nPzogYm9vbGVhbiB9LFxuKSA9PiB7XG4gIGxldCB0aW1lcklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgbGV0IGxhc3RBcmdzOiBUIHwgbnVsbCA9IG51bGw7XG4gIGxldCBsYXN0QXJnc1RyYWlsaW5nOiBUIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3Qgc2NoZWR1bGVGdW5jID0gKGFyZ3M6IFQpID0+IHtcbiAgICB0aW1lcklkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB0aW1lcklkID0gbnVsbDtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgbGFzdEFyZ3MgPSBudWxsO1xuICAgICAgaWYgKGxhc3RBcmdzVHJhaWxpbmcpIHtcbiAgICAgICAgbGFzdEFyZ3MgPSBsYXN0QXJnc1RyYWlsaW5nO1xuICAgICAgICBsYXN0QXJnc1RyYWlsaW5nID0gbnVsbDtcbiAgICAgICAgc2NoZWR1bGVGdW5jKGxhc3RBcmdzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCByZXQgPSAoLi4uYXJnczogVCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIpIHtcbiAgICAgIGZuKC4uLmFyZ3MpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGFyZ3M7XG4gICAgaWYgKHRpbWVySWQgPT09IG51bGwpIHtcbiAgICAgIHNjaGVkdWxlRnVuYyhsYXN0QXJncyk7XG4gICAgfSBlbHNlIGlmIChvcHRzPy50cmFpbGluZykge1xuICAgICAgbGFzdEFyZ3NUcmFpbGluZyA9IGFyZ3M7XG4gICAgfVxuICB9O1xuICByZXQuZmx1c2ggPSAoKSA9PiB7XG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuICAgIGlmIChsYXN0QXJncykge1xuICAgICAgZm4oLi4uKGxhc3RBcmdzVHJhaWxpbmcgfHwgbGFzdEFyZ3MpKTtcbiAgICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgfVxuICB9O1xuICByZXQuY2FuY2VsID0gKCkgPT4ge1xuICAgIGxhc3RBcmdzID0gbGFzdEFyZ3NUcmFpbGluZyA9IG51bGw7XG4gICAgaWYgKHRpbWVySWQgIT09IG51bGwpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRpbWVySWQpO1xuICAgICAgdGltZXJJZCA9IG51bGw7XG4gICAgfVxuICB9O1xuICByZXR1cm4gcmV0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9lcy9jaHVuay5qc1xuZXhwb3J0IGNvbnN0IGNodW5rID0gPFQgZXh0ZW5kcyBhbnk+KFxuICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICBzaXplOiBudW1iZXIsXG4pOiBUW11bXSA9PiB7XG4gIGlmICghYXJyYXkubGVuZ3RoIHx8IHNpemUgPCAxKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCByZXNJbmRleCA9IDA7XG4gIGNvbnN0IHJlc3VsdCA9IEFycmF5KE1hdGguY2VpbChhcnJheS5sZW5ndGggLyBzaXplKSk7XG4gIHdoaWxlIChpbmRleCA8IGFycmF5Lmxlbmd0aCkge1xuICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IGFycmF5LnNsaWNlKGluZGV4LCAoaW5kZXggKz0gc2l6ZSkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0Tm9kZSA9IChub2RlOiBFbGVtZW50KSA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKHNlbGVjdGlvbikge1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG4gICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWxlY3Rpb24gPSAoKSA9PiB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKHNlbGVjdGlvbikge1xuICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiBNYXRoLmFicyh4IC0geSk7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBY3RpdmVUb29sID0gKFxuICBhcHBTdGF0ZTogUGljazxBcHBTdGF0ZSwgXCJhY3RpdmVUb29sXCI+LFxuICBkYXRhOiAoXG4gICAgfCB7IHR5cGU6IHR5cGVvZiBTSEFQRVNbbnVtYmVyXVtcInZhbHVlXCJdIHwgXCJlcmFzZXJcIiB8IFwiaGFuZFwiIH1cbiAgICB8IHsgdHlwZTogXCJjdXN0b21cIjsgY3VzdG9tVHlwZTogc3RyaW5nIH1cbiAgKSAmIHsgbGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXI/OiBMYXN0QWN0aXZlVG9vbCB9LFxuKTogQXBwU3RhdGVbXCJhY3RpdmVUb29sXCJdID0+IHtcbiAgaWYgKGRhdGEudHlwZSA9PT0gXCJjdXN0b21cIikge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5hcHBTdGF0ZS5hY3RpdmVUb29sLFxuICAgICAgdHlwZTogXCJjdXN0b21cIixcbiAgICAgIGN1c3RvbVR5cGU6IGRhdGEuY3VzdG9tVHlwZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5hcHBTdGF0ZS5hY3RpdmVUb29sLFxuICAgIGxhc3RBY3RpdmVUb29sOlxuICAgICAgZGF0YS5sYXN0QWN0aXZlVG9vbEJlZm9yZUVyYXNlciA9PT0gdW5kZWZpbmVkXG4gICAgICAgID8gYXBwU3RhdGUuYWN0aXZlVG9vbC5sYXN0QWN0aXZlVG9vbFxuICAgICAgICA6IGRhdGEubGFzdEFjdGl2ZVRvb2xCZWZvcmVFcmFzZXIsXG4gICAgdHlwZTogZGF0YS50eXBlLFxuICAgIGN1c3RvbVR5cGU6IG51bGwsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRDdXJzb3IgPSAoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCB8IG51bGwpID0+IHtcbiAgaWYgKGNhbnZhcykge1xuICAgIGNhbnZhcy5zdHlsZS5jdXJzb3IgPSBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0Q3Vyc29yID0gKGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsLCBjdXJzb3I6IHN0cmluZykgPT4ge1xuICBpZiAoY2FudmFzKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IGN1cnNvcjtcbiAgfVxufTtcblxubGV0IGVyYXNlckNhbnZhc0NhY2hlOiBhbnk7XG5sZXQgcHJldmlld0RhdGFVUkw6IHN0cmluZztcbmV4cG9ydCBjb25zdCBzZXRFcmFzZXJDdXJzb3IgPSAoXG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgfCBudWxsLFxuICB0aGVtZTogQXBwU3RhdGVbXCJ0aGVtZVwiXSxcbikgPT4ge1xuICBjb25zdCBjdXJzb3JJbWFnZVNpemVQeCA9IDIwO1xuXG4gIGNvbnN0IGRyYXdDYW52YXMgPSAoKSA9PiB7XG4gICAgY29uc3QgaXNEYXJrVGhlbWUgPSB0aGVtZSA9PT0gVEhFTUUuREFSSztcbiAgICBlcmFzZXJDYW52YXNDYWNoZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7XG4gICAgZXJhc2VyQ2FudmFzQ2FjaGUudGhlbWUgPSB0aGVtZTtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS5oZWlnaHQgPSBjdXJzb3JJbWFnZVNpemVQeDtcbiAgICBlcmFzZXJDYW52YXNDYWNoZS53aWR0aCA9IGN1cnNvckltYWdlU2l6ZVB4O1xuICAgIGNvbnN0IGNvbnRleHQgPSBlcmFzZXJDYW52YXNDYWNoZS5nZXRDb250ZXh0KFwiMmRcIikhO1xuICAgIGNvbnRleHQubGluZVdpZHRoID0gMTtcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICAgIGNvbnRleHQuYXJjKFxuICAgICAgZXJhc2VyQ2FudmFzQ2FjaGUud2lkdGggLyAyLFxuICAgICAgZXJhc2VyQ2FudmFzQ2FjaGUuaGVpZ2h0IC8gMixcbiAgICAgIDUsXG4gICAgICAwLFxuICAgICAgMiAqIE1hdGguUEksXG4gICAgKTtcbiAgICBjb250ZXh0LmZpbGxTdHlsZSA9IGlzRGFya1RoZW1lID8gb2MuYmxhY2sgOiBvYy53aGl0ZTtcbiAgICBjb250ZXh0LmZpbGwoKTtcbiAgICBjb250ZXh0LnN0cm9rZVN0eWxlID0gaXNEYXJrVGhlbWUgPyBvYy53aGl0ZSA6IG9jLmJsYWNrO1xuICAgIGNvbnRleHQuc3Ryb2tlKCk7XG4gICAgcHJldmlld0RhdGFVUkwgPSBlcmFzZXJDYW52YXNDYWNoZS50b0RhdGFVUkwoTUlNRV9UWVBFUy5zdmcpIGFzIERhdGFVUkw7XG4gIH07XG4gIGlmICghZXJhc2VyQ2FudmFzQ2FjaGUgfHwgZXJhc2VyQ2FudmFzQ2FjaGUudGhlbWUgIT09IHRoZW1lKSB7XG4gICAgZHJhd0NhbnZhcygpO1xuICB9XG5cbiAgc2V0Q3Vyc29yKFxuICAgIGNhbnZhcyxcbiAgICBgdXJsKCR7cHJldmlld0RhdGFVUkx9KSAke2N1cnNvckltYWdlU2l6ZVB4IC8gMn0gJHtcbiAgICAgIGN1cnNvckltYWdlU2l6ZVB4IC8gMlxuICAgIH0sIGF1dG9gLFxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEN1cnNvckZvclNoYXBlID0gKFxuICBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50IHwgbnVsbCxcbiAgYXBwU3RhdGU6IEFwcFN0YXRlLFxuKSA9PiB7XG4gIGlmICghY2FudmFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUgPT09IFwic2VsZWN0aW9uXCIpIHtcbiAgICByZXNldEN1cnNvcihjYW52YXMpO1xuICB9IGVsc2UgaWYgKGlzSGFuZFRvb2xBY3RpdmUoYXBwU3RhdGUpKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IENVUlNPUl9UWVBFLkdSQUI7XG4gIH0gZWxzZSBpZiAoaXNFcmFzZXJBY3RpdmUoYXBwU3RhdGUpKSB7XG4gICAgc2V0RXJhc2VyQ3Vyc29yKGNhbnZhcywgYXBwU3RhdGUudGhlbWUpO1xuICAgIC8vIGRvIG5vdGhpbmcgaWYgaW1hZ2UgdG9vbCBpcyBzZWxlY3RlZCB3aGljaCBzdWdnZXN0cyB0aGVyZSdzXG4gICAgLy8gYSBpbWFnZS1wcmV2aWV3IHNldCBhcyB0aGUgY3Vyc29yXG4gICAgLy8gSWdub3JlIGN1c3RvbSB0eXBlIGFzIHdlbGwgYW5kIGxldCBob3N0IGRlY2lkZVxuICB9IGVsc2UgaWYgKCFbXCJpbWFnZVwiLCBcImN1c3RvbVwiXS5pbmNsdWRlcyhhcHBTdGF0ZS5hY3RpdmVUb29sLnR5cGUpKSB7XG4gICAgY2FudmFzLnN0eWxlLmN1cnNvciA9IENVUlNPUl9UWVBFLkNST1NTSEFJUjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGlzRnVsbFNjcmVlbiA9ICgpID0+XG4gIGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50Py5ub2RlTmFtZSA9PT0gXCJIVE1MXCI7XG5cbmV4cG9ydCBjb25zdCBhbGxvd0Z1bGxTY3JlZW4gPSAoKSA9PlxuICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQucmVxdWVzdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGV4aXRGdWxsU2NyZWVuID0gKCkgPT4gZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcblxuZXhwb3J0IGNvbnN0IGdldFNob3J0Y3V0S2V5ID0gKHNob3J0Y3V0OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBzaG9ydGN1dCA9IHNob3J0Y3V0XG4gICAgLnJlcGxhY2UoL1xcYkFsdFxcYi9pLCBcIkFsdFwiKVxuICAgIC5yZXBsYWNlKC9cXGJTaGlmdFxcYi9pLCBcIlNoaWZ0XCIpXG4gICAgLnJlcGxhY2UoL1xcYihFbnRlcnxSZXR1cm4pXFxiL2ksIFwiRW50ZXJcIik7XG4gIGlmIChpc0Rhcndpbikge1xuICAgIHJldHVybiBzaG9ydGN1dFxuICAgICAgLnJlcGxhY2UoL1xcYkN0cmxPckNtZFxcYi9naSwgXCJDbWRcIilcbiAgICAgIC5yZXBsYWNlKC9cXGJBbHRcXGIvaSwgXCJPcHRpb25cIik7XG4gIH1cbiAgcmV0dXJuIHNob3J0Y3V0LnJlcGxhY2UoL1xcYkN0cmxPckNtZFxcYi9naSwgXCJDdHJsXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IHZpZXdwb3J0Q29vcmRzVG9TY2VuZUNvb3JkcyA9IChcbiAgeyBjbGllbnRYLCBjbGllbnRZIH06IHsgY2xpZW50WDogbnVtYmVyOyBjbGllbnRZOiBudW1iZXIgfSxcbiAge1xuICAgIHpvb20sXG4gICAgb2Zmc2V0TGVmdCxcbiAgICBvZmZzZXRUb3AsXG4gICAgc2Nyb2xsWCxcbiAgICBzY3JvbGxZLFxuICB9OiB7XG4gICAgem9vbTogWm9vbTtcbiAgICBvZmZzZXRMZWZ0OiBudW1iZXI7XG4gICAgb2Zmc2V0VG9wOiBudW1iZXI7XG4gICAgc2Nyb2xsWDogbnVtYmVyO1xuICAgIHNjcm9sbFk6IG51bWJlcjtcbiAgfSxcbikgPT4ge1xuICBjb25zdCB4ID0gKGNsaWVudFggLSBvZmZzZXRMZWZ0KSAvIHpvb20udmFsdWUgLSBzY3JvbGxYO1xuICBjb25zdCB5ID0gKGNsaWVudFkgLSBvZmZzZXRUb3ApIC8gem9vbS52YWx1ZSAtIHNjcm9sbFk7XG5cbiAgcmV0dXJuIHsgeCwgeSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHNjZW5lQ29vcmRzVG9WaWV3cG9ydENvb3JkcyA9IChcbiAgeyBzY2VuZVgsIHNjZW5lWSB9OiB7IHNjZW5lWDogbnVtYmVyOyBzY2VuZVk6IG51bWJlciB9LFxuICB7XG4gICAgem9vbSxcbiAgICBvZmZzZXRMZWZ0LFxuICAgIG9mZnNldFRvcCxcbiAgICBzY3JvbGxYLFxuICAgIHNjcm9sbFksXG4gIH06IHtcbiAgICB6b29tOiBab29tO1xuICAgIG9mZnNldExlZnQ6IG51bWJlcjtcbiAgICBvZmZzZXRUb3A6IG51bWJlcjtcbiAgICBzY3JvbGxYOiBudW1iZXI7XG4gICAgc2Nyb2xsWTogbnVtYmVyO1xuICB9LFxuKSA9PiB7XG4gIGNvbnN0IHggPSAoc2NlbmVYICsgc2Nyb2xsWCkgKiB6b29tLnZhbHVlICsgb2Zmc2V0TGVmdDtcbiAgY29uc3QgeSA9IChzY2VuZVkgKyBzY3JvbGxZKSAqIHpvb20udmFsdWUgKyBvZmZzZXRUb3A7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRHbG9iYWxDU1NWYXJpYWJsZSA9IChuYW1lOiBzdHJpbmcpID0+XG4gIGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLSR7bmFtZX1gKTtcblxuY29uc3QgUlNfTFRSX0NIQVJTID1cbiAgXCJBLVphLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyQjhcXHUwMzAwLVxcdTA1OTBcXHUwODAwLVxcdTFGRkZcIiArXG4gIFwiXFx1MkMwMC1cXHVGQjFDXFx1RkRGRS1cXHVGRTZGXFx1RkVGRC1cXHVGRkZGXCI7XG5jb25zdCBSU19SVExfQ0hBUlMgPSBcIlxcdTA1OTEtXFx1MDdGRlxcdUZCMUQtXFx1RkRGRFxcdUZFNzAtXFx1RkVGQ1wiO1xuY29uc3QgUkVfUlRMX0NIRUNLID0gbmV3IFJlZ0V4cChgXlteJHtSU19MVFJfQ0hBUlN9XSpbJHtSU19SVExfQ0hBUlN9XWApO1xuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBmaXJzdCBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIgaXMgUlRMLiBNZWFuaW5nIHdoZXRoZXIgaXQgc3RhcnRzXG4gKiAgd2l0aCBSVEwgY2hhcmFjdGVycywgb3IgaW5kZXRlcm1pbmF0ZSAobnVtYmVycyBldGMuKSBjaGFyYWN0ZXJzIGZvbGxvd2VkIGJ5XG4gKiAgUlRMLlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9leGNhbGlkcmF3L2V4Y2FsaWRyYXcvcHVsbC8xNzIyI2Rpc2N1c3Npb25fcjQzNjM0MDE3MVxuICovXG5leHBvcnQgY29uc3QgaXNSVEwgPSAodGV4dDogc3RyaW5nKSA9PiBSRV9SVExfQ0hFQ0sudGVzdCh0ZXh0KTtcblxuZXhwb3J0IGNvbnN0IHR1cGxlVG9Db29ycyA9IChcbiAgeHlUdXBsZTogcmVhZG9ubHkgW251bWJlciwgbnVtYmVyXSxcbik6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IFt4LCB5XSA9IHh5VHVwbGU7XG4gIHJldHVybiB7IHgsIHkgfTtcbn07XG5cbi8qKiB1c2UgYXMgYSByZWplY3Rpb25IYW5kbGVyIHRvIG11dGUgZmlsZXN5c3RlbSBBYm9ydCBlcnJvcnMgKi9cbmV4cG9ydCBjb25zdCBtdXRlRlNBYm9ydEVycm9yID0gKGVycm9yPzogRXJyb3IpID0+IHtcbiAgaWYgKGVycm9yPy5uYW1lID09PSBcIkFib3J0RXJyb3JcIikge1xuICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRocm93IGVycm9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRJbmRleCA9IDxUPihcbiAgYXJyYXk6IHJlYWRvbmx5IFRbXSxcbiAgY2I6IChlbGVtZW50OiBULCBpbmRleDogbnVtYmVyLCBhcnJheTogcmVhZG9ubHkgVFtdKSA9PiBib29sZWFuLFxuICBmcm9tSW5kZXg6IG51bWJlciA9IDAsXG4pID0+IHtcbiAgaWYgKGZyb21JbmRleCA8IDApIHtcbiAgICBmcm9tSW5kZXggPSBhcnJheS5sZW5ndGggKyBmcm9tSW5kZXg7XG4gIH1cbiAgZnJvbUluZGV4ID0gTWF0aC5taW4oYXJyYXkubGVuZ3RoLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4IC0gMTtcbiAgd2hpbGUgKCsraW5kZXggPCBhcnJheS5sZW5ndGgpIHtcbiAgICBpZiAoY2IoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTGFzdEluZGV4ID0gPFQ+KFxuICBhcnJheTogcmVhZG9ubHkgVFtdLFxuICBjYjogKGVsZW1lbnQ6IFQsIGluZGV4OiBudW1iZXIsIGFycmF5OiByZWFkb25seSBUW10pID0+IGJvb2xlYW4sXG4gIGZyb21JbmRleDogbnVtYmVyID0gYXJyYXkubGVuZ3RoIC0gMSxcbikgPT4ge1xuICBpZiAoZnJvbUluZGV4IDwgMCkge1xuICAgIGZyb21JbmRleCA9IGFycmF5Lmxlbmd0aCArIGZyb21JbmRleDtcbiAgfVxuICBmcm9tSW5kZXggPSBNYXRoLm1pbihhcnJheS5sZW5ndGggLSAxLCBNYXRoLm1heChmcm9tSW5kZXgsIDApKTtcbiAgbGV0IGluZGV4ID0gZnJvbUluZGV4ICsgMTtcbiAgd2hpbGUgKC0taW5kZXggPiAtMSkge1xuICAgIGlmIChjYihhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzVHJhbnNwYXJlbnQgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBjb25zdCBpc1JHQlRyYW5zcGFyZW50ID0gY29sb3IubGVuZ3RoID09PSA1ICYmIGNvbG9yLnN1YnN0cig0LCAxKSA9PT0gXCIwXCI7XG4gIGNvbnN0IGlzUlJHR0JCVHJhbnNwYXJlbnQgPSBjb2xvci5sZW5ndGggPT09IDkgJiYgY29sb3Iuc3Vic3RyKDcsIDIpID09PSBcIjAwXCI7XG4gIHJldHVybiAoXG4gICAgaXNSR0JUcmFuc3BhcmVudCB8fFxuICAgIGlzUlJHR0JCVHJhbnNwYXJlbnQgfHxcbiAgICBjb2xvciA9PT0gY29sb3JzLmVsZW1lbnRCYWNrZ3JvdW5kWzBdXG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBSZXNvbHZhYmxlUHJvbWlzZTxUPiA9IFByb21pc2U8VD4gJiB7XG4gIHJlc29sdmU6IFtUXSBleHRlbmRzIFt1bmRlZmluZWRdID8gKHZhbHVlPzogVCkgPT4gdm9pZCA6ICh2YWx1ZTogVCkgPT4gdm9pZDtcbiAgcmVqZWN0OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xufTtcbmV4cG9ydCBjb25zdCByZXNvbHZhYmxlUHJvbWlzZSA9IDxUPigpID0+IHtcbiAgbGV0IHJlc29sdmUhOiBhbnk7XG4gIGxldCByZWplY3QhOiBhbnk7XG4gIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgoX3Jlc29sdmUsIF9yZWplY3QpID0+IHtcbiAgICByZXNvbHZlID0gX3Jlc29sdmU7XG4gICAgcmVqZWN0ID0gX3JlamVjdDtcbiAgfSk7XG4gIChwcm9taXNlIGFzIGFueSkucmVzb2x2ZSA9IHJlc29sdmU7XG4gIChwcm9taXNlIGFzIGFueSkucmVqZWN0ID0gcmVqZWN0O1xuICByZXR1cm4gcHJvbWlzZSBhcyBSZXNvbHZhYmxlUHJvbWlzZTxUPjtcbn07XG5cbi8qKlxuICogQHBhcmFtIGZ1bmMgaGFuZGxlciB0YWtpbmcgYXQgbW9zdCBzaW5nbGUgcGFyYW1ldGVyIChldmVudCkuXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXMgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PlxuICAoKGV2ZW50KSA9PiB7XG4gICAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXMoZnVuYyBhcyBURnVuY3Rpb24sIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uO1xuXG4vKipcbiAqIGJhcmNoZXMgUmVhY3Qgc3RhdGUgdXBkYXRlcyBhbmQgdGhyb3R0bGVzIHRoZSBjYWxscyB0byBhIHNpbmdsZSBjYWxsIHBlclxuICogYW5pbWF0aW9uIGZyYW1lXG4gKi9cbmV4cG9ydCBjb25zdCB3aXRoQmF0Y2hlZFVwZGF0ZXNUaHJvdHRsZWQgPSA8XG4gIFRGdW5jdGlvbiBleHRlbmRzICgoZXZlbnQ6IGFueSkgPT4gdm9pZCkgfCAoKCkgPT4gdm9pZCksXG4+KFxuICBmdW5jOiBQYXJhbWV0ZXJzPFRGdW5jdGlvbj5bXCJsZW5ndGhcIl0gZXh0ZW5kcyAwIHwgMSA/IFRGdW5jdGlvbiA6IG5ldmVyLFxuKSA9PiB7XG4gIC8vIEB0cy1pZ25vcmVcbiAgcmV0dXJuIHRocm90dGxlUkFGPFBhcmFtZXRlcnM8VEZ1bmN0aW9uPj4oKChldmVudCkgPT4ge1xuICAgIHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzKGZ1bmMsIGV2ZW50KTtcbiAgfSkgYXMgVEZ1bmN0aW9uKTtcbn07XG5cbi8vaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzk0NjIzODIvODQxOFxuZXhwb3J0IGNvbnN0IG5Gb3JtYXR0ZXIgPSAobnVtOiBudW1iZXIsIGRpZ2l0czogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc2kgPSBbXG4gICAgeyB2YWx1ZTogMSwgc3ltYm9sOiBcImJcIiB9LFxuICAgIHsgdmFsdWU6IDFlMywgc3ltYm9sOiBcImtcIiB9LFxuICAgIHsgdmFsdWU6IDFlNiwgc3ltYm9sOiBcIk1cIiB9LFxuICAgIHsgdmFsdWU6IDFlOSwgc3ltYm9sOiBcIkdcIiB9LFxuICBdO1xuICBjb25zdCByeCA9IC9cXC4wKyR8KFxcLlswLTldKlsxLTldKTArJC87XG4gIGxldCBpbmRleDtcbiAgZm9yIChpbmRleCA9IHNpLmxlbmd0aCAtIDE7IGluZGV4ID4gMDsgaW5kZXgtLSkge1xuICAgIGlmIChudW0gPj0gc2lbaW5kZXhdLnZhbHVlKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIChcbiAgICAobnVtIC8gc2lbaW5kZXhdLnZhbHVlKS50b0ZpeGVkKGRpZ2l0cykucmVwbGFjZShyeCwgXCIkMVwiKSArIHNpW2luZGV4XS5zeW1ib2xcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWZXJzaW9uID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTE1ldGFFbGVtZW50PignbWV0YVtuYW1lPVwidmVyc2lvblwiXScpPy5jb250ZW50IHx8XG4gICAgREVGQVVMVF9WRVJTSU9OXG4gICk7XG59O1xuXG4vLyBBZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL01vZGVybml6ci9Nb2Rlcm5penIvYmxvYi9tYXN0ZXIvZmVhdHVyZS1kZXRlY3RzL2Vtb2ppLmpzXG5leHBvcnQgY29uc3Qgc3VwcG9ydHNFbW9qaSA9ICgpID0+IHtcbiAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImNhbnZhc1wiKTtcbiAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoXCIyZFwiKTtcbiAgaWYgKCFjdHgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb2Zmc2V0ID0gMTI7XG4gIGN0eC5maWxsU3R5bGUgPSBcIiNmMDBcIjtcbiAgY3R4LnRleHRCYXNlbGluZSA9IFwidG9wXCI7XG4gIGN0eC5mb250ID0gXCIzMnB4IEFyaWFsXCI7XG4gIC8vIE1vZGVybml6ciB1c2VkIPCfkKgsIGJ1dCBpdCBpcyBzb3J0IG9mIHN1cHBvcnRlZCBvbiBXaW5kb3dzIDcuXG4gIC8vIEx1Y2tpbHkg8J+YgCBpc24ndCBzdXBwb3J0ZWQuXG4gIGN0eC5maWxsVGV4dChcIvCfmIBcIiwgMCwgMCk7XG4gIHJldHVybiBjdHguZ2V0SW1hZ2VEYXRhKG9mZnNldCwgb2Zmc2V0LCAxLCAxKS5kYXRhWzBdICE9PSAwO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE5lYXJlc3RTY3JvbGxhYmxlQ29udGFpbmVyID0gKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbik6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudCA9PT0gZG9jdW1lbnQuYm9keSkge1xuICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cbiAgICBjb25zdCB7IG92ZXJmbG93WSB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFyZW50KTtcbiAgICBjb25zdCBoYXNTY3JvbGxhYmxlQ29udGVudCA9IHBhcmVudC5zY3JvbGxIZWlnaHQgPiBwYXJlbnQuY2xpZW50SGVpZ2h0O1xuICAgIGlmIChcbiAgICAgIGhhc1Njcm9sbGFibGVDb250ZW50ICYmXG4gICAgICAob3ZlcmZsb3dZID09PSBcImF1dG9cIiB8fFxuICAgICAgICBvdmVyZmxvd1kgPT09IFwic2Nyb2xsXCIgfHxcbiAgICAgICAgb3ZlcmZsb3dZID09PSBcIm92ZXJsYXlcIilcbiAgICApIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICB9XG4gIHJldHVybiBkb2N1bWVudDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb2N1c05lYXJlc3RQYXJlbnQgPSAoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCkgPT4ge1xuICBsZXQgcGFyZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICB3aGlsZSAocGFyZW50KSB7XG4gICAgaWYgKHBhcmVudC50YWJJbmRleCA+IC0xKSB7XG4gICAgICBwYXJlbnQuZm9jdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcGFyZW50ID0gcGFyZW50LnBhcmVudEVsZW1lbnQ7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwcmV2ZW50VW5sb2FkID0gKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkgPT4ge1xuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyBOT1RFOiBtb2Rlcm4gYnJvd3NlcnMgbm8gbG9uZ2VyIGFsbG93IHNob3dpbmcgYSBjdXN0b20gbWVzc2FnZSBoZXJlXG4gIGV2ZW50LnJldHVyblZhbHVlID0gXCJcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBieXRlc1RvSGV4U3RyaW5nID0gKGJ5dGVzOiBVaW50OEFycmF5KSA9PiB7XG4gIHJldHVybiBBcnJheS5mcm9tKGJ5dGVzKVxuICAgIC5tYXAoKGJ5dGUpID0+IGAwJHtieXRlLnRvU3RyaW5nKDE2KX1gLnNsaWNlKC0yKSlcbiAgICAuam9pbihcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVcGRhdGVkVGltZXN0YW1wID0gKCkgPT4gKGlzVGVzdEVudigpID8gMSA6IERhdGUubm93KCkpO1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgYXJyYXkgb2Ygb2JqZWN0cyBjb250YWluaW5nIGBpZGAgYXR0cmlidXRlLFxuICogb3IgYXJyYXkgb2YgaWRzIChzdHJpbmdzKSwgaW50byBhIE1hcCwga2V5ZCBieSBgaWRgLlxuICovXG5leHBvcnQgY29uc3QgYXJyYXlUb01hcCA9IDxUIGV4dGVuZHMgeyBpZDogc3RyaW5nIH0gfCBzdHJpbmc+KFxuICBpdGVtczogcmVhZG9ubHkgVFtdLFxuKSA9PiB7XG4gIHJldHVybiBpdGVtcy5yZWR1Y2UoKGFjYzogTWFwPHN0cmluZywgVD4sIGVsZW1lbnQpID0+IHtcbiAgICBhY2Muc2V0KHR5cGVvZiBlbGVtZW50ID09PSBcInN0cmluZ1wiID8gZWxlbWVudCA6IGVsZW1lbnQuaWQsIGVsZW1lbnQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIG5ldyBNYXAoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZXN0RW52ID0gKCkgPT5cbiAgdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnY/Lk5PREVfRU5WID09PSBcInRlc3RcIjtcblxuZXhwb3J0IGNvbnN0IGlzUHJvZEVudiA9ICgpID0+XG4gIHR5cGVvZiBwcm9jZXNzICE9PSBcInVuZGVmaW5lZFwiICYmIHByb2Nlc3MuZW52Py5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCI7XG5cbmV4cG9ydCBjb25zdCB3cmFwRXZlbnQgPSA8VCBleHRlbmRzIEV2ZW50PihuYW1lOiBFVkVOVCwgbmF0aXZlRXZlbnQ6IFQpID0+IHtcbiAgcmV0dXJuIG5ldyBDdXN0b21FdmVudChuYW1lLCB7XG4gICAgZGV0YWlsOiB7XG4gICAgICBuYXRpdmVFdmVudCxcbiAgICB9LFxuICAgIGNhbmNlbGFibGU6IHRydWUsXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZU9iamVjdCA9IDxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj4oXG4gIG9iajogVCxcbiAgdXBkYXRlczogUGFydGlhbDxUPixcbik6IFQgPT4ge1xuICBsZXQgZGlkQ2hhbmdlID0gZmFsc2U7XG4gIGZvciAoY29uc3Qga2V5IGluIHVwZGF0ZXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9ICh1cGRhdGVzIGFzIGFueSlba2V5XTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChvYmogYXMgYW55KVtrZXldID09PSB2YWx1ZSAmJlxuICAgICAgICAvLyBpZiBvYmplY3QsIGFsd2F5cyB1cGRhdGUgYmVjYXVzZSBpdHMgYXR0cnMgY291bGQgaGF2ZSBjaGFuZ2VkXG4gICAgICAgICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgdmFsdWUgPT09IG51bGwpXG4gICAgICApIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBkaWRDaGFuZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghZGlkQ2hhbmdlKSB7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ub2JqLFxuICAgIC4uLnVwZGF0ZXMsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAodmFsOiBhbnkpID0+IHtcbiAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gIHJldHVybiB2YWwgPT0gbnVsbCB8fCAodHlwZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlICE9PSBcImZ1bmN0aW9uXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZyYW1lID0gKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cuc2VsZiA9PT0gd2luZG93LnRvcCA/IFwidG9wXCIgOiBcImlmcmFtZVwiO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJldHVybiBcImlmcmFtZVwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNQcm9taXNlTGlrZSA9IChcbiAgdmFsdWU6IGFueSxcbik6IHZhbHVlIGlzIFByb21pc2U8UmVzb2x1dGlvblR5cGU8dHlwZW9mIHZhbHVlPj4gPT4ge1xuICByZXR1cm4gKFxuICAgICEhdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICBcInRoZW5cIiBpbiB2YWx1ZSAmJlxuICAgIFwiY2F0Y2hcIiBpbiB2YWx1ZSAmJlxuICAgIFwiZmluYWxseVwiIGluIHZhbHVlXG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgcXVlcnlGb2N1c2FibGVFbGVtZW50cyA9IChjb250YWluZXI6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICBjb25zdCBmb2N1c2FibGVFbGVtZW50cyA9IGNvbnRhaW5lcj8ucXVlcnlTZWxlY3RvckFsbDxIVE1MRWxlbWVudD4oXG4gICAgXCJidXR0b24sIGEsIGlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBkaXZbdGFiaW5kZXhdLCBsYWJlbFt0YWJpbmRleF1cIixcbiAgKTtcblxuICByZXR1cm4gZm9jdXNhYmxlRWxlbWVudHNcbiAgICA/IEFycmF5LmZyb20oZm9jdXNhYmxlRWxlbWVudHMpLmZpbHRlcihcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgZWxlbWVudC50YWJJbmRleCA+IC0xICYmICEoZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50KS5kaXNhYmxlZCxcbiAgICAgIClcbiAgICA6IFtdO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2hhbGxvd0VxdWFsID0gPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+PihcbiAgb2JqQTogVCxcbiAgb2JqQjogVCxcbikgPT4ge1xuICBjb25zdCBhS2V5cyA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBjb25zdCBiS2V5cyA9IE9iamVjdC5rZXlzKG9iakEpO1xuICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGFLZXlzLmV2ZXJ5KChrZXkpID0+IG9iakFba2V5XSA9PT0gb2JqQltrZXldKTtcbn07XG5cbi8vIHRha2VuIGZyb20gUmFkaXggVUlcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9yYWRpeC11aS9wcmltaXRpdmVzL2Jsb2IvbWFpbi9wYWNrYWdlcy9jb3JlL3ByaW1pdGl2ZS9zcmMvcHJpbWl0aXZlLnRzeFxuZXhwb3J0IGNvbnN0IGNvbXBvc2VFdmVudEhhbmRsZXJzID0gPEU+KFxuICBvcmlnaW5hbEV2ZW50SGFuZGxlcj86IChldmVudDogRSkgPT4gdm9pZCxcbiAgb3VyRXZlbnRIYW5kbGVyPzogKGV2ZW50OiBFKSA9PiB2b2lkLFxuICB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZCA9IHRydWUgfSA9IHt9LFxuKSA9PiB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVFdmVudChldmVudDogRSkge1xuICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyPy4oZXZlbnQpO1xuXG4gICAgaWYgKFxuICAgICAgIWNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZCB8fFxuICAgICAgIShldmVudCBhcyB1bmtub3duIGFzIEV2ZW50KS5kZWZhdWx0UHJldmVudGVkXG4gICAgKSB7XG4gICAgICByZXR1cm4gb3VyRXZlbnRIYW5kbGVyPy4oZXZlbnQpO1xuICAgIH1cbiAgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../utils.ts\n");
|
|
3959
3970
|
|
|
3960
3971
|
/***/ }),
|
|
3961
3972
|
|