@excalidraw/excalidraw 0.17.1-4bdeaf9 → 0.17.1-7381-cdf6d3e
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.
- package/dist/excalidraw-assets/{vendor-94b72f67bbf2d6c0da4f.js → vendor-3b58e346f2c1ff67584a.js} +2 -2
- package/dist/excalidraw-assets-dev/{vendor-4b7e1a9df5f218d0a300.js → vendor-861fbd671e459447f5fe.js} +53 -9
- package/dist/excalidraw-with-preact.development.js +17 -17
- package/dist/excalidraw-with-preact.production.min.js +1 -1
- package/dist/excalidraw.development.js +17 -17
- package/dist/excalidraw.production.min.js +1 -1
- package/package.json +1 -1
- package/types/components/IconPicker.d.ts +3 -2
- package/types/components/icons.d.ts +13 -1
- package/types/element/bounds.d.ts +4 -0
- package/types/element/types.d.ts +1 -1
- package/types/math.d.ts +1 -1
- package/types/renderer/renderElement.d.ts +2 -6
- package/types/renderer/renderScene.d.ts +3 -9
- package/types/scene/Shape.d.ts +4 -1
- package/types/scene/ShapeCache.d.ts +5 -1
- package/types/scene/types.d.ts +11 -1
- /package/dist/excalidraw-assets/{vendor-94b72f67bbf2d6c0da4f.js.LICENSE.txt → vendor-3b58e346f2c1ff67584a.js.LICENSE.txt} +0 -0
- /package/types/packages/excalidraw/dist/excalidraw-assets/{vendor-94b72f67bbf2d6c0da4f.d.ts → vendor-3b58e346f2c1ff67584a.d.ts} +0 -0
- /package/types/packages/excalidraw/dist/excalidraw-assets-dev/{vendor-4b7e1a9df5f218d0a300.d.ts → vendor-861fbd671e459447f5fe.d.ts} +0 -0
package/dist/excalidraw-assets-dev/{vendor-4b7e1a9df5f218d0a300.js → vendor-861fbd671e459447f5fe.js}
RENAMED
|
@@ -95,7 +95,7 @@ eval("!function(e,t){ true?module.exports=t():0}(this,(function(){\"use strict\"
|
|
|
95
95
|
\**************************************************/
|
|
96
96
|
/***/ ((module, exports, __webpack_require__) => {
|
|
97
97
|
|
|
98
|
-
eval("/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_AI_BACKEND\":\"http://localhost:3015\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.1-4bdeaf9\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"../../../node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFlBQVk7QUFDWixpQkFBaUI7QUFDakIsZUFBZTtBQUNmLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNENBQTRDOztBQUV2RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0sNHRDQUFXO0FBQ2pCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFVOztBQUVuQyxPQUFPLFlBQVk7O0FBRW5CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvYnJvd3Nlci5qcz9mOGUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9IGxvY2Fsc3RvcmFnZSgpO1xuZXhwb3J0cy5kZXN0cm95ID0gKCgpID0+IHtcblx0bGV0IHdhcm5lZCA9IGZhbHNlO1xuXG5cdHJldHVybiAoKSA9PiB7XG5cdFx0aWYgKCF3YXJuZWQpIHtcblx0XHRcdHdhcm5lZCA9IHRydWU7XG5cdFx0XHRjb25zb2xlLndhcm4oJ0luc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC4nKTtcblx0XHR9XG5cdH07XG59KSgpO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFtcblx0JyMwMDAwQ0MnLFxuXHQnIzAwMDBGRicsXG5cdCcjMDAzM0NDJyxcblx0JyMwMDMzRkYnLFxuXHQnIzAwNjZDQycsXG5cdCcjMDA2NkZGJyxcblx0JyMwMDk5Q0MnLFxuXHQnIzAwOTlGRicsXG5cdCcjMDBDQzAwJyxcblx0JyMwMENDMzMnLFxuXHQnIzAwQ0M2NicsXG5cdCcjMDBDQzk5Jyxcblx0JyMwMENDQ0MnLFxuXHQnIzAwQ0NGRicsXG5cdCcjMzMwMENDJyxcblx0JyMzMzAwRkYnLFxuXHQnIzMzMzNDQycsXG5cdCcjMzMzM0ZGJyxcblx0JyMzMzY2Q0MnLFxuXHQnIzMzNjZGRicsXG5cdCcjMzM5OUNDJyxcblx0JyMzMzk5RkYnLFxuXHQnIzMzQ0MwMCcsXG5cdCcjMzNDQzMzJyxcblx0JyMzM0NDNjYnLFxuXHQnIzMzQ0M5OScsXG5cdCcjMzNDQ0NDJyxcblx0JyMzM0NDRkYnLFxuXHQnIzY2MDBDQycsXG5cdCcjNjYwMEZGJyxcblx0JyM2NjMzQ0MnLFxuXHQnIzY2MzNGRicsXG5cdCcjNjZDQzAwJyxcblx0JyM2NkNDMzMnLFxuXHQnIzk5MDBDQycsXG5cdCcjOTkwMEZGJyxcblx0JyM5OTMzQ0MnLFxuXHQnIzk5MzNGRicsXG5cdCcjOTlDQzAwJyxcblx0JyM5OUNDMzMnLFxuXHQnI0NDMDAwMCcsXG5cdCcjQ0MwMDMzJyxcblx0JyNDQzAwNjYnLFxuXHQnI0NDMDA5OScsXG5cdCcjQ0MwMENDJyxcblx0JyNDQzAwRkYnLFxuXHQnI0NDMzMwMCcsXG5cdCcjQ0MzMzMzJyxcblx0JyNDQzMzNjYnLFxuXHQnI0NDMzM5OScsXG5cdCcjQ0MzM0NDJyxcblx0JyNDQzMzRkYnLFxuXHQnI0NDNjYwMCcsXG5cdCcjQ0M2NjMzJyxcblx0JyNDQzk5MDAnLFxuXHQnI0NDOTkzMycsXG5cdCcjQ0NDQzAwJyxcblx0JyNDQ0NDMzMnLFxuXHQnI0ZGMDAwMCcsXG5cdCcjRkYwMDMzJyxcblx0JyNGRjAwNjYnLFxuXHQnI0ZGMDA5OScsXG5cdCcjRkYwMENDJyxcblx0JyNGRjAwRkYnLFxuXHQnI0ZGMzMwMCcsXG5cdCcjRkYzMzMzJyxcblx0JyNGRjMzNjYnLFxuXHQnI0ZGMzM5OScsXG5cdCcjRkYzM0NDJyxcblx0JyNGRjMzRkYnLFxuXHQnI0ZGNjYwMCcsXG5cdCcjRkY2NjMzJyxcblx0JyNGRjk5MDAnLFxuXHQnI0ZGOTkzMycsXG5cdCcjRkZDQzAwJyxcblx0JyNGRkNDMzMnXG5dO1xuXG4vKipcbiAqIEN1cnJlbnRseSBvbmx5IFdlYktpdC1iYXNlZCBXZWIgSW5zcGVjdG9ycywgRmlyZWZveCA+PSB2MzEsXG4gKiBhbmQgdGhlIEZpcmVidWcgZXh0ZW5zaW9uIChhbnkgRmlyZWZveCB2ZXJzaW9uKSBhcmUga25vd25cbiAqIHRvIHN1cHBvcnQgXCIlY1wiIENTUyBjdXN0b21pemF0aW9ucy5cbiAqXG4gKiBUT0RPOiBhZGQgYSBgbG9jYWxTdG9yYWdlYCB2YXJpYWJsZSB0byBleHBsaWNpdGx5IGVuYWJsZS9kaXNhYmxlIGNvbG9yc1xuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG5cdC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcblx0Ly8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2Vcblx0Ly8gZXhwbGljaXRseVxuXHRpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgKHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicgfHwgd2luZG93LnByb2Nlc3MuX19ud2pzKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuXHRpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBJcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuXHQvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuXHRyZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcblx0XHQvLyBJcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG5cdFx0KHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcblx0XHQvLyBJcyBmaXJlZm94ID49IHYzMT9cblx0XHQvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcblx0XHQvLyBEb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG5cdFx0KHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcblx0YXJnc1swXSA9ICh0aGlzLnVzZUNvbG9ycyA/ICclYycgOiAnJykgK1xuXHRcdHRoaXMubmFtZXNwYWNlICtcblx0XHQodGhpcy51c2VDb2xvcnMgPyAnICVjJyA6ICcgJykgK1xuXHRcdGFyZ3NbMF0gK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICclYyAnIDogJyAnKSArXG5cdFx0JysnICsgbW9kdWxlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuXHRpZiAoIXRoaXMudXNlQ29sb3JzKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYyA9ICdjb2xvcjogJyArIHRoaXMuY29sb3I7XG5cdGFyZ3Muc3BsaWNlKDEsIDAsIGMsICdjb2xvcjogaW5oZXJpdCcpO1xuXG5cdC8vIFRoZSBmaW5hbCBcIiVjXCIgaXMgc29tZXdoYXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyXG5cdC8vIGFyZ3VtZW50cyBwYXNzZWQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgJWMsIHNvIHdlIG5lZWQgdG9cblx0Ly8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBpbmRleCB0byBpbnNlcnQgdGhlIENTUyBpbnRvXG5cdGxldCBpbmRleCA9IDA7XG5cdGxldCBsYXN0QyA9IDA7XG5cdGFyZ3NbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLCBtYXRjaCA9PiB7XG5cdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGluZGV4Kys7XG5cdFx0aWYgKG1hdGNoID09PSAnJWMnKSB7XG5cdFx0XHQvLyBXZSBvbmx5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSAqbGFzdCogJWNcblx0XHRcdC8vICh0aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCB0aGVpciBvd24pXG5cdFx0XHRsYXN0QyA9IGluZGV4O1xuXHRcdH1cblx0fSk7XG5cblx0YXJncy5zcGxpY2UobGFzdEMsIDAsIGMpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUuZGVidWcoKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmRlYnVnYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKiBJZiBgY29uc29sZS5kZWJ1Z2AgaXMgbm90IGF2YWlsYWJsZSwgZmFsbHMgYmFja1xuICogdG8gYGNvbnNvbGUubG9nYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5leHBvcnRzLmxvZyA9IGNvbnNvbGUuZGVidWcgfHwgY29uc29sZS5sb2cgfHwgKCgpID0+IHt9KTtcblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuXHR0cnkge1xuXHRcdGlmIChuYW1lc3BhY2VzKSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2Uuc2V0SXRlbSgnZGVidWcnLCBuYW1lc3BhY2VzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhwb3J0cy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2RlYnVnJyk7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBsb2FkKCkge1xuXHRsZXQgcjtcblx0dHJ5IHtcblx0XHRyID0gZXhwb3J0cy5zdG9yYWdlLmdldEl0ZW0oJ2RlYnVnJyk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG5cblx0Ly8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuXHRpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcblx0XHRyID0gcHJvY2Vzcy5lbnYuREVCVUc7XG5cdH1cblxuXHRyZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBMb2NhbHN0b3JhZ2UgYXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBsb2NhbHN0b3JhZ2UuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzYWZhcmkgdGhyb3dzXG4gKiB3aGVuIGEgdXNlciBkaXNhYmxlcyBjb29raWVzL2xvY2Fsc3RvcmFnZVxuICogYW5kIHlvdSBhdHRlbXB0IHRvIGFjY2VzcyBpdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2NhbFN0b3JhZ2V9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2NhbHN0b3JhZ2UoKSB7XG5cdHRyeSB7XG5cdFx0Ly8gVFZNTEtpdCAoQXBwbGUgVFYgSlMgUnVudGltZSkgZG9lcyBub3QgaGF2ZSBhIHdpbmRvdyBvYmplY3QsIGp1c3QgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dFxuXHRcdC8vIFRoZSBCcm93c2VyIGFsc28gaGFzIGxvY2FsU3RvcmFnZSBpbiB0aGUgZ2xvYmFsIGNvbnRleHQuXG5cdFx0cmV0dXJuIGxvY2FsU3RvcmFnZTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2NvbW1vbicpKGV4cG9ydHMpO1xuXG5jb25zdCB7Zm9ybWF0dGVyc30gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZm9ybWF0dGVycy5qID0gZnVuY3Rpb24gKHYpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodik7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0cmV0dXJuICdbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogJyArIGVycm9yLm1lc3NhZ2U7XG5cdH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/debug/src/browser.js\n");
|
|
98
|
+
eval("/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_AI_BACKEND\":\"http://localhost:3015\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.1-7381-cdf6d3e\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}).DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"../../../node_modules/debug/src/common.js\")(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2RlYnVnL3NyYy9icm93c2VyLmpzLmpzIiwibWFwcGluZ3MiOiJBQUFBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxrQkFBa0I7QUFDbEIsWUFBWTtBQUNaLFlBQVk7QUFDWixpQkFBaUI7QUFDakIsZUFBZTtBQUNmLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQUFFOztBQUVGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsNENBQTRDOztBQUV2RDtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU0saXVDQUFXO0FBQ2pCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFVOztBQUVuQyxPQUFPLFlBQVk7O0FBRW5CO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9kZWJ1Zy9zcmMvYnJvd3Nlci5qcz9mOGUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1lbnYgYnJvd3NlciAqL1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9IGxvY2Fsc3RvcmFnZSgpO1xuZXhwb3J0cy5kZXN0cm95ID0gKCgpID0+IHtcblx0bGV0IHdhcm5lZCA9IGZhbHNlO1xuXG5cdHJldHVybiAoKSA9PiB7XG5cdFx0aWYgKCF3YXJuZWQpIHtcblx0XHRcdHdhcm5lZCA9IHRydWU7XG5cdFx0XHRjb25zb2xlLndhcm4oJ0luc3RhbmNlIG1ldGhvZCBgZGVidWcuZGVzdHJveSgpYCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9lcyBhbnl0aGluZy4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24gb2YgYGRlYnVnYC4nKTtcblx0XHR9XG5cdH07XG59KSgpO1xuXG4vKipcbiAqIENvbG9ycy5cbiAqL1xuXG5leHBvcnRzLmNvbG9ycyA9IFtcblx0JyMwMDAwQ0MnLFxuXHQnIzAwMDBGRicsXG5cdCcjMDAzM0NDJyxcblx0JyMwMDMzRkYnLFxuXHQnIzAwNjZDQycsXG5cdCcjMDA2NkZGJyxcblx0JyMwMDk5Q0MnLFxuXHQnIzAwOTlGRicsXG5cdCcjMDBDQzAwJyxcblx0JyMwMENDMzMnLFxuXHQnIzAwQ0M2NicsXG5cdCcjMDBDQzk5Jyxcblx0JyMwMENDQ0MnLFxuXHQnIzAwQ0NGRicsXG5cdCcjMzMwMENDJyxcblx0JyMzMzAwRkYnLFxuXHQnIzMzMzNDQycsXG5cdCcjMzMzM0ZGJyxcblx0JyMzMzY2Q0MnLFxuXHQnIzMzNjZGRicsXG5cdCcjMzM5OUNDJyxcblx0JyMzMzk5RkYnLFxuXHQnIzMzQ0MwMCcsXG5cdCcjMzNDQzMzJyxcblx0JyMzM0NDNjYnLFxuXHQnIzMzQ0M5OScsXG5cdCcjMzNDQ0NDJyxcblx0JyMzM0NDRkYnLFxuXHQnIzY2MDBDQycsXG5cdCcjNjYwMEZGJyxcblx0JyM2NjMzQ0MnLFxuXHQnIzY2MzNGRicsXG5cdCcjNjZDQzAwJyxcblx0JyM2NkNDMzMnLFxuXHQnIzk5MDBDQycsXG5cdCcjOTkwMEZGJyxcblx0JyM5OTMzQ0MnLFxuXHQnIzk5MzNGRicsXG5cdCcjOTlDQzAwJyxcblx0JyM5OUNDMzMnLFxuXHQnI0NDMDAwMCcsXG5cdCcjQ0MwMDMzJyxcblx0JyNDQzAwNjYnLFxuXHQnI0NDMDA5OScsXG5cdCcjQ0MwMENDJyxcblx0JyNDQzAwRkYnLFxuXHQnI0NDMzMwMCcsXG5cdCcjQ0MzMzMzJyxcblx0JyNDQzMzNjYnLFxuXHQnI0NDMzM5OScsXG5cdCcjQ0MzM0NDJyxcblx0JyNDQzMzRkYnLFxuXHQnI0NDNjYwMCcsXG5cdCcjQ0M2NjMzJyxcblx0JyNDQzk5MDAnLFxuXHQnI0NDOTkzMycsXG5cdCcjQ0NDQzAwJyxcblx0JyNDQ0NDMzMnLFxuXHQnI0ZGMDAwMCcsXG5cdCcjRkYwMDMzJyxcblx0JyNGRjAwNjYnLFxuXHQnI0ZGMDA5OScsXG5cdCcjRkYwMENDJyxcblx0JyNGRjAwRkYnLFxuXHQnI0ZGMzMwMCcsXG5cdCcjRkYzMzMzJyxcblx0JyNGRjMzNjYnLFxuXHQnI0ZGMzM5OScsXG5cdCcjRkYzM0NDJyxcblx0JyNGRjMzRkYnLFxuXHQnI0ZGNjYwMCcsXG5cdCcjRkY2NjMzJyxcblx0JyNGRjk5MDAnLFxuXHQnI0ZGOTkzMycsXG5cdCcjRkZDQzAwJyxcblx0JyNGRkNDMzMnXG5dO1xuXG4vKipcbiAqIEN1cnJlbnRseSBvbmx5IFdlYktpdC1iYXNlZCBXZWIgSW5zcGVjdG9ycywgRmlyZWZveCA+PSB2MzEsXG4gKiBhbmQgdGhlIEZpcmVidWcgZXh0ZW5zaW9uIChhbnkgRmlyZWZveCB2ZXJzaW9uKSBhcmUga25vd25cbiAqIHRvIHN1cHBvcnQgXCIlY1wiIENTUyBjdXN0b21pemF0aW9ucy5cbiAqXG4gKiBUT0RPOiBhZGQgYSBgbG9jYWxTdG9yYWdlYCB2YXJpYWJsZSB0byBleHBsaWNpdGx5IGVuYWJsZS9kaXNhYmxlIGNvbG9yc1xuICovXG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5mdW5jdGlvbiB1c2VDb2xvcnMoKSB7XG5cdC8vIE5COiBJbiBhbiBFbGVjdHJvbiBwcmVsb2FkIHNjcmlwdCwgZG9jdW1lbnQgd2lsbCBiZSBkZWZpbmVkIGJ1dCBub3QgZnVsbHlcblx0Ly8gaW5pdGlhbGl6ZWQuIFNpbmNlIHdlIGtub3cgd2UncmUgaW4gQ2hyb21lLCB3ZSdsbCBqdXN0IGRldGVjdCB0aGlzIGNhc2Vcblx0Ly8gZXhwbGljaXRseVxuXHRpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LnByb2Nlc3MgJiYgKHdpbmRvdy5wcm9jZXNzLnR5cGUgPT09ICdyZW5kZXJlcicgfHwgd2luZG93LnByb2Nlc3MuX19ud2pzKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIEVkZ2UgZG8gbm90IHN1cHBvcnQgY29sb3JzLlxuXHRpZiAodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goLyhlZGdlfHRyaWRlbnQpXFwvKFxcZCspLykpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvLyBJcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuXHQvLyBkb2N1bWVudCBpcyB1bmRlZmluZWQgaW4gcmVhY3QtbmF0aXZlOiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QtbmF0aXZlL3B1bGwvMTYzMlxuXHRyZXR1cm4gKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZSAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuV2Via2l0QXBwZWFyYW5jZSkgfHxcblx0XHQvLyBJcyBmaXJlYnVnPyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zOTgxMjAvMzc2NzczXG5cdFx0KHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jb25zb2xlICYmICh3aW5kb3cuY29uc29sZS5maXJlYnVnIHx8ICh3aW5kb3cuY29uc29sZS5leGNlcHRpb24gJiYgd2luZG93LmNvbnNvbGUudGFibGUpKSkgfHxcblx0XHQvLyBJcyBmaXJlZm94ID49IHYzMT9cblx0XHQvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1Rvb2xzL1dlYl9Db25zb2xlI1N0eWxpbmdfbWVzc2FnZXNcblx0XHQodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudCAmJiBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkubWF0Y2goL2ZpcmVmb3hcXC8oXFxkKykvKSAmJiBwYXJzZUludChSZWdFeHAuJDEsIDEwKSA+PSAzMSkgfHxcblx0XHQvLyBEb3VibGUgY2hlY2sgd2Via2l0IGluIHVzZXJBZ2VudCBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgd29ya2VyXG5cdFx0KHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIG5hdmlnYXRvci51c2VyQWdlbnQgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9hcHBsZXdlYmtpdFxcLyhcXGQrKS8pKTtcbn1cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKGFyZ3MpIHtcblx0YXJnc1swXSA9ICh0aGlzLnVzZUNvbG9ycyA/ICclYycgOiAnJykgK1xuXHRcdHRoaXMubmFtZXNwYWNlICtcblx0XHQodGhpcy51c2VDb2xvcnMgPyAnICVjJyA6ICcgJykgK1xuXHRcdGFyZ3NbMF0gK1xuXHRcdCh0aGlzLnVzZUNvbG9ycyA/ICclYyAnIDogJyAnKSArXG5cdFx0JysnICsgbW9kdWxlLmV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuXHRpZiAoIXRoaXMudXNlQ29sb3JzKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYyA9ICdjb2xvcjogJyArIHRoaXMuY29sb3I7XG5cdGFyZ3Muc3BsaWNlKDEsIDAsIGMsICdjb2xvcjogaW5oZXJpdCcpO1xuXG5cdC8vIFRoZSBmaW5hbCBcIiVjXCIgaXMgc29tZXdoYXQgdHJpY2t5LCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG90aGVyXG5cdC8vIGFyZ3VtZW50cyBwYXNzZWQgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUgJWMsIHNvIHdlIG5lZWQgdG9cblx0Ly8gZmlndXJlIG91dCB0aGUgY29ycmVjdCBpbmRleCB0byBpbnNlcnQgdGhlIENTUyBpbnRvXG5cdGxldCBpbmRleCA9IDA7XG5cdGxldCBsYXN0QyA9IDA7XG5cdGFyZ3NbMF0ucmVwbGFjZSgvJVthLXpBLVolXS9nLCBtYXRjaCA9PiB7XG5cdFx0aWYgKG1hdGNoID09PSAnJSUnKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGluZGV4Kys7XG5cdFx0aWYgKG1hdGNoID09PSAnJWMnKSB7XG5cdFx0XHQvLyBXZSBvbmx5IGFyZSBpbnRlcmVzdGVkIGluIHRoZSAqbGFzdCogJWNcblx0XHRcdC8vICh0aGUgdXNlciBtYXkgaGF2ZSBwcm92aWRlZCB0aGVpciBvd24pXG5cdFx0XHRsYXN0QyA9IGluZGV4O1xuXHRcdH1cblx0fSk7XG5cblx0YXJncy5zcGxpY2UobGFzdEMsIDAsIGMpO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUuZGVidWcoKWAgd2hlbiBhdmFpbGFibGUuXG4gKiBOby1vcCB3aGVuIGBjb25zb2xlLmRlYnVnYCBpcyBub3QgYSBcImZ1bmN0aW9uXCIuXG4gKiBJZiBgY29uc29sZS5kZWJ1Z2AgaXMgbm90IGF2YWlsYWJsZSwgZmFsbHMgYmFja1xuICogdG8gYGNvbnNvbGUubG9nYC5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5leHBvcnRzLmxvZyA9IGNvbnNvbGUuZGVidWcgfHwgY29uc29sZS5sb2cgfHwgKCgpID0+IHt9KTtcblxuLyoqXG4gKiBTYXZlIGBuYW1lc3BhY2VzYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZXNwYWNlc1xuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuXHR0cnkge1xuXHRcdGlmIChuYW1lc3BhY2VzKSB7XG5cdFx0XHRleHBvcnRzLnN0b3JhZ2Uuc2V0SXRlbSgnZGVidWcnLCBuYW1lc3BhY2VzKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZXhwb3J0cy5zdG9yYWdlLnJlbW92ZUl0ZW0oJ2RlYnVnJyk7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnJvcikge1xuXHRcdC8vIFN3YWxsb3dcblx0XHQvLyBYWFggKEBRaXgtKSBzaG91bGQgd2UgYmUgbG9nZ2luZyB0aGVzZT9cblx0fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBsb2FkKCkge1xuXHRsZXQgcjtcblx0dHJ5IHtcblx0XHRyID0gZXhwb3J0cy5zdG9yYWdlLmdldEl0ZW0oJ2RlYnVnJyk7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0Ly8gU3dhbGxvd1xuXHRcdC8vIFhYWCAoQFFpeC0pIHNob3VsZCB3ZSBiZSBsb2dnaW5nIHRoZXNlP1xuXHR9XG5cblx0Ly8gSWYgZGVidWcgaXNuJ3Qgc2V0IGluIExTLCBhbmQgd2UncmUgaW4gRWxlY3Ryb24sIHRyeSB0byBsb2FkICRERUJVR1xuXHRpZiAoIXIgJiYgdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmICdlbnYnIGluIHByb2Nlc3MpIHtcblx0XHRyID0gcHJvY2Vzcy5lbnYuREVCVUc7XG5cdH1cblxuXHRyZXR1cm4gcjtcbn1cblxuLyoqXG4gKiBMb2NhbHN0b3JhZ2UgYXR0ZW1wdHMgdG8gcmV0dXJuIHRoZSBsb2NhbHN0b3JhZ2UuXG4gKlxuICogVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBzYWZhcmkgdGhyb3dzXG4gKiB3aGVuIGEgdXNlciBkaXNhYmxlcyBjb29raWVzL2xvY2Fsc3RvcmFnZVxuICogYW5kIHlvdSBhdHRlbXB0IHRvIGFjY2VzcyBpdC5cbiAqXG4gKiBAcmV0dXJuIHtMb2NhbFN0b3JhZ2V9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBsb2NhbHN0b3JhZ2UoKSB7XG5cdHRyeSB7XG5cdFx0Ly8gVFZNTEtpdCAoQXBwbGUgVFYgSlMgUnVudGltZSkgZG9lcyBub3QgaGF2ZSBhIHdpbmRvdyBvYmplY3QsIGp1c3QgbG9jYWxTdG9yYWdlIGluIHRoZSBnbG9iYWwgY29udGV4dFxuXHRcdC8vIFRoZSBCcm93c2VyIGFsc28gaGFzIGxvY2FsU3RvcmFnZSBpbiB0aGUgZ2xvYmFsIGNvbnRleHQuXG5cdFx0cmV0dXJuIGxvY2FsU3RvcmFnZTtcblx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHQvLyBTd2FsbG93XG5cdFx0Ly8gWFhYIChAUWl4LSkgc2hvdWxkIHdlIGJlIGxvZ2dpbmcgdGhlc2U/XG5cdH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2NvbW1vbicpKGV4cG9ydHMpO1xuXG5jb25zdCB7Zm9ybWF0dGVyc30gPSBtb2R1bGUuZXhwb3J0cztcblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZm9ybWF0dGVycy5qID0gZnVuY3Rpb24gKHYpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5zdHJpbmdpZnkodik7XG5cdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0cmV0dXJuICdbVW5leHBlY3RlZEpTT05QYXJzZUVycm9yXTogJyArIGVycm9yLm1lc3NhZ2U7XG5cdH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/debug/src/browser.js\n");
|
|
99
99
|
|
|
100
100
|
/***/ }),
|
|
101
101
|
|
|
@@ -265,7 +265,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
265
265
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
266
266
|
|
|
267
267
|
"use strict";
|
|
268
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEFAULT_FONT_SIZE\": () => (/* binding */ DEFAULT_FONT_SIZE),\n/* harmony export */ \"SVG_TO_SHAPE_MAPPER\": () => (/* binding */ SVG_TO_SHAPE_MAPPER)\n/* harmony export */ });\nconst DEFAULT_FONT_SIZE = 20;\nconst SVG_TO_SHAPE_MAPPER = {\n rect: \"rectangle\",\n circle: \"ellipse\",\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
268
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"DEFAULT_FONT_SIZE\": () => (/* binding */ DEFAULT_FONT_SIZE),\n/* harmony export */ \"MERMAID_CONFIG\": () => (/* binding */ MERMAID_CONFIG),\n/* harmony export */ \"SVG_TO_SHAPE_MAPPER\": () => (/* binding */ SVG_TO_SHAPE_MAPPER)\n/* harmony export */ });\nconst DEFAULT_FONT_SIZE = 20;\nconst SVG_TO_SHAPE_MAPPER = {\n rect: \"rectangle\",\n circle: \"ellipse\",\n};\nconst MERMAID_CONFIG = {\n startOnLoad: false,\n flowchart: { curve: \"linear\" },\n themeVariables: {\n fontSize: `${DEFAULT_FONT_SIZE * 1.25}px`,\n },\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnN0YW50cy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTztBQUNBO0FBQ1A7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBLGlCQUFpQixpQkFBaUI7QUFDbEM7QUFDQSxxQkFBcUIseUJBQXlCO0FBQzlDLEtBQUs7QUFDTCIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvY29uc3RhbnRzLmpzPzQyZDIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9TSVpFID0gMjA7XG5leHBvcnQgY29uc3QgU1ZHX1RPX1NIQVBFX01BUFBFUiA9IHtcbiAgICByZWN0OiBcInJlY3RhbmdsZVwiLFxuICAgIGNpcmNsZTogXCJlbGxpcHNlXCIsXG59O1xuZXhwb3J0IGNvbnN0IE1FUk1BSURfQ09ORklHID0ge1xuICAgIHN0YXJ0T25Mb2FkOiBmYWxzZSxcbiAgICBmbG93Y2hhcnQ6IHsgY3VydmU6IFwibGluZWFyXCIgfSxcbiAgICB0aGVtZVZhcmlhYmxlczoge1xuICAgICAgICBmb250U2l6ZTogYCR7REVGQVVMVF9GT05UX1NJWkUgKiAxLjI1fXB4YCxcbiAgICB9LFxufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\n");
|
|
269
269
|
|
|
270
270
|
/***/ }),
|
|
271
271
|
|
|
@@ -291,6 +291,28 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
291
291
|
|
|
292
292
|
/***/ }),
|
|
293
293
|
|
|
294
|
+
/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/transformToExcalidrawSkeleton.js":
|
|
295
|
+
/*!***************************************************************************************************************!*\
|
|
296
|
+
!*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/transformToExcalidrawSkeleton.js ***!
|
|
297
|
+
\***************************************************************************************************************/
|
|
298
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
299
|
+
|
|
300
|
+
"use strict";
|
|
301
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"transformToExcalidrawArrowSkeleton\": () => (/* binding */ transformToExcalidrawArrowSkeleton),\n/* harmony export */ \"transformToExcalidrawContainerSkeleton\": () => (/* binding */ transformToExcalidrawContainerSkeleton),\n/* harmony export */ \"transformToExcalidrawLineSkeleton\": () => (/* binding */ transformToExcalidrawLineSkeleton),\n/* harmony export */ \"transformToExcalidrawTextSkeleton\": () => (/* binding */ transformToExcalidrawTextSkeleton)\n/* harmony export */ });\nconst transformToExcalidrawLineSkeleton = (line) => {\n const lineElement = {\n type: \"line\",\n x: line.startX,\n y: line.startY,\n points: [\n [0, 0],\n [line.endX - line.startX, line.endY - line.startY],\n ],\n width: line.endX - line.startX,\n height: line.endY - line.startY,\n strokeStyle: line.strokeStyle || \"solid\",\n strokeColor: line.strokeColor || \"#000\",\n strokeWidth: line.strokeWidth || 1,\n };\n if (line.groupId) {\n Object.assign(lineElement, { groupIds: [line.groupId] });\n }\n if (line.id) {\n Object.assign(lineElement, { id: line.id });\n }\n return lineElement;\n};\nconst transformToExcalidrawTextSkeleton = (element) => {\n const textElement = {\n type: \"text\",\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height,\n text: element.text || \"\",\n fontSize: element.fontSize,\n verticalAlign: \"middle\",\n };\n if (element.groupId) {\n Object.assign(textElement, { groupIds: [element.groupId] });\n }\n if (element.id) {\n Object.assign(textElement, { id: element.id });\n }\n return textElement;\n};\nconst transformToExcalidrawContainerSkeleton = (element) => {\n let extraProps = {};\n if (element.type === \"rectangle\" && element.subtype === \"activation\") {\n extraProps = {\n backgroundColor: \"#e9ecef\",\n fillStyle: \"solid\",\n };\n }\n const container = {\n id: element.id,\n type: element.type,\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height,\n label: {\n text: element?.label?.text || \"\",\n fontSize: element?.label?.fontSize,\n verticalAlign: element.label?.verticalAlign || \"middle\",\n strokeColor: element.label?.color || \"#000\",\n groupIds: element.groupId ? [element.groupId] : [],\n },\n strokeStyle: element?.strokeStyle,\n strokeWidth: element?.strokeWidth,\n strokeColor: element?.strokeColor,\n backgroundColor: element?.bgColor,\n fillStyle: \"solid\",\n ...extraProps,\n };\n if (element.groupId) {\n Object.assign(container, { groupIds: [element.groupId] });\n }\n return container;\n};\nconst transformToExcalidrawArrowSkeleton = (arrow) => {\n const arrowElement = {\n type: \"arrow\",\n x: arrow.startX,\n y: arrow.startY,\n points: arrow.points || [\n [0, 0],\n [arrow.endX - arrow.startX, arrow.endY - arrow.startY],\n ],\n width: arrow.endX - arrow.startX,\n height: arrow.endY - arrow.startY,\n strokeStyle: arrow?.strokeStyle || \"solid\",\n endArrowhead: arrow?.endArrowhead || null,\n startArrowhead: arrow?.startArrowhead || null,\n label: {\n text: arrow?.label?.text || \"\",\n fontSize: 16,\n },\n roundness: {\n type: 2,\n },\n start: arrow.start,\n end: arrow.end,\n };\n if (arrow.groupId) {\n Object.assign(arrowElement, { groupIds: [arrow.groupId] });\n }\n return arrowElement;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdTa2VsZXRvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsMEJBQTBCO0FBQy9EO0FBQ0E7QUFDQSxxQ0FBcUMsYUFBYTtBQUNsRDtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUMsNkJBQTZCO0FBQ2xFO0FBQ0E7QUFDQSxxQ0FBcUMsZ0JBQWdCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDZCQUE2QjtBQUNoRTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsMkJBQTJCO0FBQ2pFO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvY29udmVydGVyL3RyYW5zZm9ybVRvRXhjYWxpZHJhd1NrZWxldG9uLmpzPzVkM2MiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvRXhjYWxpZHJhd0xpbmVTa2VsZXRvbiA9IChsaW5lKSA9PiB7XG4gICAgY29uc3QgbGluZUVsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6IFwibGluZVwiLFxuICAgICAgICB4OiBsaW5lLnN0YXJ0WCxcbiAgICAgICAgeTogbGluZS5zdGFydFksXG4gICAgICAgIHBvaW50czogW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgW2xpbmUuZW5kWCAtIGxpbmUuc3RhcnRYLCBsaW5lLmVuZFkgLSBsaW5lLnN0YXJ0WV0sXG4gICAgICAgIF0sXG4gICAgICAgIHdpZHRoOiBsaW5lLmVuZFggLSBsaW5lLnN0YXJ0WCxcbiAgICAgICAgaGVpZ2h0OiBsaW5lLmVuZFkgLSBsaW5lLnN0YXJ0WSxcbiAgICAgICAgc3Ryb2tlU3R5bGU6IGxpbmUuc3Ryb2tlU3R5bGUgfHwgXCJzb2xpZFwiLFxuICAgICAgICBzdHJva2VDb2xvcjogbGluZS5zdHJva2VDb2xvciB8fCBcIiMwMDBcIixcbiAgICAgICAgc3Ryb2tlV2lkdGg6IGxpbmUuc3Ryb2tlV2lkdGggfHwgMSxcbiAgICB9O1xuICAgIGlmIChsaW5lLmdyb3VwSWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihsaW5lRWxlbWVudCwgeyBncm91cElkczogW2xpbmUuZ3JvdXBJZF0gfSk7XG4gICAgfVxuICAgIGlmIChsaW5lLmlkKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24obGluZUVsZW1lbnQsIHsgaWQ6IGxpbmUuaWQgfSk7XG4gICAgfVxuICAgIHJldHVybiBsaW5lRWxlbWVudDtcbn07XG5leHBvcnQgY29uc3QgdHJhbnNmb3JtVG9FeGNhbGlkcmF3VGV4dFNrZWxldG9uID0gKGVsZW1lbnQpID0+IHtcbiAgICBjb25zdCB0ZXh0RWxlbWVudCA9IHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHg6IGVsZW1lbnQueCxcbiAgICAgICAgeTogZWxlbWVudC55LFxuICAgICAgICB3aWR0aDogZWxlbWVudC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBlbGVtZW50LmhlaWdodCxcbiAgICAgICAgdGV4dDogZWxlbWVudC50ZXh0IHx8IFwiXCIsXG4gICAgICAgIGZvbnRTaXplOiBlbGVtZW50LmZvbnRTaXplLFxuICAgICAgICB2ZXJ0aWNhbEFsaWduOiBcIm1pZGRsZVwiLFxuICAgIH07XG4gICAgaWYgKGVsZW1lbnQuZ3JvdXBJZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRleHRFbGVtZW50LCB7IGdyb3VwSWRzOiBbZWxlbWVudC5ncm91cElkXSB9KTtcbiAgICB9XG4gICAgaWYgKGVsZW1lbnQuaWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0ZXh0RWxlbWVudCwgeyBpZDogZWxlbWVudC5pZCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRleHRFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdDb250YWluZXJTa2VsZXRvbiA9IChlbGVtZW50KSA9PiB7XG4gICAgbGV0IGV4dHJhUHJvcHMgPSB7fTtcbiAgICBpZiAoZWxlbWVudC50eXBlID09PSBcInJlY3RhbmdsZVwiICYmIGVsZW1lbnQuc3VidHlwZSA9PT0gXCJhY3RpdmF0aW9uXCIpIHtcbiAgICAgICAgZXh0cmFQcm9wcyA9IHtcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZTllY2VmXCIsXG4gICAgICAgICAgICBmaWxsU3R5bGU6IFwic29saWRcIixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgY29udGFpbmVyID0ge1xuICAgICAgICBpZDogZWxlbWVudC5pZCxcbiAgICAgICAgdHlwZTogZWxlbWVudC50eXBlLFxuICAgICAgICB4OiBlbGVtZW50LngsXG4gICAgICAgIHk6IGVsZW1lbnQueSxcbiAgICAgICAgd2lkdGg6IGVsZW1lbnQud2lkdGgsXG4gICAgICAgIGhlaWdodDogZWxlbWVudC5oZWlnaHQsXG4gICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICB0ZXh0OiBlbGVtZW50Py5sYWJlbD8udGV4dCB8fCBcIlwiLFxuICAgICAgICAgICAgZm9udFNpemU6IGVsZW1lbnQ/LmxhYmVsPy5mb250U2l6ZSxcbiAgICAgICAgICAgIHZlcnRpY2FsQWxpZ246IGVsZW1lbnQubGFiZWw/LnZlcnRpY2FsQWxpZ24gfHwgXCJtaWRkbGVcIixcbiAgICAgICAgICAgIHN0cm9rZUNvbG9yOiBlbGVtZW50LmxhYmVsPy5jb2xvciB8fCBcIiMwMDBcIixcbiAgICAgICAgICAgIGdyb3VwSWRzOiBlbGVtZW50Lmdyb3VwSWQgPyBbZWxlbWVudC5ncm91cElkXSA6IFtdLFxuICAgICAgICB9LFxuICAgICAgICBzdHJva2VTdHlsZTogZWxlbWVudD8uc3Ryb2tlU3R5bGUsXG4gICAgICAgIHN0cm9rZVdpZHRoOiBlbGVtZW50Py5zdHJva2VXaWR0aCxcbiAgICAgICAgc3Ryb2tlQ29sb3I6IGVsZW1lbnQ/LnN0cm9rZUNvbG9yLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGVsZW1lbnQ/LmJnQ29sb3IsXG4gICAgICAgIGZpbGxTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICAuLi5leHRyYVByb3BzLFxuICAgIH07XG4gICAgaWYgKGVsZW1lbnQuZ3JvdXBJZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGNvbnRhaW5lciwgeyBncm91cElkczogW2VsZW1lbnQuZ3JvdXBJZF0gfSk7XG4gICAgfVxuICAgIHJldHVybiBjb250YWluZXI7XG59O1xuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybVRvRXhjYWxpZHJhd0Fycm93U2tlbGV0b24gPSAoYXJyb3cpID0+IHtcbiAgICBjb25zdCBhcnJvd0VsZW1lbnQgPSB7XG4gICAgICAgIHR5cGU6IFwiYXJyb3dcIixcbiAgICAgICAgeDogYXJyb3cuc3RhcnRYLFxuICAgICAgICB5OiBhcnJvdy5zdGFydFksXG4gICAgICAgIHBvaW50czogYXJyb3cucG9pbnRzIHx8IFtcbiAgICAgICAgICAgIFswLCAwXSxcbiAgICAgICAgICAgIFthcnJvdy5lbmRYIC0gYXJyb3cuc3RhcnRYLCBhcnJvdy5lbmRZIC0gYXJyb3cuc3RhcnRZXSxcbiAgICAgICAgXSxcbiAgICAgICAgd2lkdGg6IGFycm93LmVuZFggLSBhcnJvdy5zdGFydFgsXG4gICAgICAgIGhlaWdodDogYXJyb3cuZW5kWSAtIGFycm93LnN0YXJ0WSxcbiAgICAgICAgc3Ryb2tlU3R5bGU6IGFycm93Py5zdHJva2VTdHlsZSB8fCBcInNvbGlkXCIsXG4gICAgICAgIGVuZEFycm93aGVhZDogYXJyb3c/LmVuZEFycm93aGVhZCB8fCBudWxsLFxuICAgICAgICBzdGFydEFycm93aGVhZDogYXJyb3c/LnN0YXJ0QXJyb3doZWFkIHx8IG51bGwsXG4gICAgICAgIGxhYmVsOiB7XG4gICAgICAgICAgICB0ZXh0OiBhcnJvdz8ubGFiZWw/LnRleHQgfHwgXCJcIixcbiAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgfSxcbiAgICAgICAgcm91bmRuZXNzOiB7XG4gICAgICAgICAgICB0eXBlOiAyLFxuICAgICAgICB9LFxuICAgICAgICBzdGFydDogYXJyb3cuc3RhcnQsXG4gICAgICAgIGVuZDogYXJyb3cuZW5kLFxuICAgIH07XG4gICAgaWYgKGFycm93Lmdyb3VwSWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhcnJvd0VsZW1lbnQsIHsgZ3JvdXBJZHM6IFthcnJvdy5ncm91cElkXSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFycm93RWxlbWVudDtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/transformToExcalidrawSkeleton.js\n");
|
|
302
|
+
|
|
303
|
+
/***/ }),
|
|
304
|
+
|
|
305
|
+
/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/class.js":
|
|
306
|
+
/*!*********************************************************************************************!*\
|
|
307
|
+
!*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/class.js ***!
|
|
308
|
+
\*********************************************************************************************/
|
|
309
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
310
|
+
|
|
311
|
+
"use strict";
|
|
312
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"classToExcalidrawSkeletonConvertor\": () => (/* binding */ classToExcalidrawSkeletonConvertor)\n/* harmony export */ });\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../transformToExcalidrawSkeleton.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/transformToExcalidrawSkeleton.js\");\n/* harmony import */ var _GraphConverter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../GraphConverter.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\");\n\n\n\nconst classToExcalidrawSkeletonConvertor = new _GraphConverter_js__WEBPACK_IMPORTED_MODULE_1__.GraphConverter({\n converter: (chart) => {\n const elements = [];\n Object.values(chart.nodes).forEach((node) => {\n if (!node || !node.length) {\n return;\n }\n node.forEach((element) => {\n let excalidrawElement;\n switch (element.type) {\n case \"line\":\n excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__.transformToExcalidrawLineSkeleton)(element);\n break;\n case \"rectangle\":\n case \"ellipse\":\n excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__.transformToExcalidrawContainerSkeleton)(element);\n break;\n case \"text\":\n excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__.transformToExcalidrawTextSkeleton)(element);\n break;\n default:\n throw `unknown type ${element.type}`;\n break;\n }\n elements.push(excalidrawElement);\n });\n });\n Object.values(chart.lines).forEach((line) => {\n if (!line) {\n return;\n }\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__.transformToExcalidrawLineSkeleton)(line));\n });\n Object.values(chart.arrows).forEach((arrow) => {\n if (!arrow) {\n return;\n }\n const excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__.transformToExcalidrawArrowSkeleton)(arrow);\n elements.push(excalidrawElement);\n });\n Object.values(chart.text).forEach((ele) => {\n const excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_0__.transformToExcalidrawTextSkeleton)(ele);\n elements.push(excalidrawElement);\n });\n Object.values(chart.namespaces).forEach((namespace) => {\n const classIds = Object.keys(namespace.classes);\n const children = [...classIds];\n const chartElements = [...chart.lines, ...chart.arrows, ...chart.text];\n classIds.forEach((classId) => {\n const childIds = chartElements\n .filter((ele) => ele.metadata &&\n \"class\" in ele.metadata &&\n ele.metadata.classId === classId)\n .map((ele) => ele.id);\n if (childIds.length) {\n children.push(...childIds);\n }\n });\n const frame = {\n type: \"frame\",\n id: (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)(),\n name: namespace.id,\n children,\n };\n elements.push(frame);\n });\n return { elements };\n },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9jbGFzcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdDO0FBQ3dLO0FBQ2xKO0FBQy9DLCtDQUErQyw4REFBYztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QyxvR0FBaUM7QUFDN0U7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLHlHQUFzQztBQUNsRjtBQUNBO0FBQ0EsNENBQTRDLG9HQUFpQztBQUM3RTtBQUNBO0FBQ0EsOENBQThDLGFBQWE7QUFDM0Q7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvR0FBaUM7QUFDM0QsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0NBQXNDLHFHQUFrQztBQUN4RTtBQUNBLFNBQVM7QUFDVDtBQUNBLHNDQUFzQyxvR0FBaUM7QUFDdkU7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLG9CQUFvQiw4Q0FBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxpQkFBaUI7QUFDakIsS0FBSztBQUNMLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9jbGFzcy5qcz9kMjkzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCJuYW5vaWRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybVRvRXhjYWxpZHJhd0Fycm93U2tlbGV0b24sIHRyYW5zZm9ybVRvRXhjYWxpZHJhd0NvbnRhaW5lclNrZWxldG9uLCB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdMaW5lU2tlbGV0b24sIHRyYW5zZm9ybVRvRXhjYWxpZHJhd1RleHRTa2VsZXRvbiwgfSBmcm9tIFwiLi4vdHJhbnNmb3JtVG9FeGNhbGlkcmF3U2tlbGV0b24uanNcIjtcbmltcG9ydCB7IEdyYXBoQ29udmVydGVyIH0gZnJvbSBcIi4uL0dyYXBoQ29udmVydGVyLmpzXCI7XG5leHBvcnQgY29uc3QgY2xhc3NUb0V4Y2FsaWRyYXdTa2VsZXRvbkNvbnZlcnRvciA9IG5ldyBHcmFwaENvbnZlcnRlcih7XG4gICAgY29udmVydGVyOiAoY2hhcnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbXTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhjaGFydC5ub2RlcykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBleGNhbGlkcmF3RWxlbWVudDtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdMaW5lU2tlbGV0b24oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZWxsaXBzZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdDb250YWluZXJTa2VsZXRvbihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdUZXh0U2tlbGV0b24oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGB1bmtub3duIHR5cGUgJHtlbGVtZW50LnR5cGV9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGV4Y2FsaWRyYXdFbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhjaGFydC5saW5lcykuZm9yRWFjaCgobGluZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsaW5lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxlbWVudHMucHVzaCh0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdMaW5lU2tlbGV0b24obGluZSkpO1xuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhjaGFydC5hcnJvd3MpLmZvckVhY2goKGFycm93KSA9PiB7XG4gICAgICAgICAgICBpZiAoIWFycm93KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdBcnJvd1NrZWxldG9uKGFycm93KTtcbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goZXhjYWxpZHJhd0VsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhjaGFydC50ZXh0KS5mb3JFYWNoKChlbGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV4Y2FsaWRyYXdFbGVtZW50ID0gdHJhbnNmb3JtVG9FeGNhbGlkcmF3VGV4dFNrZWxldG9uKGVsZSk7XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKGV4Y2FsaWRyYXdFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC52YWx1ZXMoY2hhcnQubmFtZXNwYWNlcykuZm9yRWFjaCgobmFtZXNwYWNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjbGFzc0lkcyA9IE9iamVjdC5rZXlzKG5hbWVzcGFjZS5jbGFzc2VzKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuID0gWy4uLmNsYXNzSWRzXTtcbiAgICAgICAgICAgIGNvbnN0IGNoYXJ0RWxlbWVudHMgPSBbLi4uY2hhcnQubGluZXMsIC4uLmNoYXJ0LmFycm93cywgLi4uY2hhcnQudGV4dF07XG4gICAgICAgICAgICBjbGFzc0lkcy5mb3JFYWNoKChjbGFzc0lkKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hpbGRJZHMgPSBjaGFydEVsZW1lbnRzXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVsZSkgPT4gZWxlLm1ldGFkYXRhICYmXG4gICAgICAgICAgICAgICAgICAgIFwiY2xhc3NcIiBpbiBlbGUubWV0YWRhdGEgJiZcbiAgICAgICAgICAgICAgICAgICAgZWxlLm1ldGFkYXRhLmNsYXNzSWQgPT09IGNsYXNzSWQpXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGVsZSkgPT4gZWxlLmlkKTtcbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRJZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goLi4uY2hpbGRJZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZnJhbWUgPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmcmFtZVwiLFxuICAgICAgICAgICAgICAgIGlkOiBuYW5vaWQoKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lc3BhY2UuaWQsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZWxlbWVudHMucHVzaChmcmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4geyBlbGVtZW50cyB9O1xuICAgIH0sXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/class.js\n");
|
|
313
|
+
|
|
314
|
+
/***/ }),
|
|
315
|
+
|
|
294
316
|
/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js":
|
|
295
317
|
/*!*************************************************************************************************!*\
|
|
296
318
|
!*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js ***!
|
|
@@ -320,7 +342,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
320
342
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
321
343
|
|
|
322
344
|
"use strict";
|
|
323
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SequenceToExcalidrawSkeletonConvertor\": () => (/* binding */ SequenceToExcalidrawSkeletonConvertor)\n/* harmony export */ });\n/* harmony import */ var _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../GraphConverter.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n\n\n// Arrow mapper for the supported sequence arrow types\nconst EXCALIDRAW_STROKE_STYLE_FOR_ARROW = {\n SOLID: \"solid\",\n DOTTED: \"dotted\",\n SOLID_CROSS: \"solid\",\n DOTTED_CROSS: \"dotted\",\n SOLID_OPEN: \"solid\",\n DOTTED_OPEN: \"dotted\",\n SOLID_POINT: \"solid\",\n DOTTED_POINT: \"dotted\",\n};\nconst createLine = (line) => {\n const lineElement = {\n type: \"line\",\n x: line.startX,\n y: line.startY,\n points: [\n [0, 0],\n [line.endX - line.startX, line.endY - line.startY],\n ],\n width: line.endX - line.startX,\n height: line.endY - line.startY,\n strokeStyle: line.strokeStyle || \"solid\",\n strokeColor: line.strokeColor || \"#000\",\n strokeWidth: line.strokeWidth || 1,\n };\n if (line.groupId) {\n Object.assign(lineElement, { groupIds: [line.groupId] });\n }\n if (line.id) {\n Object.assign(lineElement, { id: line.id });\n }\n return lineElement;\n};\nconst createText = (element) => {\n const textElement = {\n type: \"text\",\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height,\n text: element.text || \"\",\n fontSize: element.fontSize,\n verticalAlign: \"middle\",\n };\n if (element.groupId) {\n Object.assign(textElement, { groupIds: [element.groupId] });\n }\n if (element.id) {\n Object.assign(textElement, { id: element.id });\n }\n return textElement;\n};\nconst createContainer = (element) => {\n let extraProps = {};\n if (element.type === \"rectangle\" && element.subtype === \"activation\") {\n extraProps = {\n backgroundColor: \"#e9ecef\",\n fillStyle: \"solid\",\n };\n }\n const container = {\n id: element.id,\n type: element.type,\n x: element.x,\n y: element.y,\n width: element.width,\n height: element.height,\n label: {\n text: element?.label?.text || \"\",\n fontSize: element?.label?.fontSize,\n verticalAlign: \"middle\",\n strokeColor: element.label?.color || \"#000\",\n },\n strokeStyle: element?.strokeStyle,\n strokeWidth: element?.strokeWidth,\n strokeColor: element?.strokeColor,\n backgroundColor: element?.bgColor,\n fillStyle: \"solid\",\n ...extraProps,\n };\n if (element.groupId) {\n Object.assign(container, { groupIds: [element.groupId] });\n }\n return container;\n};\nconst createArrow = (arrow) => {\n const strokeStyle = EXCALIDRAW_STROKE_STYLE_FOR_ARROW[arrow.strokeStyle];\n const arrowElement = {\n type: \"arrow\",\n x: arrow.startX,\n y: arrow.startY,\n points: arrow.points || [\n [0, 0],\n [arrow.endX - arrow.startX, arrow.endY - arrow.startY],\n ],\n width: arrow.endX - arrow.startX,\n height: arrow.endY - arrow.startY,\n strokeStyle,\n endArrowhead: arrow.strokeStyle === \"SOLID_OPEN\" || arrow.strokeStyle === \"DOTTED_OPEN\"\n ? null\n : \"arrow\",\n label: {\n text: arrow?.label?.text || \"\",\n fontSize: 16,\n },\n roundness: {\n type: 2,\n },\n };\n if (arrow.groupId) {\n Object.assign(arrowElement, { groupIds: [arrow.groupId] });\n }\n return arrowElement;\n};\nconst SequenceToExcalidrawSkeletonConvertor = new _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__.GraphConverter({\n converter: (chart) => {\n const elements = [];\n const activations = [];\n Object.values(chart.nodes).forEach((node) => {\n if (!node || !node.length) {\n return;\n }\n node.forEach((element) => {\n let excalidrawElement;\n switch (element.type) {\n case \"line\":\n excalidrawElement = createLine(element);\n break;\n case \"rectangle\":\n case \"ellipse\":\n excalidrawElement = createContainer(element);\n break;\n case \"text\":\n excalidrawElement = createText(element);\n break;\n default:\n throw `unknown type ${element.type}`;\n break;\n }\n if (element.type === \"rectangle\" && element?.subtype === \"activation\") {\n activations.push(excalidrawElement);\n }\n else {\n elements.push(excalidrawElement);\n }\n });\n });\n Object.values(chart.lines).forEach((line) => {\n if (!line) {\n return;\n }\n elements.push(createLine(line));\n });\n Object.values(chart.arrows).forEach((arrow) => {\n if (!arrow) {\n return;\n }\n elements.push(createArrow(arrow));\n if (arrow.sequenceNumber) {\n elements.push(createContainer(arrow.sequenceNumber));\n }\n });\n elements.push(...activations);\n // loops\n if (chart.loops) {\n const { lines, texts, nodes } = chart.loops;\n lines.forEach((line) => {\n elements.push(createLine(line));\n });\n texts.forEach((text) => {\n elements.push(createText(text));\n });\n nodes.forEach((node) => {\n elements.push(createContainer(node));\n });\n }\n if (chart.groups) {\n chart.groups.forEach((group) => {\n const { actorKeys, name } = group;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = 0;\n let maxY = 0;\n if (!actorKeys.length) {\n return;\n }\n const actors = elements.filter((ele) => {\n if (ele.id) {\n const hyphenIndex = ele.id.indexOf(\"-\");\n const id = ele.id.substring(0, hyphenIndex);\n return actorKeys.includes(id);\n }\n });\n actors.forEach((actor) => {\n if (actor.x === undefined ||\n actor.y === undefined ||\n actor.width === undefined ||\n actor.height === undefined) {\n throw new Error(`Actor attributes missing ${actor}`);\n }\n minX = Math.min(minX, actor.x);\n minY = Math.min(minY, actor.y);\n maxX = Math.max(maxX, actor.x + actor.width);\n maxY = Math.max(maxY, actor.y + actor.height);\n });\n // Draw the outer rectangle enclosing the group elements\n const PADDING = 10;\n const groupRectX = minX - PADDING;\n const groupRectY = minY - PADDING;\n const groupRectWidth = maxX - minX + PADDING * 2;\n const groupRectHeight = maxY - minY + PADDING * 2;\n const groupRectId = (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n const groupRect = createContainer({\n type: \"rectangle\",\n x: groupRectX,\n y: groupRectY,\n width: groupRectWidth,\n height: groupRectHeight,\n bgColor: group.fill,\n id: groupRectId,\n });\n elements.unshift(groupRect);\n const frameId = (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n const frameChildren = [groupRectId];\n elements.forEach((ele) => {\n if (ele.type === \"frame\") {\n return;\n }\n if (ele.x === undefined ||\n ele.y === undefined ||\n ele.width === undefined ||\n ele.height === undefined) {\n throw new Error(`Element attributes missing ${ele}`);\n }\n if (ele.x >= minX &&\n ele.x + ele.width <= maxX &&\n ele.y >= minY &&\n ele.y + ele.height <= maxY) {\n const elementId = ele.id || (0,nanoid__WEBPACK_IMPORTED_MODULE_1__.nanoid)();\n if (!ele.id) {\n Object.assign(ele, { id: elementId });\n }\n frameChildren.push(elementId);\n }\n });\n const frame = {\n type: \"frame\",\n id: frameId,\n name,\n children: frameChildren,\n };\n elements.push(frame);\n });\n }\n return { elements };\n },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9zZXF1ZW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBc0Q7QUFDdEI7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDBCQUEwQjtBQUMvRDtBQUNBO0FBQ0EscUNBQXFDLGFBQWE7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUNBQXFDLDZCQUE2QjtBQUNsRTtBQUNBO0FBQ0EscUNBQXFDLGdCQUFnQjtBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsNkJBQTZCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLHNDQUFzQywyQkFBMkI7QUFDakU7QUFDQTtBQUNBO0FBQ08sa0RBQWtELDhEQUFjO0FBQ3ZFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxhQUFhO0FBQzNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isc0JBQXNCO0FBQzFDO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixrQkFBa0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxNQUFNO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DLDhDQUFNO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQSxnQ0FBZ0MsOENBQU07QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0VBQXNFLElBQUk7QUFDMUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCw4Q0FBTTtBQUMxRDtBQUNBLGlEQUFpRCxlQUFlO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGlCQUFpQjtBQUNqQixLQUFLO0FBQ0wsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvY29udmVydGVyL3R5cGVzL3NlcXVlbmNlLmpzP2Q3NWEiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhDb252ZXJ0ZXIgfSBmcm9tIFwiLi4vR3JhcGhDb252ZXJ0ZXIuanNcIjtcbmltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCJuYW5vaWRcIjtcbi8vIEFycm93IG1hcHBlciBmb3IgdGhlIHN1cHBvcnRlZCBzZXF1ZW5jZSBhcnJvdyB0eXBlc1xuY29uc3QgRVhDQUxJRFJBV19TVFJPS0VfU1RZTEVfRk9SX0FSUk9XID0ge1xuICAgIFNPTElEOiBcInNvbGlkXCIsXG4gICAgRE9UVEVEOiBcImRvdHRlZFwiLFxuICAgIFNPTElEX0NST1NTOiBcInNvbGlkXCIsXG4gICAgRE9UVEVEX0NST1NTOiBcImRvdHRlZFwiLFxuICAgIFNPTElEX09QRU46IFwic29saWRcIixcbiAgICBET1RURURfT1BFTjogXCJkb3R0ZWRcIixcbiAgICBTT0xJRF9QT0lOVDogXCJzb2xpZFwiLFxuICAgIERPVFRFRF9QT0lOVDogXCJkb3R0ZWRcIixcbn07XG5jb25zdCBjcmVhdGVMaW5lID0gKGxpbmUpID0+IHtcbiAgICBjb25zdCBsaW5lRWxlbWVudCA9IHtcbiAgICAgICAgdHlwZTogXCJsaW5lXCIsXG4gICAgICAgIHg6IGxpbmUuc3RhcnRYLFxuICAgICAgICB5OiBsaW5lLnN0YXJ0WSxcbiAgICAgICAgcG9pbnRzOiBbXG4gICAgICAgICAgICBbMCwgMF0sXG4gICAgICAgICAgICBbbGluZS5lbmRYIC0gbGluZS5zdGFydFgsIGxpbmUuZW5kWSAtIGxpbmUuc3RhcnRZXSxcbiAgICAgICAgXSxcbiAgICAgICAgd2lkdGg6IGxpbmUuZW5kWCAtIGxpbmUuc3RhcnRYLFxuICAgICAgICBoZWlnaHQ6IGxpbmUuZW5kWSAtIGxpbmUuc3RhcnRZLFxuICAgICAgICBzdHJva2VTdHlsZTogbGluZS5zdHJva2VTdHlsZSB8fCBcInNvbGlkXCIsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBsaW5lLnN0cm9rZUNvbG9yIHx8IFwiIzAwMFwiLFxuICAgICAgICBzdHJva2VXaWR0aDogbGluZS5zdHJva2VXaWR0aCB8fCAxLFxuICAgIH07XG4gICAgaWYgKGxpbmUuZ3JvdXBJZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGxpbmVFbGVtZW50LCB7IGdyb3VwSWRzOiBbbGluZS5ncm91cElkXSB9KTtcbiAgICB9XG4gICAgaWYgKGxpbmUuaWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihsaW5lRWxlbWVudCwgeyBpZDogbGluZS5pZCB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVFbGVtZW50O1xufTtcbmNvbnN0IGNyZWF0ZVRleHQgPSAoZWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHRleHRFbGVtZW50ID0ge1xuICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgeDogZWxlbWVudC54LFxuICAgICAgICB5OiBlbGVtZW50LnksXG4gICAgICAgIHdpZHRoOiBlbGVtZW50LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGVsZW1lbnQuaGVpZ2h0LFxuICAgICAgICB0ZXh0OiBlbGVtZW50LnRleHQgfHwgXCJcIixcbiAgICAgICAgZm9udFNpemU6IGVsZW1lbnQuZm9udFNpemUsXG4gICAgICAgIHZlcnRpY2FsQWxpZ246IFwibWlkZGxlXCIsXG4gICAgfTtcbiAgICBpZiAoZWxlbWVudC5ncm91cElkKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGV4dEVsZW1lbnQsIHsgZ3JvdXBJZHM6IFtlbGVtZW50Lmdyb3VwSWRdIH0pO1xuICAgIH1cbiAgICBpZiAoZWxlbWVudC5pZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRleHRFbGVtZW50LCB7IGlkOiBlbGVtZW50LmlkIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGV4dEVsZW1lbnQ7XG59O1xuY29uc3QgY3JlYXRlQ29udGFpbmVyID0gKGVsZW1lbnQpID0+IHtcbiAgICBsZXQgZXh0cmFQcm9wcyA9IHt9O1xuICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwicmVjdGFuZ2xlXCIgJiYgZWxlbWVudC5zdWJ0eXBlID09PSBcImFjdGl2YXRpb25cIikge1xuICAgICAgICBleHRyYVByb3BzID0ge1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNlOWVjZWZcIixcbiAgICAgICAgICAgIGZpbGxTdHlsZTogXCJzb2xpZFwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBjb250YWluZXIgPSB7XG4gICAgICAgIGlkOiBlbGVtZW50LmlkLFxuICAgICAgICB0eXBlOiBlbGVtZW50LnR5cGUsXG4gICAgICAgIHg6IGVsZW1lbnQueCxcbiAgICAgICAgeTogZWxlbWVudC55LFxuICAgICAgICB3aWR0aDogZWxlbWVudC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBlbGVtZW50LmhlaWdodCxcbiAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHRleHQ6IGVsZW1lbnQ/LmxhYmVsPy50ZXh0IHx8IFwiXCIsXG4gICAgICAgICAgICBmb250U2l6ZTogZWxlbWVudD8ubGFiZWw/LmZvbnRTaXplLFxuICAgICAgICAgICAgdmVydGljYWxBbGlnbjogXCJtaWRkbGVcIixcbiAgICAgICAgICAgIHN0cm9rZUNvbG9yOiBlbGVtZW50LmxhYmVsPy5jb2xvciB8fCBcIiMwMDBcIixcbiAgICAgICAgfSxcbiAgICAgICAgc3Ryb2tlU3R5bGU6IGVsZW1lbnQ/LnN0cm9rZVN0eWxlLFxuICAgICAgICBzdHJva2VXaWR0aDogZWxlbWVudD8uc3Ryb2tlV2lkdGgsXG4gICAgICAgIHN0cm9rZUNvbG9yOiBlbGVtZW50Py5zdHJva2VDb2xvcixcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBlbGVtZW50Py5iZ0NvbG9yLFxuICAgICAgICBmaWxsU3R5bGU6IFwic29saWRcIixcbiAgICAgICAgLi4uZXh0cmFQcm9wcyxcbiAgICB9O1xuICAgIGlmIChlbGVtZW50Lmdyb3VwSWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXIsIHsgZ3JvdXBJZHM6IFtlbGVtZW50Lmdyb3VwSWRdIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xufTtcbmNvbnN0IGNyZWF0ZUFycm93ID0gKGFycm93KSA9PiB7XG4gICAgY29uc3Qgc3Ryb2tlU3R5bGUgPSBFWENBTElEUkFXX1NUUk9LRV9TVFlMRV9GT1JfQVJST1dbYXJyb3cuc3Ryb2tlU3R5bGVdO1xuICAgIGNvbnN0IGFycm93RWxlbWVudCA9IHtcbiAgICAgICAgdHlwZTogXCJhcnJvd1wiLFxuICAgICAgICB4OiBhcnJvdy5zdGFydFgsXG4gICAgICAgIHk6IGFycm93LnN0YXJ0WSxcbiAgICAgICAgcG9pbnRzOiBhcnJvdy5wb2ludHMgfHwgW1xuICAgICAgICAgICAgWzAsIDBdLFxuICAgICAgICAgICAgW2Fycm93LmVuZFggLSBhcnJvdy5zdGFydFgsIGFycm93LmVuZFkgLSBhcnJvdy5zdGFydFldLFxuICAgICAgICBdLFxuICAgICAgICB3aWR0aDogYXJyb3cuZW5kWCAtIGFycm93LnN0YXJ0WCxcbiAgICAgICAgaGVpZ2h0OiBhcnJvdy5lbmRZIC0gYXJyb3cuc3RhcnRZLFxuICAgICAgICBzdHJva2VTdHlsZSxcbiAgICAgICAgZW5kQXJyb3doZWFkOiBhcnJvdy5zdHJva2VTdHlsZSA9PT0gXCJTT0xJRF9PUEVOXCIgfHwgYXJyb3cuc3Ryb2tlU3R5bGUgPT09IFwiRE9UVEVEX09QRU5cIlxuICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICA6IFwiYXJyb3dcIixcbiAgICAgICAgbGFiZWw6IHtcbiAgICAgICAgICAgIHRleHQ6IGFycm93Py5sYWJlbD8udGV4dCB8fCBcIlwiLFxuICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICB9LFxuICAgICAgICByb3VuZG5lc3M6IHtcbiAgICAgICAgICAgIHR5cGU6IDIsXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICBpZiAoYXJyb3cuZ3JvdXBJZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFycm93RWxlbWVudCwgeyBncm91cElkczogW2Fycm93Lmdyb3VwSWRdIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYXJyb3dFbGVtZW50O1xufTtcbmV4cG9ydCBjb25zdCBTZXF1ZW5jZVRvRXhjYWxpZHJhd1NrZWxldG9uQ29udmVydG9yID0gbmV3IEdyYXBoQ29udmVydGVyKHtcbiAgICBjb252ZXJ0ZXI6IChjaGFydCkgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtdO1xuICAgICAgICBjb25zdCBhY3RpdmF0aW9ucyA9IFtdO1xuICAgICAgICBPYmplY3QudmFsdWVzKGNoYXJ0Lm5vZGVzKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGV4Y2FsaWRyYXdFbGVtZW50O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZWxlbWVudC50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBleGNhbGlkcmF3RWxlbWVudCA9IGNyZWF0ZUxpbmUoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZWxsaXBzZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSBjcmVhdGVDb250YWluZXIoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInRleHRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2FsaWRyYXdFbGVtZW50ID0gY3JlYXRlVGV4dChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgYHVua25vd24gdHlwZSAke2VsZW1lbnQudHlwZX1gO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IFwicmVjdGFuZ2xlXCIgJiYgZWxlbWVudD8uc3VidHlwZSA9PT0gXCJhY3RpdmF0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZhdGlvbnMucHVzaChleGNhbGlkcmF3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGV4Y2FsaWRyYXdFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIE9iamVjdC52YWx1ZXMoY2hhcnQubGluZXMpLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgICAgIGlmICghbGluZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goY3JlYXRlTGluZShsaW5lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QudmFsdWVzKGNoYXJ0LmFycm93cykuZm9yRWFjaCgoYXJyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICghYXJyb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKGNyZWF0ZUFycm93KGFycm93KSk7XG4gICAgICAgICAgICBpZiAoYXJyb3cuc2VxdWVuY2VOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGNyZWF0ZUNvbnRhaW5lcihhcnJvdy5zZXF1ZW5jZU51bWJlcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZWxlbWVudHMucHVzaCguLi5hY3RpdmF0aW9ucyk7XG4gICAgICAgIC8vIGxvb3BzXG4gICAgICAgIGlmIChjaGFydC5sb29wcykge1xuICAgICAgICAgICAgY29uc3QgeyBsaW5lcywgdGV4dHMsIG5vZGVzIH0gPSBjaGFydC5sb29wcztcbiAgICAgICAgICAgIGxpbmVzLmZvckVhY2goKGxpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKGNyZWF0ZUxpbmUobGluZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0ZXh0cy5mb3JFYWNoKCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChjcmVhdGVUZXh0KHRleHQpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2goY3JlYXRlQ29udGFpbmVyKG5vZGUpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFydC5ncm91cHMpIHtcbiAgICAgICAgICAgIGNoYXJ0Lmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgYWN0b3JLZXlzLCBuYW1lIH0gPSBncm91cDtcbiAgICAgICAgICAgICAgICBsZXQgbWluWCA9IEluZmluaXR5O1xuICAgICAgICAgICAgICAgIGxldCBtaW5ZID0gSW5maW5pdHk7XG4gICAgICAgICAgICAgICAgbGV0IG1heFggPSAwO1xuICAgICAgICAgICAgICAgIGxldCBtYXhZID0gMDtcbiAgICAgICAgICAgICAgICBpZiAoIWFjdG9yS2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhY3RvcnMgPSBlbGVtZW50cy5maWx0ZXIoKGVsZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoeXBoZW5JbmRleCA9IGVsZS5pZC5pbmRleE9mKFwiLVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gZWxlLmlkLnN1YnN0cmluZygwLCBoeXBoZW5JbmRleCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWN0b3JLZXlzLmluY2x1ZGVzKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGFjdG9ycy5mb3JFYWNoKChhY3RvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b3IueCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rvci55ID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdG9yLndpZHRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdG9yLmhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFjdG9yIGF0dHJpYnV0ZXMgbWlzc2luZyAke2FjdG9yfWApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG1pblggPSBNYXRoLm1pbihtaW5YLCBhY3Rvci54KTtcbiAgICAgICAgICAgICAgICAgICAgbWluWSA9IE1hdGgubWluKG1pblksIGFjdG9yLnkpO1xuICAgICAgICAgICAgICAgICAgICBtYXhYID0gTWF0aC5tYXgobWF4WCwgYWN0b3IueCArIGFjdG9yLndpZHRoKTtcbiAgICAgICAgICAgICAgICAgICAgbWF4WSA9IE1hdGgubWF4KG1heFksIGFjdG9yLnkgKyBhY3Rvci5oZWlnaHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIERyYXcgdGhlIG91dGVyIHJlY3RhbmdsZSBlbmNsb3NpbmcgdGhlIGdyb3VwIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgY29uc3QgUEFERElORyA9IDEwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVjdFggPSBtaW5YIC0gUEFERElORztcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cFJlY3RZID0gbWluWSAtIFBBRERJTkc7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBSZWN0V2lkdGggPSBtYXhYIC0gbWluWCArIFBBRERJTkcgKiAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVjdEhlaWdodCA9IG1heFkgLSBtaW5ZICsgUEFERElORyAqIDI7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBSZWN0SWQgPSBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cFJlY3QgPSBjcmVhdGVDb250YWluZXIoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJlY3RhbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICB4OiBncm91cFJlY3RYLFxuICAgICAgICAgICAgICAgICAgICB5OiBncm91cFJlY3RZLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogZ3JvdXBSZWN0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogZ3JvdXBSZWN0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBiZ0NvbG9yOiBncm91cC5maWxsLFxuICAgICAgICAgICAgICAgICAgICBpZDogZ3JvdXBSZWN0SWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMudW5zaGlmdChncm91cFJlY3QpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lSWQgPSBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmcmFtZUNoaWxkcmVuID0gW2dyb3VwUmVjdElkXTtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZS50eXBlID09PSBcImZyYW1lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLnggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLndpZHRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZS5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbGVtZW50IGF0dHJpYnV0ZXMgbWlzc2luZyAke2VsZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLnggPj0gbWluWCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnggKyBlbGUud2lkdGggPD0gbWF4WCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgPj0gbWluWSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgKyBlbGUuaGVpZ2h0IDw9IG1heFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsZS5pZCB8fCBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGUsIHsgaWQ6IGVsZW1lbnRJZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ2hpbGRyZW4ucHVzaChlbGVtZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZnJhbWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZnJhbWVcIixcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGZyYW1lSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBmcmFtZUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChmcmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlbGVtZW50cyB9O1xuICAgIH0sXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js\n");
|
|
345
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SequenceToExcalidrawSkeletonConvertor\": () => (/* binding */ SequenceToExcalidrawSkeletonConvertor)\n/* harmony export */ });\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../GraphConverter.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/GraphConverter.js\");\n/* harmony import */ var _transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../transformToExcalidrawSkeleton.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/transformToExcalidrawSkeleton.js\");\n\n\n\nconst SequenceToExcalidrawSkeletonConvertor = new _GraphConverter_js__WEBPACK_IMPORTED_MODULE_0__.GraphConverter({\n converter: (chart) => {\n const elements = [];\n const activations = [];\n Object.values(chart.nodes).forEach((node) => {\n if (!node || !node.length) {\n return;\n }\n node.forEach((element) => {\n let excalidrawElement;\n switch (element.type) {\n case \"line\":\n excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawLineSkeleton)(element);\n break;\n case \"rectangle\":\n case \"ellipse\":\n excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawContainerSkeleton)(element);\n break;\n case \"text\":\n excalidrawElement = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawTextSkeleton)(element);\n break;\n default:\n throw `unknown type ${element.type}`;\n break;\n }\n if (element.type === \"rectangle\" && element?.subtype === \"activation\") {\n activations.push(excalidrawElement);\n }\n else {\n elements.push(excalidrawElement);\n }\n });\n });\n Object.values(chart.lines).forEach((line) => {\n if (!line) {\n return;\n }\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawLineSkeleton)(line));\n });\n Object.values(chart.arrows).forEach((arrow) => {\n if (!arrow) {\n return;\n }\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawArrowSkeleton)(arrow));\n if (arrow.sequenceNumber) {\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawContainerSkeleton)(arrow.sequenceNumber));\n }\n });\n elements.push(...activations);\n // loops\n if (chart.loops) {\n const { lines, texts, nodes } = chart.loops;\n lines.forEach((line) => {\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawLineSkeleton)(line));\n });\n texts.forEach((text) => {\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawTextSkeleton)(text));\n });\n nodes.forEach((node) => {\n elements.push((0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawContainerSkeleton)(node));\n });\n }\n if (chart.groups) {\n chart.groups.forEach((group) => {\n const { actorKeys, name } = group;\n let minX = Infinity;\n let minY = Infinity;\n let maxX = 0;\n let maxY = 0;\n if (!actorKeys.length) {\n return;\n }\n const actors = elements.filter((ele) => {\n if (ele.id) {\n const hyphenIndex = ele.id.indexOf(\"-\");\n const id = ele.id.substring(0, hyphenIndex);\n return actorKeys.includes(id);\n }\n });\n actors.forEach((actor) => {\n if (actor.x === undefined ||\n actor.y === undefined ||\n actor.width === undefined ||\n actor.height === undefined) {\n throw new Error(`Actor attributes missing ${actor}`);\n }\n minX = Math.min(minX, actor.x);\n minY = Math.min(minY, actor.y);\n maxX = Math.max(maxX, actor.x + actor.width);\n maxY = Math.max(maxY, actor.y + actor.height);\n });\n // Draw the outer rectangle enclosing the group elements\n const PADDING = 10;\n const groupRectX = minX - PADDING;\n const groupRectY = minY - PADDING;\n const groupRectWidth = maxX - minX + PADDING * 2;\n const groupRectHeight = maxY - minY + PADDING * 2;\n const groupRectId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const groupRect = (0,_transformToExcalidrawSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.transformToExcalidrawContainerSkeleton)({\n type: \"rectangle\",\n x: groupRectX,\n y: groupRectY,\n width: groupRectWidth,\n height: groupRectHeight,\n bgColor: group.fill,\n id: groupRectId,\n });\n elements.unshift(groupRect);\n const frameId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const frameChildren = [groupRectId];\n elements.forEach((ele) => {\n if (ele.type === \"frame\") {\n return;\n }\n if (ele.x === undefined ||\n ele.y === undefined ||\n ele.width === undefined ||\n ele.height === undefined) {\n throw new Error(`Element attributes missing ${ele}`);\n }\n if (ele.x >= minX &&\n ele.x + ele.width <= maxX &&\n ele.y >= minY &&\n ele.y + ele.height <= maxY) {\n const elementId = ele.id || (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n if (!ele.id) {\n Object.assign(ele, { id: elementId });\n }\n frameChildren.push(elementId);\n }\n });\n const frame = {\n type: \"frame\",\n id: frameId,\n name,\n children: frameChildren,\n };\n elements.push(frame);\n });\n }\n return { elements };\n },\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9zZXF1ZW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdDO0FBQ3NCO0FBQ2tKO0FBQ2pNLGtEQUFrRCw4REFBYztBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNENBQTRDLG9HQUFpQztBQUM3RTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMseUdBQXNDO0FBQ2xGO0FBQ0E7QUFDQSw0Q0FBNEMsb0dBQWlDO0FBQzdFO0FBQ0E7QUFDQSw4Q0FBOEMsYUFBYTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQixvR0FBaUM7QUFDM0QsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLHFHQUFrQztBQUM1RDtBQUNBLDhCQUE4Qix5R0FBc0M7QUFDcEU7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLHNCQUFzQjtBQUMxQztBQUNBLDhCQUE4QixvR0FBaUM7QUFDL0QsYUFBYTtBQUNiO0FBQ0EsOEJBQThCLG9HQUFpQztBQUMvRCxhQUFhO0FBQ2I7QUFDQSw4QkFBOEIseUdBQXNDO0FBQ3BFLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isa0JBQWtCO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvRUFBb0UsTUFBTTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyw4Q0FBTTtBQUMxQyxrQ0FBa0MseUdBQXNDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0NBQWdDLDhDQUFNO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNFQUFzRSxJQUFJO0FBQzFFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsOENBQU07QUFDMUQ7QUFDQSxpREFBaUQsZUFBZTtBQUNoRTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxpQkFBaUI7QUFDakIsS0FBSztBQUNMLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2NvbnZlcnRlci90eXBlcy9zZXF1ZW5jZS5qcz9kNzVhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5hbm9pZCB9IGZyb20gXCJuYW5vaWRcIjtcbmltcG9ydCB7IEdyYXBoQ29udmVydGVyIH0gZnJvbSBcIi4uL0dyYXBoQ29udmVydGVyLmpzXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdMaW5lU2tlbGV0b24sIHRyYW5zZm9ybVRvRXhjYWxpZHJhd1RleHRTa2VsZXRvbiwgdHJhbnNmb3JtVG9FeGNhbGlkcmF3Q29udGFpbmVyU2tlbGV0b24sIHRyYW5zZm9ybVRvRXhjYWxpZHJhd0Fycm93U2tlbGV0b24sIH0gZnJvbSBcIi4uL3RyYW5zZm9ybVRvRXhjYWxpZHJhd1NrZWxldG9uLmpzXCI7XG5leHBvcnQgY29uc3QgU2VxdWVuY2VUb0V4Y2FsaWRyYXdTa2VsZXRvbkNvbnZlcnRvciA9IG5ldyBHcmFwaENvbnZlcnRlcih7XG4gICAgY29udmVydGVyOiAoY2hhcnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSBbXTtcbiAgICAgICAgY29uc3QgYWN0aXZhdGlvbnMgPSBbXTtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhjaGFydC5ub2RlcykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFub2RlIHx8ICFub2RlLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBleGNhbGlkcmF3RWxlbWVudDtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdMaW5lU2tlbGV0b24oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlY3RhbmdsZVwiOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiZWxsaXBzZVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdDb250YWluZXJTa2VsZXRvbihlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZXhjYWxpZHJhd0VsZW1lbnQgPSB0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdUZXh0U2tlbGV0b24oZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGB1bmtub3duIHR5cGUgJHtlbGVtZW50LnR5cGV9YDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC50eXBlID09PSBcInJlY3RhbmdsZVwiICYmIGVsZW1lbnQ/LnN1YnR5cGUgPT09IFwiYWN0aXZhdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGl2YXRpb25zLnB1c2goZXhjYWxpZHJhd0VsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChleGNhbGlkcmF3RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QudmFsdWVzKGNoYXJ0LmxpbmVzKS5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxpbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKHRyYW5zZm9ybVRvRXhjYWxpZHJhd0xpbmVTa2VsZXRvbihsaW5lKSk7XG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QudmFsdWVzKGNoYXJ0LmFycm93cykuZm9yRWFjaCgoYXJyb3cpID0+IHtcbiAgICAgICAgICAgIGlmICghYXJyb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbGVtZW50cy5wdXNoKHRyYW5zZm9ybVRvRXhjYWxpZHJhd0Fycm93U2tlbGV0b24oYXJyb3cpKTtcbiAgICAgICAgICAgIGlmIChhcnJvdy5zZXF1ZW5jZU51bWJlcikge1xuICAgICAgICAgICAgICAgIGVsZW1lbnRzLnB1c2godHJhbnNmb3JtVG9FeGNhbGlkcmF3Q29udGFpbmVyU2tlbGV0b24oYXJyb3cuc2VxdWVuY2VOdW1iZXIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGVsZW1lbnRzLnB1c2goLi4uYWN0aXZhdGlvbnMpO1xuICAgICAgICAvLyBsb29wc1xuICAgICAgICBpZiAoY2hhcnQubG9vcHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgbGluZXMsIHRleHRzLCBub2RlcyB9ID0gY2hhcnQubG9vcHM7XG4gICAgICAgICAgICBsaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdMaW5lU2tlbGV0b24obGluZSkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0ZXh0cy5mb3JFYWNoKCh0ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdUZXh0U2tlbGV0b24odGV4dCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaCh0cmFuc2Zvcm1Ub0V4Y2FsaWRyYXdDb250YWluZXJTa2VsZXRvbihub2RlKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhcnQuZ3JvdXBzKSB7XG4gICAgICAgICAgICBjaGFydC5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGFjdG9yS2V5cywgbmFtZSB9ID0gZ3JvdXA7XG4gICAgICAgICAgICAgICAgbGV0IG1pblggPSBJbmZpbml0eTtcbiAgICAgICAgICAgICAgICBsZXQgbWluWSA9IEluZmluaXR5O1xuICAgICAgICAgICAgICAgIGxldCBtYXhYID0gMDtcbiAgICAgICAgICAgICAgICBsZXQgbWF4WSA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKCFhY3RvcktleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0b3JzID0gZWxlbWVudHMuZmlsdGVyKChlbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaHlwaGVuSW5kZXggPSBlbGUuaWQuaW5kZXhPZihcIi1cIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZCA9IGVsZS5pZC5zdWJzdHJpbmcoMCwgaHlwaGVuSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdG9yS2V5cy5pbmNsdWRlcyhpZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBhY3RvcnMuZm9yRWFjaCgoYWN0b3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFjdG9yLnggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0b3IueSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rvci53aWR0aCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rvci5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBY3RvciBhdHRyaWJ1dGVzIG1pc3NpbmcgJHthY3Rvcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtaW5YID0gTWF0aC5taW4obWluWCwgYWN0b3IueCk7XG4gICAgICAgICAgICAgICAgICAgIG1pblkgPSBNYXRoLm1pbihtaW5ZLCBhY3Rvci55KTtcbiAgICAgICAgICAgICAgICAgICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIGFjdG9yLnggKyBhY3Rvci53aWR0aCk7XG4gICAgICAgICAgICAgICAgICAgIG1heFkgPSBNYXRoLm1heChtYXhZLCBhY3Rvci55ICsgYWN0b3IuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyBEcmF3IHRoZSBvdXRlciByZWN0YW5nbGUgZW5jbG9zaW5nIHRoZSBncm91cCBlbGVtZW50c1xuICAgICAgICAgICAgICAgIGNvbnN0IFBBRERJTkcgPSAxMDtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cFJlY3RYID0gbWluWCAtIFBBRERJTkc7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBSZWN0WSA9IG1pblkgLSBQQURESU5HO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVjdFdpZHRoID0gbWF4WCAtIG1pblggKyBQQURESU5HICogMjtcbiAgICAgICAgICAgICAgICBjb25zdCBncm91cFJlY3RIZWlnaHQgPSBtYXhZIC0gbWluWSArIFBBRERJTkcgKiAyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwUmVjdElkID0gbmFub2lkKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBSZWN0ID0gdHJhbnNmb3JtVG9FeGNhbGlkcmF3Q29udGFpbmVyU2tlbGV0b24oe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcInJlY3RhbmdsZVwiLFxuICAgICAgICAgICAgICAgICAgICB4OiBncm91cFJlY3RYLFxuICAgICAgICAgICAgICAgICAgICB5OiBncm91cFJlY3RZLFxuICAgICAgICAgICAgICAgICAgICB3aWR0aDogZ3JvdXBSZWN0V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogZ3JvdXBSZWN0SGVpZ2h0LFxuICAgICAgICAgICAgICAgICAgICBiZ0NvbG9yOiBncm91cC5maWxsLFxuICAgICAgICAgICAgICAgICAgICBpZDogZ3JvdXBSZWN0SWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZWxlbWVudHMudW5zaGlmdChncm91cFJlY3QpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lSWQgPSBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmcmFtZUNoaWxkcmVuID0gW2dyb3VwUmVjdElkXTtcbiAgICAgICAgICAgICAgICBlbGVtZW50cy5mb3JFYWNoKChlbGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsZS50eXBlID09PSBcImZyYW1lXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLnggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLndpZHRoID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsZS5oZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbGVtZW50IGF0dHJpYnV0ZXMgbWlzc2luZyAke2VsZX1gKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlLnggPj0gbWluWCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnggKyBlbGUud2lkdGggPD0gbWF4WCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgPj0gbWluWSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgZWxlLnkgKyBlbGUuaGVpZ2h0IDw9IG1heFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRJZCA9IGVsZS5pZCB8fCBuYW5vaWQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZWxlLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihlbGUsIHsgaWQ6IGVsZW1lbnRJZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ2hpbGRyZW4ucHVzaChlbGVtZW50SWQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgZnJhbWUgPSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFwiZnJhbWVcIixcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGZyYW1lSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBmcmFtZUNoaWxkcmVuLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChmcmFtZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlbGVtZW50cyB9O1xuICAgIH0sXG59KTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js\n");
|
|
346
|
+
|
|
347
|
+
/***/ }),
|
|
348
|
+
|
|
349
|
+
/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/elementSkeleton.js":
|
|
350
|
+
/*!***************************************************************************************!*\
|
|
351
|
+
!*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/elementSkeleton.js ***!
|
|
352
|
+
\***************************************************************************************/
|
|
353
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
354
|
+
|
|
355
|
+
"use strict";
|
|
356
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createArrowSkeletion\": () => (/* binding */ createArrowSkeletion),\n/* harmony export */ \"createArrowSkeletonFromSVG\": () => (/* binding */ createArrowSkeletonFromSVG),\n/* harmony export */ \"createContainerSkeleton\": () => (/* binding */ createContainerSkeleton),\n/* harmony export */ \"createLineSkeleton\": () => (/* binding */ createLineSkeleton),\n/* harmony export */ \"createTextElementFromSVG\": () => (/* binding */ createTextElementFromSVG),\n/* harmony export */ \"createTextSkeleton\": () => (/* binding */ createTextSkeleton)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n\n\nconst createArrowSkeletonFromSVG = (arrowNode, opts) => {\n const arrow = {};\n if (opts?.label) {\n arrow.label = { text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(opts.label), fontSize: 16 };\n }\n const tagName = arrowNode.tagName;\n if (tagName === \"line\") {\n arrow.startX = Number(arrowNode.getAttribute(\"x1\"));\n arrow.startY = Number(arrowNode.getAttribute(\"y1\"));\n arrow.endX = Number(arrowNode.getAttribute(\"x2\"));\n arrow.endY = Number(arrowNode.getAttribute(\"y2\"));\n }\n else if (tagName === \"path\") {\n const dAttr = arrowNode.getAttribute(\"d\");\n if (!dAttr) {\n throw new Error('Path element does not contain a \"d\" attribute');\n }\n // Split the d attribute based on M (Move To) and C (Curve) commands\n const commands = dAttr.split(/(?=[LC])/);\n const startPosition = commands[0]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const points = [];\n commands.forEach((command) => {\n const currPoints = command\n .substring(1)\n .trim()\n .split(\" \")\n .map((pos) => {\n const [x, y] = pos.split(\",\");\n return [\n parseFloat(x) - startPosition[0],\n parseFloat(y) - startPosition[1],\n ];\n });\n points.push(...currPoints);\n });\n const endPosition = points[points.length - 1];\n arrow.startX = startPosition[0];\n arrow.startY = startPosition[1];\n arrow.endX = endPosition[0];\n arrow.endY = endPosition[1];\n arrow.points = points;\n }\n if (opts?.label) {\n // In mermaid the text is positioned above arrow but in Excalidraw\n // its postioned on the arrow hence the elements below it might look cluttered so shifting the arrow by an offset of 10px\n const offset = 10;\n arrow.startY = arrow.startY - offset;\n arrow.endY = arrow.endY - offset;\n }\n arrow.strokeColor = arrowNode.getAttribute(\"stroke\");\n arrow.strokeWidth = Number(arrowNode.getAttribute(\"stroke-width\"));\n arrow.type = \"arrow\";\n arrow.strokeStyle = opts?.strokeStyle || \"solid\";\n arrow.startArrowhead = opts?.startArrowhead || null;\n arrow.endArrowhead = opts?.endArrowhead || null;\n return arrow;\n};\nconst createArrowSkeletion = (startX, startY, endX, endY, opts) => {\n const arrow = {};\n arrow.type = \"arrow\";\n arrow.startX = startX;\n arrow.startY = startY;\n arrow.endX = endX;\n arrow.endY = endY;\n Object.assign(arrow, { ...opts });\n return arrow;\n};\nconst createTextSkeleton = (x, y, text, opts) => {\n const textElement = {\n type: \"text\",\n x,\n y,\n text,\n width: opts?.width || 20,\n height: opts?.height || 20,\n fontSize: opts?.fontSize || _constants_js__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_FONT_SIZE,\n id: opts?.id,\n groupId: opts?.groupId,\n metadata: opts?.metadata,\n };\n return textElement;\n};\nconst createTextElementFromSVG = (textNode, text, opts) => {\n const node = {};\n const x = Number(textNode.getAttribute(\"x\"));\n const y = Number(textNode.getAttribute(\"y\"));\n node.type = \"text\";\n node.text = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(text);\n if (opts?.id) {\n node.id = opts.id;\n }\n if (opts?.groupId) {\n node.groupId = opts.groupId;\n }\n const boundingBox = textNode.getBBox();\n node.width = boundingBox.width;\n node.height = boundingBox.height;\n node.x = x - boundingBox.width / 2;\n node.y = y;\n const fontSize = parseInt(getComputedStyle(textNode).fontSize);\n node.fontSize = fontSize;\n return node;\n};\nconst createContainerSkeleton = (node, type, opts = {}) => {\n const container = {};\n container.type = type;\n const { label, subtype, id, groupId } = opts;\n container.id = id;\n if (groupId) {\n container.groupId = groupId;\n }\n if (label) {\n container.label = {\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(label.text),\n fontSize: 16,\n verticalAlign: label?.verticalAlign,\n };\n }\n const boundingBox = node.getBBox();\n container.x = boundingBox.x;\n container.y = boundingBox.y;\n container.width = boundingBox.width;\n container.height = boundingBox.height;\n container.subtype = subtype;\n switch (subtype) {\n case \"highlight\":\n const bgColor = node.getAttribute(\"fill\");\n if (bgColor) {\n container.bgColor = bgColor;\n }\n break;\n case \"note\":\n container.strokeStyle = \"dashed\";\n break;\n }\n return container;\n};\nconst createLineSkeleton = (lineNode, startX, startY, endX, endY, opts) => {\n const line = {};\n line.startX = startX;\n line.startY = startY;\n line.endX = endX;\n if (opts?.groupId) {\n line.groupId = opts.groupId;\n }\n if (opts?.id) {\n line.id = opts.id;\n }\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n line.endY = endY;\n line.strokeColor = lineNode.getAttribute(\"stroke\");\n line.strokeWidth = Number(lineNode.getAttribute(\"stroke-width\"));\n line.type = \"line\";\n return line;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2VsZW1lbnRTa2VsZXRvbi5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUErQztBQUNJO0FBQzVDO0FBQ1A7QUFDQTtBQUNBLHdCQUF3QixNQUFNLDREQUFpQjtBQUMvQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLFNBQVM7QUFDcEM7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsNERBQWlCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsNERBQWlCO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLHNEQUFzRDtBQUM3RDtBQUNBO0FBQ0EsWUFBWSw4QkFBOEI7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDREQUFpQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9lbGVtZW50U2tlbGV0b24uanM/MDQ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbnRpdHlDb2Rlc1RvVGV4dCB9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0ZPTlRfU0laRSB9IGZyb20gXCIuL2NvbnN0YW50cy5qc1wiO1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycm93U2tlbGV0b25Gcm9tU1ZHID0gKGFycm93Tm9kZSwgb3B0cykgPT4ge1xuICAgIGNvbnN0IGFycm93ID0ge307XG4gICAgaWYgKG9wdHM/LmxhYmVsKSB7XG4gICAgICAgIGFycm93LmxhYmVsID0geyB0ZXh0OiBlbnRpdHlDb2Rlc1RvVGV4dChvcHRzLmxhYmVsKSwgZm9udFNpemU6IDE2IH07XG4gICAgfVxuICAgIGNvbnN0IHRhZ05hbWUgPSBhcnJvd05vZGUudGFnTmFtZTtcbiAgICBpZiAodGFnTmFtZSA9PT0gXCJsaW5lXCIpIHtcbiAgICAgICAgYXJyb3cuc3RhcnRYID0gTnVtYmVyKGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJ4MVwiKSk7XG4gICAgICAgIGFycm93LnN0YXJ0WSA9IE51bWJlcihhcnJvd05vZGUuZ2V0QXR0cmlidXRlKFwieTFcIikpO1xuICAgICAgICBhcnJvdy5lbmRYID0gTnVtYmVyKGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJ4MlwiKSk7XG4gICAgICAgIGFycm93LmVuZFkgPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcInkyXCIpKTtcbiAgICB9XG4gICAgZWxzZSBpZiAodGFnTmFtZSA9PT0gXCJwYXRoXCIpIHtcbiAgICAgICAgY29uc3QgZEF0dHIgPSBhcnJvd05vZGUuZ2V0QXR0cmlidXRlKFwiZFwiKTtcbiAgICAgICAgaWYgKCFkQXR0cikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXRoIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBhIFwiZFwiIGF0dHJpYnV0ZScpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNwbGl0IHRoZSBkIGF0dHJpYnV0ZSBiYXNlZCBvbiBNIChNb3ZlIFRvKSAgYW5kIEMgKEN1cnZlKSBjb21tYW5kc1xuICAgICAgICBjb25zdCBjb21tYW5kcyA9IGRBdHRyLnNwbGl0KC8oPz1bTENdKS8pO1xuICAgICAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gY29tbWFuZHNbMF1cbiAgICAgICAgICAgIC5zdWJzdHJpbmcoMSlcbiAgICAgICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgICAgIC5tYXAoKGNvb3JkKSA9PiBwYXJzZUZsb2F0KGNvb3JkKSk7XG4gICAgICAgIGNvbnN0IHBvaW50cyA9IFtdO1xuICAgICAgICBjb21tYW5kcy5mb3JFYWNoKChjb21tYW5kKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyUG9pbnRzID0gY29tbWFuZFxuICAgICAgICAgICAgICAgIC5zdWJzdHJpbmcoMSlcbiAgICAgICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAgICAgLnNwbGl0KFwiIFwiKVxuICAgICAgICAgICAgICAgIC5tYXAoKHBvcykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFt4LCB5XSA9IHBvcy5zcGxpdChcIixcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh4KSAtIHN0YXJ0UG9zaXRpb25bMF0sXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlRmxvYXQoeSkgLSBzdGFydFBvc2l0aW9uWzFdLFxuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKC4uLmN1cnJQb2ludHMpO1xuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5kUG9zaXRpb24gPSBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICBhcnJvdy5zdGFydFggPSBzdGFydFBvc2l0aW9uWzBdO1xuICAgICAgICBhcnJvdy5zdGFydFkgPSBzdGFydFBvc2l0aW9uWzFdO1xuICAgICAgICBhcnJvdy5lbmRYID0gZW5kUG9zaXRpb25bMF07XG4gICAgICAgIGFycm93LmVuZFkgPSBlbmRQb3NpdGlvblsxXTtcbiAgICAgICAgYXJyb3cucG9pbnRzID0gcG9pbnRzO1xuICAgIH1cbiAgICBpZiAob3B0cz8ubGFiZWwpIHtcbiAgICAgICAgLy8gSW4gbWVybWFpZCB0aGUgdGV4dCBpcyBwb3NpdGlvbmVkIGFib3ZlIGFycm93IGJ1dCBpbiBFeGNhbGlkcmF3XG4gICAgICAgIC8vIGl0cyBwb3N0aW9uZWQgb24gdGhlIGFycm93IGhlbmNlIHRoZSBlbGVtZW50cyBiZWxvdyBpdCBtaWdodCBsb29rIGNsdXR0ZXJlZCBzbyBzaGlmdGluZyB0aGUgYXJyb3cgYnkgYW4gb2Zmc2V0IG9mIDEwcHhcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gMTA7XG4gICAgICAgIGFycm93LnN0YXJ0WSA9IGFycm93LnN0YXJ0WSAtIG9mZnNldDtcbiAgICAgICAgYXJyb3cuZW5kWSA9IGFycm93LmVuZFkgLSBvZmZzZXQ7XG4gICAgfVxuICAgIGFycm93LnN0cm9rZUNvbG9yID0gYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKTtcbiAgICBhcnJvdy5zdHJva2VXaWR0aCA9IE51bWJlcihhcnJvd05vZGUuZ2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIpKTtcbiAgICBhcnJvdy50eXBlID0gXCJhcnJvd1wiO1xuICAgIGFycm93LnN0cm9rZVN0eWxlID0gb3B0cz8uc3Ryb2tlU3R5bGUgfHwgXCJzb2xpZFwiO1xuICAgIGFycm93LnN0YXJ0QXJyb3doZWFkID0gb3B0cz8uc3RhcnRBcnJvd2hlYWQgfHwgbnVsbDtcbiAgICBhcnJvdy5lbmRBcnJvd2hlYWQgPSBvcHRzPy5lbmRBcnJvd2hlYWQgfHwgbnVsbDtcbiAgICByZXR1cm4gYXJyb3c7XG59O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFycm93U2tlbGV0aW9uID0gKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBvcHRzKSA9PiB7XG4gICAgY29uc3QgYXJyb3cgPSB7fTtcbiAgICBhcnJvdy50eXBlID0gXCJhcnJvd1wiO1xuICAgIGFycm93LnN0YXJ0WCA9IHN0YXJ0WDtcbiAgICBhcnJvdy5zdGFydFkgPSBzdGFydFk7XG4gICAgYXJyb3cuZW5kWCA9IGVuZFg7XG4gICAgYXJyb3cuZW5kWSA9IGVuZFk7XG4gICAgT2JqZWN0LmFzc2lnbihhcnJvdywgeyAuLi5vcHRzIH0pO1xuICAgIHJldHVybiBhcnJvdztcbn07XG5leHBvcnQgY29uc3QgY3JlYXRlVGV4dFNrZWxldG9uID0gKHgsIHksIHRleHQsIG9wdHMpID0+IHtcbiAgICBjb25zdCB0ZXh0RWxlbWVudCA9IHtcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgIHgsXG4gICAgICAgIHksXG4gICAgICAgIHRleHQsXG4gICAgICAgIHdpZHRoOiBvcHRzPy53aWR0aCB8fCAyMCxcbiAgICAgICAgaGVpZ2h0OiBvcHRzPy5oZWlnaHQgfHwgMjAsXG4gICAgICAgIGZvbnRTaXplOiBvcHRzPy5mb250U2l6ZSB8fCBERUZBVUxUX0ZPTlRfU0laRSxcbiAgICAgICAgaWQ6IG9wdHM/LmlkLFxuICAgICAgICBncm91cElkOiBvcHRzPy5ncm91cElkLFxuICAgICAgICBtZXRhZGF0YTogb3B0cz8ubWV0YWRhdGEsXG4gICAgfTtcbiAgICByZXR1cm4gdGV4dEVsZW1lbnQ7XG59O1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVRleHRFbGVtZW50RnJvbVNWRyA9ICh0ZXh0Tm9kZSwgdGV4dCwgb3B0cykgPT4ge1xuICAgIGNvbnN0IG5vZGUgPSB7fTtcbiAgICBjb25zdCB4ID0gTnVtYmVyKHRleHROb2RlLmdldEF0dHJpYnV0ZShcInhcIikpO1xuICAgIGNvbnN0IHkgPSBOdW1iZXIodGV4dE5vZGUuZ2V0QXR0cmlidXRlKFwieVwiKSk7XG4gICAgbm9kZS50eXBlID0gXCJ0ZXh0XCI7XG4gICAgbm9kZS50ZXh0ID0gZW50aXR5Q29kZXNUb1RleHQodGV4dCk7XG4gICAgaWYgKG9wdHM/LmlkKSB7XG4gICAgICAgIG5vZGUuaWQgPSBvcHRzLmlkO1xuICAgIH1cbiAgICBpZiAob3B0cz8uZ3JvdXBJZCkge1xuICAgICAgICBub2RlLmdyb3VwSWQgPSBvcHRzLmdyb3VwSWQ7XG4gICAgfVxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gdGV4dE5vZGUuZ2V0QkJveCgpO1xuICAgIG5vZGUud2lkdGggPSBib3VuZGluZ0JveC53aWR0aDtcbiAgICBub2RlLmhlaWdodCA9IGJvdW5kaW5nQm94LmhlaWdodDtcbiAgICBub2RlLnggPSB4IC0gYm91bmRpbmdCb3gud2lkdGggLyAyO1xuICAgIG5vZGUueSA9IHk7XG4gICAgY29uc3QgZm9udFNpemUgPSBwYXJzZUludChnZXRDb21wdXRlZFN0eWxlKHRleHROb2RlKS5mb250U2l6ZSk7XG4gICAgbm9kZS5mb250U2l6ZSA9IGZvbnRTaXplO1xuICAgIHJldHVybiBub2RlO1xufTtcbmV4cG9ydCBjb25zdCBjcmVhdGVDb250YWluZXJTa2VsZXRvbiA9IChub2RlLCB0eXBlLCBvcHRzID0ge30pID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSB7fTtcbiAgICBjb250YWluZXIudHlwZSA9IHR5cGU7XG4gICAgY29uc3QgeyBsYWJlbCwgc3VidHlwZSwgaWQsIGdyb3VwSWQgfSA9IG9wdHM7XG4gICAgY29udGFpbmVyLmlkID0gaWQ7XG4gICAgaWYgKGdyb3VwSWQpIHtcbiAgICAgICAgY29udGFpbmVyLmdyb3VwSWQgPSBncm91cElkO1xuICAgIH1cbiAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgY29udGFpbmVyLmxhYmVsID0ge1xuICAgICAgICAgICAgdGV4dDogZW50aXR5Q29kZXNUb1RleHQobGFiZWwudGV4dCksXG4gICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiBsYWJlbD8udmVydGljYWxBbGlnbixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSBub2RlLmdldEJCb3goKTtcbiAgICBjb250YWluZXIueCA9IGJvdW5kaW5nQm94Lng7XG4gICAgY29udGFpbmVyLnkgPSBib3VuZGluZ0JveC55O1xuICAgIGNvbnRhaW5lci53aWR0aCA9IGJvdW5kaW5nQm94LndpZHRoO1xuICAgIGNvbnRhaW5lci5oZWlnaHQgPSBib3VuZGluZ0JveC5oZWlnaHQ7XG4gICAgY29udGFpbmVyLnN1YnR5cGUgPSBzdWJ0eXBlO1xuICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlIFwiaGlnaGxpZ2h0XCI6XG4gICAgICAgICAgICBjb25zdCBiZ0NvbG9yID0gbm9kZS5nZXRBdHRyaWJ1dGUoXCJmaWxsXCIpO1xuICAgICAgICAgICAgaWYgKGJnQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYmdDb2xvciA9IGJnQ29sb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm5vdGVcIjpcbiAgICAgICAgICAgIGNvbnRhaW5lci5zdHJva2VTdHlsZSA9IFwiZGFzaGVkXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIGNvbnRhaW5lcjtcbn07XG5leHBvcnQgY29uc3QgY3JlYXRlTGluZVNrZWxldG9uID0gKGxpbmVOb2RlLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgb3B0cykgPT4ge1xuICAgIGNvbnN0IGxpbmUgPSB7fTtcbiAgICBsaW5lLnN0YXJ0WCA9IHN0YXJ0WDtcbiAgICBsaW5lLnN0YXJ0WSA9IHN0YXJ0WTtcbiAgICBsaW5lLmVuZFggPSBlbmRYO1xuICAgIGlmIChvcHRzPy5ncm91cElkKSB7XG4gICAgICAgIGxpbmUuZ3JvdXBJZCA9IG9wdHMuZ3JvdXBJZDtcbiAgICB9XG4gICAgaWYgKG9wdHM/LmlkKSB7XG4gICAgICAgIGxpbmUuaWQgPSBvcHRzLmlkO1xuICAgIH1cbiAgICAvLyBNYWtlIHN1cmUgbGluZXMgZG9uJ3Qgb3ZlcmxhcCB3aXRoIHRoZSBub2RlcywgaW4gbWVybWFpZCBpdCBvdmVybGFwcyBidXQgaXNuJ3QgdmlzaWJsZSBhcyBpdHMgcHVzaGVkIGJhY2sgYW5kIGNvbnRhaW5lcnMgYXJlIG5vbiB0cmFuc3BhcmVudFxuICAgIGxpbmUuZW5kWSA9IGVuZFk7XG4gICAgbGluZS5zdHJva2VDb2xvciA9IGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcInN0cm9rZVwiKTtcbiAgICBsaW5lLnN0cm9rZVdpZHRoID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiKSk7XG4gICAgbGluZS50eXBlID0gXCJsaW5lXCI7XG4gICAgcmV0dXJuIGxpbmU7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/elementSkeleton.js\n");
|
|
324
357
|
|
|
325
358
|
/***/ }),
|
|
326
359
|
|
|
@@ -331,7 +364,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
331
364
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
332
365
|
|
|
333
366
|
"use strict";
|
|
334
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"graphToExcalidraw\": () => (/* binding */ graphToExcalidraw)\n/* harmony export */ });\n/* harmony import */ var _converter_types_flowchart_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./converter/types/flowchart.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js\");\n/* harmony import */ var _converter_types_graphImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./converter/types/graphImage.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/graphImage.js\");\n/* harmony import */ var _converter_types_sequence_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./converter/types/sequence.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js\");\n\n\n\nconst graphToExcalidraw = (graph, options = {}) => {\n switch (graph.type) {\n case \"graphImage\": {\n return _converter_types_graphImage_js__WEBPACK_IMPORTED_MODULE_1__.GraphImageConverter.convert(graph, options);\n }\n case \"flowchart\": {\n return _converter_types_flowchart_js__WEBPACK_IMPORTED_MODULE_0__.FlowchartToExcalidrawSkeletonConverter.convert(graph, options);\n }\n case \"sequence\": {\n return _converter_types_sequence_js__WEBPACK_IMPORTED_MODULE_2__.SequenceToExcalidrawSkeletonConvertor.convert(graph, options);\n }\n default: {\n throw new Error(`graphToExcalidraw: unknown graph type \"${graph.type}, only flowcharts are supported!\"`);\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
367
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"graphToExcalidraw\": () => (/* binding */ graphToExcalidraw)\n/* harmony export */ });\n/* harmony import */ var _converter_types_flowchart_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./converter/types/flowchart.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/flowchart.js\");\n/* harmony import */ var _converter_types_graphImage_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./converter/types/graphImage.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/graphImage.js\");\n/* harmony import */ var _converter_types_sequence_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./converter/types/sequence.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/sequence.js\");\n/* harmony import */ var _converter_types_class_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./converter/types/class.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/converter/types/class.js\");\n\n\n\n\nconst graphToExcalidraw = (graph, options = {}) => {\n switch (graph.type) {\n case \"graphImage\": {\n return _converter_types_graphImage_js__WEBPACK_IMPORTED_MODULE_1__.GraphImageConverter.convert(graph, options);\n }\n case \"flowchart\": {\n return _converter_types_flowchart_js__WEBPACK_IMPORTED_MODULE_0__.FlowchartToExcalidrawSkeletonConverter.convert(graph, options);\n }\n case \"sequence\": {\n return _converter_types_sequence_js__WEBPACK_IMPORTED_MODULE_2__.SequenceToExcalidrawSkeletonConvertor.convert(graph, options);\n }\n case \"class\": {\n return _converter_types_class_js__WEBPACK_IMPORTED_MODULE_3__.classToExcalidrawSkeletonConvertor.convert(graph, options);\n }\n default: {\n throw new Error(`graphToExcalidraw: unknown graph type \"${graph.type}, only flowcharts are supported!\"`);\n }\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2dyYXBoVG9FeGNhbGlkcmF3LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQXdGO0FBQ2xCO0FBQ2dCO0FBQ047QUFDekUsOENBQThDO0FBQ3JEO0FBQ0E7QUFDQSxtQkFBbUIsdUZBQTJCO0FBQzlDO0FBQ0E7QUFDQSxtQkFBbUIseUdBQThDO0FBQ2pFO0FBQ0E7QUFDQSxtQkFBbUIsdUdBQTZDO0FBQ2hFO0FBQ0E7QUFDQSxtQkFBbUIsaUdBQTBDO0FBQzdEO0FBQ0E7QUFDQSxzRUFBc0UsV0FBVztBQUNqRjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L2dyYXBoVG9FeGNhbGlkcmF3LmpzPzQxYWIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmxvd2NoYXJ0VG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0ZXIgfSBmcm9tIFwiLi9jb252ZXJ0ZXIvdHlwZXMvZmxvd2NoYXJ0LmpzXCI7XG5pbXBvcnQgeyBHcmFwaEltYWdlQ29udmVydGVyIH0gZnJvbSBcIi4vY29udmVydGVyL3R5cGVzL2dyYXBoSW1hZ2UuanNcIjtcbmltcG9ydCB7IFNlcXVlbmNlVG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0b3IgfSBmcm9tIFwiLi9jb252ZXJ0ZXIvdHlwZXMvc2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IGNsYXNzVG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0b3IgfSBmcm9tIFwiLi9jb252ZXJ0ZXIvdHlwZXMvY2xhc3MuanNcIjtcbmV4cG9ydCBjb25zdCBncmFwaFRvRXhjYWxpZHJhdyA9IChncmFwaCwgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgc3dpdGNoIChncmFwaC50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJncmFwaEltYWdlXCI6IHtcbiAgICAgICAgICAgIHJldHVybiBHcmFwaEltYWdlQ29udmVydGVyLmNvbnZlcnQoZ3JhcGgsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJmbG93Y2hhcnRcIjoge1xuICAgICAgICAgICAgcmV0dXJuIEZsb3djaGFydFRvRXhjYWxpZHJhd1NrZWxldG9uQ29udmVydGVyLmNvbnZlcnQoZ3JhcGgsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJzZXF1ZW5jZVwiOiB7XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVuY2VUb0V4Y2FsaWRyYXdTa2VsZXRvbkNvbnZlcnRvci5jb252ZXJ0KGdyYXBoLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2xhc3NcIjoge1xuICAgICAgICAgICAgcmV0dXJuIGNsYXNzVG9FeGNhbGlkcmF3U2tlbGV0b25Db252ZXJ0b3IuY29udmVydChncmFwaCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBncmFwaFRvRXhjYWxpZHJhdzogdW5rbm93biBncmFwaCB0eXBlIFwiJHtncmFwaC50eXBlfSwgb25seSBmbG93Y2hhcnRzIGFyZSBzdXBwb3J0ZWQhXCJgKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/graphToExcalidraw.js\n");
|
|
335
368
|
|
|
336
369
|
/***/ }),
|
|
337
370
|
|
|
@@ -364,7 +397,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
364
397
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
365
398
|
|
|
366
399
|
"use strict";
|
|
367
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaid\": () => (/* binding */ parseMermaid)\n/* harmony export */ });\n/* harmony import */ var
|
|
400
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaid\": () => (/* binding */ parseMermaid)\n/* harmony export */ });\n/* harmony import */ var mermaid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! mermaid */ \"../../../node_modules/mermaid/dist/mermaid-b0ad2de1.js\");\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n/* harmony import */ var _parser_flowchart_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/flowchart.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js\");\n/* harmony import */ var _parser_sequence_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./parser/sequence.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js\");\n/* harmony import */ var _parser_class_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parser/class.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/class.js\");\n\n\n\n\n\n\n// Fallback to Svg\nconst convertSvgToGraphImage = (svgContainer) => {\n // Extract SVG width and height\n // TODO: make width and height change dynamically based on user's screen dimension\n const svgEl = svgContainer.querySelector(\"svg\");\n if (!svgEl) {\n throw new Error(\"SVG element not found\");\n }\n const rect = svgEl.getBoundingClientRect();\n const width = rect.width;\n const height = rect.height;\n // Set width and height explictly since in firefox it gets set to 0\n // if the width and height are not expilcitly set\n // eg in some cases like er Diagram, gnatt, width and height is set as 100%\n // which sets the dimensions as 0 in firefox and thus the diagram isn't rendered\n svgEl.setAttribute(\"width\", `${width}`);\n svgEl.setAttribute(\"height\", `${height}`);\n // Convert SVG to image\n const mimeType = \"image/svg+xml\";\n const decoded = unescape(encodeURIComponent(svgEl.outerHTML));\n const base64 = btoa(decoded);\n const dataURL = `data:image/svg+xml;base64,${base64}`;\n const graphImage = {\n type: \"graphImage\",\n mimeType,\n dataURL,\n width,\n height,\n };\n return graphImage;\n};\nconst parseMermaid = async (definition) => {\n mermaid__WEBPACK_IMPORTED_MODULE_5__.K.initialize(_constants_js__WEBPACK_IMPORTED_MODULE_0__.MERMAID_CONFIG);\n // Parse the diagram\n const diagram = await mermaid__WEBPACK_IMPORTED_MODULE_5__.K.mermaidAPI.getDiagramFromText((0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.encodeEntities)(definition));\n // Render the SVG diagram\n const { svg } = await mermaid__WEBPACK_IMPORTED_MODULE_5__.K.render(\"mermaid-to-excalidraw\", definition);\n // Append Svg to DOM\n const svgContainer = document.createElement(\"div\");\n svgContainer.setAttribute(\"style\", `opacity: 0; position: relative; z-index: -1;`);\n svgContainer.innerHTML = svg;\n svgContainer.id = \"mermaid-diagram\";\n document.body.appendChild(svgContainer);\n let data;\n switch (diagram.type) {\n case \"flowchart-v2\": {\n data = (0,_parser_flowchart_js__WEBPACK_IMPORTED_MODULE_2__.parseMermaidFlowChartDiagram)(diagram, svgContainer);\n break;\n }\n case \"sequence\": {\n data = (0,_parser_sequence_js__WEBPACK_IMPORTED_MODULE_3__.parseMermaidSequenceDiagram)(diagram, svgContainer);\n break;\n }\n case \"classDiagram\": {\n data = (0,_parser_class_js__WEBPACK_IMPORTED_MODULE_4__.parseMermaidClassDiagram)(diagram, svgContainer);\n break;\n }\n // fallback to image if diagram type not-supported\n default: {\n data = convertSvgToGraphImage(svgContainer);\n }\n }\n svgContainer.remove();\n return data;\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlTWVybWFpZC5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQThCO0FBQ2tCO0FBQ0o7QUFDeUI7QUFDRjtBQUNOO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyxNQUFNO0FBQ3pDLG9DQUFvQyxPQUFPO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0NBQXdDLFNBQVMsT0FBTztBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQLElBQUksaURBQWtCLENBQUMseURBQWM7QUFDckM7QUFDQSwwQkFBMEIsb0VBQXFDLENBQUMseURBQWM7QUFDOUU7QUFDQSxZQUFZLE1BQU0sUUFBUSw2Q0FBYztBQUN4QztBQUNBO0FBQ0Esb0RBQW9ELG9CQUFvQixZQUFZO0FBQ3BGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1CQUFtQixrRkFBNEI7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdGQUEyQjtBQUM5QztBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsMEVBQXdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9wYXJzZU1lcm1haWQuanM/ZWFjOSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVybWFpZCBmcm9tIFwibWVybWFpZFwiO1xuaW1wb3J0IHsgTUVSTUFJRF9DT05GSUcgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IGVuY29kZUVudGl0aWVzIH0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbmltcG9ydCB7IHBhcnNlTWVybWFpZEZsb3dDaGFydERpYWdyYW0gfSBmcm9tIFwiLi9wYXJzZXIvZmxvd2NoYXJ0LmpzXCI7XG5pbXBvcnQgeyBwYXJzZU1lcm1haWRTZXF1ZW5jZURpYWdyYW0gfSBmcm9tIFwiLi9wYXJzZXIvc2VxdWVuY2UuanNcIjtcbmltcG9ydCB7IHBhcnNlTWVybWFpZENsYXNzRGlhZ3JhbSB9IGZyb20gXCIuL3BhcnNlci9jbGFzcy5qc1wiO1xuLy8gRmFsbGJhY2sgdG8gU3ZnXG5jb25zdCBjb252ZXJ0U3ZnVG9HcmFwaEltYWdlID0gKHN2Z0NvbnRhaW5lcikgPT4ge1xuICAgIC8vIEV4dHJhY3QgU1ZHIHdpZHRoIGFuZCBoZWlnaHRcbiAgICAvLyBUT0RPOiBtYWtlIHdpZHRoIGFuZCBoZWlnaHQgY2hhbmdlIGR5bmFtaWNhbGx5IGJhc2VkIG9uIHVzZXIncyBzY3JlZW4gZGltZW5zaW9uXG4gICAgY29uc3Qgc3ZnRWwgPSBzdmdDb250YWluZXIucXVlcnlTZWxlY3RvcihcInN2Z1wiKTtcbiAgICBpZiAoIXN2Z0VsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNWRyBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgY29uc3QgcmVjdCA9IHN2Z0VsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHdpZHRoID0gcmVjdC53aWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPSByZWN0LmhlaWdodDtcbiAgICAvLyBTZXQgd2lkdGggYW5kIGhlaWdodCBleHBsaWN0bHkgc2luY2UgaW4gZmlyZWZveCBpdCBnZXRzIHNldCB0byAwXG4gICAgLy8gaWYgdGhlIHdpZHRoIGFuZCBoZWlnaHQgYXJlIG5vdCBleHBpbGNpdGx5IHNldFxuICAgIC8vIGVnIGluIHNvbWUgY2FzZXMgbGlrZSBlciBEaWFncmFtLCBnbmF0dCwgd2lkdGggYW5kIGhlaWdodCBpcyBzZXQgYXMgMTAwJVxuICAgIC8vIHdoaWNoIHNldHMgdGhlIGRpbWVuc2lvbnMgYXMgMCBpbiBmaXJlZm94IGFuZCB0aHVzIHRoZSBkaWFncmFtIGlzbid0IHJlbmRlcmVkXG4gICAgc3ZnRWwuc2V0QXR0cmlidXRlKFwid2lkdGhcIiwgYCR7d2lkdGh9YCk7XG4gICAgc3ZnRWwuc2V0QXR0cmlidXRlKFwiaGVpZ2h0XCIsIGAke2hlaWdodH1gKTtcbiAgICAvLyBDb252ZXJ0IFNWRyB0byBpbWFnZVxuICAgIGNvbnN0IG1pbWVUeXBlID0gXCJpbWFnZS9zdmcreG1sXCI7XG4gICAgY29uc3QgZGVjb2RlZCA9IHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChzdmdFbC5vdXRlckhUTUwpKTtcbiAgICBjb25zdCBiYXNlNjQgPSBidG9hKGRlY29kZWQpO1xuICAgIGNvbnN0IGRhdGFVUkwgPSBgZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCwke2Jhc2U2NH1gO1xuICAgIGNvbnN0IGdyYXBoSW1hZ2UgPSB7XG4gICAgICAgIHR5cGU6IFwiZ3JhcGhJbWFnZVwiLFxuICAgICAgICBtaW1lVHlwZSxcbiAgICAgICAgZGF0YVVSTCxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICB9O1xuICAgIHJldHVybiBncmFwaEltYWdlO1xufTtcbmV4cG9ydCBjb25zdCBwYXJzZU1lcm1haWQgPSBhc3luYyAoZGVmaW5pdGlvbikgPT4ge1xuICAgIG1lcm1haWQuaW5pdGlhbGl6ZShNRVJNQUlEX0NPTkZJRyk7XG4gICAgLy8gUGFyc2UgdGhlIGRpYWdyYW1cbiAgICBjb25zdCBkaWFncmFtID0gYXdhaXQgbWVybWFpZC5tZXJtYWlkQVBJLmdldERpYWdyYW1Gcm9tVGV4dChlbmNvZGVFbnRpdGllcyhkZWZpbml0aW9uKSk7XG4gICAgLy8gUmVuZGVyIHRoZSBTVkcgZGlhZ3JhbVxuICAgIGNvbnN0IHsgc3ZnIH0gPSBhd2FpdCBtZXJtYWlkLnJlbmRlcihcIm1lcm1haWQtdG8tZXhjYWxpZHJhd1wiLCBkZWZpbml0aW9uKTtcbiAgICAvLyBBcHBlbmQgU3ZnIHRvIERPTVxuICAgIGNvbnN0IHN2Z0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgc3ZnQ29udGFpbmVyLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIGBvcGFjaXR5OiAwOyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IC0xO2ApO1xuICAgIHN2Z0NvbnRhaW5lci5pbm5lckhUTUwgPSBzdmc7XG4gICAgc3ZnQ29udGFpbmVyLmlkID0gXCJtZXJtYWlkLWRpYWdyYW1cIjtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN2Z0NvbnRhaW5lcik7XG4gICAgbGV0IGRhdGE7XG4gICAgc3dpdGNoIChkaWFncmFtLnR5cGUpIHtcbiAgICAgICAgY2FzZSBcImZsb3djaGFydC12MlwiOiB7XG4gICAgICAgICAgICBkYXRhID0gcGFyc2VNZXJtYWlkRmxvd0NoYXJ0RGlhZ3JhbShkaWFncmFtLCBzdmdDb250YWluZXIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInNlcXVlbmNlXCI6IHtcbiAgICAgICAgICAgIGRhdGEgPSBwYXJzZU1lcm1haWRTZXF1ZW5jZURpYWdyYW0oZGlhZ3JhbSwgc3ZnQ29udGFpbmVyKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjbGFzc0RpYWdyYW1cIjoge1xuICAgICAgICAgICAgZGF0YSA9IHBhcnNlTWVybWFpZENsYXNzRGlhZ3JhbShkaWFncmFtLCBzdmdDb250YWluZXIpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmFsbGJhY2sgdG8gaW1hZ2UgaWYgZGlhZ3JhbSB0eXBlIG5vdC1zdXBwb3J0ZWRcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZGF0YSA9IGNvbnZlcnRTdmdUb0dyYXBoSW1hZ2Uoc3ZnQ29udGFpbmVyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBzdmdDb250YWluZXIucmVtb3ZlKCk7XG4gICAgcmV0dXJuIGRhdGE7XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parseMermaid.js\n");
|
|
401
|
+
|
|
402
|
+
/***/ }),
|
|
403
|
+
|
|
404
|
+
/***/ "../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/class.js":
|
|
405
|
+
/*!************************************************************************************!*\
|
|
406
|
+
!*** ../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/class.js ***!
|
|
407
|
+
\************************************************************************************/
|
|
408
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
409
|
+
|
|
410
|
+
"use strict";
|
|
411
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidClassDiagram\": () => (/* binding */ parseMermaidClassDiagram)\n/* harmony export */ });\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n/* harmony import */ var _elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../elementSkeleton.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/elementSkeleton.js\");\n\n\n\n// Taken from mermaidParser.relationType\nconst RELATION_TYPE = {\n AGGREGATION: 0,\n EXTENSION: 1,\n COMPOSITION: 2,\n DEPENDENCY: 3,\n LOLLIPOP: 4,\n};\n// Taken from mermaidParser.lineType\nconst LINE_TYPE = {\n LINE: 0,\n DOTTED_LINE: 1,\n};\nconst getStrokeStyle = (type) => {\n let lineType;\n switch (type) {\n case LINE_TYPE.LINE:\n lineType = \"solid\";\n break;\n case LINE_TYPE.DOTTED_LINE:\n lineType = \"dotted\";\n break;\n default:\n lineType = \"solid\";\n }\n return lineType;\n};\nconst getArrowhead = (type) => {\n let arrowhead;\n switch (type) {\n case RELATION_TYPE.AGGREGATION:\n arrowhead = \"d_diamond\";\n break;\n case RELATION_TYPE.COMPOSITION:\n arrowhead = \"d_diamond_filled\";\n break;\n case RELATION_TYPE.EXTENSION:\n arrowhead = \"d_triangle\";\n break;\n case \"none\":\n arrowhead = null;\n break;\n case RELATION_TYPE.DEPENDENCY:\n default:\n arrowhead = \"d_arrow\";\n break;\n }\n return arrowhead;\n};\nconst parseClasses = (classes, containerEl) => {\n const nodes = [];\n const lines = [];\n const text = [];\n Object.values(classes).forEach((classNode) => {\n const { domId, id } = classNode;\n const groupId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const domNode = containerEl.querySelector(`[id*=classId-${id}]`);\n if (!domNode) {\n throw Error(`DOM Node with id ${domId} not found`);\n }\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(domNode);\n const container = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(domNode.firstChild, \"rectangle\", { id, groupId });\n container.x += transformX;\n container.y += transformY;\n container.metadata = { classId: id };\n nodes.push(container);\n const lineNodes = Array.from(domNode.querySelectorAll(\".divider\"));\n lineNodes.forEach((lineNode) => {\n const startX = Number(lineNode.getAttribute(\"x1\"));\n const startY = Number(lineNode.getAttribute(\"y1\"));\n const endX = Number(lineNode.getAttribute(\"x2\"));\n const endY = Number(lineNode.getAttribute(\"y2\"));\n const line = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createLineSkeleton)(lineNode, startX, startY, endX, endY, {\n groupId,\n id: (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)(),\n });\n line.startX += transformX;\n line.startY += transformY;\n line.endX += transformX;\n line.endY += transformY;\n line.metadata = { classId: id };\n lines.push(line);\n });\n const labelNodes = domNode.querySelector(\".label\")?.children;\n if (!labelNodes) {\n throw \"label nodes not found\";\n }\n Array.from(labelNodes).forEach((node) => {\n const label = node.textContent;\n if (!label) {\n return;\n }\n const id = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const { transformX: textTransformX, transformY: textTransformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(node);\n const boundingBox = node.getBBox();\n const offsetY = 10;\n const textElement = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createTextSkeleton)(transformX + textTransformX, transformY + textTransformY + offsetY, label, {\n width: boundingBox.width,\n height: boundingBox.height,\n id,\n groupId,\n metadata: { classId: id },\n });\n text.push(textElement);\n });\n });\n return { nodes, lines, text };\n};\nconst parseRelations = (relations, classNodes, containerEl, direction) => {\n const edges = containerEl.querySelector(\".edgePaths\")?.children;\n if (!edges) {\n throw new Error(\"No Edges found!\");\n }\n const arrows = [];\n const text = [];\n relations.forEach((relationNode, index) => {\n const { id1, id2, relation } = relationNode;\n const node1 = classNodes.find((node) => node.id === id1);\n const node2 = classNodes.find((node) => node.id === id2);\n const strokeStyle = getStrokeStyle(relation.lineType);\n const startArrowhead = getArrowhead(relation.type1);\n const endArrowhead = getArrowhead(relation.type2);\n const edgePositionData = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.computeEdgePositions)(edges[index]);\n const { startX, startY, endX, endY } = edgePositionData;\n const arrow = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createArrowSkeletion)(startX, startY, endX, endY, {\n strokeStyle,\n startArrowhead,\n endArrowhead,\n label: relationNode.title ? { text: relationNode.title } : undefined,\n start: { type: \"rectangle\", id: node1.id },\n end: { type: \"rectangle\", id: node2.id },\n });\n arrows.push(arrow);\n // Add cardianlities and Multiplicities\n const { relationTitle1, relationTitle2 } = relationNode;\n const offsetX = 20;\n const offsetY = 15;\n const directionOffset = 15;\n let x;\n let y;\n if (relationTitle1 && relationTitle1 !== \"none\") {\n switch (direction) {\n case \"TB\":\n x = startX - offsetX;\n if (endX < startX) {\n x -= directionOffset;\n }\n y = startY + offsetY;\n break;\n case \"BT\":\n x = startX + offsetX;\n if (endX > startX) {\n x += directionOffset;\n }\n y = startY - offsetY;\n break;\n case \"LR\":\n x = startX + offsetX;\n y = startY + offsetY;\n if (endY > startY) {\n y += directionOffset;\n }\n break;\n case \"RL\":\n x = startX - offsetX;\n y = startY - offsetY;\n if (startY > endY) {\n y -= directionOffset;\n }\n break;\n default:\n x = startX - offsetX;\n y = startY + offsetY;\n }\n const relationTitleElement = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createTextSkeleton)(x, y, relationTitle1, {\n fontSize: 16,\n });\n text.push(relationTitleElement);\n }\n if (relationTitle2 && relationTitle2 !== \"none\") {\n switch (direction) {\n case \"TB\":\n x = endX + offsetX;\n if (endX < startX) {\n x += directionOffset;\n }\n y = endY - offsetY;\n break;\n case \"BT\":\n x = endX - offsetX;\n if (endX > startX) {\n x -= directionOffset;\n }\n y = endY + offsetY;\n break;\n case \"LR\":\n x = endX - offsetX;\n y = endY - offsetY;\n if (endY > startY) {\n y -= directionOffset;\n }\n break;\n case \"RL\":\n x = endX + offsetX;\n y = endY + offsetY;\n if (startY > endY) {\n y += directionOffset;\n }\n break;\n default:\n x = endX + offsetX;\n y = endY - offsetY;\n }\n const relationTitleElement = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createTextSkeleton)(x, y, relationTitle2, {\n fontSize: 16,\n });\n text.push(relationTitleElement);\n }\n });\n return { arrows, text };\n};\nconst parseNotes = (notes, containerEl, classNodes) => {\n const noteContainers = [];\n const connectors = [];\n notes.forEach((note) => {\n const { id, text, class: classId } = note;\n const node = containerEl.querySelector(`#${id}`);\n if (!node) {\n throw new Error(`Node with id ${id} not found!`);\n }\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(node);\n const rect = node.firstChild;\n const container = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(rect, \"rectangle\", {\n id,\n subtype: \"note\",\n label: { text },\n });\n Object.assign(container, {\n x: container.x + transformX,\n y: container.y + transformY,\n });\n noteContainers.push(container);\n if (classId) {\n const classNode = classNodes.find((node) => node.id === classId);\n if (!classNode) {\n throw new Error(`class node with id ${classId} not found!`);\n }\n const startX = container.x + (container.width || 0) / 2;\n const startY = container.y + (container.height || 0);\n const endX = startX;\n const endY = classNode.y;\n const connector = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createArrowSkeletion)(startX, startY, endX, endY, {\n strokeStyle: \"dotted\",\n startArrowhead: null,\n endArrowhead: null,\n start: { id: container.id, type: \"rectangle\" },\n end: { id: classNode.id, type: \"rectangle\" },\n });\n connectors.push(connector);\n }\n });\n return { notes: noteContainers, connectors };\n};\nconst parseMermaidClassDiagram = (diagram, containerEl) => {\n diagram.parse();\n const mermaidParser = diagram.parser.yy;\n const direction = mermaidParser.getDirection();\n const nodes = [];\n const lines = [];\n const text = [];\n const classNodes = [];\n const namespaces = mermaidParser.getNamespaces();\n if (Object.keys(namespaces).length) {\n Object.values(namespaces).forEach((namespace) => {\n const namespaceClassData = parseClasses(namespace.classes, containerEl);\n nodes.push(namespaceClassData.nodes);\n lines.push(...namespaceClassData.lines);\n text.push(...namespaceClassData.text);\n classNodes.push(...namespaceClassData.nodes);\n });\n }\n const classes = mermaidParser.getClasses();\n if (Object.keys(classes).length) {\n const classData = parseClasses(classes, containerEl);\n nodes.push(classData.nodes);\n lines.push(...classData.lines);\n text.push(...classData.text);\n classNodes.push(...classData.nodes);\n }\n const relations = mermaidParser.getRelations();\n const { arrows, text: relationTitles } = parseRelations(relations, classNodes, containerEl, direction);\n const { notes, connectors } = parseNotes(mermaidParser.getNotes(), containerEl, classNodes);\n nodes.push(notes);\n arrows.push(...connectors);\n text.push(...relationTitles);\n return { type: \"class\", nodes, lines, arrows, text, namespaces };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9jbGFzcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWdDO0FBQ3FDO0FBQzBEO0FBQy9IO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixZQUFZO0FBQzVCLHdCQUF3Qiw4Q0FBTTtBQUM5QixrRUFBa0UsR0FBRztBQUNyRTtBQUNBLDRDQUE0QyxPQUFPO0FBQ25EO0FBQ0EsZ0JBQWdCLHlCQUF5QixFQUFFLDJEQUFnQjtBQUMzRCwwQkFBMEIsNEVBQXVCLG9DQUFvQyxhQUFhO0FBQ2xHO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsdUVBQWtCO0FBQzNDO0FBQ0Esb0JBQW9CLDhDQUFNO0FBQzFCLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsOENBQU07QUFDN0Isb0JBQW9CLHlEQUF5RCxFQUFFLDJEQUFnQjtBQUMvRjtBQUNBO0FBQ0EsZ0NBQWdDLHVFQUFrQjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QixhQUFhO0FBQ3pDLGFBQWE7QUFDYjtBQUNBLFNBQVM7QUFDVCxLQUFLO0FBQ0wsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixxQkFBcUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrREFBb0I7QUFDckQsZ0JBQWdCLDZCQUE2QjtBQUM3QyxzQkFBc0IseUVBQW9CO0FBQzFDO0FBQ0E7QUFDQTtBQUNBLDBDQUEwQywyQkFBMkI7QUFDckUscUJBQXFCLGlDQUFpQztBQUN0RCxtQkFBbUIsaUNBQWlDO0FBQ3BELFNBQVM7QUFDVDtBQUNBO0FBQ0EsZ0JBQWdCLGlDQUFpQztBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUMsdUVBQWtCO0FBQzNEO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF5Qyx1RUFBa0I7QUFDM0Q7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiwyQkFBMkI7QUFDM0MsbURBQW1ELEdBQUc7QUFDdEQ7QUFDQSw0Q0FBNEMsSUFBSTtBQUNoRDtBQUNBLGdCQUFnQix5QkFBeUIsRUFBRSwyREFBZ0I7QUFDM0Q7QUFDQSwwQkFBMEIsNEVBQXVCO0FBQ2pEO0FBQ0E7QUFDQSxxQkFBcUIsTUFBTTtBQUMzQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0RBQXNELFNBQVM7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4Qix5RUFBb0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLHFDQUFxQztBQUM5RCx1QkFBdUIscUNBQXFDO0FBQzVELGFBQWE7QUFDYjtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSwrQkFBK0I7QUFDM0MsWUFBWSxvQkFBb0I7QUFDaEM7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9wYXJzZXIvY2xhc3MuanM/NWYxNCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBuYW5vaWQgfSBmcm9tIFwibmFub2lkXCI7XG5pbXBvcnQgeyBjb21wdXRlRWRnZVBvc2l0aW9ucywgZ2V0VHJhbnNmb3JtQXR0ciB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuaW1wb3J0IHsgY3JlYXRlQXJyb3dTa2VsZXRpb24sIGNyZWF0ZUNvbnRhaW5lclNrZWxldG9uLCBjcmVhdGVMaW5lU2tlbGV0b24sIGNyZWF0ZVRleHRTa2VsZXRvbiwgfSBmcm9tIFwiLi4vZWxlbWVudFNrZWxldG9uLmpzXCI7XG4vLyBUYWtlbiBmcm9tIG1lcm1haWRQYXJzZXIucmVsYXRpb25UeXBlXG5jb25zdCBSRUxBVElPTl9UWVBFID0ge1xuICAgIEFHR1JFR0FUSU9OOiAwLFxuICAgIEVYVEVOU0lPTjogMSxcbiAgICBDT01QT1NJVElPTjogMixcbiAgICBERVBFTkRFTkNZOiAzLFxuICAgIExPTExJUE9QOiA0LFxufTtcbi8vIFRha2VuIGZyb20gbWVybWFpZFBhcnNlci5saW5lVHlwZVxuY29uc3QgTElORV9UWVBFID0ge1xuICAgIExJTkU6IDAsXG4gICAgRE9UVEVEX0xJTkU6IDEsXG59O1xuY29uc3QgZ2V0U3Ryb2tlU3R5bGUgPSAodHlwZSkgPT4ge1xuICAgIGxldCBsaW5lVHlwZTtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBMSU5FX1RZUEUuTElORTpcbiAgICAgICAgICAgIGxpbmVUeXBlID0gXCJzb2xpZFwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTElORV9UWVBFLkRPVFRFRF9MSU5FOlxuICAgICAgICAgICAgbGluZVR5cGUgPSBcImRvdHRlZFwiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBsaW5lVHlwZSA9IFwic29saWRcIjtcbiAgICB9XG4gICAgcmV0dXJuIGxpbmVUeXBlO1xufTtcbmNvbnN0IGdldEFycm93aGVhZCA9ICh0eXBlKSA9PiB7XG4gICAgbGV0IGFycm93aGVhZDtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSRUxBVElPTl9UWVBFLkFHR1JFR0FUSU9OOlxuICAgICAgICAgICAgYXJyb3doZWFkID0gXCJkX2RpYW1vbmRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJFTEFUSU9OX1RZUEUuQ09NUE9TSVRJT046XG4gICAgICAgICAgICBhcnJvd2hlYWQgPSBcImRfZGlhbW9uZF9maWxsZWRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFJFTEFUSU9OX1RZUEUuRVhURU5TSU9OOlxuICAgICAgICAgICAgYXJyb3doZWFkID0gXCJkX3RyaWFuZ2xlXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIm5vbmVcIjpcbiAgICAgICAgICAgIGFycm93aGVhZCA9IG51bGw7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBSRUxBVElPTl9UWVBFLkRFUEVOREVOQ1k6XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBhcnJvd2hlYWQgPSBcImRfYXJyb3dcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gYXJyb3doZWFkO1xufTtcbmNvbnN0IHBhcnNlQ2xhc3NlcyA9IChjbGFzc2VzLCBjb250YWluZXJFbCkgPT4ge1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3QgbGluZXMgPSBbXTtcbiAgICBjb25zdCB0ZXh0ID0gW107XG4gICAgT2JqZWN0LnZhbHVlcyhjbGFzc2VzKS5mb3JFYWNoKChjbGFzc05vZGUpID0+IHtcbiAgICAgICAgY29uc3QgeyBkb21JZCwgaWQgfSA9IGNsYXNzTm9kZTtcbiAgICAgICAgY29uc3QgZ3JvdXBJZCA9IG5hbm9pZCgpO1xuICAgICAgICBjb25zdCBkb21Ob2RlID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkKj1jbGFzc0lkLSR7aWR9XWApO1xuICAgICAgICBpZiAoIWRvbU5vZGUpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBET00gTm9kZSB3aXRoIGlkICR7ZG9tSWR9IG5vdCBmb3VuZGApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtWCwgdHJhbnNmb3JtWSB9ID0gZ2V0VHJhbnNmb3JtQXR0cihkb21Ob2RlKTtcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gY3JlYXRlQ29udGFpbmVyU2tlbGV0b24oZG9tTm9kZS5maXJzdENoaWxkLCBcInJlY3RhbmdsZVwiLCB7IGlkLCBncm91cElkIH0pO1xuICAgICAgICBjb250YWluZXIueCArPSB0cmFuc2Zvcm1YO1xuICAgICAgICBjb250YWluZXIueSArPSB0cmFuc2Zvcm1ZO1xuICAgICAgICBjb250YWluZXIubWV0YWRhdGEgPSB7IGNsYXNzSWQ6IGlkIH07XG4gICAgICAgIG5vZGVzLnB1c2goY29udGFpbmVyKTtcbiAgICAgICAgY29uc3QgbGluZU5vZGVzID0gQXJyYXkuZnJvbShkb21Ob2RlLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuZGl2aWRlclwiKSk7XG4gICAgICAgIGxpbmVOb2Rlcy5mb3JFYWNoKChsaW5lTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0WSA9IE51bWJlcihsaW5lTm9kZS5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSk7XG4gICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZFkgPSBOdW1iZXIobGluZU5vZGUuZ2V0QXR0cmlidXRlKFwieTJcIikpO1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IGNyZWF0ZUxpbmVTa2VsZXRvbihsaW5lTm9kZSwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIHtcbiAgICAgICAgICAgICAgICBncm91cElkLFxuICAgICAgICAgICAgICAgIGlkOiBuYW5vaWQoKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbGluZS5zdGFydFggKz0gdHJhbnNmb3JtWDtcbiAgICAgICAgICAgIGxpbmUuc3RhcnRZICs9IHRyYW5zZm9ybVk7XG4gICAgICAgICAgICBsaW5lLmVuZFggKz0gdHJhbnNmb3JtWDtcbiAgICAgICAgICAgIGxpbmUuZW5kWSArPSB0cmFuc2Zvcm1ZO1xuICAgICAgICAgICAgbGluZS5tZXRhZGF0YSA9IHsgY2xhc3NJZDogaWQgfTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBsYWJlbE5vZGVzID0gZG9tTm9kZS5xdWVyeVNlbGVjdG9yKFwiLmxhYmVsXCIpPy5jaGlsZHJlbjtcbiAgICAgICAgaWYgKCFsYWJlbE5vZGVzKSB7XG4gICAgICAgICAgICB0aHJvdyBcImxhYmVsIG5vZGVzIG5vdCBmb3VuZFwiO1xuICAgICAgICB9XG4gICAgICAgIEFycmF5LmZyb20obGFiZWxOb2RlcykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbGFiZWwgPSBub2RlLnRleHRDb250ZW50O1xuICAgICAgICAgICAgaWYgKCFsYWJlbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlkID0gbmFub2lkKCk7XG4gICAgICAgICAgICBjb25zdCB7IHRyYW5zZm9ybVg6IHRleHRUcmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZOiB0ZXh0VHJhbnNmb3JtWSB9ID0gZ2V0VHJhbnNmb3JtQXR0cihub2RlKTtcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gbm9kZS5nZXRCQm94KCk7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXRZID0gMTA7XG4gICAgICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IGNyZWF0ZVRleHRTa2VsZXRvbih0cmFuc2Zvcm1YICsgdGV4dFRyYW5zZm9ybVgsIHRyYW5zZm9ybVkgKyB0ZXh0VHJhbnNmb3JtWSArIG9mZnNldFksIGxhYmVsLCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGJvdW5kaW5nQm94LndpZHRoLFxuICAgICAgICAgICAgICAgIGhlaWdodDogYm91bmRpbmdCb3guaGVpZ2h0LFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICAgIGdyb3VwSWQsXG4gICAgICAgICAgICAgICAgbWV0YWRhdGE6IHsgY2xhc3NJZDogaWQgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGV4dC5wdXNoKHRleHRFbGVtZW50KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgbm9kZXMsIGxpbmVzLCB0ZXh0IH07XG59O1xuY29uc3QgcGFyc2VSZWxhdGlvbnMgPSAocmVsYXRpb25zLCBjbGFzc05vZGVzLCBjb250YWluZXJFbCwgZGlyZWN0aW9uKSA9PiB7XG4gICAgY29uc3QgZWRnZXMgPSBjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yKFwiLmVkZ2VQYXRoc1wiKT8uY2hpbGRyZW47XG4gICAgaWYgKCFlZGdlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBFZGdlcyBmb3VuZCFcIik7XG4gICAgfVxuICAgIGNvbnN0IGFycm93cyA9IFtdO1xuICAgIGNvbnN0IHRleHQgPSBbXTtcbiAgICByZWxhdGlvbnMuZm9yRWFjaCgocmVsYXRpb25Ob2RlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCB7IGlkMSwgaWQyLCByZWxhdGlvbiB9ID0gcmVsYXRpb25Ob2RlO1xuICAgICAgICBjb25zdCBub2RlMSA9IGNsYXNzTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gaWQxKTtcbiAgICAgICAgY29uc3Qgbm9kZTIgPSBjbGFzc05vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUuaWQgPT09IGlkMik7XG4gICAgICAgIGNvbnN0IHN0cm9rZVN0eWxlID0gZ2V0U3Ryb2tlU3R5bGUocmVsYXRpb24ubGluZVR5cGUpO1xuICAgICAgICBjb25zdCBzdGFydEFycm93aGVhZCA9IGdldEFycm93aGVhZChyZWxhdGlvbi50eXBlMSk7XG4gICAgICAgIGNvbnN0IGVuZEFycm93aGVhZCA9IGdldEFycm93aGVhZChyZWxhdGlvbi50eXBlMik7XG4gICAgICAgIGNvbnN0IGVkZ2VQb3NpdGlvbkRhdGEgPSBjb21wdXRlRWRnZVBvc2l0aW9ucyhlZGdlc1tpbmRleF0pO1xuICAgICAgICBjb25zdCB7IHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZIH0gPSBlZGdlUG9zaXRpb25EYXRhO1xuICAgICAgICBjb25zdCBhcnJvdyA9IGNyZWF0ZUFycm93U2tlbGV0aW9uKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCB7XG4gICAgICAgICAgICBzdHJva2VTdHlsZSxcbiAgICAgICAgICAgIHN0YXJ0QXJyb3doZWFkLFxuICAgICAgICAgICAgZW5kQXJyb3doZWFkLFxuICAgICAgICAgICAgbGFiZWw6IHJlbGF0aW9uTm9kZS50aXRsZSA/IHsgdGV4dDogcmVsYXRpb25Ob2RlLnRpdGxlIH0gOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBzdGFydDogeyB0eXBlOiBcInJlY3RhbmdsZVwiLCBpZDogbm9kZTEuaWQgfSxcbiAgICAgICAgICAgIGVuZDogeyB0eXBlOiBcInJlY3RhbmdsZVwiLCBpZDogbm9kZTIuaWQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGFycm93cy5wdXNoKGFycm93KTtcbiAgICAgICAgLy8gQWRkIGNhcmRpYW5saXRpZXMgYW5kIE11bHRpcGxpY2l0aWVzXG4gICAgICAgIGNvbnN0IHsgcmVsYXRpb25UaXRsZTEsIHJlbGF0aW9uVGl0bGUyIH0gPSByZWxhdGlvbk5vZGU7XG4gICAgICAgIGNvbnN0IG9mZnNldFggPSAyMDtcbiAgICAgICAgY29uc3Qgb2Zmc2V0WSA9IDE1O1xuICAgICAgICBjb25zdCBkaXJlY3Rpb25PZmZzZXQgPSAxNTtcbiAgICAgICAgbGV0IHg7XG4gICAgICAgIGxldCB5O1xuICAgICAgICBpZiAocmVsYXRpb25UaXRsZTEgJiYgcmVsYXRpb25UaXRsZTEgIT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJUQlwiOlxuICAgICAgICAgICAgICAgICAgICB4ID0gc3RhcnRYIC0gb2Zmc2V0WDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZFggPCBzdGFydFgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHggLT0gZGlyZWN0aW9uT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHkgPSBzdGFydFkgKyBvZmZzZXRZO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQlRcIjpcbiAgICAgICAgICAgICAgICAgICAgeCA9IHN0YXJ0WCArIG9mZnNldFg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmRYID4gc3RhcnRYKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4ICs9IGRpcmVjdGlvbk9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB5ID0gc3RhcnRZIC0gb2Zmc2V0WTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkxSXCI6XG4gICAgICAgICAgICAgICAgICAgIHggPSBzdGFydFggKyBvZmZzZXRYO1xuICAgICAgICAgICAgICAgICAgICB5ID0gc3RhcnRZICsgb2Zmc2V0WTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZFkgPiBzdGFydFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgKz0gZGlyZWN0aW9uT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJSTFwiOlxuICAgICAgICAgICAgICAgICAgICB4ID0gc3RhcnRYIC0gb2Zmc2V0WDtcbiAgICAgICAgICAgICAgICAgICAgeSA9IHN0YXJ0WSAtIG9mZnNldFk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFkgPiBlbmRZKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB5IC09IGRpcmVjdGlvbk9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB4ID0gc3RhcnRYIC0gb2Zmc2V0WDtcbiAgICAgICAgICAgICAgICAgICAgeSA9IHN0YXJ0WSArIG9mZnNldFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWxhdGlvblRpdGxlRWxlbWVudCA9IGNyZWF0ZVRleHRTa2VsZXRvbih4LCB5LCByZWxhdGlvblRpdGxlMSwge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxNixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGV4dC5wdXNoKHJlbGF0aW9uVGl0bGVFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVsYXRpb25UaXRsZTIgJiYgcmVsYXRpb25UaXRsZTIgIT09IFwibm9uZVwiKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJUQlwiOlxuICAgICAgICAgICAgICAgICAgICB4ID0gZW5kWCArIG9mZnNldFg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmRYIDwgc3RhcnRYKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4ICs9IGRpcmVjdGlvbk9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB5ID0gZW5kWSAtIG9mZnNldFk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJCVFwiOlxuICAgICAgICAgICAgICAgICAgICB4ID0gZW5kWCAtIG9mZnNldFg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmRYID4gc3RhcnRYKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB4IC09IGRpcmVjdGlvbk9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB5ID0gZW5kWSArIG9mZnNldFk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJMUlwiOlxuICAgICAgICAgICAgICAgICAgICB4ID0gZW5kWCAtIG9mZnNldFg7XG4gICAgICAgICAgICAgICAgICAgIHkgPSBlbmRZIC0gb2Zmc2V0WTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZFkgPiBzdGFydFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgLT0gZGlyZWN0aW9uT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJSTFwiOlxuICAgICAgICAgICAgICAgICAgICB4ID0gZW5kWCArIG9mZnNldFg7XG4gICAgICAgICAgICAgICAgICAgIHkgPSBlbmRZICsgb2Zmc2V0WTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0WSA+IGVuZFkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgKz0gZGlyZWN0aW9uT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHggPSBlbmRYICsgb2Zmc2V0WDtcbiAgICAgICAgICAgICAgICAgICAgeSA9IGVuZFkgLSBvZmZzZXRZO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVsYXRpb25UaXRsZUVsZW1lbnQgPSBjcmVhdGVUZXh0U2tlbGV0b24oeCwgeSwgcmVsYXRpb25UaXRsZTIsIHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMTYsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRleHQucHVzaChyZWxhdGlvblRpdGxlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyBhcnJvd3MsIHRleHQgfTtcbn07XG5jb25zdCBwYXJzZU5vdGVzID0gKG5vdGVzLCBjb250YWluZXJFbCwgY2xhc3NOb2RlcykgPT4ge1xuICAgIGNvbnN0IG5vdGVDb250YWluZXJzID0gW107XG4gICAgY29uc3QgY29ubmVjdG9ycyA9IFtdO1xuICAgIG5vdGVzLmZvckVhY2goKG5vdGUpID0+IHtcbiAgICAgICAgY29uc3QgeyBpZCwgdGV4dCwgY2xhc3M6IGNsYXNzSWQgfSA9IG5vdGU7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yKGAjJHtpZH1gKTtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vZGUgd2l0aCBpZCAke2lkfSBub3QgZm91bmQhYCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH0gPSBnZXRUcmFuc2Zvcm1BdHRyKG5vZGUpO1xuICAgICAgICBjb25zdCByZWN0ID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBjcmVhdGVDb250YWluZXJTa2VsZXRvbihyZWN0LCBcInJlY3RhbmdsZVwiLCB7XG4gICAgICAgICAgICBpZCxcbiAgICAgICAgICAgIHN1YnR5cGU6IFwibm90ZVwiLFxuICAgICAgICAgICAgbGFiZWw6IHsgdGV4dCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXIsIHtcbiAgICAgICAgICAgIHg6IGNvbnRhaW5lci54ICsgdHJhbnNmb3JtWCxcbiAgICAgICAgICAgIHk6IGNvbnRhaW5lci55ICsgdHJhbnNmb3JtWSxcbiAgICAgICAgfSk7XG4gICAgICAgIG5vdGVDb250YWluZXJzLnB1c2goY29udGFpbmVyKTtcbiAgICAgICAgaWYgKGNsYXNzSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsYXNzTm9kZSA9IGNsYXNzTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5pZCA9PT0gY2xhc3NJZCk7XG4gICAgICAgICAgICBpZiAoIWNsYXNzTm9kZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgY2xhc3Mgbm9kZSB3aXRoIGlkICR7Y2xhc3NJZH0gbm90IGZvdW5kIWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gY29udGFpbmVyLnggKyAoY29udGFpbmVyLndpZHRoIHx8IDApIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0WSA9IGNvbnRhaW5lci55ICsgKGNvbnRhaW5lci5oZWlnaHQgfHwgMCk7XG4gICAgICAgICAgICBjb25zdCBlbmRYID0gc3RhcnRYO1xuICAgICAgICAgICAgY29uc3QgZW5kWSA9IGNsYXNzTm9kZS55O1xuICAgICAgICAgICAgY29uc3QgY29ubmVjdG9yID0gY3JlYXRlQXJyb3dTa2VsZXRpb24oc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIHtcbiAgICAgICAgICAgICAgICBzdHJva2VTdHlsZTogXCJkb3R0ZWRcIixcbiAgICAgICAgICAgICAgICBzdGFydEFycm93aGVhZDogbnVsbCxcbiAgICAgICAgICAgICAgICBlbmRBcnJvd2hlYWQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc3RhcnQ6IHsgaWQ6IGNvbnRhaW5lci5pZCwgdHlwZTogXCJyZWN0YW5nbGVcIiB9LFxuICAgICAgICAgICAgICAgIGVuZDogeyBpZDogY2xhc3NOb2RlLmlkLCB0eXBlOiBcInJlY3RhbmdsZVwiIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbm5lY3RvcnMucHVzaChjb25uZWN0b3IpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgbm90ZXM6IG5vdGVDb250YWluZXJzLCBjb25uZWN0b3JzIH07XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlTWVybWFpZENsYXNzRGlhZ3JhbSA9IChkaWFncmFtLCBjb250YWluZXJFbCkgPT4ge1xuICAgIGRpYWdyYW0ucGFyc2UoKTtcbiAgICBjb25zdCBtZXJtYWlkUGFyc2VyID0gZGlhZ3JhbS5wYXJzZXIueXk7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gbWVybWFpZFBhcnNlci5nZXREaXJlY3Rpb24oKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgY29uc3QgdGV4dCA9IFtdO1xuICAgIGNvbnN0IGNsYXNzTm9kZXMgPSBbXTtcbiAgICBjb25zdCBuYW1lc3BhY2VzID0gbWVybWFpZFBhcnNlci5nZXROYW1lc3BhY2VzKCk7XG4gICAgaWYgKE9iamVjdC5rZXlzKG5hbWVzcGFjZXMpLmxlbmd0aCkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG5hbWVzcGFjZXMpLmZvckVhY2goKG5hbWVzcGFjZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmFtZXNwYWNlQ2xhc3NEYXRhID0gcGFyc2VDbGFzc2VzKG5hbWVzcGFjZS5jbGFzc2VzLCBjb250YWluZXJFbCk7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKG5hbWVzcGFjZUNsYXNzRGF0YS5ub2Rlcyk7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKC4uLm5hbWVzcGFjZUNsYXNzRGF0YS5saW5lcyk7XG4gICAgICAgICAgICB0ZXh0LnB1c2goLi4ubmFtZXNwYWNlQ2xhc3NEYXRhLnRleHQpO1xuICAgICAgICAgICAgY2xhc3NOb2Rlcy5wdXNoKC4uLm5hbWVzcGFjZUNsYXNzRGF0YS5ub2Rlcyk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjbGFzc2VzID0gbWVybWFpZFBhcnNlci5nZXRDbGFzc2VzKCk7XG4gICAgaWYgKE9iamVjdC5rZXlzKGNsYXNzZXMpLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjbGFzc0RhdGEgPSBwYXJzZUNsYXNzZXMoY2xhc3NlcywgY29udGFpbmVyRWwpO1xuICAgICAgICBub2Rlcy5wdXNoKGNsYXNzRGF0YS5ub2Rlcyk7XG4gICAgICAgIGxpbmVzLnB1c2goLi4uY2xhc3NEYXRhLmxpbmVzKTtcbiAgICAgICAgdGV4dC5wdXNoKC4uLmNsYXNzRGF0YS50ZXh0KTtcbiAgICAgICAgY2xhc3NOb2Rlcy5wdXNoKC4uLmNsYXNzRGF0YS5ub2Rlcyk7XG4gICAgfVxuICAgIGNvbnN0IHJlbGF0aW9ucyA9IG1lcm1haWRQYXJzZXIuZ2V0UmVsYXRpb25zKCk7XG4gICAgY29uc3QgeyBhcnJvd3MsIHRleHQ6IHJlbGF0aW9uVGl0bGVzIH0gPSBwYXJzZVJlbGF0aW9ucyhyZWxhdGlvbnMsIGNsYXNzTm9kZXMsIGNvbnRhaW5lckVsLCBkaXJlY3Rpb24pO1xuICAgIGNvbnN0IHsgbm90ZXMsIGNvbm5lY3RvcnMgfSA9IHBhcnNlTm90ZXMobWVybWFpZFBhcnNlci5nZXROb3RlcygpLCBjb250YWluZXJFbCwgY2xhc3NOb2Rlcyk7XG4gICAgbm9kZXMucHVzaChub3Rlcyk7XG4gICAgYXJyb3dzLnB1c2goLi4uY29ubmVjdG9ycyk7XG4gICAgdGV4dC5wdXNoKC4uLnJlbGF0aW9uVGl0bGVzKTtcbiAgICByZXR1cm4geyB0eXBlOiBcImNsYXNzXCIsIG5vZGVzLCBsaW5lcywgYXJyb3dzLCB0ZXh0LCBuYW1lc3BhY2VzIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/class.js\n");
|
|
368
412
|
|
|
369
413
|
/***/ }),
|
|
370
414
|
|
|
@@ -375,7 +419,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
375
419
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
376
420
|
|
|
377
421
|
"use strict";
|
|
378
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidFlowChartDiagram\": () => (/* binding */ parseMermaidFlowChartDiagram)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n\nconst parseSubGraph = (data, containerEl) => {\n // Extract only node id for better reference\n // e.g. full element id = \"flowchart-c1-205\" will map to \"c1\"\n const nodeIds = data.nodes.map((n) => {\n if (n.startsWith(\"flowchart-\")) {\n return n.split(\"-\")[1];\n }\n return n;\n });\n // Get position\n const el = containerEl.querySelector(`[id='${data.id}']`);\n if (!el) {\n throw new Error(\"SubGraph element not found\");\n }\n const position = computeElementPosition(el, containerEl);\n // Get dimension\n const boundingBox = el.getBBox();\n const dimension = {\n width: boundingBox.width,\n height: boundingBox.height,\n };\n // Remove irrelevant properties\n data.classes = undefined;\n data.dir = undefined;\n return {\n ...data,\n nodeIds,\n ...position,\n ...dimension,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.title),\n };\n};\nconst parseVertex = (data, containerEl) => {\n // Find Vertex element\n const el = containerEl.querySelector(`[id*=\"flowchart-${data.id}-\"]`);\n if (!el) {\n return undefined;\n }\n // Check if Vertex attached with link\n let link;\n if (el.parentElement?.tagName.toLowerCase() === \"a\") {\n link = el.parentElement.getAttribute(\"xlink:href\");\n }\n // Get position\n const position = computeElementPosition(link ? el.parentElement : el, containerEl);\n // Get dimension\n const boundingBox = el.getBBox();\n const dimension = {\n width: boundingBox.width,\n height: boundingBox.height,\n };\n // Extract style\n const labelContainerStyleText = el\n .querySelector(\".label-container\")\n ?.getAttribute(\"style\");\n const labelStyleText = el.querySelector(\".label\")?.getAttribute(\"style\");\n const containerStyle = {};\n labelContainerStyleText?.split(\";\").forEach((property) => {\n if (!property) {\n return;\n }\n const key = property.split(\":\")[0].trim();\n const value = property.split(\":\")[1].trim();\n containerStyle[key] = value;\n });\n const labelStyle = {};\n labelStyleText?.split(\";\").forEach((property) => {\n if (!property) {\n return;\n }\n const key = property.split(\":\")[0].trim();\n const value = property.split(\":\")[1].trim();\n labelStyle[key] = value;\n });\n return {\n id: data.id,\n labelType: data.labelType,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.text),\n type: data.type,\n link: link || undefined,\n ...position,\n ...dimension,\n containerStyle,\n labelStyle,\n };\n};\nconst parseEdge = (data, containerEl) => {\n // Find edge element\n const el = containerEl.querySelector(`[id*=\"L-${data.start}-${data.end}\"]`);\n if (!el) {\n throw new Error(\"Edge element not found\");\n }\n // Compute edge position data\n const position = computeElementPosition(el, containerEl);\n const edgePositionData = computeEdgePositions(el, position);\n // Remove irrelevant properties\n data.length = undefined;\n return {\n ...data,\n ...edgePositionData,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.text),\n };\n};\n// Compute element position\nconst computeElementPosition = (el, containerEl) => {\n if (!el) {\n throw new Error(\"Element not found\");\n }\n let root = el.parentElement?.parentElement;\n const childElement = el.childNodes[0];\n let childPosition = { x: 0, y: 0 };\n if (childElement) {\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(childElement);\n const boundingBox = childElement.getBBox();\n childPosition = {\n x: Number(childElement.getAttribute(\"x\")) ||\n transformX + boundingBox.x ||\n 0,\n y: Number(childElement.getAttribute(\"y\")) ||\n transformY + boundingBox.y ||\n 0,\n };\n }\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(el);\n const position = {\n x: transformX + childPosition.x,\n y: transformY + childPosition.y,\n };\n while (root && root.id !== containerEl.id) {\n if (root.classList.value === \"root\" && root.hasAttribute(\"transform\")) {\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(root);\n position.x += transformX;\n position.y += transformY;\n }\n root = root.parentElement;\n }\n return position;\n};\nconst computeEdgePositions = (pathElement, offset = { x: 0, y: 0 }) => {\n if (pathElement.tagName.toLowerCase() !== \"path\") {\n throw new Error(`Invalid input: Expected an HTMLElement of tag \"path\", got ${pathElement.tagName}`);\n }\n const dAttr = pathElement.getAttribute(\"d\");\n if (!dAttr) {\n throw new Error('Path element does not contain a \"d\" attribute');\n }\n // Split the d attribute based on M (Move To) and L (Line To) commands\n const commands = dAttr.split(/(?=[LM])/);\n const startPosition = commands[0]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const endPosition = commands[commands.length - 1]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const reflectionPoints = commands\n .map((command) => {\n const coords = command\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n return { x: coords[0], y: coords[1] };\n })\n .filter((point, index, array) => {\n if (index === array.length - 1) {\n return true;\n }\n const prevPoint = array[index - 1];\n return (index === 0 || (point.x !== prevPoint.x && point.y !== prevPoint.y));\n })\n .map((p) => {\n return {\n x: p.x + offset.x,\n y: p.y + offset.y,\n };\n });\n return {\n startX: startPosition[0] + offset.x,\n startY: startPosition[1] + offset.y,\n endX: endPosition[0] + offset.x,\n endY: endPosition[1] + offset.y,\n reflectionPoints,\n };\n};\nconst parseMermaidFlowChartDiagram = (diagram, containerEl) => {\n // This does some cleanup and initialization making sure\n // diagram is parsed correctly. Useful when multiple diagrams are\n // parsed together one after another, eg in playground\n // https://github.com/mermaid-js/mermaid/blob/e561cbd3be2a93b8bedfa4839484966faad92ccf/packages/mermaid/src/Diagram.ts#L43\n diagram.parse();\n // Get mermaid parsed data from parser shared variable `yy`\n const mermaidParser = diagram.parser.yy;\n const vertices = mermaidParser.getVertices();\n Object.keys(vertices).forEach((id) => {\n vertices[id] = parseVertex(vertices[id], containerEl);\n });\n const edges = mermaidParser\n .getEdges()\n .map((data) => parseEdge(data, containerEl));\n const subGraphs = mermaidParser\n .getSubGraphs()\n .map((data) => parseSubGraph(data, containerEl));\n return {\n type: \"flowchart\",\n subGraphs,\n vertices,\n edges,\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9mbG93Y2hhcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBa0U7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlEQUFpRCxRQUFRO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQWlCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFFBQVE7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxXQUFXLEdBQUcsU0FBUztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyw0REFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0EsZ0JBQWdCLHlCQUF5QixFQUFFLDJEQUFnQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUJBQXlCLEVBQUUsMkRBQWdCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5QkFBeUIsRUFBRSwyREFBZ0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzREFBc0QsWUFBWTtBQUNsRTtBQUNBLHFGQUFxRixvQkFBb0I7QUFDekc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvcGFyc2VyL2Zsb3djaGFydC5qcz83ZWZmIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVudGl0eUNvZGVzVG9UZXh0LCBnZXRUcmFuc2Zvcm1BdHRyIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5jb25zdCBwYXJzZVN1YkdyYXBoID0gKGRhdGEsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgLy8gRXh0cmFjdCBvbmx5IG5vZGUgaWQgZm9yIGJldHRlciByZWZlcmVuY2VcbiAgICAvLyBlLmcuIGZ1bGwgZWxlbWVudCBpZCA9IFwiZmxvd2NoYXJ0LWMxLTIwNVwiIHdpbGwgbWFwIHRvIFwiYzFcIlxuICAgIGNvbnN0IG5vZGVJZHMgPSBkYXRhLm5vZGVzLm1hcCgobikgPT4ge1xuICAgICAgICBpZiAobi5zdGFydHNXaXRoKFwiZmxvd2NoYXJ0LVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG4uc3BsaXQoXCItXCIpWzFdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuO1xuICAgIH0pO1xuICAgIC8vIEdldCBwb3NpdGlvblxuICAgIGNvbnN0IGVsID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkPScke2RhdGEuaWR9J11gKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlN1YkdyYXBoIGVsZW1lbnQgbm90IGZvdW5kXCIpO1xuICAgIH1cbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvbXB1dGVFbGVtZW50UG9zaXRpb24oZWwsIGNvbnRhaW5lckVsKTtcbiAgICAvLyBHZXQgZGltZW5zaW9uXG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSBlbC5nZXRCQm94KCk7XG4gICAgY29uc3QgZGltZW5zaW9uID0ge1xuICAgICAgICB3aWR0aDogYm91bmRpbmdCb3gud2lkdGgsXG4gICAgICAgIGhlaWdodDogYm91bmRpbmdCb3guaGVpZ2h0LFxuICAgIH07XG4gICAgLy8gUmVtb3ZlIGlycmVsZXZhbnQgcHJvcGVydGllc1xuICAgIGRhdGEuY2xhc3NlcyA9IHVuZGVmaW5lZDtcbiAgICBkYXRhLmRpciA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICBub2RlSWRzLFxuICAgICAgICAuLi5wb3NpdGlvbixcbiAgICAgICAgLi4uZGltZW5zaW9uLFxuICAgICAgICB0ZXh0OiBlbnRpdHlDb2Rlc1RvVGV4dChkYXRhLnRpdGxlKSxcbiAgICB9O1xufTtcbmNvbnN0IHBhcnNlVmVydGV4ID0gKGRhdGEsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgLy8gRmluZCBWZXJ0ZXggZWxlbWVudFxuICAgIGNvbnN0IGVsID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkKj1cImZsb3djaGFydC0ke2RhdGEuaWR9LVwiXWApO1xuICAgIGlmICghZWwpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgaWYgVmVydGV4IGF0dGFjaGVkIHdpdGggbGlua1xuICAgIGxldCBsaW5rO1xuICAgIGlmIChlbC5wYXJlbnRFbGVtZW50Py50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IFwiYVwiKSB7XG4gICAgICAgIGxpbmsgPSBlbC5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZShcInhsaW5rOmhyZWZcIik7XG4gICAgfVxuICAgIC8vIEdldCBwb3NpdGlvblxuICAgIGNvbnN0IHBvc2l0aW9uID0gY29tcHV0ZUVsZW1lbnRQb3NpdGlvbihsaW5rID8gZWwucGFyZW50RWxlbWVudCA6IGVsLCBjb250YWluZXJFbCk7XG4gICAgLy8gR2V0IGRpbWVuc2lvblxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gZWwuZ2V0QkJveCgpO1xuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHtcbiAgICAgICAgd2lkdGg6IGJvdW5kaW5nQm94LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGJvdW5kaW5nQm94LmhlaWdodCxcbiAgICB9O1xuICAgIC8vIEV4dHJhY3Qgc3R5bGVcbiAgICBjb25zdCBsYWJlbENvbnRhaW5lclN0eWxlVGV4dCA9IGVsXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLmxhYmVsLWNvbnRhaW5lclwiKVxuICAgICAgICA/LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIGNvbnN0IGxhYmVsU3R5bGVUZXh0ID0gZWwucXVlcnlTZWxlY3RvcihcIi5sYWJlbFwiKT8uZ2V0QXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgY29uc3QgY29udGFpbmVyU3R5bGUgPSB7fTtcbiAgICBsYWJlbENvbnRhaW5lclN0eWxlVGV4dD8uc3BsaXQoXCI7XCIpLmZvckVhY2goKHByb3BlcnR5KSA9PiB7XG4gICAgICAgIGlmICghcHJvcGVydHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBrZXkgPSBwcm9wZXJ0eS5zcGxpdChcIjpcIilbMF0udHJpbSgpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHByb3BlcnR5LnNwbGl0KFwiOlwiKVsxXS50cmltKCk7XG4gICAgICAgIGNvbnRhaW5lclN0eWxlW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBsYWJlbFN0eWxlID0ge307XG4gICAgbGFiZWxTdHlsZVRleHQ/LnNwbGl0KFwiO1wiKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5ID0gcHJvcGVydHkuc3BsaXQoXCI6XCIpWzBdLnRyaW0oKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wZXJ0eS5zcGxpdChcIjpcIilbMV0udHJpbSgpO1xuICAgICAgICBsYWJlbFN0eWxlW2tleV0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpZDogZGF0YS5pZCxcbiAgICAgICAgbGFiZWxUeXBlOiBkYXRhLmxhYmVsVHlwZSxcbiAgICAgICAgdGV4dDogZW50aXR5Q29kZXNUb1RleHQoZGF0YS50ZXh0KSxcbiAgICAgICAgdHlwZTogZGF0YS50eXBlLFxuICAgICAgICBsaW5rOiBsaW5rIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgLi4ucG9zaXRpb24sXG4gICAgICAgIC4uLmRpbWVuc2lvbixcbiAgICAgICAgY29udGFpbmVyU3R5bGUsXG4gICAgICAgIGxhYmVsU3R5bGUsXG4gICAgfTtcbn07XG5jb25zdCBwYXJzZUVkZ2UgPSAoZGF0YSwgY29udGFpbmVyRWwpID0+IHtcbiAgICAvLyBGaW5kIGVkZ2UgZWxlbWVudFxuICAgIGNvbnN0IGVsID0gY29udGFpbmVyRWwucXVlcnlTZWxlY3RvcihgW2lkKj1cIkwtJHtkYXRhLnN0YXJ0fS0ke2RhdGEuZW5kfVwiXWApO1xuICAgIGlmICghZWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRWRnZSBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgLy8gQ29tcHV0ZSBlZGdlIHBvc2l0aW9uIGRhdGFcbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvbXB1dGVFbGVtZW50UG9zaXRpb24oZWwsIGNvbnRhaW5lckVsKTtcbiAgICBjb25zdCBlZGdlUG9zaXRpb25EYXRhID0gY29tcHV0ZUVkZ2VQb3NpdGlvbnMoZWwsIHBvc2l0aW9uKTtcbiAgICAvLyBSZW1vdmUgaXJyZWxldmFudCBwcm9wZXJ0aWVzXG4gICAgZGF0YS5sZW5ndGggPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4uZWRnZVBvc2l0aW9uRGF0YSxcbiAgICAgICAgdGV4dDogZW50aXR5Q29kZXNUb1RleHQoZGF0YS50ZXh0KSxcbiAgICB9O1xufTtcbi8vIENvbXB1dGUgZWxlbWVudCBwb3NpdGlvblxuY29uc3QgY29tcHV0ZUVsZW1lbnRQb3NpdGlvbiA9IChlbCwgY29udGFpbmVyRWwpID0+IHtcbiAgICBpZiAoIWVsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVsZW1lbnQgbm90IGZvdW5kXCIpO1xuICAgIH1cbiAgICBsZXQgcm9vdCA9IGVsLnBhcmVudEVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY2hpbGRFbGVtZW50ID0gZWwuY2hpbGROb2Rlc1swXTtcbiAgICBsZXQgY2hpbGRQb3NpdGlvbiA9IHsgeDogMCwgeTogMCB9O1xuICAgIGlmIChjaGlsZEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH0gPSBnZXRUcmFuc2Zvcm1BdHRyKGNoaWxkRWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gY2hpbGRFbGVtZW50LmdldEJCb3goKTtcbiAgICAgICAgY2hpbGRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIHg6IE51bWJlcihjaGlsZEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwieFwiKSkgfHxcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1YICsgYm91bmRpbmdCb3gueCB8fFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICB5OiBOdW1iZXIoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZShcInlcIikpIHx8XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtWSArIGJvdW5kaW5nQm94LnkgfHxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IHRyYW5zZm9ybVgsIHRyYW5zZm9ybVkgfSA9IGdldFRyYW5zZm9ybUF0dHIoZWwpO1xuICAgIGNvbnN0IHBvc2l0aW9uID0ge1xuICAgICAgICB4OiB0cmFuc2Zvcm1YICsgY2hpbGRQb3NpdGlvbi54LFxuICAgICAgICB5OiB0cmFuc2Zvcm1ZICsgY2hpbGRQb3NpdGlvbi55LFxuICAgIH07XG4gICAgd2hpbGUgKHJvb3QgJiYgcm9vdC5pZCAhPT0gY29udGFpbmVyRWwuaWQpIHtcbiAgICAgICAgaWYgKHJvb3QuY2xhc3NMaXN0LnZhbHVlID09PSBcInJvb3RcIiAmJiByb290Lmhhc0F0dHJpYnV0ZShcInRyYW5zZm9ybVwiKSkge1xuICAgICAgICAgICAgY29uc3QgeyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH0gPSBnZXRUcmFuc2Zvcm1BdHRyKHJvb3QpO1xuICAgICAgICAgICAgcG9zaXRpb24ueCArPSB0cmFuc2Zvcm1YO1xuICAgICAgICAgICAgcG9zaXRpb24ueSArPSB0cmFuc2Zvcm1ZO1xuICAgICAgICB9XG4gICAgICAgIHJvb3QgPSByb290LnBhcmVudEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiBwb3NpdGlvbjtcbn07XG5jb25zdCBjb21wdXRlRWRnZVBvc2l0aW9ucyA9IChwYXRoRWxlbWVudCwgb2Zmc2V0ID0geyB4OiAwLCB5OiAwIH0pID0+IHtcbiAgICBpZiAocGF0aEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcInBhdGhcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5wdXQ6IEV4cGVjdGVkIGFuIEhUTUxFbGVtZW50IG9mIHRhZyBcInBhdGhcIiwgZ290ICR7cGF0aEVsZW1lbnQudGFnTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZEF0dHIgPSBwYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkXCIpO1xuICAgIGlmICghZEF0dHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXRoIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBhIFwiZFwiIGF0dHJpYnV0ZScpO1xuICAgIH1cbiAgICAvLyBTcGxpdCB0aGUgZCBhdHRyaWJ1dGUgYmFzZWQgb24gTSAoTW92ZSBUbykgYW5kIEwgKExpbmUgVG8pIGNvbW1hbmRzXG4gICAgY29uc3QgY29tbWFuZHMgPSBkQXR0ci5zcGxpdCgvKD89W0xNXSkvKTtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gY29tbWFuZHNbMF1cbiAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGNvb3JkKSA9PiBwYXJzZUZsb2F0KGNvb3JkKSk7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSBjb21tYW5kc1tjb21tYW5kcy5sZW5ndGggLSAxXVxuICAgICAgICAuc3Vic3RyaW5nKDEpXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoY29vcmQpID0+IHBhcnNlRmxvYXQoY29vcmQpKTtcbiAgICBjb25zdCByZWZsZWN0aW9uUG9pbnRzID0gY29tbWFuZHNcbiAgICAgICAgLm1hcCgoY29tbWFuZCkgPT4ge1xuICAgICAgICBjb25zdCBjb29yZHMgPSBjb21tYW5kXG4gICAgICAgICAgICAuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgICAgICAubWFwKChjb29yZCkgPT4gcGFyc2VGbG9hdChjb29yZCkpO1xuICAgICAgICByZXR1cm4geyB4OiBjb29yZHNbMF0sIHk6IGNvb3Jkc1sxXSB9O1xuICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHBvaW50LCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2UG9pbnQgPSBhcnJheVtpbmRleCAtIDFdO1xuICAgICAgICByZXR1cm4gKGluZGV4ID09PSAwIHx8IChwb2ludC54ICE9PSBwcmV2UG9pbnQueCAmJiBwb2ludC55ICE9PSBwcmV2UG9pbnQueSkpO1xuICAgIH0pXG4gICAgICAgIC5tYXAoKHApID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHAueCArIG9mZnNldC54LFxuICAgICAgICAgICAgeTogcC55ICsgb2Zmc2V0LnksXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRYOiBzdGFydFBvc2l0aW9uWzBdICsgb2Zmc2V0LngsXG4gICAgICAgIHN0YXJ0WTogc3RhcnRQb3NpdGlvblsxXSArIG9mZnNldC55LFxuICAgICAgICBlbmRYOiBlbmRQb3NpdGlvblswXSArIG9mZnNldC54LFxuICAgICAgICBlbmRZOiBlbmRQb3NpdGlvblsxXSArIG9mZnNldC55LFxuICAgICAgICByZWZsZWN0aW9uUG9pbnRzLFxuICAgIH07XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlTWVybWFpZEZsb3dDaGFydERpYWdyYW0gPSAoZGlhZ3JhbSwgY29udGFpbmVyRWwpID0+IHtcbiAgICAvLyBUaGlzIGRvZXMgc29tZSBjbGVhbnVwIGFuZCBpbml0aWFsaXphdGlvbiBtYWtpbmcgc3VyZVxuICAgIC8vIGRpYWdyYW0gaXMgcGFyc2VkIGNvcnJlY3RseS4gVXNlZnVsIHdoZW4gbXVsdGlwbGUgZGlhZ3JhbXMgYXJlXG4gICAgLy8gcGFyc2VkIHRvZ2V0aGVyIG9uZSBhZnRlciBhbm90aGVyLCBlZyBpbiBwbGF5Z3JvdW5kXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21lcm1haWQtanMvbWVybWFpZC9ibG9iL2U1NjFjYmQzYmUyYTkzYjhiZWRmYTQ4Mzk0ODQ5NjZmYWFkOTJjY2YvcGFja2FnZXMvbWVybWFpZC9zcmMvRGlhZ3JhbS50cyNMNDNcbiAgICBkaWFncmFtLnBhcnNlKCk7XG4gICAgLy8gR2V0IG1lcm1haWQgcGFyc2VkIGRhdGEgZnJvbSBwYXJzZXIgc2hhcmVkIHZhcmlhYmxlIGB5eWBcbiAgICBjb25zdCBtZXJtYWlkUGFyc2VyID0gZGlhZ3JhbS5wYXJzZXIueXk7XG4gICAgY29uc3QgdmVydGljZXMgPSBtZXJtYWlkUGFyc2VyLmdldFZlcnRpY2VzKCk7XG4gICAgT2JqZWN0LmtleXModmVydGljZXMpLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIHZlcnRpY2VzW2lkXSA9IHBhcnNlVmVydGV4KHZlcnRpY2VzW2lkXSwgY29udGFpbmVyRWwpO1xuICAgIH0pO1xuICAgIGNvbnN0IGVkZ2VzID0gbWVybWFpZFBhcnNlclxuICAgICAgICAuZ2V0RWRnZXMoKVxuICAgICAgICAubWFwKChkYXRhKSA9PiBwYXJzZUVkZ2UoZGF0YSwgY29udGFpbmVyRWwpKTtcbiAgICBjb25zdCBzdWJHcmFwaHMgPSBtZXJtYWlkUGFyc2VyXG4gICAgICAgIC5nZXRTdWJHcmFwaHMoKVxuICAgICAgICAubWFwKChkYXRhKSA9PiBwYXJzZVN1YkdyYXBoKGRhdGEsIGNvbnRhaW5lckVsKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJmbG93Y2hhcnRcIixcbiAgICAgICAgc3ViR3JhcGhzLFxuICAgICAgICB2ZXJ0aWNlcyxcbiAgICAgICAgZWRnZXMsXG4gICAgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js\n");
|
|
422
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidFlowChartDiagram\": () => (/* binding */ parseMermaidFlowChartDiagram)\n/* harmony export */ });\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n\nconst parseSubGraph = (data, containerEl) => {\n // Extract only node id for better reference\n // e.g. full element id = \"flowchart-c1-205\" will map to \"c1\"\n const nodeIds = data.nodes.map((n) => {\n if (n.startsWith(\"flowchart-\")) {\n return n.split(\"-\")[1];\n }\n return n;\n });\n // Get position\n const el = containerEl.querySelector(`[id='${data.id}']`);\n if (!el) {\n throw new Error(\"SubGraph element not found\");\n }\n const position = computeElementPosition(el, containerEl);\n // Get dimension\n const boundingBox = el.getBBox();\n const dimension = {\n width: boundingBox.width,\n height: boundingBox.height,\n };\n // Remove irrelevant properties\n data.classes = undefined;\n data.dir = undefined;\n return {\n ...data,\n nodeIds,\n ...position,\n ...dimension,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.title),\n };\n};\nconst parseVertex = (data, containerEl) => {\n // Find Vertex element\n const el = containerEl.querySelector(`[id*=\"flowchart-${data.id}-\"]`);\n if (!el) {\n return undefined;\n }\n // Check if Vertex attached with link\n let link;\n if (el.parentElement?.tagName.toLowerCase() === \"a\") {\n link = el.parentElement.getAttribute(\"xlink:href\");\n }\n // Get position\n const position = computeElementPosition(link ? el.parentElement : el, containerEl);\n // Get dimension\n const boundingBox = el.getBBox();\n const dimension = {\n width: boundingBox.width,\n height: boundingBox.height,\n };\n // Extract style\n const labelContainerStyleText = el\n .querySelector(\".label-container\")\n ?.getAttribute(\"style\");\n const labelStyleText = el.querySelector(\".label\")?.getAttribute(\"style\");\n const containerStyle = {};\n labelContainerStyleText?.split(\";\").forEach((property) => {\n if (!property) {\n return;\n }\n const key = property.split(\":\")[0].trim();\n const value = property.split(\":\")[1].trim();\n containerStyle[key] = value;\n });\n const labelStyle = {};\n labelStyleText?.split(\";\").forEach((property) => {\n if (!property) {\n return;\n }\n const key = property.split(\":\")[0].trim();\n const value = property.split(\":\")[1].trim();\n labelStyle[key] = value;\n });\n return {\n id: data.id,\n labelType: data.labelType,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.text),\n type: data.type,\n link: link || undefined,\n ...position,\n ...dimension,\n containerStyle,\n labelStyle,\n };\n};\nconst parseEdge = (data, containerEl) => {\n // Find edge element\n const el = containerEl.querySelector(`[id*=\"L-${data.start}-${data.end}\"]`);\n if (!el) {\n throw new Error(\"Edge element not found\");\n }\n // Compute edge position data\n const position = computeElementPosition(el, containerEl);\n const edgePositionData = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.computeEdgePositions)(el, position);\n // Remove irrelevant properties\n data.length = undefined;\n return {\n ...data,\n ...edgePositionData,\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.entityCodesToText)(data.text),\n };\n};\n// Compute element position\nconst computeElementPosition = (el, containerEl) => {\n if (!el) {\n throw new Error(\"Element not found\");\n }\n let root = el.parentElement?.parentElement;\n const childElement = el.childNodes[0];\n let childPosition = { x: 0, y: 0 };\n if (childElement) {\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(childElement);\n const boundingBox = childElement.getBBox();\n childPosition = {\n x: Number(childElement.getAttribute(\"x\")) ||\n transformX + boundingBox.x ||\n 0,\n y: Number(childElement.getAttribute(\"y\")) ||\n transformY + boundingBox.y ||\n 0,\n };\n }\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(el);\n const position = {\n x: transformX + childPosition.x,\n y: transformY + childPosition.y,\n };\n while (root && root.id !== containerEl.id) {\n if (root.classList.value === \"root\" && root.hasAttribute(\"transform\")) {\n const { transformX, transformY } = (0,_utils_js__WEBPACK_IMPORTED_MODULE_0__.getTransformAttr)(root);\n position.x += transformX;\n position.y += transformY;\n }\n root = root.parentElement;\n }\n return position;\n};\nconst parseMermaidFlowChartDiagram = (diagram, containerEl) => {\n // This does some cleanup and initialization making sure\n // diagram is parsed correctly. Useful when multiple diagrams are\n // parsed together one after another, eg in playground\n // https://github.com/mermaid-js/mermaid/blob/e561cbd3be2a93b8bedfa4839484966faad92ccf/packages/mermaid/src/Diagram.ts#L43\n diagram.parse();\n // Get mermaid parsed data from parser shared variable `yy`\n const mermaidParser = diagram.parser.yy;\n const vertices = mermaidParser.getVertices();\n Object.keys(vertices).forEach((id) => {\n vertices[id] = parseVertex(vertices[id], containerEl);\n });\n const edges = mermaidParser\n .getEdges()\n .map((data) => parseEdge(data, containerEl));\n const subGraphs = mermaidParser\n .getSubGraphs()\n .map((data) => parseSubGraph(data, containerEl));\n return {\n type: \"flowchart\",\n subGraphs,\n vertices,\n edges,\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9mbG93Y2hhcnQuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBeUY7QUFDekY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLGlEQUFpRCxRQUFRO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsNERBQWlCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFFBQVE7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQ0FBcUM7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNEJBQTRCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxjQUFjLDREQUFpQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxXQUFXLEdBQUcsU0FBUztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCLCtEQUFvQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyw0REFBaUI7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCO0FBQ0EsZ0JBQWdCLHlCQUF5QixFQUFFLDJEQUFnQjtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVkseUJBQXlCLEVBQUUsMkRBQWdCO0FBQ3ZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQix5QkFBeUIsRUFBRSwyREFBZ0I7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9wYXJzZXIvZmxvd2NoYXJ0LmpzPzdlZmYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZUVkZ2VQb3NpdGlvbnMsIGVudGl0eUNvZGVzVG9UZXh0LCBnZXRUcmFuc2Zvcm1BdHRyLCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuY29uc3QgcGFyc2VTdWJHcmFwaCA9IChkYXRhLCBjb250YWluZXJFbCkgPT4ge1xuICAgIC8vIEV4dHJhY3Qgb25seSBub2RlIGlkIGZvciBiZXR0ZXIgcmVmZXJlbmNlXG4gICAgLy8gZS5nLiBmdWxsIGVsZW1lbnQgaWQgPSBcImZsb3djaGFydC1jMS0yMDVcIiB3aWxsIG1hcCB0byBcImMxXCJcbiAgICBjb25zdCBub2RlSWRzID0gZGF0YS5ub2Rlcy5tYXAoKG4pID0+IHtcbiAgICAgICAgaWYgKG4uc3RhcnRzV2l0aChcImZsb3djaGFydC1cIikpIHtcbiAgICAgICAgICAgIHJldHVybiBuLnNwbGl0KFwiLVwiKVsxXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbjtcbiAgICB9KTtcbiAgICAvLyBHZXQgcG9zaXRpb25cbiAgICBjb25zdCBlbCA9IGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3IoYFtpZD0nJHtkYXRhLmlkfSddYCk7XG4gICAgaWYgKCFlbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTdWJHcmFwaCBlbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgY29uc3QgcG9zaXRpb24gPSBjb21wdXRlRWxlbWVudFBvc2l0aW9uKGVsLCBjb250YWluZXJFbCk7XG4gICAgLy8gR2V0IGRpbWVuc2lvblxuICAgIGNvbnN0IGJvdW5kaW5nQm94ID0gZWwuZ2V0QkJveCgpO1xuICAgIGNvbnN0IGRpbWVuc2lvbiA9IHtcbiAgICAgICAgd2lkdGg6IGJvdW5kaW5nQm94LndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGJvdW5kaW5nQm94LmhlaWdodCxcbiAgICB9O1xuICAgIC8vIFJlbW92ZSBpcnJlbGV2YW50IHByb3BlcnRpZXNcbiAgICBkYXRhLmNsYXNzZXMgPSB1bmRlZmluZWQ7XG4gICAgZGF0YS5kaXIgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgbm9kZUlkcyxcbiAgICAgICAgLi4ucG9zaXRpb24sXG4gICAgICAgIC4uLmRpbWVuc2lvbixcbiAgICAgICAgdGV4dDogZW50aXR5Q29kZXNUb1RleHQoZGF0YS50aXRsZSksXG4gICAgfTtcbn07XG5jb25zdCBwYXJzZVZlcnRleCA9IChkYXRhLCBjb250YWluZXJFbCkgPT4ge1xuICAgIC8vIEZpbmQgVmVydGV4IGVsZW1lbnRcbiAgICBjb25zdCBlbCA9IGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3IoYFtpZCo9XCJmbG93Y2hhcnQtJHtkYXRhLmlkfS1cIl1gKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIENoZWNrIGlmIFZlcnRleCBhdHRhY2hlZCB3aXRoIGxpbmtcbiAgICBsZXQgbGluaztcbiAgICBpZiAoZWwucGFyZW50RWxlbWVudD8udGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImFcIikge1xuICAgICAgICBsaW5rID0gZWwucGFyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ4bGluazpocmVmXCIpO1xuICAgIH1cbiAgICAvLyBHZXQgcG9zaXRpb25cbiAgICBjb25zdCBwb3NpdGlvbiA9IGNvbXB1dGVFbGVtZW50UG9zaXRpb24obGluayA/IGVsLnBhcmVudEVsZW1lbnQgOiBlbCwgY29udGFpbmVyRWwpO1xuICAgIC8vIEdldCBkaW1lbnNpb25cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IGVsLmdldEJCb3goKTtcbiAgICBjb25zdCBkaW1lbnNpb24gPSB7XG4gICAgICAgIHdpZHRoOiBib3VuZGluZ0JveC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBib3VuZGluZ0JveC5oZWlnaHQsXG4gICAgfTtcbiAgICAvLyBFeHRyYWN0IHN0eWxlXG4gICAgY29uc3QgbGFiZWxDb250YWluZXJTdHlsZVRleHQgPSBlbFxuICAgICAgICAucXVlcnlTZWxlY3RvcihcIi5sYWJlbC1jb250YWluZXJcIilcbiAgICAgICAgPy5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKTtcbiAgICBjb25zdCBsYWJlbFN0eWxlVGV4dCA9IGVsLnF1ZXJ5U2VsZWN0b3IoXCIubGFiZWxcIik/LmdldEF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgIGNvbnN0IGNvbnRhaW5lclN0eWxlID0ge307XG4gICAgbGFiZWxDb250YWluZXJTdHlsZVRleHQ/LnNwbGl0KFwiO1wiKS5mb3JFYWNoKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgICBpZiAoIXByb3BlcnR5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qga2V5ID0gcHJvcGVydHkuc3BsaXQoXCI6XCIpWzBdLnRyaW0oKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm9wZXJ0eS5zcGxpdChcIjpcIilbMV0udHJpbSgpO1xuICAgICAgICBjb250YWluZXJTdHlsZVtrZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgbGFiZWxTdHlsZSA9IHt9O1xuICAgIGxhYmVsU3R5bGVUZXh0Py5zcGxpdChcIjtcIikuZm9yRWFjaCgocHJvcGVydHkpID0+IHtcbiAgICAgICAgaWYgKCFwcm9wZXJ0eSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGtleSA9IHByb3BlcnR5LnNwbGl0KFwiOlwiKVswXS50cmltKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvcGVydHkuc3BsaXQoXCI6XCIpWzFdLnRyaW0oKTtcbiAgICAgICAgbGFiZWxTdHlsZVtrZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IGRhdGEuaWQsXG4gICAgICAgIGxhYmVsVHlwZTogZGF0YS5sYWJlbFR5cGUsXG4gICAgICAgIHRleHQ6IGVudGl0eUNvZGVzVG9UZXh0KGRhdGEudGV4dCksXG4gICAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgICAgbGluazogbGluayB8fCB1bmRlZmluZWQsXG4gICAgICAgIC4uLnBvc2l0aW9uLFxuICAgICAgICAuLi5kaW1lbnNpb24sXG4gICAgICAgIGNvbnRhaW5lclN0eWxlLFxuICAgICAgICBsYWJlbFN0eWxlLFxuICAgIH07XG59O1xuY29uc3QgcGFyc2VFZGdlID0gKGRhdGEsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgLy8gRmluZCBlZGdlIGVsZW1lbnRcbiAgICBjb25zdCBlbCA9IGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3IoYFtpZCo9XCJMLSR7ZGF0YS5zdGFydH0tJHtkYXRhLmVuZH1cIl1gKTtcbiAgICBpZiAoIWVsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVkZ2UgZWxlbWVudCBub3QgZm91bmRcIik7XG4gICAgfVxuICAgIC8vIENvbXB1dGUgZWRnZSBwb3NpdGlvbiBkYXRhXG4gICAgY29uc3QgcG9zaXRpb24gPSBjb21wdXRlRWxlbWVudFBvc2l0aW9uKGVsLCBjb250YWluZXJFbCk7XG4gICAgY29uc3QgZWRnZVBvc2l0aW9uRGF0YSA9IGNvbXB1dGVFZGdlUG9zaXRpb25zKGVsLCBwb3NpdGlvbik7XG4gICAgLy8gUmVtb3ZlIGlycmVsZXZhbnQgcHJvcGVydGllc1xuICAgIGRhdGEubGVuZ3RoID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIC4uLmVkZ2VQb3NpdGlvbkRhdGEsXG4gICAgICAgIHRleHQ6IGVudGl0eUNvZGVzVG9UZXh0KGRhdGEudGV4dCksXG4gICAgfTtcbn07XG4vLyBDb21wdXRlIGVsZW1lbnQgcG9zaXRpb25cbmNvbnN0IGNvbXB1dGVFbGVtZW50UG9zaXRpb24gPSAoZWwsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgaWYgKCFlbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbGVtZW50IG5vdCBmb3VuZFwiKTtcbiAgICB9XG4gICAgbGV0IHJvb3QgPSBlbC5wYXJlbnRFbGVtZW50Py5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGNoaWxkRWxlbWVudCA9IGVsLmNoaWxkTm9kZXNbMF07XG4gICAgbGV0IGNoaWxkUG9zaXRpb24gPSB7IHg6IDAsIHk6IDAgfTtcbiAgICBpZiAoY2hpbGRFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtWCwgdHJhbnNmb3JtWSB9ID0gZ2V0VHJhbnNmb3JtQXR0cihjaGlsZEVsZW1lbnQpO1xuICAgICAgICBjb25zdCBib3VuZGluZ0JveCA9IGNoaWxkRWxlbWVudC5nZXRCQm94KCk7XG4gICAgICAgIGNoaWxkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICB4OiBOdW1iZXIoY2hpbGRFbGVtZW50LmdldEF0dHJpYnV0ZShcInhcIikpIHx8XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtWCArIGJvdW5kaW5nQm94LnggfHxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgeTogTnVtYmVyKGNoaWxkRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJ5XCIpKSB8fFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybVkgKyBib3VuZGluZ0JveC55IHx8XG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH0gPSBnZXRUcmFuc2Zvcm1BdHRyKGVsKTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHtcbiAgICAgICAgeDogdHJhbnNmb3JtWCArIGNoaWxkUG9zaXRpb24ueCxcbiAgICAgICAgeTogdHJhbnNmb3JtWSArIGNoaWxkUG9zaXRpb24ueSxcbiAgICB9O1xuICAgIHdoaWxlIChyb290ICYmIHJvb3QuaWQgIT09IGNvbnRhaW5lckVsLmlkKSB7XG4gICAgICAgIGlmIChyb290LmNsYXNzTGlzdC52YWx1ZSA9PT0gXCJyb290XCIgJiYgcm9vdC5oYXNBdHRyaWJ1dGUoXCJ0cmFuc2Zvcm1cIikpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdHJhbnNmb3JtWCwgdHJhbnNmb3JtWSB9ID0gZ2V0VHJhbnNmb3JtQXR0cihyb290KTtcbiAgICAgICAgICAgIHBvc2l0aW9uLnggKz0gdHJhbnNmb3JtWDtcbiAgICAgICAgICAgIHBvc2l0aW9uLnkgKz0gdHJhbnNmb3JtWTtcbiAgICAgICAgfVxuICAgICAgICByb290ID0gcm9vdC5wYXJlbnRFbGVtZW50O1xuICAgIH1cbiAgICByZXR1cm4gcG9zaXRpb247XG59O1xuZXhwb3J0IGNvbnN0IHBhcnNlTWVybWFpZEZsb3dDaGFydERpYWdyYW0gPSAoZGlhZ3JhbSwgY29udGFpbmVyRWwpID0+IHtcbiAgICAvLyBUaGlzIGRvZXMgc29tZSBjbGVhbnVwIGFuZCBpbml0aWFsaXphdGlvbiBtYWtpbmcgc3VyZVxuICAgIC8vIGRpYWdyYW0gaXMgcGFyc2VkIGNvcnJlY3RseS4gVXNlZnVsIHdoZW4gbXVsdGlwbGUgZGlhZ3JhbXMgYXJlXG4gICAgLy8gcGFyc2VkIHRvZ2V0aGVyIG9uZSBhZnRlciBhbm90aGVyLCBlZyBpbiBwbGF5Z3JvdW5kXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21lcm1haWQtanMvbWVybWFpZC9ibG9iL2U1NjFjYmQzYmUyYTkzYjhiZWRmYTQ4Mzk0ODQ5NjZmYWFkOTJjY2YvcGFja2FnZXMvbWVybWFpZC9zcmMvRGlhZ3JhbS50cyNMNDNcbiAgICBkaWFncmFtLnBhcnNlKCk7XG4gICAgLy8gR2V0IG1lcm1haWQgcGFyc2VkIGRhdGEgZnJvbSBwYXJzZXIgc2hhcmVkIHZhcmlhYmxlIGB5eWBcbiAgICBjb25zdCBtZXJtYWlkUGFyc2VyID0gZGlhZ3JhbS5wYXJzZXIueXk7XG4gICAgY29uc3QgdmVydGljZXMgPSBtZXJtYWlkUGFyc2VyLmdldFZlcnRpY2VzKCk7XG4gICAgT2JqZWN0LmtleXModmVydGljZXMpLmZvckVhY2goKGlkKSA9PiB7XG4gICAgICAgIHZlcnRpY2VzW2lkXSA9IHBhcnNlVmVydGV4KHZlcnRpY2VzW2lkXSwgY29udGFpbmVyRWwpO1xuICAgIH0pO1xuICAgIGNvbnN0IGVkZ2VzID0gbWVybWFpZFBhcnNlclxuICAgICAgICAuZ2V0RWRnZXMoKVxuICAgICAgICAubWFwKChkYXRhKSA9PiBwYXJzZUVkZ2UoZGF0YSwgY29udGFpbmVyRWwpKTtcbiAgICBjb25zdCBzdWJHcmFwaHMgPSBtZXJtYWlkUGFyc2VyXG4gICAgICAgIC5nZXRTdWJHcmFwaHMoKVxuICAgICAgICAubWFwKChkYXRhKSA9PiBwYXJzZVN1YkdyYXBoKGRhdGEsIGNvbnRhaW5lckVsKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJmbG93Y2hhcnRcIixcbiAgICAgICAgc3ViR3JhcGhzLFxuICAgICAgICB2ZXJ0aWNlcyxcbiAgICAgICAgZWRnZXMsXG4gICAgfTtcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/flowchart.js\n");
|
|
379
423
|
|
|
380
424
|
/***/ }),
|
|
381
425
|
|
|
@@ -386,7 +430,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
386
430
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
387
431
|
|
|
388
432
|
"use strict";
|
|
389
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidSequenceDiagram\": () => (/* binding */ parseMermaidSequenceDiagram)\n/* harmony export */ });\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\");\n\n\n\n// Currently mermaid supported these 6 arrow types, the names are taken from mermaidParser.LINETYPE\nconst SEQUENCE_ARROW_TYPES = {\n 0: \"SOLID\",\n 1: \"DOTTED\",\n 3: \"SOLID_CROSS\",\n 4: \"DOTTED_CROSS\",\n 5: \"SOLID_OPEN\",\n 6: \"DOTTED_OPEN\",\n 24: \"SOLID_POINT\",\n 25: \"DOTTED_POINT\",\n};\nconst MESSAGE_TYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32,\n};\nconst createContainerElement = (node, type, opts = {}) => {\n const container = {};\n container.type = type;\n const { text, subtype, id, groupId } = opts;\n container.id = id;\n if (groupId) {\n container.groupId = groupId;\n }\n if (text) {\n container.label = {\n text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.entityCodesToText)(text),\n fontSize: 16,\n };\n }\n const boundingBox = node.getBBox();\n container.x = boundingBox.x;\n container.y = boundingBox.y;\n container.width = boundingBox.width;\n container.height = boundingBox.height;\n container.subtype = subtype;\n switch (subtype) {\n case \"highlight\":\n const bgColor = node.getAttribute(\"fill\");\n if (bgColor) {\n container.bgColor = bgColor;\n }\n break;\n case \"note\":\n container.strokeStyle = \"dashed\";\n break;\n }\n return container;\n};\nconst createTextElement = (textNode, text, opts) => {\n const node = {};\n const x = Number(textNode.getAttribute(\"x\"));\n const y = Number(textNode.getAttribute(\"y\"));\n node.type = \"text\";\n node.text = (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.entityCodesToText)(text);\n if (opts?.id) {\n node.id = opts.id;\n }\n if (opts?.groupId) {\n node.groupId = opts.groupId;\n }\n const boundingBox = textNode.getBBox();\n node.width = boundingBox.width;\n node.height = boundingBox.height;\n node.x = x - boundingBox.width / 2;\n node.y = y;\n const fontSize = parseInt(getComputedStyle(textNode).fontSize);\n node.fontSize = fontSize;\n return node;\n};\nconst createLineElement = (lineNode, startX, startY, endX, endY, opts) => {\n const line = {};\n line.startX = startX;\n line.startY = startY;\n line.endX = endX;\n if (opts?.groupId) {\n line.groupId = opts.groupId;\n }\n if (opts?.id) {\n line.id = opts.id;\n }\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n line.endY = endY;\n line.strokeColor = lineNode.getAttribute(\"stroke\");\n line.strokeWidth = Number(lineNode.getAttribute(\"stroke-width\"));\n line.type = \"line\";\n return line;\n};\nconst createArrowElement = (arrowNode, message) => {\n const arrow = {};\n arrow.label = { text: (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.entityCodesToText)(message.message), fontSize: 16 };\n const tagName = arrowNode.tagName;\n if (tagName === \"line\") {\n arrow.startX = Number(arrowNode.getAttribute(\"x1\"));\n arrow.startY = Number(arrowNode.getAttribute(\"y1\"));\n arrow.endX = Number(arrowNode.getAttribute(\"x2\"));\n arrow.endY = Number(arrowNode.getAttribute(\"y2\"));\n }\n else if (tagName === \"path\") {\n const dAttr = arrowNode.getAttribute(\"d\");\n if (!dAttr) {\n throw new Error('Path element does not contain a \"d\" attribute');\n }\n // Split the d attribute based on M (Move To) and C (Curve) commands\n const commands = dAttr.split(/(?=[LC])/);\n const startPosition = commands[0]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const points = [];\n commands.forEach((command) => {\n const currPoints = command\n .substring(1)\n .trim()\n .split(\" \")\n .map((pos) => {\n const [x, y] = pos.split(\",\");\n return [\n parseFloat(x) - startPosition[0],\n parseFloat(y) - startPosition[1],\n ];\n });\n points.push(...currPoints);\n });\n const endPosition = points[points.length - 1];\n arrow.startX = startPosition[0];\n arrow.startY = startPosition[1];\n arrow.endX = endPosition[0];\n arrow.endY = endPosition[1];\n arrow.points = points;\n }\n if (message) {\n // In mermaid the text is positioned above arrow but in Excalidraw\n // its postioned on the arrow hence the elements below it might look cluttered so shifting the arrow by an offset of 10px\n const offset = 10;\n arrow.startY = arrow.startY - offset;\n arrow.endY = arrow.endY - offset;\n }\n const showSequenceNumber = !!arrowNode.nextElementSibling?.classList.contains(\"sequenceNumber\");\n if (showSequenceNumber) {\n const text = arrowNode.nextElementSibling?.textContent;\n if (!text) {\n throw new Error(\"sequence number not present\");\n }\n const height = 30;\n const yOffset = height / 2;\n const xOffset = 10;\n const sequenceNumber = {\n type: \"rectangle\",\n x: arrow.startX - xOffset,\n y: arrow.startY - yOffset,\n label: { text, fontSize: 14 },\n bgColor: \"#e9ecef\",\n height,\n subtype: \"sequence\",\n };\n arrow.sequenceNumber = sequenceNumber;\n }\n arrow.strokeColor = arrowNode.getAttribute(\"stroke\");\n arrow.strokeWidth = Number(arrowNode.getAttribute(\"stroke-width\"));\n arrow.type = \"arrow\";\n arrow.strokeStyle = SEQUENCE_ARROW_TYPES[message.type];\n return arrow;\n};\nconst createActorSymbol = (rootNode, text, opts) => {\n if (!rootNode) {\n throw \"root node not found\";\n }\n const groupId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const children = Array.from(rootNode.children);\n const nodeElements = [];\n children.forEach((child, index) => {\n const id = `${opts?.id}-${index}`;\n let ele;\n switch (child.tagName) {\n case \"line\":\n const startX = Number(child.getAttribute(\"x1\"));\n const startY = Number(child.getAttribute(\"y1\"));\n const endX = Number(child.getAttribute(\"x2\"));\n const endY = Number(child.getAttribute(\"y2\"));\n ele = createLineElement(child, startX, startY, endX, endY, { groupId, id });\n break;\n case \"text\":\n ele = createTextElement(child, text, { groupId, id });\n break;\n case \"circle\":\n ele = createContainerElement(child, \"ellipse\", {\n text: child.textContent || undefined,\n groupId,\n id,\n });\n default:\n ele = createContainerElement(child, _constants_js__WEBPACK_IMPORTED_MODULE_0__.SVG_TO_SHAPE_MAPPER[child.tagName], { text: child.textContent || undefined, groupId, id });\n }\n nodeElements.push(ele);\n });\n return nodeElements;\n};\nconst parseActor = (actors, containerEl) => {\n const actorRootNodes = Array.from(containerEl.querySelectorAll(\".actor\"))\n .filter((node) => node.tagName === \"text\")\n .map((actor) => actor.tagName === \"text\" && actor.parentElement);\n const nodes = [];\n const lines = [];\n const actorsLength = Object.keys(actors).length;\n Object.values(actors).forEach((actor, index) => {\n //@ts-ignore\n // For each actor there are two nodes top and bottom which is connected by a line\n const topRootNode = actorRootNodes[index];\n //@ts-ignore\n const bottomRootNode = actorRootNodes[actorsLength + index];\n if (!topRootNode) {\n throw \"root not found\";\n }\n const text = actor.description;\n if (actor.type === \"participant\") {\n // creating top actor node element\n const topNodeElement = createContainerElement(topRootNode.firstChild, \"rectangle\", { id: `${actor.name}-top`, text, subtype: \"actor\" });\n if (!topNodeElement) {\n throw \"Top Node element not found!\";\n }\n nodes.push([topNodeElement]);\n // creating bottom actor node element\n const bottomNodeElement = createContainerElement(bottomRootNode.firstChild, \"rectangle\", { id: `${actor.name}-bottom`, text, subtype: \"actor\" });\n nodes.push([bottomNodeElement]);\n // Get the line connecting the top and bottom nodes. As per the DOM, the line is rendered as first child of parent element\n const lineNode = topRootNode.previousElementSibling;\n if (lineNode?.tagName !== \"line\") {\n throw \"Line not found\";\n }\n const startX = Number(lineNode.getAttribute(\"x1\"));\n if (!topNodeElement.height) {\n throw \"Top node element height is null\";\n }\n const startY = topNodeElement.y + topNodeElement.height;\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n const endY = bottomNodeElement.y;\n const endX = Number(lineNode.getAttribute(\"x2\"));\n const line = createLineElement(lineNode, startX, startY, endX, endY);\n lines.push(line);\n }\n else if (actor.type === \"actor\") {\n const topNodeElement = createActorSymbol(topRootNode, text, {\n id: `${actor.name}-top`,\n });\n nodes.push(topNodeElement);\n const bottomNodeElement = createActorSymbol(bottomRootNode, text, {\n id: `${actor.name}-bottom`,\n });\n nodes.push(bottomNodeElement);\n // Get the line connecting the top and bottom nodes. As per the DOM, the line is rendered as first child of parent element\n const lineNode = topRootNode.previousElementSibling;\n if (lineNode?.tagName !== \"line\") {\n throw \"Line not found\";\n }\n const startX = Number(lineNode.getAttribute(\"x1\"));\n const startY = Number(lineNode.getAttribute(\"y1\"));\n const endX = Number(lineNode.getAttribute(\"x2\"));\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n const bottomEllipseNode = bottomNodeElement.find((node) => node.type === \"ellipse\");\n if (bottomEllipseNode) {\n const endY = bottomEllipseNode.y;\n const line = createLineElement(lineNode, startX, startY, endX, endY);\n lines.push(line);\n }\n }\n });\n return { nodes, lines };\n};\nconst computeArrows = (messages, containerEl) => {\n const arrows = [];\n const arrowNodes = Array.from(containerEl.querySelectorAll('[class*=\"messageLine\"]'));\n const supportedMessageTypes = Object.keys(SEQUENCE_ARROW_TYPES);\n const arrowMessages = messages.filter((message) => supportedMessageTypes.includes(message.type.toString()));\n arrowNodes.forEach((arrowNode, index) => {\n const message = arrowMessages[index];\n const arrow = createArrowElement(arrowNode, message);\n arrows.push(arrow);\n });\n return arrows;\n};\nconst computeNotes = (messages, containerEl) => {\n const noteNodes = Array.from(containerEl.querySelectorAll(\".note\")).map((node) => node.parentElement);\n const noteText = messages.filter((message) => message.type === MESSAGE_TYPE.NOTE);\n const notes = [];\n noteNodes.forEach((node, index) => {\n if (!node) {\n return;\n }\n const rect = node.firstChild;\n const text = noteText[index].message;\n const note = createContainerElement(rect, \"rectangle\", {\n text,\n subtype: \"note\",\n });\n notes.push(note);\n });\n return notes;\n};\nconst parseActivations = (containerEl) => {\n const activationNodes = Array.from(containerEl.querySelectorAll(`[class*=activation]`));\n const activations = [];\n activationNodes.forEach((node) => {\n const rect = createContainerElement(node, \"rectangle\", {\n text: \"\",\n subtype: \"activation\",\n });\n activations.push(rect);\n });\n return activations;\n};\nconst parseLoops = (messages, containerEl) => {\n const lineNodes = Array.from(containerEl.querySelectorAll(\".loopLine\"));\n const lines = [];\n const texts = [];\n const nodes = [];\n lineNodes.forEach((node) => {\n const startX = Number(node.getAttribute(\"x1\"));\n const startY = Number(node.getAttribute(\"y1\"));\n const endX = Number(node.getAttribute(\"x2\"));\n const endY = Number(node.getAttribute(\"y2\"));\n const line = createLineElement(node, startX, startY, endX, endY);\n line.strokeStyle = \"dotted\";\n line.strokeColor = \"#adb5bd\";\n line.strokeWidth = 2;\n lines.push(line);\n });\n const loopTextNodes = Array.from(containerEl.querySelectorAll(\".loopText\"));\n const criticalMessages = messages\n .filter((message) => message.type === MESSAGE_TYPE.CRITICAL_START)\n .map((message) => message.message);\n loopTextNodes.forEach((node) => {\n const text = node.textContent || \"\";\n const textElement = createTextElement(node, text);\n // The text is rendered between [ ] in DOM hence getting the text excluding the [ ]\n const rawText = text.match(/\\[(.*?)\\]/)?.[1] || \"\";\n const isCritical = criticalMessages.includes(rawText);\n // For critical label the coordinates are not accurate in mermaid as there is\n // no padding left hence shifting the text next to critical label by 16px (font size)\n if (isCritical) {\n textElement.x += 16;\n }\n texts.push(textElement);\n });\n const labelBoxes = Array.from(containerEl?.querySelectorAll(\".labelBox\"));\n const labelTextNode = Array.from(containerEl?.querySelectorAll(\".labelText\"));\n labelBoxes.forEach((labelBox, index) => {\n const labelText = labelTextNode[index]?.textContent || \"\";\n const container = createContainerElement(labelBox, \"rectangle\", {\n text: labelText,\n });\n container.strokeColor = \"#adb5bd\";\n container.bgColor = \"#e9ecef\";\n // So width is calculated based on label\n container.width = undefined;\n nodes.push(container);\n });\n return { lines, texts, nodes };\n};\nconst computeHighlights = (containerEl) => {\n const rects = Array.from(containerEl.querySelectorAll(\".rect\"))\n // Only drawing specifically for highlights as the same selector is for grouping as well. For grouping we\n // draw it ourselves\n .filter((node) => node.parentElement?.tagName !== \"g\");\n const nodes = [];\n rects.forEach((rect) => {\n const node = createContainerElement(rect, \"rectangle\", {\n text: \"\",\n subtype: \"highlight\",\n });\n nodes.push(node);\n });\n return nodes;\n};\nconst parseMermaidSequenceDiagram = (diagram, containerEl) => {\n diagram.parse();\n // Get mermaid parsed data from parser shared variable `yy`\n const mermaidParser = diagram.parser.yy;\n const nodes = [];\n const groups = mermaidParser.getBoxes();\n const bgHightlights = computeHighlights(containerEl);\n const actorData = mermaidParser.getActors();\n const { nodes: actors, lines } = parseActor(actorData, containerEl);\n const messages = mermaidParser.getMessages();\n const arrows = computeArrows(messages, containerEl);\n const notes = computeNotes(messages, containerEl);\n const activations = parseActivations(containerEl);\n const loops = parseLoops(messages, containerEl);\n nodes.push(bgHightlights);\n nodes.push(...actors);\n nodes.push(notes);\n nodes.push(activations);\n return { type: \"sequence\", lines, arrows, nodes, loops, groups };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9zZXF1ZW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNEO0FBQ3RCO0FBQ2dCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFEO0FBQ3JEO0FBQ0E7QUFDQSxZQUFZLDZCQUE2QjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsNERBQWlCO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQiw0REFBaUI7QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixNQUFNLDREQUFpQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG9CQUFvQjtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4Q0FBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsU0FBUyxHQUFHLE1BQU07QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2RUFBNkUsYUFBYTtBQUMxRjtBQUNBO0FBQ0EsdURBQXVELGFBQWE7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0Esb0RBQW9ELDhEQUFtQixtQkFBbUIsbURBQW1EO0FBQzdJO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUdBQWlHLE9BQU8sV0FBVywrQkFBK0I7QUFDbEo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVHQUF1RyxPQUFPLFdBQVcsa0NBQWtDO0FBQzNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLFdBQVc7QUFDbEMsYUFBYTtBQUNiO0FBQ0E7QUFDQSx1QkFBdUIsV0FBVztBQUNsQyxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9wYXJzZXIvc2VxdWVuY2UuanM/ZjkwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTVkdfVE9fU0hBUEVfTUFQUEVSIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xuaW1wb3J0IHsgZW50aXR5Q29kZXNUb1RleHQgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcbi8vIEN1cnJlbnRseSBtZXJtYWlkIHN1cHBvcnRlZCB0aGVzZSA2IGFycm93IHR5cGVzLCB0aGUgbmFtZXMgYXJlIHRha2VuIGZyb20gbWVybWFpZFBhcnNlci5MSU5FVFlQRVxuY29uc3QgU0VRVUVOQ0VfQVJST1dfVFlQRVMgPSB7XG4gICAgMDogXCJTT0xJRFwiLFxuICAgIDE6IFwiRE9UVEVEXCIsXG4gICAgMzogXCJTT0xJRF9DUk9TU1wiLFxuICAgIDQ6IFwiRE9UVEVEX0NST1NTXCIsXG4gICAgNTogXCJTT0xJRF9PUEVOXCIsXG4gICAgNjogXCJET1RURURfT1BFTlwiLFxuICAgIDI0OiBcIlNPTElEX1BPSU5UXCIsXG4gICAgMjU6IFwiRE9UVEVEX1BPSU5UXCIsXG59O1xuY29uc3QgTUVTU0FHRV9UWVBFID0ge1xuICAgIFNPTElEOiAwLFxuICAgIERPVFRFRDogMSxcbiAgICBOT1RFOiAyLFxuICAgIFNPTElEX0NST1NTOiAzLFxuICAgIERPVFRFRF9DUk9TUzogNCxcbiAgICBTT0xJRF9PUEVOOiA1LFxuICAgIERPVFRFRF9PUEVOOiA2LFxuICAgIExPT1BfU1RBUlQ6IDEwLFxuICAgIExPT1BfRU5EOiAxMSxcbiAgICBBTFRfU1RBUlQ6IDEyLFxuICAgIEFMVF9FTFNFOiAxMyxcbiAgICBBTFRfRU5EOiAxNCxcbiAgICBPUFRfU1RBUlQ6IDE1LFxuICAgIE9QVF9FTkQ6IDE2LFxuICAgIEFDVElWRV9TVEFSVDogMTcsXG4gICAgQUNUSVZFX0VORDogMTgsXG4gICAgUEFSX1NUQVJUOiAxOSxcbiAgICBQQVJfQU5EOiAyMCxcbiAgICBQQVJfRU5EOiAyMSxcbiAgICBSRUNUX1NUQVJUOiAyMixcbiAgICBSRUNUX0VORDogMjMsXG4gICAgU09MSURfUE9JTlQ6IDI0LFxuICAgIERPVFRFRF9QT0lOVDogMjUsXG4gICAgQVVUT05VTUJFUjogMjYsXG4gICAgQ1JJVElDQUxfU1RBUlQ6IDI3LFxuICAgIENSSVRJQ0FMX09QVElPTjogMjgsXG4gICAgQ1JJVElDQUxfRU5EOiAyOSxcbiAgICBCUkVBS19TVEFSVDogMzAsXG4gICAgQlJFQUtfRU5EOiAzMSxcbiAgICBQQVJfT1ZFUl9TVEFSVDogMzIsXG59O1xuY29uc3QgY3JlYXRlQ29udGFpbmVyRWxlbWVudCA9IChub2RlLCB0eXBlLCBvcHRzID0ge30pID0+IHtcbiAgICBjb25zdCBjb250YWluZXIgPSB7fTtcbiAgICBjb250YWluZXIudHlwZSA9IHR5cGU7XG4gICAgY29uc3QgeyB0ZXh0LCBzdWJ0eXBlLCBpZCwgZ3JvdXBJZCB9ID0gb3B0cztcbiAgICBjb250YWluZXIuaWQgPSBpZDtcbiAgICBpZiAoZ3JvdXBJZCkge1xuICAgICAgICBjb250YWluZXIuZ3JvdXBJZCA9IGdyb3VwSWQ7XG4gICAgfVxuICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIGNvbnRhaW5lci5sYWJlbCA9IHtcbiAgICAgICAgICAgIHRleHQ6IGVudGl0eUNvZGVzVG9UZXh0KHRleHQpLFxuICAgICAgICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBib3VuZGluZ0JveCA9IG5vZGUuZ2V0QkJveCgpO1xuICAgIGNvbnRhaW5lci54ID0gYm91bmRpbmdCb3gueDtcbiAgICBjb250YWluZXIueSA9IGJvdW5kaW5nQm94Lnk7XG4gICAgY29udGFpbmVyLndpZHRoID0gYm91bmRpbmdCb3gud2lkdGg7XG4gICAgY29udGFpbmVyLmhlaWdodCA9IGJvdW5kaW5nQm94LmhlaWdodDtcbiAgICBjb250YWluZXIuc3VidHlwZSA9IHN1YnR5cGU7XG4gICAgc3dpdGNoIChzdWJ0eXBlKSB7XG4gICAgICAgIGNhc2UgXCJoaWdobGlnaHRcIjpcbiAgICAgICAgICAgIGNvbnN0IGJnQ29sb3IgPSBub2RlLmdldEF0dHJpYnV0ZShcImZpbGxcIik7XG4gICAgICAgICAgICBpZiAoYmdDb2xvcikge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lci5iZ0NvbG9yID0gYmdDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwibm90ZVwiOlxuICAgICAgICAgICAgY29udGFpbmVyLnN0cm9rZVN0eWxlID0gXCJkYXNoZWRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gY29udGFpbmVyO1xufTtcbmNvbnN0IGNyZWF0ZVRleHRFbGVtZW50ID0gKHRleHROb2RlLCB0ZXh0LCBvcHRzKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IHt9O1xuICAgIGNvbnN0IHggPSBOdW1iZXIodGV4dE5vZGUuZ2V0QXR0cmlidXRlKFwieFwiKSk7XG4gICAgY29uc3QgeSA9IE51bWJlcih0ZXh0Tm9kZS5nZXRBdHRyaWJ1dGUoXCJ5XCIpKTtcbiAgICBub2RlLnR5cGUgPSBcInRleHRcIjtcbiAgICBub2RlLnRleHQgPSBlbnRpdHlDb2Rlc1RvVGV4dCh0ZXh0KTtcbiAgICBpZiAob3B0cz8uaWQpIHtcbiAgICAgICAgbm9kZS5pZCA9IG9wdHMuaWQ7XG4gICAgfVxuICAgIGlmIChvcHRzPy5ncm91cElkKSB7XG4gICAgICAgIG5vZGUuZ3JvdXBJZCA9IG9wdHMuZ3JvdXBJZDtcbiAgICB9XG4gICAgY29uc3QgYm91bmRpbmdCb3ggPSB0ZXh0Tm9kZS5nZXRCQm94KCk7XG4gICAgbm9kZS53aWR0aCA9IGJvdW5kaW5nQm94LndpZHRoO1xuICAgIG5vZGUuaGVpZ2h0ID0gYm91bmRpbmdCb3guaGVpZ2h0O1xuICAgIG5vZGUueCA9IHggLSBib3VuZGluZ0JveC53aWR0aCAvIDI7XG4gICAgbm9kZS55ID0geTtcbiAgICBjb25zdCBmb250U2l6ZSA9IHBhcnNlSW50KGdldENvbXB1dGVkU3R5bGUodGV4dE5vZGUpLmZvbnRTaXplKTtcbiAgICBub2RlLmZvbnRTaXplID0gZm9udFNpemU7XG4gICAgcmV0dXJuIG5vZGU7XG59O1xuY29uc3QgY3JlYXRlTGluZUVsZW1lbnQgPSAobGluZU5vZGUsIHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBvcHRzKSA9PiB7XG4gICAgY29uc3QgbGluZSA9IHt9O1xuICAgIGxpbmUuc3RhcnRYID0gc3RhcnRYO1xuICAgIGxpbmUuc3RhcnRZID0gc3RhcnRZO1xuICAgIGxpbmUuZW5kWCA9IGVuZFg7XG4gICAgaWYgKG9wdHM/Lmdyb3VwSWQpIHtcbiAgICAgICAgbGluZS5ncm91cElkID0gb3B0cy5ncm91cElkO1xuICAgIH1cbiAgICBpZiAob3B0cz8uaWQpIHtcbiAgICAgICAgbGluZS5pZCA9IG9wdHMuaWQ7XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSBsaW5lcyBkb24ndCBvdmVybGFwIHdpdGggdGhlIG5vZGVzLCBpbiBtZXJtYWlkIGl0IG92ZXJsYXBzIGJ1dCBpc24ndCB2aXNpYmxlIGFzIGl0cyBwdXNoZWQgYmFjayBhbmQgY29udGFpbmVycyBhcmUgbm9uIHRyYW5zcGFyZW50XG4gICAgbGluZS5lbmRZID0gZW5kWTtcbiAgICBsaW5lLnN0cm9rZUNvbG9yID0gbGluZU5vZGUuZ2V0QXR0cmlidXRlKFwic3Ryb2tlXCIpO1xuICAgIGxpbmUuc3Ryb2tlV2lkdGggPSBOdW1iZXIobGluZU5vZGUuZ2V0QXR0cmlidXRlKFwic3Ryb2tlLXdpZHRoXCIpKTtcbiAgICBsaW5lLnR5cGUgPSBcImxpbmVcIjtcbiAgICByZXR1cm4gbGluZTtcbn07XG5jb25zdCBjcmVhdGVBcnJvd0VsZW1lbnQgPSAoYXJyb3dOb2RlLCBtZXNzYWdlKSA9PiB7XG4gICAgY29uc3QgYXJyb3cgPSB7fTtcbiAgICBhcnJvdy5sYWJlbCA9IHsgdGV4dDogZW50aXR5Q29kZXNUb1RleHQobWVzc2FnZS5tZXNzYWdlKSwgZm9udFNpemU6IDE2IH07XG4gICAgY29uc3QgdGFnTmFtZSA9IGFycm93Tm9kZS50YWdOYW1lO1xuICAgIGlmICh0YWdOYW1lID09PSBcImxpbmVcIikge1xuICAgICAgICBhcnJvdy5zdGFydFggPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgYXJyb3cuc3RhcnRZID0gTnVtYmVyKGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSk7XG4gICAgICAgIGFycm93LmVuZFggPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgYXJyb3cuZW5kWSA9IE51bWJlcihhcnJvd05vZGUuZ2V0QXR0cmlidXRlKFwieTJcIikpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0YWdOYW1lID09PSBcInBhdGhcIikge1xuICAgICAgICBjb25zdCBkQXR0ciA9IGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJkXCIpO1xuICAgICAgICBpZiAoIWRBdHRyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhdGggZWxlbWVudCBkb2VzIG5vdCBjb250YWluIGEgXCJkXCIgYXR0cmlidXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gU3BsaXQgdGhlIGQgYXR0cmlidXRlIGJhc2VkIG9uIE0gKE1vdmUgVG8pICBhbmQgQyAoQ3VydmUpIGNvbW1hbmRzXG4gICAgICAgIGNvbnN0IGNvbW1hbmRzID0gZEF0dHIuc3BsaXQoLyg/PVtMQ10pLyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0UG9zaXRpb24gPSBjb21tYW5kc1swXVxuICAgICAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxuICAgICAgICAgICAgLm1hcCgoY29vcmQpID0+IHBhcnNlRmxvYXQoY29vcmQpKTtcbiAgICAgICAgY29uc3QgcG9pbnRzID0gW107XG4gICAgICAgIGNvbW1hbmRzLmZvckVhY2goKGNvbW1hbmQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJQb2ludHMgPSBjb21tYW5kXG4gICAgICAgICAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoXCIgXCIpXG4gICAgICAgICAgICAgICAgLm1hcCgocG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3gsIHldID0gcG9zLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHgpIC0gc3RhcnRQb3NpdGlvblswXSxcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VGbG9hdCh5KSAtIHN0YXJ0UG9zaXRpb25bMV0sXG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcG9pbnRzLnB1c2goLi4uY3VyclBvaW50cyk7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbmRQb3NpdGlvbiA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XG4gICAgICAgIGFycm93LnN0YXJ0WCA9IHN0YXJ0UG9zaXRpb25bMF07XG4gICAgICAgIGFycm93LnN0YXJ0WSA9IHN0YXJ0UG9zaXRpb25bMV07XG4gICAgICAgIGFycm93LmVuZFggPSBlbmRQb3NpdGlvblswXTtcbiAgICAgICAgYXJyb3cuZW5kWSA9IGVuZFBvc2l0aW9uWzFdO1xuICAgICAgICBhcnJvdy5wb2ludHMgPSBwb2ludHM7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICAgIC8vIEluIG1lcm1haWQgdGhlIHRleHQgaXMgcG9zaXRpb25lZCBhYm92ZSBhcnJvdyBidXQgaW4gRXhjYWxpZHJhd1xuICAgICAgICAvLyBpdHMgcG9zdGlvbmVkIG9uIHRoZSBhcnJvdyBoZW5jZSB0aGUgZWxlbWVudHMgYmVsb3cgaXQgbWlnaHQgbG9vayBjbHV0dGVyZWQgc28gc2hpZnRpbmcgdGhlIGFycm93IGJ5IGFuIG9mZnNldCBvZiAxMHB4XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IDEwO1xuICAgICAgICBhcnJvdy5zdGFydFkgPSBhcnJvdy5zdGFydFkgLSBvZmZzZXQ7XG4gICAgICAgIGFycm93LmVuZFkgPSBhcnJvdy5lbmRZIC0gb2Zmc2V0O1xuICAgIH1cbiAgICBjb25zdCBzaG93U2VxdWVuY2VOdW1iZXIgPSAhIWFycm93Tm9kZS5uZXh0RWxlbWVudFNpYmxpbmc/LmNsYXNzTGlzdC5jb250YWlucyhcInNlcXVlbmNlTnVtYmVyXCIpO1xuICAgIGlmIChzaG93U2VxdWVuY2VOdW1iZXIpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGFycm93Tm9kZS5uZXh0RWxlbWVudFNpYmxpbmc/LnRleHRDb250ZW50O1xuICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInNlcXVlbmNlIG51bWJlciBub3QgcHJlc2VudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBoZWlnaHQgPSAzMDtcbiAgICAgICAgY29uc3QgeU9mZnNldCA9IGhlaWdodCAvIDI7XG4gICAgICAgIGNvbnN0IHhPZmZzZXQgPSAxMDtcbiAgICAgICAgY29uc3Qgc2VxdWVuY2VOdW1iZXIgPSB7XG4gICAgICAgICAgICB0eXBlOiBcInJlY3RhbmdsZVwiLFxuICAgICAgICAgICAgeDogYXJyb3cuc3RhcnRYIC0geE9mZnNldCxcbiAgICAgICAgICAgIHk6IGFycm93LnN0YXJ0WSAtIHlPZmZzZXQsXG4gICAgICAgICAgICBsYWJlbDogeyB0ZXh0LCBmb250U2l6ZTogMTQgfSxcbiAgICAgICAgICAgIGJnQ29sb3I6IFwiI2U5ZWNlZlwiLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgc3VidHlwZTogXCJzZXF1ZW5jZVwiLFxuICAgICAgICB9O1xuICAgICAgICBhcnJvdy5zZXF1ZW5jZU51bWJlciA9IHNlcXVlbmNlTnVtYmVyO1xuICAgIH1cbiAgICBhcnJvdy5zdHJva2VDb2xvciA9IGFycm93Tm9kZS5nZXRBdHRyaWJ1dGUoXCJzdHJva2VcIik7XG4gICAgYXJyb3cuc3Ryb2tlV2lkdGggPSBOdW1iZXIoYXJyb3dOb2RlLmdldEF0dHJpYnV0ZShcInN0cm9rZS13aWR0aFwiKSk7XG4gICAgYXJyb3cudHlwZSA9IFwiYXJyb3dcIjtcbiAgICBhcnJvdy5zdHJva2VTdHlsZSA9IFNFUVVFTkNFX0FSUk9XX1RZUEVTW21lc3NhZ2UudHlwZV07XG4gICAgcmV0dXJuIGFycm93O1xufTtcbmNvbnN0IGNyZWF0ZUFjdG9yU3ltYm9sID0gKHJvb3ROb2RlLCB0ZXh0LCBvcHRzKSA9PiB7XG4gICAgaWYgKCFyb290Tm9kZSkge1xuICAgICAgICB0aHJvdyBcInJvb3Qgbm9kZSBub3QgZm91bmRcIjtcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBJZCA9IG5hbm9pZCgpO1xuICAgIGNvbnN0IGNoaWxkcmVuID0gQXJyYXkuZnJvbShyb290Tm9kZS5jaGlsZHJlbik7XG4gICAgY29uc3Qgbm9kZUVsZW1lbnRzID0gW107XG4gICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IGlkID0gYCR7b3B0cz8uaWR9LSR7aW5kZXh9YDtcbiAgICAgICAgbGV0IGVsZTtcbiAgICAgICAgc3dpdGNoIChjaGlsZC50YWdOYW1lKSB7XG4gICAgICAgICAgICBjYXNlIFwibGluZVwiOlxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0WCA9IE51bWJlcihjaGlsZC5nZXRBdHRyaWJ1dGUoXCJ4MVwiKSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRZID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcInkxXCIpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBlbmRZID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcInkyXCIpKTtcbiAgICAgICAgICAgICAgICBlbGUgPSBjcmVhdGVMaW5lRWxlbWVudChjaGlsZCwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIHsgZ3JvdXBJZCwgaWQgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZVRleHRFbGVtZW50KGNoaWxkLCB0ZXh0LCB7IGdyb3VwSWQsIGlkIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNpcmNsZVwiOlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQoY2hpbGQsIFwiZWxsaXBzZVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHRleHQ6IGNoaWxkLnRleHRDb250ZW50IHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJZCxcbiAgICAgICAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQoY2hpbGQsIFNWR19UT19TSEFQRV9NQVBQRVJbY2hpbGQudGFnTmFtZV0sIHsgdGV4dDogY2hpbGQudGV4dENvbnRlbnQgfHwgdW5kZWZpbmVkLCBncm91cElkLCBpZCB9KTtcbiAgICAgICAgfVxuICAgICAgICBub2RlRWxlbWVudHMucHVzaChlbGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub2RlRWxlbWVudHM7XG59O1xuY29uc3QgcGFyc2VBY3RvciA9IChhY3RvcnMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYWN0b3JSb290Tm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYWN0b3JcIikpXG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUudGFnTmFtZSA9PT0gXCJ0ZXh0XCIpXG4gICAgICAgIC5tYXAoKGFjdG9yKSA9PiBhY3Rvci50YWdOYW1lID09PSBcInRleHRcIiAmJiBhY3Rvci5wYXJlbnRFbGVtZW50KTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgY29uc3QgYWN0b3JzTGVuZ3RoID0gT2JqZWN0LmtleXMoYWN0b3JzKS5sZW5ndGg7XG4gICAgT2JqZWN0LnZhbHVlcyhhY3RvcnMpLmZvckVhY2goKGFjdG9yLCBpbmRleCkgPT4ge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgLy8gRm9yIGVhY2ggYWN0b3IgdGhlcmUgYXJlIHR3byBub2RlcyB0b3AgYW5kIGJvdHRvbSB3aGljaCBpcyBjb25uZWN0ZWQgYnkgYSBsaW5lXG4gICAgICAgIGNvbnN0IHRvcFJvb3ROb2RlID0gYWN0b3JSb290Tm9kZXNbaW5kZXhdO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgYm90dG9tUm9vdE5vZGUgPSBhY3RvclJvb3ROb2Rlc1thY3RvcnNMZW5ndGggKyBpbmRleF07XG4gICAgICAgIGlmICghdG9wUm9vdE5vZGUpIHtcbiAgICAgICAgICAgIHRocm93IFwicm9vdCBub3QgZm91bmRcIjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0ZXh0ID0gYWN0b3IuZGVzY3JpcHRpb247XG4gICAgICAgIGlmIChhY3Rvci50eXBlID09PSBcInBhcnRpY2lwYW50XCIpIHtcbiAgICAgICAgICAgIC8vIGNyZWF0aW5nIHRvcCBhY3RvciBub2RlIGVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IHRvcE5vZGVFbGVtZW50ID0gY3JlYXRlQ29udGFpbmVyRWxlbWVudCh0b3BSb290Tm9kZS5maXJzdENoaWxkLCBcInJlY3RhbmdsZVwiLCB7IGlkOiBgJHthY3Rvci5uYW1lfS10b3BgLCB0ZXh0LCBzdWJ0eXBlOiBcImFjdG9yXCIgfSk7XG4gICAgICAgICAgICBpZiAoIXRvcE5vZGVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJUb3AgTm9kZSBlbGVtZW50IG5vdCBmb3VuZCFcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGVzLnB1c2goW3RvcE5vZGVFbGVtZW50XSk7XG4gICAgICAgICAgICAvLyBjcmVhdGluZyBib3R0b20gYWN0b3Igbm9kZSBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBib3R0b21Ob2RlRWxlbWVudCA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQoYm90dG9tUm9vdE5vZGUuZmlyc3RDaGlsZCwgXCJyZWN0YW5nbGVcIiwgeyBpZDogYCR7YWN0b3IubmFtZX0tYm90dG9tYCwgdGV4dCwgc3VidHlwZTogXCJhY3RvclwiIH0pO1xuICAgICAgICAgICAgbm9kZXMucHVzaChbYm90dG9tTm9kZUVsZW1lbnRdKTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgbGluZSBjb25uZWN0aW5nIHRoZSB0b3AgYW5kIGJvdHRvbSBub2Rlcy4gQXMgcGVyIHRoZSBET00sIHRoZSBsaW5lIGlzIHJlbmRlcmVkIGFzIGZpcnN0IGNoaWxkIG9mIHBhcmVudCBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBsaW5lTm9kZSA9IHRvcFJvb3ROb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAobGluZU5vZGU/LnRhZ05hbWUgIT09IFwibGluZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJMaW5lIG5vdCBmb3VuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgIGlmICghdG9wTm9kZUVsZW1lbnQuaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJUb3Agbm9kZSBlbGVtZW50IGhlaWdodCBpcyBudWxsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydFkgPSB0b3BOb2RlRWxlbWVudC55ICsgdG9wTm9kZUVsZW1lbnQuaGVpZ2h0O1xuICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGxpbmVzIGRvbid0IG92ZXJsYXAgd2l0aCB0aGUgbm9kZXMsIGluIG1lcm1haWQgaXQgb3ZlcmxhcHMgYnV0IGlzbid0IHZpc2libGUgYXMgaXRzIHB1c2hlZCBiYWNrIGFuZCBjb250YWluZXJzIGFyZSBub24gdHJhbnNwYXJlbnRcbiAgICAgICAgICAgIGNvbnN0IGVuZFkgPSBib3R0b21Ob2RlRWxlbWVudC55O1xuICAgICAgICAgICAgY29uc3QgZW5kWCA9IE51bWJlcihsaW5lTm9kZS5nZXRBdHRyaWJ1dGUoXCJ4MlwiKSk7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gY3JlYXRlTGluZUVsZW1lbnQobGluZU5vZGUsIHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWN0b3IudHlwZSA9PT0gXCJhY3RvclwiKSB7XG4gICAgICAgICAgICBjb25zdCB0b3BOb2RlRWxlbWVudCA9IGNyZWF0ZUFjdG9yU3ltYm9sKHRvcFJvb3ROb2RlLCB0ZXh0LCB7XG4gICAgICAgICAgICAgICAgaWQ6IGAke2FjdG9yLm5hbWV9LXRvcGAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9wTm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tTm9kZUVsZW1lbnQgPSBjcmVhdGVBY3RvclN5bWJvbChib3R0b21Sb290Tm9kZSwgdGV4dCwge1xuICAgICAgICAgICAgICAgIGlkOiBgJHthY3Rvci5uYW1lfS1ib3R0b21gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKGJvdHRvbU5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgbGluZSBjb25uZWN0aW5nIHRoZSB0b3AgYW5kIGJvdHRvbSBub2Rlcy4gQXMgcGVyIHRoZSBET00sIHRoZSBsaW5lIGlzIHJlbmRlcmVkIGFzIGZpcnN0IGNoaWxkIG9mIHBhcmVudCBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBsaW5lTm9kZSA9IHRvcFJvb3ROb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAobGluZU5vZGU/LnRhZ05hbWUgIT09IFwibGluZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJMaW5lIG5vdCBmb3VuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0WSA9IE51bWJlcihsaW5lTm9kZS5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSk7XG4gICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBsaW5lcyBkb24ndCBvdmVybGFwIHdpdGggdGhlIG5vZGVzLCBpbiBtZXJtYWlkIGl0IG92ZXJsYXBzIGJ1dCBpc24ndCB2aXNpYmxlIGFzIGl0cyBwdXNoZWQgYmFjayBhbmQgY29udGFpbmVycyBhcmUgbm9uIHRyYW5zcGFyZW50XG4gICAgICAgICAgICBjb25zdCBib3R0b21FbGxpcHNlTm9kZSA9IGJvdHRvbU5vZGVFbGVtZW50LmZpbmQoKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJlbGxpcHNlXCIpO1xuICAgICAgICAgICAgaWYgKGJvdHRvbUVsbGlwc2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kWSA9IGJvdHRvbUVsbGlwc2VOb2RlLnk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNyZWF0ZUxpbmVFbGVtZW50KGxpbmVOb2RlLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSk7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7IG5vZGVzLCBsaW5lcyB9O1xufTtcbmNvbnN0IGNvbXB1dGVBcnJvd3MgPSAobWVzc2FnZXMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYXJyb3dzID0gW107XG4gICAgY29uc3QgYXJyb3dOb2RlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWwucXVlcnlTZWxlY3RvckFsbCgnW2NsYXNzKj1cIm1lc3NhZ2VMaW5lXCJdJykpO1xuICAgIGNvbnN0IHN1cHBvcnRlZE1lc3NhZ2VUeXBlcyA9IE9iamVjdC5rZXlzKFNFUVVFTkNFX0FSUk9XX1RZUEVTKTtcbiAgICBjb25zdCBhcnJvd01lc3NhZ2VzID0gbWVzc2FnZXMuZmlsdGVyKChtZXNzYWdlKSA9PiBzdXBwb3J0ZWRNZXNzYWdlVHlwZXMuaW5jbHVkZXMobWVzc2FnZS50eXBlLnRvU3RyaW5nKCkpKTtcbiAgICBhcnJvd05vZGVzLmZvckVhY2goKGFycm93Tm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGFycm93TWVzc2FnZXNbaW5kZXhdO1xuICAgICAgICBjb25zdCBhcnJvdyA9IGNyZWF0ZUFycm93RWxlbWVudChhcnJvd05vZGUsIG1lc3NhZ2UpO1xuICAgICAgICBhcnJvd3MucHVzaChhcnJvdyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFycm93cztcbn07XG5jb25zdCBjb21wdXRlTm90ZXMgPSAobWVzc2FnZXMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3Qgbm90ZU5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLm5vdGVcIikpLm1hcCgobm9kZSkgPT4gbm9kZS5wYXJlbnRFbGVtZW50KTtcbiAgICBjb25zdCBub3RlVGV4dCA9IG1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50eXBlID09PSBNRVNTQUdFX1RZUEUuTk9URSk7XG4gICAgY29uc3Qgbm90ZXMgPSBbXTtcbiAgICBub3RlTm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKCFub2RlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVjdCA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgICAgICAgY29uc3QgdGV4dCA9IG5vdGVUZXh0W2luZGV4XS5tZXNzYWdlO1xuICAgICAgICBjb25zdCBub3RlID0gY3JlYXRlQ29udGFpbmVyRWxlbWVudChyZWN0LCBcInJlY3RhbmdsZVwiLCB7XG4gICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgc3VidHlwZTogXCJub3RlXCIsXG4gICAgICAgIH0pO1xuICAgICAgICBub3Rlcy5wdXNoKG5vdGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub3Rlcztcbn07XG5jb25zdCBwYXJzZUFjdGl2YXRpb25zID0gKGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYWN0aXZhdGlvbk5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKGBbY2xhc3MqPWFjdGl2YXRpb25dYCkpO1xuICAgIGNvbnN0IGFjdGl2YXRpb25zID0gW107XG4gICAgYWN0aXZhdGlvbk5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgcmVjdCA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQobm9kZSwgXCJyZWN0YW5nbGVcIiwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHN1YnR5cGU6IFwiYWN0aXZhdGlvblwiLFxuICAgICAgICB9KTtcbiAgICAgICAgYWN0aXZhdGlvbnMucHVzaChyZWN0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gYWN0aXZhdGlvbnM7XG59O1xuY29uc3QgcGFyc2VMb29wcyA9IChtZXNzYWdlcywgY29udGFpbmVyRWwpID0+IHtcbiAgICBjb25zdCBsaW5lTm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubG9vcExpbmVcIikpO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgY29uc3QgdGV4dHMgPSBbXTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGxpbmVOb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXJ0WCA9IE51bWJlcihub2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgY29uc3Qgc3RhcnRZID0gTnVtYmVyKG5vZGUuZ2V0QXR0cmlidXRlKFwieTFcIikpO1xuICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKG5vZGUuZ2V0QXR0cmlidXRlKFwieDJcIikpO1xuICAgICAgICBjb25zdCBlbmRZID0gTnVtYmVyKG5vZGUuZ2V0QXR0cmlidXRlKFwieTJcIikpO1xuICAgICAgICBjb25zdCBsaW5lID0gY3JlYXRlTGluZUVsZW1lbnQobm9kZSwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFkpO1xuICAgICAgICBsaW5lLnN0cm9rZVN0eWxlID0gXCJkb3R0ZWRcIjtcbiAgICAgICAgbGluZS5zdHJva2VDb2xvciA9IFwiI2FkYjViZFwiO1xuICAgICAgICBsaW5lLnN0cm9rZVdpZHRoID0gMjtcbiAgICAgICAgbGluZXMucHVzaChsaW5lKTtcbiAgICB9KTtcbiAgICBjb25zdCBsb29wVGV4dE5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmxvb3BUZXh0XCIpKTtcbiAgICBjb25zdCBjcml0aWNhbE1lc3NhZ2VzID0gbWVzc2FnZXNcbiAgICAgICAgLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS50eXBlID09PSBNRVNTQUdFX1RZUEUuQ1JJVElDQUxfU1RBUlQpXG4gICAgICAgIC5tYXAoKG1lc3NhZ2UpID0+IG1lc3NhZ2UubWVzc2FnZSk7XG4gICAgbG9vcFRleHROb2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBub2RlLnRleHRDb250ZW50IHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IHRleHRFbGVtZW50ID0gY3JlYXRlVGV4dEVsZW1lbnQobm9kZSwgdGV4dCk7XG4gICAgICAgIC8vIFRoZSB0ZXh0IGlzIHJlbmRlcmVkIGJldHdlZW4gWyBdIGluIERPTSBoZW5jZSBnZXR0aW5nIHRoZSB0ZXh0IGV4Y2x1ZGluZyB0aGUgWyBdXG4gICAgICAgIGNvbnN0IHJhd1RleHQgPSB0ZXh0Lm1hdGNoKC9cXFsoLio/KVxcXS8pPy5bMV0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgaXNDcml0aWNhbCA9IGNyaXRpY2FsTWVzc2FnZXMuaW5jbHVkZXMocmF3VGV4dCk7XG4gICAgICAgIC8vIEZvciBjcml0aWNhbCBsYWJlbCB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBhY2N1cmF0ZSBpbiBtZXJtYWlkIGFzIHRoZXJlIGlzXG4gICAgICAgIC8vIG5vIHBhZGRpbmcgbGVmdCBoZW5jZSBzaGlmdGluZyB0aGUgdGV4dCBuZXh0IHRvIGNyaXRpY2FsIGxhYmVsIGJ5IDE2cHggKGZvbnQgc2l6ZSlcbiAgICAgICAgaWYgKGlzQ3JpdGljYWwpIHtcbiAgICAgICAgICAgIHRleHRFbGVtZW50LnggKz0gMTY7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dHMucHVzaCh0ZXh0RWxlbWVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbGFiZWxCb3hlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWw/LnF1ZXJ5U2VsZWN0b3JBbGwoXCIubGFiZWxCb3hcIikpO1xuICAgIGNvbnN0IGxhYmVsVGV4dE5vZGUgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsPy5xdWVyeVNlbGVjdG9yQWxsKFwiLmxhYmVsVGV4dFwiKSk7XG4gICAgbGFiZWxCb3hlcy5mb3JFYWNoKChsYWJlbEJveCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgbGFiZWxUZXh0ID0gbGFiZWxUZXh0Tm9kZVtpbmRleF0/LnRleHRDb250ZW50IHx8IFwiXCI7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQobGFiZWxCb3gsIFwicmVjdGFuZ2xlXCIsIHtcbiAgICAgICAgICAgIHRleHQ6IGxhYmVsVGV4dCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRhaW5lci5zdHJva2VDb2xvciA9IFwiI2FkYjViZFwiO1xuICAgICAgICBjb250YWluZXIuYmdDb2xvciA9IFwiI2U5ZWNlZlwiO1xuICAgICAgICAvLyBTbyB3aWR0aCBpcyBjYWxjdWxhdGVkIGJhc2VkIG9uIGxhYmVsXG4gICAgICAgIGNvbnRhaW5lci53aWR0aCA9IHVuZGVmaW5lZDtcbiAgICAgICAgbm9kZXMucHVzaChjb250YWluZXIpO1xuICAgIH0pO1xuICAgIHJldHVybiB7IGxpbmVzLCB0ZXh0cywgbm9kZXMgfTtcbn07XG5jb25zdCBjb21wdXRlSGlnaGxpZ2h0cyA9IChjb250YWluZXJFbCkgPT4ge1xuICAgIGNvbnN0IHJlY3RzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLnJlY3RcIikpXG4gICAgICAgIC8vIE9ubHkgZHJhd2luZyBzcGVjaWZpY2FsbHkgZm9yIGhpZ2hsaWdodHMgYXMgdGhlIHNhbWUgc2VsZWN0b3IgaXMgZm9yIGdyb3VwaW5nIGFzIHdlbGwuIEZvciBncm91cGluZyB3ZVxuICAgICAgICAvLyBkcmF3IGl0IG91cnNlbHZlc1xuICAgICAgICAuZmlsdGVyKChub2RlKSA9PiBub2RlLnBhcmVudEVsZW1lbnQ/LnRhZ05hbWUgIT09IFwiZ1wiKTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIHJlY3RzLmZvckVhY2goKHJlY3QpID0+IHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGNyZWF0ZUNvbnRhaW5lckVsZW1lbnQocmVjdCwgXCJyZWN0YW5nbGVcIiwge1xuICAgICAgICAgICAgdGV4dDogXCJcIixcbiAgICAgICAgICAgIHN1YnR5cGU6IFwiaGlnaGxpZ2h0XCIsXG4gICAgICAgIH0pO1xuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub2Rlcztcbn07XG5leHBvcnQgY29uc3QgcGFyc2VNZXJtYWlkU2VxdWVuY2VEaWFncmFtID0gKGRpYWdyYW0sIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgZGlhZ3JhbS5wYXJzZSgpO1xuICAgIC8vIEdldCBtZXJtYWlkIHBhcnNlZCBkYXRhIGZyb20gcGFyc2VyIHNoYXJlZCB2YXJpYWJsZSBgeXlgXG4gICAgY29uc3QgbWVybWFpZFBhcnNlciA9IGRpYWdyYW0ucGFyc2VyLnl5O1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3QgZ3JvdXBzID0gbWVybWFpZFBhcnNlci5nZXRCb3hlcygpO1xuICAgIGNvbnN0IGJnSGlnaHRsaWdodHMgPSBjb21wdXRlSGlnaGxpZ2h0cyhjb250YWluZXJFbCk7XG4gICAgY29uc3QgYWN0b3JEYXRhID0gbWVybWFpZFBhcnNlci5nZXRBY3RvcnMoKTtcbiAgICBjb25zdCB7IG5vZGVzOiBhY3RvcnMsIGxpbmVzIH0gPSBwYXJzZUFjdG9yKGFjdG9yRGF0YSwgY29udGFpbmVyRWwpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gbWVybWFpZFBhcnNlci5nZXRNZXNzYWdlcygpO1xuICAgIGNvbnN0IGFycm93cyA9IGNvbXB1dGVBcnJvd3MobWVzc2FnZXMsIGNvbnRhaW5lckVsKTtcbiAgICBjb25zdCBub3RlcyA9IGNvbXB1dGVOb3RlcyhtZXNzYWdlcywgY29udGFpbmVyRWwpO1xuICAgIGNvbnN0IGFjdGl2YXRpb25zID0gcGFyc2VBY3RpdmF0aW9ucyhjb250YWluZXJFbCk7XG4gICAgY29uc3QgbG9vcHMgPSBwYXJzZUxvb3BzKG1lc3NhZ2VzLCBjb250YWluZXJFbCk7XG4gICAgbm9kZXMucHVzaChiZ0hpZ2h0bGlnaHRzKTtcbiAgICBub2Rlcy5wdXNoKC4uLmFjdG9ycyk7XG4gICAgbm9kZXMucHVzaChub3Rlcyk7XG4gICAgbm9kZXMucHVzaChhY3RpdmF0aW9ucyk7XG4gICAgcmV0dXJuIHsgdHlwZTogXCJzZXF1ZW5jZVwiLCBsaW5lcywgYXJyb3dzLCBub2RlcywgbG9vcHMsIGdyb3VwcyB9O1xufTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js\n");
|
|
433
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"parseMermaidSequenceDiagram\": () => (/* binding */ parseMermaidSequenceDiagram)\n/* harmony export */ });\n/* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/constants.js\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! nanoid */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/node_modules/nanoid/index.browser.js\");\n/* harmony import */ var _elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../elementSkeleton.js */ \"../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/elementSkeleton.js\");\n\n\n\n// Currently mermaid supported these 6 arrow types, the names are taken from mermaidParser.LINETYPE\nconst SEQUENCE_ARROW_TYPES = {\n 0: \"SOLID\",\n 1: \"DOTTED\",\n 3: \"SOLID_CROSS\",\n 4: \"DOTTED_CROSS\",\n 5: \"SOLID_OPEN\",\n 6: \"DOTTED_OPEN\",\n 24: \"SOLID_POINT\",\n 25: \"DOTTED_POINT\",\n};\nconst MESSAGE_TYPE = {\n SOLID: 0,\n DOTTED: 1,\n NOTE: 2,\n SOLID_CROSS: 3,\n DOTTED_CROSS: 4,\n SOLID_OPEN: 5,\n DOTTED_OPEN: 6,\n LOOP_START: 10,\n LOOP_END: 11,\n ALT_START: 12,\n ALT_ELSE: 13,\n ALT_END: 14,\n OPT_START: 15,\n OPT_END: 16,\n ACTIVE_START: 17,\n ACTIVE_END: 18,\n PAR_START: 19,\n PAR_AND: 20,\n PAR_END: 21,\n RECT_START: 22,\n RECT_END: 23,\n SOLID_POINT: 24,\n DOTTED_POINT: 25,\n AUTONUMBER: 26,\n CRITICAL_START: 27,\n CRITICAL_OPTION: 28,\n CRITICAL_END: 29,\n BREAK_START: 30,\n BREAK_END: 31,\n PAR_OVER_START: 32,\n};\nconst getStrokeStyle = (type) => {\n let strokeStyle;\n switch (type) {\n case MESSAGE_TYPE.SOLID:\n case MESSAGE_TYPE.SOLID_CROSS:\n case MESSAGE_TYPE.SOLID_OPEN:\n case MESSAGE_TYPE.SOLID_POINT:\n strokeStyle = \"solid\";\n break;\n case MESSAGE_TYPE.DOTTED:\n case MESSAGE_TYPE.DOTTED_CROSS:\n case MESSAGE_TYPE.DOTTED_OPEN:\n case MESSAGE_TYPE.DOTTED_POINT:\n strokeStyle = \"dotted\";\n break;\n default:\n strokeStyle = \"solid\";\n break;\n }\n return strokeStyle;\n};\nconst attachSequenceNumberToArrow = (node, arrow) => {\n const showSequenceNumber = !!node.nextElementSibling?.classList.contains(\"sequenceNumber\");\n if (showSequenceNumber) {\n const text = node.nextElementSibling?.textContent;\n if (!text) {\n throw new Error(\"sequence number not present\");\n }\n const height = 30;\n const yOffset = height / 2;\n const xOffset = 10;\n const sequenceNumber = {\n type: \"rectangle\",\n x: arrow.startX - xOffset,\n y: arrow.startY - yOffset,\n label: { text, fontSize: 14 },\n bgColor: \"#e9ecef\",\n height,\n subtype: \"sequence\",\n };\n Object.assign(arrow, { sequenceNumber });\n }\n};\nconst createActorSymbol = (rootNode, text, opts) => {\n if (!rootNode) {\n throw \"root node not found\";\n }\n const groupId = (0,nanoid__WEBPACK_IMPORTED_MODULE_2__.nanoid)();\n const children = Array.from(rootNode.children);\n const nodeElements = [];\n children.forEach((child, index) => {\n const id = `${opts?.id}-${index}`;\n let ele;\n switch (child.tagName) {\n case \"line\":\n const startX = Number(child.getAttribute(\"x1\"));\n const startY = Number(child.getAttribute(\"y1\"));\n const endX = Number(child.getAttribute(\"x2\"));\n const endY = Number(child.getAttribute(\"y2\"));\n ele = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createLineSkeleton)(child, startX, startY, endX, endY, { groupId, id });\n break;\n case \"text\":\n ele = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createTextElementFromSVG)(child, text, {\n groupId,\n id,\n });\n break;\n case \"circle\":\n ele = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(child, \"ellipse\", {\n label: child.textContent ? { text: child.textContent } : undefined,\n groupId,\n id,\n });\n default:\n ele = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(child, _constants_js__WEBPACK_IMPORTED_MODULE_0__.SVG_TO_SHAPE_MAPPER[child.tagName], {\n label: child.textContent ? { text: child.textContent } : undefined,\n groupId,\n id,\n });\n }\n nodeElements.push(ele);\n });\n return nodeElements;\n};\nconst parseActor = (actors, containerEl) => {\n const actorRootNodes = Array.from(containerEl.querySelectorAll(\".actor\"))\n .filter((node) => node.tagName === \"text\")\n .map((actor) => actor.parentElement);\n const nodes = [];\n const lines = [];\n const actorsLength = Object.keys(actors).length;\n Object.values(actors).forEach((actor, index) => {\n // For each actor there are two nodes top and bottom which is connected by a line\n const topRootNode = actorRootNodes[index];\n const bottomRootNode = actorRootNodes[actorsLength + index];\n if (!topRootNode || !bottomRootNode) {\n throw \"root not found\";\n }\n const text = actor.description;\n if (actor.type === \"participant\") {\n // creating top actor node element\n const topNodeElement = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(topRootNode.firstChild, \"rectangle\", { id: `${actor.name}-top`, label: { text }, subtype: \"actor\" });\n if (!topNodeElement) {\n throw \"Top Node element not found!\";\n }\n nodes.push([topNodeElement]);\n // creating bottom actor node element\n const bottomNodeElement = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(bottomRootNode.firstChild, \"rectangle\", { id: `${actor.name}-bottom`, label: { text }, subtype: \"actor\" });\n nodes.push([bottomNodeElement]);\n // Get the line connecting the top and bottom nodes. As per the DOM, the line is rendered as first child of parent element\n const lineNode = topRootNode.previousElementSibling;\n if (lineNode?.tagName !== \"line\") {\n throw \"Line not found\";\n }\n const startX = Number(lineNode.getAttribute(\"x1\"));\n if (!topNodeElement.height) {\n throw \"Top node element height is null\";\n }\n const startY = topNodeElement.y + topNodeElement.height;\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n const endY = bottomNodeElement.y;\n const endX = Number(lineNode.getAttribute(\"x2\"));\n const line = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createLineSkeleton)(lineNode, startX, startY, endX, endY);\n lines.push(line);\n }\n else if (actor.type === \"actor\") {\n const topNodeElement = createActorSymbol(topRootNode, text, {\n id: `${actor.name}-top`,\n });\n nodes.push(topNodeElement);\n const bottomNodeElement = createActorSymbol(bottomRootNode, text, {\n id: `${actor.name}-bottom`,\n });\n nodes.push(bottomNodeElement);\n // Get the line connecting the top and bottom nodes. As per the DOM, the line is rendered as first child of parent element\n const lineNode = topRootNode.previousElementSibling;\n if (lineNode?.tagName !== \"line\") {\n throw \"Line not found\";\n }\n const startX = Number(lineNode.getAttribute(\"x1\"));\n const startY = Number(lineNode.getAttribute(\"y1\"));\n const endX = Number(lineNode.getAttribute(\"x2\"));\n // Make sure lines don't overlap with the nodes, in mermaid it overlaps but isn't visible as its pushed back and containers are non transparent\n const bottomEllipseNode = bottomNodeElement.find((node) => node.type === \"ellipse\");\n if (bottomEllipseNode) {\n const endY = bottomEllipseNode.y;\n const line = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createLineSkeleton)(lineNode, startX, startY, endX, endY);\n lines.push(line);\n }\n }\n });\n return { nodes, lines };\n};\nconst computeArrows = (messages, containerEl) => {\n const arrows = [];\n const arrowNodes = Array.from(containerEl.querySelectorAll('[class*=\"messageLine\"]'));\n const supportedMessageTypes = Object.keys(SEQUENCE_ARROW_TYPES);\n const arrowMessages = messages.filter((message) => supportedMessageTypes.includes(message.type.toString()));\n arrowNodes.forEach((arrowNode, index) => {\n const message = arrowMessages[index];\n const messageType = SEQUENCE_ARROW_TYPES[message.type];\n const arrow = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createArrowSkeletonFromSVG)(arrowNode, {\n label: message?.message,\n strokeStyle: getStrokeStyle(message.type),\n endArrowhead: messageType === \"SOLID_OPEN\" || messageType === \"DOTTED_OPEN\"\n ? null\n : \"arrow\",\n });\n attachSequenceNumberToArrow(arrowNode, arrow);\n arrows.push(arrow);\n });\n return arrows;\n};\nconst computeNotes = (messages, containerEl) => {\n const noteNodes = Array.from(containerEl.querySelectorAll(\".note\")).map((node) => node.parentElement);\n const noteText = messages.filter((message) => message.type === MESSAGE_TYPE.NOTE);\n const notes = [];\n noteNodes.forEach((node, index) => {\n if (!node) {\n return;\n }\n const rect = node.firstChild;\n const text = noteText[index].message;\n const note = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(rect, \"rectangle\", {\n label: { text },\n subtype: \"note\",\n });\n notes.push(note);\n });\n return notes;\n};\nconst parseActivations = (containerEl) => {\n const activationNodes = Array.from(containerEl.querySelectorAll(`[class*=activation]`));\n const activations = [];\n activationNodes.forEach((node) => {\n const rect = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(node, \"rectangle\", {\n label: { text: \"\" },\n subtype: \"activation\",\n });\n activations.push(rect);\n });\n return activations;\n};\nconst parseLoops = (messages, containerEl) => {\n const lineNodes = Array.from(containerEl.querySelectorAll(\".loopLine\"));\n const lines = [];\n const texts = [];\n const nodes = [];\n lineNodes.forEach((node) => {\n const startX = Number(node.getAttribute(\"x1\"));\n const startY = Number(node.getAttribute(\"y1\"));\n const endX = Number(node.getAttribute(\"x2\"));\n const endY = Number(node.getAttribute(\"y2\"));\n const line = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createLineSkeleton)(node, startX, startY, endX, endY);\n line.strokeStyle = \"dotted\";\n line.strokeColor = \"#adb5bd\";\n line.strokeWidth = 2;\n lines.push(line);\n });\n const loopTextNodes = Array.from(containerEl.querySelectorAll(\".loopText\"));\n const criticalMessages = messages\n .filter((message) => message.type === MESSAGE_TYPE.CRITICAL_START)\n .map((message) => message.message);\n loopTextNodes.forEach((node) => {\n const text = node.textContent || \"\";\n const textElement = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createTextElementFromSVG)(node, text);\n // The text is rendered between [ ] in DOM hence getting the text excluding the [ ]\n const rawText = text.match(/\\[(.*?)\\]/)?.[1] || \"\";\n const isCritical = criticalMessages.includes(rawText);\n // For critical label the coordinates are not accurate in mermaid as there is\n // no padding left hence shifting the text next to critical label by 16px (font size)\n if (isCritical) {\n textElement.x += 16;\n }\n texts.push(textElement);\n });\n const labelBoxes = Array.from(containerEl?.querySelectorAll(\".labelBox\"));\n const labelTextNode = Array.from(containerEl?.querySelectorAll(\".labelText\"));\n labelBoxes.forEach((labelBox, index) => {\n const text = labelTextNode[index]?.textContent || \"\";\n const container = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(labelBox, \"rectangle\", {\n label: { text },\n });\n container.strokeColor = \"#adb5bd\";\n container.bgColor = \"#e9ecef\";\n // So width is calculated based on label\n container.width = undefined;\n nodes.push(container);\n });\n return { lines, texts, nodes };\n};\nconst computeHighlights = (containerEl) => {\n const rects = Array.from(containerEl.querySelectorAll(\".rect\"))\n // Only drawing specifically for highlights as the same selector is for grouping as well. For grouping we\n // draw it ourselves\n .filter((node) => node.parentElement?.tagName !== \"g\");\n const nodes = [];\n rects.forEach((rect) => {\n const node = (0,_elementSkeleton_js__WEBPACK_IMPORTED_MODULE_1__.createContainerSkeleton)(rect, \"rectangle\", {\n label: { text: \"\" },\n subtype: \"highlight\",\n });\n nodes.push(node);\n });\n return nodes;\n};\nconst parseMermaidSequenceDiagram = (diagram, containerEl) => {\n diagram.parse();\n // Get mermaid parsed data from parser shared variable `yy`\n const mermaidParser = diagram.parser.yy;\n const nodes = [];\n const groups = mermaidParser.getBoxes();\n const bgHightlights = computeHighlights(containerEl);\n const actorData = mermaidParser.getActors();\n const { nodes: actors, lines } = parseActor(actorData, containerEl);\n const messages = mermaidParser.getMessages();\n const arrows = computeArrows(messages, containerEl);\n const notes = computeNotes(messages, containerEl);\n const activations = parseActivations(containerEl);\n const loops = parseLoops(messages, containerEl);\n nodes.push(bgHightlights);\n nodes.push(...actors);\n nodes.push(notes);\n nodes.push(activations);\n return { type: \"sequence\", lines, arrows, nodes, loops, groups };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3BhcnNlci9zZXF1ZW5jZS5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQXNEO0FBQ3RCO0FBQzJHO0FBQzNJO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixvQkFBb0I7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsZ0JBQWdCO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQiw4Q0FBTTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsU0FBUyxHQUFHLE1BQU07QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsdUVBQWtCLHNDQUFzQyxhQUFhO0FBQzNGO0FBQ0E7QUFDQSxzQkFBc0IsNkVBQXdCO0FBQzlDO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLHNCQUFzQiw0RUFBdUI7QUFDN0MsaURBQWlELDBCQUEwQjtBQUMzRTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0Esc0JBQXNCLDRFQUF1QixRQUFRLDhEQUFtQjtBQUN4RSxpREFBaUQsMEJBQTBCO0FBQzNFO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyw0RUFBdUIsd0NBQXdDLE9BQU8sV0FBVyxnQkFBZ0IsTUFBTSxvQkFBb0I7QUFDOUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNDQUFzQyw0RUFBdUIsMkNBQTJDLE9BQU8sV0FBVyxtQkFBbUIsTUFBTSxvQkFBb0I7QUFDdks7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5Qix1RUFBa0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsV0FBVztBQUNsQyxhQUFhO0FBQ2I7QUFDQTtBQUNBLHVCQUF1QixXQUFXO0FBQ2xDLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1RUFBa0I7QUFDL0M7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsK0VBQTBCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNEVBQXVCO0FBQzVDLHFCQUFxQixNQUFNO0FBQzNCO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw0RUFBdUI7QUFDNUMscUJBQXFCLFVBQVU7QUFDL0I7QUFDQSxTQUFTO0FBQ1Q7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLHVFQUFrQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsNkVBQXdCO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiw0RUFBdUI7QUFDakQscUJBQXFCLE1BQU07QUFDM0IsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNEVBQXVCO0FBQzVDLHFCQUFxQixVQUFVO0FBQy9CO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9AZXhjYWxpZHJhdy9tZXJtYWlkLXRvLWV4Y2FsaWRyYXcvZGlzdC9wYXJzZXIvc2VxdWVuY2UuanM/ZjkwYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTVkdfVE9fU0hBUEVfTUFQUEVSIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xuaW1wb3J0IHsgY3JlYXRlQXJyb3dTa2VsZXRvbkZyb21TVkcsIGNyZWF0ZUNvbnRhaW5lclNrZWxldG9uLCBjcmVhdGVMaW5lU2tlbGV0b24sIGNyZWF0ZVRleHRFbGVtZW50RnJvbVNWRywgfSBmcm9tIFwiLi4vZWxlbWVudFNrZWxldG9uLmpzXCI7XG4vLyBDdXJyZW50bHkgbWVybWFpZCBzdXBwb3J0ZWQgdGhlc2UgNiBhcnJvdyB0eXBlcywgdGhlIG5hbWVzIGFyZSB0YWtlbiBmcm9tIG1lcm1haWRQYXJzZXIuTElORVRZUEVcbmNvbnN0IFNFUVVFTkNFX0FSUk9XX1RZUEVTID0ge1xuICAgIDA6IFwiU09MSURcIixcbiAgICAxOiBcIkRPVFRFRFwiLFxuICAgIDM6IFwiU09MSURfQ1JPU1NcIixcbiAgICA0OiBcIkRPVFRFRF9DUk9TU1wiLFxuICAgIDU6IFwiU09MSURfT1BFTlwiLFxuICAgIDY6IFwiRE9UVEVEX09QRU5cIixcbiAgICAyNDogXCJTT0xJRF9QT0lOVFwiLFxuICAgIDI1OiBcIkRPVFRFRF9QT0lOVFwiLFxufTtcbmNvbnN0IE1FU1NBR0VfVFlQRSA9IHtcbiAgICBTT0xJRDogMCxcbiAgICBET1RURUQ6IDEsXG4gICAgTk9URTogMixcbiAgICBTT0xJRF9DUk9TUzogMyxcbiAgICBET1RURURfQ1JPU1M6IDQsXG4gICAgU09MSURfT1BFTjogNSxcbiAgICBET1RURURfT1BFTjogNixcbiAgICBMT09QX1NUQVJUOiAxMCxcbiAgICBMT09QX0VORDogMTEsXG4gICAgQUxUX1NUQVJUOiAxMixcbiAgICBBTFRfRUxTRTogMTMsXG4gICAgQUxUX0VORDogMTQsXG4gICAgT1BUX1NUQVJUOiAxNSxcbiAgICBPUFRfRU5EOiAxNixcbiAgICBBQ1RJVkVfU1RBUlQ6IDE3LFxuICAgIEFDVElWRV9FTkQ6IDE4LFxuICAgIFBBUl9TVEFSVDogMTksXG4gICAgUEFSX0FORDogMjAsXG4gICAgUEFSX0VORDogMjEsXG4gICAgUkVDVF9TVEFSVDogMjIsXG4gICAgUkVDVF9FTkQ6IDIzLFxuICAgIFNPTElEX1BPSU5UOiAyNCxcbiAgICBET1RURURfUE9JTlQ6IDI1LFxuICAgIEFVVE9OVU1CRVI6IDI2LFxuICAgIENSSVRJQ0FMX1NUQVJUOiAyNyxcbiAgICBDUklUSUNBTF9PUFRJT046IDI4LFxuICAgIENSSVRJQ0FMX0VORDogMjksXG4gICAgQlJFQUtfU1RBUlQ6IDMwLFxuICAgIEJSRUFLX0VORDogMzEsXG4gICAgUEFSX09WRVJfU1RBUlQ6IDMyLFxufTtcbmNvbnN0IGdldFN0cm9rZVN0eWxlID0gKHR5cGUpID0+IHtcbiAgICBsZXQgc3Ryb2tlU3R5bGU7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgTUVTU0FHRV9UWVBFLlNPTElEOlxuICAgICAgICBjYXNlIE1FU1NBR0VfVFlQRS5TT0xJRF9DUk9TUzpcbiAgICAgICAgY2FzZSBNRVNTQUdFX1RZUEUuU09MSURfT1BFTjpcbiAgICAgICAgY2FzZSBNRVNTQUdFX1RZUEUuU09MSURfUE9JTlQ6XG4gICAgICAgICAgICBzdHJva2VTdHlsZSA9IFwic29saWRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE1FU1NBR0VfVFlQRS5ET1RURUQ6XG4gICAgICAgIGNhc2UgTUVTU0FHRV9UWVBFLkRPVFRFRF9DUk9TUzpcbiAgICAgICAgY2FzZSBNRVNTQUdFX1RZUEUuRE9UVEVEX09QRU46XG4gICAgICAgIGNhc2UgTUVTU0FHRV9UWVBFLkRPVFRFRF9QT0lOVDpcbiAgICAgICAgICAgIHN0cm9rZVN0eWxlID0gXCJkb3R0ZWRcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgc3Ryb2tlU3R5bGUgPSBcInNvbGlkXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHN0cm9rZVN0eWxlO1xufTtcbmNvbnN0IGF0dGFjaFNlcXVlbmNlTnVtYmVyVG9BcnJvdyA9IChub2RlLCBhcnJvdykgPT4ge1xuICAgIGNvbnN0IHNob3dTZXF1ZW5jZU51bWJlciA9ICEhbm9kZS5uZXh0RWxlbWVudFNpYmxpbmc/LmNsYXNzTGlzdC5jb250YWlucyhcInNlcXVlbmNlTnVtYmVyXCIpO1xuICAgIGlmIChzaG93U2VxdWVuY2VOdW1iZXIpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IG5vZGUubmV4dEVsZW1lbnRTaWJsaW5nPy50ZXh0Q29udGVudDtcbiAgICAgICAgaWYgKCF0ZXh0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzZXF1ZW5jZSBudW1iZXIgbm90IHByZXNlbnRcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gMzA7XG4gICAgICAgIGNvbnN0IHlPZmZzZXQgPSBoZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCB4T2Zmc2V0ID0gMTA7XG4gICAgICAgIGNvbnN0IHNlcXVlbmNlTnVtYmVyID0ge1xuICAgICAgICAgICAgdHlwZTogXCJyZWN0YW5nbGVcIixcbiAgICAgICAgICAgIHg6IGFycm93LnN0YXJ0WCAtIHhPZmZzZXQsXG4gICAgICAgICAgICB5OiBhcnJvdy5zdGFydFkgLSB5T2Zmc2V0LFxuICAgICAgICAgICAgbGFiZWw6IHsgdGV4dCwgZm9udFNpemU6IDE0IH0sXG4gICAgICAgICAgICBiZ0NvbG9yOiBcIiNlOWVjZWZcIixcbiAgICAgICAgICAgIGhlaWdodCxcbiAgICAgICAgICAgIHN1YnR5cGU6IFwic2VxdWVuY2VcIixcbiAgICAgICAgfTtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihhcnJvdywgeyBzZXF1ZW5jZU51bWJlciB9KTtcbiAgICB9XG59O1xuY29uc3QgY3JlYXRlQWN0b3JTeW1ib2wgPSAocm9vdE5vZGUsIHRleHQsIG9wdHMpID0+IHtcbiAgICBpZiAoIXJvb3ROb2RlKSB7XG4gICAgICAgIHRocm93IFwicm9vdCBub2RlIG5vdCBmb3VuZFwiO1xuICAgIH1cbiAgICBjb25zdCBncm91cElkID0gbmFub2lkKCk7XG4gICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5mcm9tKHJvb3ROb2RlLmNoaWxkcmVuKTtcbiAgICBjb25zdCBub2RlRWxlbWVudHMgPSBbXTtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKChjaGlsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBgJHtvcHRzPy5pZH0tJHtpbmRleH1gO1xuICAgICAgICBsZXQgZWxlO1xuICAgICAgICBzd2l0Y2ggKGNoaWxkLnRhZ05hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJsaW5lXCI6XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGNoaWxkLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydFkgPSBOdW1iZXIoY2hpbGQuZ2V0QXR0cmlidXRlKFwieTFcIikpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFggPSBOdW1iZXIoY2hpbGQuZ2V0QXR0cmlidXRlKFwieDJcIikpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZFkgPSBOdW1iZXIoY2hpbGQuZ2V0QXR0cmlidXRlKFwieTJcIikpO1xuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZUxpbmVTa2VsZXRvbihjaGlsZCwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIHsgZ3JvdXBJZCwgaWQgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwidGV4dFwiOlxuICAgICAgICAgICAgICAgIGVsZSA9IGNyZWF0ZVRleHRFbGVtZW50RnJvbVNWRyhjaGlsZCwgdGV4dCwge1xuICAgICAgICAgICAgICAgICAgICBncm91cElkLFxuICAgICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJjaXJjbGVcIjpcbiAgICAgICAgICAgICAgICBlbGUgPSBjcmVhdGVDb250YWluZXJTa2VsZXRvbihjaGlsZCwgXCJlbGxpcHNlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNoaWxkLnRleHRDb250ZW50ID8geyB0ZXh0OiBjaGlsZC50ZXh0Q29udGVudCB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBncm91cElkLFxuICAgICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZWxlID0gY3JlYXRlQ29udGFpbmVyU2tlbGV0b24oY2hpbGQsIFNWR19UT19TSEFQRV9NQVBQRVJbY2hpbGQudGFnTmFtZV0sIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGNoaWxkLnRleHRDb250ZW50ID8geyB0ZXh0OiBjaGlsZC50ZXh0Q29udGVudCB9IDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBncm91cElkLFxuICAgICAgICAgICAgICAgICAgICBpZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBub2RlRWxlbWVudHMucHVzaChlbGUpO1xuICAgIH0pO1xuICAgIHJldHVybiBub2RlRWxlbWVudHM7XG59O1xuY29uc3QgcGFyc2VBY3RvciA9IChhY3RvcnMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgYWN0b3JSb290Tm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYWN0b3JcIikpXG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUudGFnTmFtZSA9PT0gXCJ0ZXh0XCIpXG4gICAgICAgIC5tYXAoKGFjdG9yKSA9PiBhY3Rvci5wYXJlbnRFbGVtZW50KTtcbiAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgIGNvbnN0IGxpbmVzID0gW107XG4gICAgY29uc3QgYWN0b3JzTGVuZ3RoID0gT2JqZWN0LmtleXMoYWN0b3JzKS5sZW5ndGg7XG4gICAgT2JqZWN0LnZhbHVlcyhhY3RvcnMpLmZvckVhY2goKGFjdG9yLCBpbmRleCkgPT4ge1xuICAgICAgICAvLyBGb3IgZWFjaCBhY3RvciB0aGVyZSBhcmUgdHdvIG5vZGVzIHRvcCBhbmQgYm90dG9tIHdoaWNoIGlzIGNvbm5lY3RlZCBieSBhIGxpbmVcbiAgICAgICAgY29uc3QgdG9wUm9vdE5vZGUgPSBhY3RvclJvb3ROb2Rlc1tpbmRleF07XG4gICAgICAgIGNvbnN0IGJvdHRvbVJvb3ROb2RlID0gYWN0b3JSb290Tm9kZXNbYWN0b3JzTGVuZ3RoICsgaW5kZXhdO1xuICAgICAgICBpZiAoIXRvcFJvb3ROb2RlIHx8ICFib3R0b21Sb290Tm9kZSkge1xuICAgICAgICAgICAgdGhyb3cgXCJyb290IG5vdCBmb3VuZFwiO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRleHQgPSBhY3Rvci5kZXNjcmlwdGlvbjtcbiAgICAgICAgaWYgKGFjdG9yLnR5cGUgPT09IFwicGFydGljaXBhbnRcIikge1xuICAgICAgICAgICAgLy8gY3JlYXRpbmcgdG9wIGFjdG9yIG5vZGUgZWxlbWVudFxuICAgICAgICAgICAgY29uc3QgdG9wTm9kZUVsZW1lbnQgPSBjcmVhdGVDb250YWluZXJTa2VsZXRvbih0b3BSb290Tm9kZS5maXJzdENoaWxkLCBcInJlY3RhbmdsZVwiLCB7IGlkOiBgJHthY3Rvci5uYW1lfS10b3BgLCBsYWJlbDogeyB0ZXh0IH0sIHN1YnR5cGU6IFwiYWN0b3JcIiB9KTtcbiAgICAgICAgICAgIGlmICghdG9wTm9kZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIlRvcCBOb2RlIGVsZW1lbnQgbm90IGZvdW5kIVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9kZXMucHVzaChbdG9wTm9kZUVsZW1lbnRdKTtcbiAgICAgICAgICAgIC8vIGNyZWF0aW5nIGJvdHRvbSBhY3RvciBub2RlIGVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGJvdHRvbU5vZGVFbGVtZW50ID0gY3JlYXRlQ29udGFpbmVyU2tlbGV0b24oYm90dG9tUm9vdE5vZGUuZmlyc3RDaGlsZCwgXCJyZWN0YW5nbGVcIiwgeyBpZDogYCR7YWN0b3IubmFtZX0tYm90dG9tYCwgbGFiZWw6IHsgdGV4dCB9LCBzdWJ0eXBlOiBcImFjdG9yXCIgfSk7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKFtib3R0b21Ob2RlRWxlbWVudF0pO1xuICAgICAgICAgICAgLy8gR2V0IHRoZSBsaW5lIGNvbm5lY3RpbmcgdGhlIHRvcCBhbmQgYm90dG9tIG5vZGVzLiBBcyBwZXIgdGhlIERPTSwgdGhlIGxpbmUgaXMgcmVuZGVyZWQgYXMgZmlyc3QgY2hpbGQgb2YgcGFyZW50IGVsZW1lbnRcbiAgICAgICAgICAgIGNvbnN0IGxpbmVOb2RlID0gdG9wUm9vdE5vZGUucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgICAgICAgICAgIGlmIChsaW5lTm9kZT8udGFnTmFtZSAhPT0gXCJsaW5lXCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIkxpbmUgbm90IGZvdW5kXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBzdGFydFggPSBOdW1iZXIobGluZU5vZGUuZ2V0QXR0cmlidXRlKFwieDFcIikpO1xuICAgICAgICAgICAgaWYgKCF0b3BOb2RlRWxlbWVudC5oZWlnaHQpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBcIlRvcCBub2RlIGVsZW1lbnQgaGVpZ2h0IGlzIG51bGxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0WSA9IHRvcE5vZGVFbGVtZW50LnkgKyB0b3BOb2RlRWxlbWVudC5oZWlnaHQ7XG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgbGluZXMgZG9uJ3Qgb3ZlcmxhcCB3aXRoIHRoZSBub2RlcywgaW4gbWVybWFpZCBpdCBvdmVybGFwcyBidXQgaXNuJ3QgdmlzaWJsZSBhcyBpdHMgcHVzaGVkIGJhY2sgYW5kIGNvbnRhaW5lcnMgYXJlIG5vbiB0cmFuc3BhcmVudFxuICAgICAgICAgICAgY29uc3QgZW5kWSA9IGJvdHRvbU5vZGVFbGVtZW50Lnk7XG4gICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IGxpbmUgPSBjcmVhdGVMaW5lU2tlbGV0b24obGluZU5vZGUsIHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZKTtcbiAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYWN0b3IudHlwZSA9PT0gXCJhY3RvclwiKSB7XG4gICAgICAgICAgICBjb25zdCB0b3BOb2RlRWxlbWVudCA9IGNyZWF0ZUFjdG9yU3ltYm9sKHRvcFJvb3ROb2RlLCB0ZXh0LCB7XG4gICAgICAgICAgICAgICAgaWQ6IGAke2FjdG9yLm5hbWV9LXRvcGAsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5vZGVzLnB1c2godG9wTm9kZUVsZW1lbnQpO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tTm9kZUVsZW1lbnQgPSBjcmVhdGVBY3RvclN5bWJvbChib3R0b21Sb290Tm9kZSwgdGV4dCwge1xuICAgICAgICAgICAgICAgIGlkOiBgJHthY3Rvci5uYW1lfS1ib3R0b21gLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub2Rlcy5wdXNoKGJvdHRvbU5vZGVFbGVtZW50KTtcbiAgICAgICAgICAgIC8vIEdldCB0aGUgbGluZSBjb25uZWN0aW5nIHRoZSB0b3AgYW5kIGJvdHRvbSBub2Rlcy4gQXMgcGVyIHRoZSBET00sIHRoZSBsaW5lIGlzIHJlbmRlcmVkIGFzIGZpcnN0IGNoaWxkIG9mIHBhcmVudCBlbGVtZW50XG4gICAgICAgICAgICBjb25zdCBsaW5lTm9kZSA9IHRvcFJvb3ROb2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAobGluZU5vZGU/LnRhZ05hbWUgIT09IFwibGluZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgXCJMaW5lIG5vdCBmb3VuZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc3RhcnRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngxXCIpKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0WSA9IE51bWJlcihsaW5lTm9kZS5nZXRBdHRyaWJ1dGUoXCJ5MVwiKSk7XG4gICAgICAgICAgICBjb25zdCBlbmRYID0gTnVtYmVyKGxpbmVOb2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBsaW5lcyBkb24ndCBvdmVybGFwIHdpdGggdGhlIG5vZGVzLCBpbiBtZXJtYWlkIGl0IG92ZXJsYXBzIGJ1dCBpc24ndCB2aXNpYmxlIGFzIGl0cyBwdXNoZWQgYmFjayBhbmQgY29udGFpbmVycyBhcmUgbm9uIHRyYW5zcGFyZW50XG4gICAgICAgICAgICBjb25zdCBib3R0b21FbGxpcHNlTm9kZSA9IGJvdHRvbU5vZGVFbGVtZW50LmZpbmQoKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gXCJlbGxpcHNlXCIpO1xuICAgICAgICAgICAgaWYgKGJvdHRvbUVsbGlwc2VOb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZW5kWSA9IGJvdHRvbUVsbGlwc2VOb2RlLnk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGNyZWF0ZUxpbmVTa2VsZXRvbihsaW5lTm9kZSwgc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFkpO1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4geyBub2RlcywgbGluZXMgfTtcbn07XG5jb25zdCBjb21wdXRlQXJyb3dzID0gKG1lc3NhZ2VzLCBjb250YWluZXJFbCkgPT4ge1xuICAgIGNvbnN0IGFycm93cyA9IFtdO1xuICAgIGNvbnN0IGFycm93Tm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tjbGFzcyo9XCJtZXNzYWdlTGluZVwiXScpKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRNZXNzYWdlVHlwZXMgPSBPYmplY3Qua2V5cyhTRVFVRU5DRV9BUlJPV19UWVBFUyk7XG4gICAgY29uc3QgYXJyb3dNZXNzYWdlcyA9IG1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gc3VwcG9ydGVkTWVzc2FnZVR5cGVzLmluY2x1ZGVzKG1lc3NhZ2UudHlwZS50b1N0cmluZygpKSk7XG4gICAgYXJyb3dOb2Rlcy5mb3JFYWNoKChhcnJvd05vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBhcnJvd01lc3NhZ2VzW2luZGV4XTtcbiAgICAgICAgY29uc3QgbWVzc2FnZVR5cGUgPSBTRVFVRU5DRV9BUlJPV19UWVBFU1ttZXNzYWdlLnR5cGVdO1xuICAgICAgICBjb25zdCBhcnJvdyA9IGNyZWF0ZUFycm93U2tlbGV0b25Gcm9tU1ZHKGFycm93Tm9kZSwge1xuICAgICAgICAgICAgbGFiZWw6IG1lc3NhZ2U/Lm1lc3NhZ2UsXG4gICAgICAgICAgICBzdHJva2VTdHlsZTogZ2V0U3Ryb2tlU3R5bGUobWVzc2FnZS50eXBlKSxcbiAgICAgICAgICAgIGVuZEFycm93aGVhZDogbWVzc2FnZVR5cGUgPT09IFwiU09MSURfT1BFTlwiIHx8IG1lc3NhZ2VUeXBlID09PSBcIkRPVFRFRF9PUEVOXCJcbiAgICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgICA6IFwiYXJyb3dcIixcbiAgICAgICAgfSk7XG4gICAgICAgIGF0dGFjaFNlcXVlbmNlTnVtYmVyVG9BcnJvdyhhcnJvd05vZGUsIGFycm93KTtcbiAgICAgICAgYXJyb3dzLnB1c2goYXJyb3cpO1xuICAgIH0pO1xuICAgIHJldHVybiBhcnJvd3M7XG59O1xuY29uc3QgY29tcHV0ZU5vdGVzID0gKG1lc3NhZ2VzLCBjb250YWluZXJFbCkgPT4ge1xuICAgIGNvbnN0IG5vdGVOb2RlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWwucXVlcnlTZWxlY3RvckFsbChcIi5ub3RlXCIpKS5tYXAoKG5vZGUpID0+IG5vZGUucGFyZW50RWxlbWVudCk7XG4gICAgY29uc3Qgbm90ZVRleHQgPSBtZXNzYWdlcy5maWx0ZXIoKG1lc3NhZ2UpID0+IG1lc3NhZ2UudHlwZSA9PT0gTUVTU0FHRV9UWVBFLk5PVEUpO1xuICAgIGNvbnN0IG5vdGVzID0gW107XG4gICAgbm90ZU5vZGVzLmZvckVhY2goKG5vZGUsIGluZGV4KSA9PiB7XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlY3QgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gICAgICAgIGNvbnN0IHRleHQgPSBub3RlVGV4dFtpbmRleF0ubWVzc2FnZTtcbiAgICAgICAgY29uc3Qgbm90ZSA9IGNyZWF0ZUNvbnRhaW5lclNrZWxldG9uKHJlY3QsIFwicmVjdGFuZ2xlXCIsIHtcbiAgICAgICAgICAgIGxhYmVsOiB7IHRleHQgfSxcbiAgICAgICAgICAgIHN1YnR5cGU6IFwibm90ZVwiLFxuICAgICAgICB9KTtcbiAgICAgICAgbm90ZXMucHVzaChub3RlKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm90ZXM7XG59O1xuY29uc3QgcGFyc2VBY3RpdmF0aW9ucyA9IChjb250YWluZXJFbCkgPT4ge1xuICAgIGNvbnN0IGFjdGl2YXRpb25Ob2RlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWwucXVlcnlTZWxlY3RvckFsbChgW2NsYXNzKj1hY3RpdmF0aW9uXWApKTtcbiAgICBjb25zdCBhY3RpdmF0aW9ucyA9IFtdO1xuICAgIGFjdGl2YXRpb25Ob2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBjcmVhdGVDb250YWluZXJTa2VsZXRvbihub2RlLCBcInJlY3RhbmdsZVwiLCB7XG4gICAgICAgICAgICBsYWJlbDogeyB0ZXh0OiBcIlwiIH0sXG4gICAgICAgICAgICBzdWJ0eXBlOiBcImFjdGl2YXRpb25cIixcbiAgICAgICAgfSk7XG4gICAgICAgIGFjdGl2YXRpb25zLnB1c2gocmVjdCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjdGl2YXRpb25zO1xufTtcbmNvbnN0IHBhcnNlTG9vcHMgPSAobWVzc2FnZXMsIGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgbGluZU5vZGVzID0gQXJyYXkuZnJvbShjb250YWluZXJFbC5xdWVyeVNlbGVjdG9yQWxsKFwiLmxvb3BMaW5lXCIpKTtcbiAgICBjb25zdCBsaW5lcyA9IFtdO1xuICAgIGNvbnN0IHRleHRzID0gW107XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBsaW5lTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCBzdGFydFggPSBOdW1iZXIobm9kZS5nZXRBdHRyaWJ1dGUoXCJ4MVwiKSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0WSA9IE51bWJlcihub2RlLmdldEF0dHJpYnV0ZShcInkxXCIpKTtcbiAgICAgICAgY29uc3QgZW5kWCA9IE51bWJlcihub2RlLmdldEF0dHJpYnV0ZShcIngyXCIpKTtcbiAgICAgICAgY29uc3QgZW5kWSA9IE51bWJlcihub2RlLmdldEF0dHJpYnV0ZShcInkyXCIpKTtcbiAgICAgICAgY29uc3QgbGluZSA9IGNyZWF0ZUxpbmVTa2VsZXRvbihub2RlLCBzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSk7XG4gICAgICAgIGxpbmUuc3Ryb2tlU3R5bGUgPSBcImRvdHRlZFwiO1xuICAgICAgICBsaW5lLnN0cm9rZUNvbG9yID0gXCIjYWRiNWJkXCI7XG4gICAgICAgIGxpbmUuc3Ryb2tlV2lkdGggPSAyO1xuICAgICAgICBsaW5lcy5wdXNoKGxpbmUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGxvb3BUZXh0Tm9kZXMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIubG9vcFRleHRcIikpO1xuICAgIGNvbnN0IGNyaXRpY2FsTWVzc2FnZXMgPSBtZXNzYWdlc1xuICAgICAgICAuZmlsdGVyKChtZXNzYWdlKSA9PiBtZXNzYWdlLnR5cGUgPT09IE1FU1NBR0VfVFlQRS5DUklUSUNBTF9TVEFSVClcbiAgICAgICAgLm1hcCgobWVzc2FnZSkgPT4gbWVzc2FnZS5tZXNzYWdlKTtcbiAgICBsb29wVGV4dE5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IG5vZGUudGV4dENvbnRlbnQgfHwgXCJcIjtcbiAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBjcmVhdGVUZXh0RWxlbWVudEZyb21TVkcobm9kZSwgdGV4dCk7XG4gICAgICAgIC8vIFRoZSB0ZXh0IGlzIHJlbmRlcmVkIGJldHdlZW4gWyBdIGluIERPTSBoZW5jZSBnZXR0aW5nIHRoZSB0ZXh0IGV4Y2x1ZGluZyB0aGUgWyBdXG4gICAgICAgIGNvbnN0IHJhd1RleHQgPSB0ZXh0Lm1hdGNoKC9cXFsoLio/KVxcXS8pPy5bMV0gfHwgXCJcIjtcbiAgICAgICAgY29uc3QgaXNDcml0aWNhbCA9IGNyaXRpY2FsTWVzc2FnZXMuaW5jbHVkZXMocmF3VGV4dCk7XG4gICAgICAgIC8vIEZvciBjcml0aWNhbCBsYWJlbCB0aGUgY29vcmRpbmF0ZXMgYXJlIG5vdCBhY2N1cmF0ZSBpbiBtZXJtYWlkIGFzIHRoZXJlIGlzXG4gICAgICAgIC8vIG5vIHBhZGRpbmcgbGVmdCBoZW5jZSBzaGlmdGluZyB0aGUgdGV4dCBuZXh0IHRvIGNyaXRpY2FsIGxhYmVsIGJ5IDE2cHggKGZvbnQgc2l6ZSlcbiAgICAgICAgaWYgKGlzQ3JpdGljYWwpIHtcbiAgICAgICAgICAgIHRleHRFbGVtZW50LnggKz0gMTY7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dHMucHVzaCh0ZXh0RWxlbWVudCk7XG4gICAgfSk7XG4gICAgY29uc3QgbGFiZWxCb3hlcyA9IEFycmF5LmZyb20oY29udGFpbmVyRWw/LnF1ZXJ5U2VsZWN0b3JBbGwoXCIubGFiZWxCb3hcIikpO1xuICAgIGNvbnN0IGxhYmVsVGV4dE5vZGUgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsPy5xdWVyeVNlbGVjdG9yQWxsKFwiLmxhYmVsVGV4dFwiKSk7XG4gICAgbGFiZWxCb3hlcy5mb3JFYWNoKChsYWJlbEJveCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGxhYmVsVGV4dE5vZGVbaW5kZXhdPy50ZXh0Q29udGVudCB8fCBcIlwiO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBjcmVhdGVDb250YWluZXJTa2VsZXRvbihsYWJlbEJveCwgXCJyZWN0YW5nbGVcIiwge1xuICAgICAgICAgICAgbGFiZWw6IHsgdGV4dCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29udGFpbmVyLnN0cm9rZUNvbG9yID0gXCIjYWRiNWJkXCI7XG4gICAgICAgIGNvbnRhaW5lci5iZ0NvbG9yID0gXCIjZTllY2VmXCI7XG4gICAgICAgIC8vIFNvIHdpZHRoIGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gbGFiZWxcbiAgICAgICAgY29udGFpbmVyLndpZHRoID0gdW5kZWZpbmVkO1xuICAgICAgICBub2Rlcy5wdXNoKGNvbnRhaW5lcik7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgbGluZXMsIHRleHRzLCBub2RlcyB9O1xufTtcbmNvbnN0IGNvbXB1dGVIaWdobGlnaHRzID0gKGNvbnRhaW5lckVsKSA9PiB7XG4gICAgY29uc3QgcmVjdHMgPSBBcnJheS5mcm9tKGNvbnRhaW5lckVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCIucmVjdFwiKSlcbiAgICAgICAgLy8gT25seSBkcmF3aW5nIHNwZWNpZmljYWxseSBmb3IgaGlnaGxpZ2h0cyBhcyB0aGUgc2FtZSBzZWxlY3RvciBpcyBmb3IgZ3JvdXBpbmcgYXMgd2VsbC4gRm9yIGdyb3VwaW5nIHdlXG4gICAgICAgIC8vIGRyYXcgaXQgb3Vyc2VsdmVzXG4gICAgICAgIC5maWx0ZXIoKG5vZGUpID0+IG5vZGUucGFyZW50RWxlbWVudD8udGFnTmFtZSAhPT0gXCJnXCIpO1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgcmVjdHMuZm9yRWFjaCgocmVjdCkgPT4ge1xuICAgICAgICBjb25zdCBub2RlID0gY3JlYXRlQ29udGFpbmVyU2tlbGV0b24ocmVjdCwgXCJyZWN0YW5nbGVcIiwge1xuICAgICAgICAgICAgbGFiZWw6IHsgdGV4dDogXCJcIiB9LFxuICAgICAgICAgICAgc3VidHlwZTogXCJoaWdobGlnaHRcIixcbiAgICAgICAgfSk7XG4gICAgICAgIG5vZGVzLnB1c2gobm9kZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGVzO1xufTtcbmV4cG9ydCBjb25zdCBwYXJzZU1lcm1haWRTZXF1ZW5jZURpYWdyYW0gPSAoZGlhZ3JhbSwgY29udGFpbmVyRWwpID0+IHtcbiAgICBkaWFncmFtLnBhcnNlKCk7XG4gICAgLy8gR2V0IG1lcm1haWQgcGFyc2VkIGRhdGEgZnJvbSBwYXJzZXIgc2hhcmVkIHZhcmlhYmxlIGB5eWBcbiAgICBjb25zdCBtZXJtYWlkUGFyc2VyID0gZGlhZ3JhbS5wYXJzZXIueXk7XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBjb25zdCBncm91cHMgPSBtZXJtYWlkUGFyc2VyLmdldEJveGVzKCk7XG4gICAgY29uc3QgYmdIaWdodGxpZ2h0cyA9IGNvbXB1dGVIaWdobGlnaHRzKGNvbnRhaW5lckVsKTtcbiAgICBjb25zdCBhY3RvckRhdGEgPSBtZXJtYWlkUGFyc2VyLmdldEFjdG9ycygpO1xuICAgIGNvbnN0IHsgbm9kZXM6IGFjdG9ycywgbGluZXMgfSA9IHBhcnNlQWN0b3IoYWN0b3JEYXRhLCBjb250YWluZXJFbCk7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBtZXJtYWlkUGFyc2VyLmdldE1lc3NhZ2VzKCk7XG4gICAgY29uc3QgYXJyb3dzID0gY29tcHV0ZUFycm93cyhtZXNzYWdlcywgY29udGFpbmVyRWwpO1xuICAgIGNvbnN0IG5vdGVzID0gY29tcHV0ZU5vdGVzKG1lc3NhZ2VzLCBjb250YWluZXJFbCk7XG4gICAgY29uc3QgYWN0aXZhdGlvbnMgPSBwYXJzZUFjdGl2YXRpb25zKGNvbnRhaW5lckVsKTtcbiAgICBjb25zdCBsb29wcyA9IHBhcnNlTG9vcHMobWVzc2FnZXMsIGNvbnRhaW5lckVsKTtcbiAgICBub2Rlcy5wdXNoKGJnSGlnaHRsaWdodHMpO1xuICAgIG5vZGVzLnB1c2goLi4uYWN0b3JzKTtcbiAgICBub2Rlcy5wdXNoKG5vdGVzKTtcbiAgICBub2Rlcy5wdXNoKGFjdGl2YXRpb25zKTtcbiAgICByZXR1cm4geyB0eXBlOiBcInNlcXVlbmNlXCIsIGxpbmVzLCBhcnJvd3MsIG5vZGVzLCBsb29wcywgZ3JvdXBzIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/parser/sequence.js\n");
|
|
390
434
|
|
|
391
435
|
/***/ }),
|
|
392
436
|
|
|
@@ -397,7 +441,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
397
441
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
398
442
|
|
|
399
443
|
"use strict";
|
|
400
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"decodeEntities\": () => (/* binding */ decodeEntities),\n/* harmony export */ \"encodeEntities\": () => (/* binding */ encodeEntities),\n/* harmony export */ \"entityCodesToText\": () => (/* binding */ entityCodesToText),\n/* harmony export */ \"getTransformAttr\": () => (/* binding */ getTransformAttr)\n/* harmony export */ });\n// Convert mermaid entity codes to text e.g. \"#9829;\" to \"♥\"\nconst entityCodesToText = (input) => {\n input = decodeEntities(input);\n const modifiedInput = input\n .replace(/#(\\d+);/g, \"&#$1;\")\n .replace(/#([a-z]+);/g, \"&$1;\");\n const element = document.createElement(\"textarea\");\n element.innerHTML = modifiedInput;\n return element.value;\n};\nconst getTransformAttr = (el) => {\n const transformAttr = el.getAttribute(\"transform\");\n const translateMatch = transformAttr?.match(/translate\\(([\\d.-]+),\\s*([\\d.-]+)\\)/);\n let transformX = 0;\n let transformY = 0;\n if (translateMatch) {\n transformX = Number(translateMatch[1]);\n transformY = Number(translateMatch[2]);\n }\n return { transformX, transformY };\n};\n//TODO Once fixed in mermaid this will be removed\nconst encodeEntities = (text) => {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, (s) => {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, (s) => {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, (s) => {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return `fl°°${innerTxt}¶ß`;\n }\n return `fl°${innerTxt}¶ß`;\n });\n return txt;\n};\nconst decodeEntities = function (text) {\n return text.replace(/fl°°/g, \"#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
444
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"computeEdgePositions\": () => (/* binding */ computeEdgePositions),\n/* harmony export */ \"decodeEntities\": () => (/* binding */ decodeEntities),\n/* harmony export */ \"encodeEntities\": () => (/* binding */ encodeEntities),\n/* harmony export */ \"entityCodesToText\": () => (/* binding */ entityCodesToText),\n/* harmony export */ \"getTransformAttr\": () => (/* binding */ getTransformAttr)\n/* harmony export */ });\n// Convert mermaid entity codes to text e.g. \"#9829;\" to \"♥\"\nconst entityCodesToText = (input) => {\n input = decodeEntities(input);\n const modifiedInput = input\n .replace(/#(\\d+);/g, \"&#$1;\")\n .replace(/#([a-z]+);/g, \"&$1;\");\n const element = document.createElement(\"textarea\");\n element.innerHTML = modifiedInput;\n return element.value;\n};\nconst getTransformAttr = (el) => {\n const transformAttr = el.getAttribute(\"transform\");\n const translateMatch = transformAttr?.match(/translate\\(([ \\d.-]+),\\s*([\\d.-]+)\\)/);\n let transformX = 0;\n let transformY = 0;\n if (translateMatch) {\n transformX = Number(translateMatch[1]);\n transformY = Number(translateMatch[2]);\n }\n return { transformX, transformY };\n};\n//TODO Once fixed in mermaid this will be removed\nconst encodeEntities = (text) => {\n let txt = text;\n txt = txt.replace(/style.*:\\S*#.*;/g, (s) => {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/classDef.*:\\S*#.*;/g, (s) => {\n return s.substring(0, s.length - 1);\n });\n txt = txt.replace(/#\\w+;/g, (s) => {\n const innerTxt = s.substring(1, s.length - 1);\n const isInt = /^\\+?\\d+$/.test(innerTxt);\n if (isInt) {\n return `fl°°${innerTxt}¶ß`;\n }\n return `fl°${innerTxt}¶ß`;\n });\n return txt;\n};\nconst decodeEntities = function (text) {\n return text.replace(/fl°°/g, \"#\").replace(/fl°/g, \"&\").replace(/¶ß/g, \";\");\n};\nconst computeEdgePositions = (pathElement, offset = { x: 0, y: 0 }) => {\n if (pathElement.tagName.toLowerCase() !== \"path\") {\n throw new Error(`Invalid input: Expected an HTMLElement of tag \"path\", got ${pathElement.tagName}`);\n }\n const dAttr = pathElement.getAttribute(\"d\");\n if (!dAttr) {\n throw new Error('Path element does not contain a \"d\" attribute');\n }\n // Split the d attribute based on M (Move To) and L (Line To) commands\n const commands = dAttr.split(/(?=[LM])/);\n const startPosition = commands[0]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const endPosition = commands[commands.length - 1]\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n const reflectionPoints = commands\n .map((command) => {\n const coords = command\n .substring(1)\n .split(\",\")\n .map((coord) => parseFloat(coord));\n return { x: coords[0], y: coords[1] };\n })\n .filter((point, index, array) => {\n if (index === array.length - 1) {\n return true;\n }\n const prevPoint = array[index - 1];\n return (index === 0 || (point.x !== prevPoint.x && point.y !== prevPoint.y));\n })\n .map((p) => {\n return {\n x: p.x + offset.x,\n y: p.y + offset.y,\n };\n });\n return {\n startX: startPosition[0] + offset.x,\n startY: startPosition[1] + offset.y,\n endX: endPosition[0] + offset.x,\n endY: endPosition[1] + offset.y,\n reflectionPoints,\n };\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BleGNhbGlkcmF3L21lcm1haWQtdG8tZXhjYWxpZHJhdy9kaXN0L3V0aWxzLmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsb0RBQW9EO0FBQzdDO0FBQ1A7QUFDQTtBQUNBLHlCQUF5QixVQUFVO0FBQ25DLDRCQUE0QixTQUFTO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDTztBQUNQO0FBQ0Esc0NBQXNDO0FBQ3RDO0FBQ0EsS0FBSztBQUNMLHlDQUF5QztBQUN6QztBQUNBLEtBQUs7QUFDTCw0QkFBNEI7QUFDNUI7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLFNBQVM7QUFDbEM7QUFDQSxvQkFBb0IsU0FBUztBQUM3QixLQUFLO0FBQ0w7QUFDQTtBQUNPO0FBQ1AsMEVBQTBFO0FBQzFFO0FBQ08sc0RBQXNELFlBQVk7QUFDekU7QUFDQSxxRkFBcUYsb0JBQW9CO0FBQ3pHO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQGV4Y2FsaWRyYXcvbWVybWFpZC10by1leGNhbGlkcmF3L2Rpc3QvdXRpbHMuanM/MjMzOCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb252ZXJ0IG1lcm1haWQgZW50aXR5IGNvZGVzIHRvIHRleHQgZS5nLiBcIiM5ODI5O1wiIHRvIFwi4pmlXCJcbmV4cG9ydCBjb25zdCBlbnRpdHlDb2Rlc1RvVGV4dCA9IChpbnB1dCkgPT4ge1xuICAgIGlucHV0ID0gZGVjb2RlRW50aXRpZXMoaW5wdXQpO1xuICAgIGNvbnN0IG1vZGlmaWVkSW5wdXQgPSBpbnB1dFxuICAgICAgICAucmVwbGFjZSgvIyhcXGQrKTsvZywgXCImIyQxO1wiKVxuICAgICAgICAucmVwbGFjZSgvIyhbYS16XSspOy9nLCBcIiYkMTtcIik7XG4gICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcbiAgICBlbGVtZW50LmlubmVySFRNTCA9IG1vZGlmaWVkSW5wdXQ7XG4gICAgcmV0dXJuIGVsZW1lbnQudmFsdWU7XG59O1xuZXhwb3J0IGNvbnN0IGdldFRyYW5zZm9ybUF0dHIgPSAoZWwpID0+IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1BdHRyID0gZWwuZ2V0QXR0cmlidXRlKFwidHJhbnNmb3JtXCIpO1xuICAgIGNvbnN0IHRyYW5zbGF0ZU1hdGNoID0gdHJhbnNmb3JtQXR0cj8ubWF0Y2goL3RyYW5zbGF0ZVxcKChbIFxcZC4tXSspLFxccyooW1xcZC4tXSspXFwpLyk7XG4gICAgbGV0IHRyYW5zZm9ybVggPSAwO1xuICAgIGxldCB0cmFuc2Zvcm1ZID0gMDtcbiAgICBpZiAodHJhbnNsYXRlTWF0Y2gpIHtcbiAgICAgICAgdHJhbnNmb3JtWCA9IE51bWJlcih0cmFuc2xhdGVNYXRjaFsxXSk7XG4gICAgICAgIHRyYW5zZm9ybVkgPSBOdW1iZXIodHJhbnNsYXRlTWF0Y2hbMl0pO1xuICAgIH1cbiAgICByZXR1cm4geyB0cmFuc2Zvcm1YLCB0cmFuc2Zvcm1ZIH07XG59O1xuLy9UT0RPIE9uY2UgZml4ZWQgaW4gbWVybWFpZCB0aGlzIHdpbGwgYmUgcmVtb3ZlZFxuZXhwb3J0IGNvbnN0IGVuY29kZUVudGl0aWVzID0gKHRleHQpID0+IHtcbiAgICBsZXQgdHh0ID0gdGV4dDtcbiAgICB0eHQgPSB0eHQucmVwbGFjZSgvc3R5bGUuKjpcXFMqIy4qOy9nLCAocykgPT4ge1xuICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwgcy5sZW5ndGggLSAxKTtcbiAgICB9KTtcbiAgICB0eHQgPSB0eHQucmVwbGFjZSgvY2xhc3NEZWYuKjpcXFMqIy4qOy9nLCAocykgPT4ge1xuICAgICAgICByZXR1cm4gcy5zdWJzdHJpbmcoMCwgcy5sZW5ndGggLSAxKTtcbiAgICB9KTtcbiAgICB0eHQgPSB0eHQucmVwbGFjZSgvI1xcdys7L2csIChzKSA9PiB7XG4gICAgICAgIGNvbnN0IGlubmVyVHh0ID0gcy5zdWJzdHJpbmcoMSwgcy5sZW5ndGggLSAxKTtcbiAgICAgICAgY29uc3QgaXNJbnQgPSAvXlxcKz9cXGQrJC8udGVzdChpbm5lclR4dCk7XG4gICAgICAgIGlmIChpc0ludCkge1xuICAgICAgICAgICAgcmV0dXJuIGDvrILCsMKwJHtpbm5lclR4dH3CtsOfYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYO+sgsKwJHtpbm5lclR4dH3CtsOfYDtcbiAgICB9KTtcbiAgICByZXR1cm4gdHh0O1xufTtcbmV4cG9ydCBjb25zdCBkZWNvZGVFbnRpdGllcyA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZSgv76yCwrDCsC9nLCBcIiNcIikucmVwbGFjZSgv76yCwrAvZywgXCImXCIpLnJlcGxhY2UoL8K2w58vZywgXCI7XCIpO1xufTtcbmV4cG9ydCBjb25zdCBjb21wdXRlRWRnZVBvc2l0aW9ucyA9IChwYXRoRWxlbWVudCwgb2Zmc2V0ID0geyB4OiAwLCB5OiAwIH0pID0+IHtcbiAgICBpZiAocGF0aEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSBcInBhdGhcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5wdXQ6IEV4cGVjdGVkIGFuIEhUTUxFbGVtZW50IG9mIHRhZyBcInBhdGhcIiwgZ290ICR7cGF0aEVsZW1lbnQudGFnTmFtZX1gKTtcbiAgICB9XG4gICAgY29uc3QgZEF0dHIgPSBwYXRoRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkXCIpO1xuICAgIGlmICghZEF0dHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXRoIGVsZW1lbnQgZG9lcyBub3QgY29udGFpbiBhIFwiZFwiIGF0dHJpYnV0ZScpO1xuICAgIH1cbiAgICAvLyBTcGxpdCB0aGUgZCBhdHRyaWJ1dGUgYmFzZWQgb24gTSAoTW92ZSBUbykgYW5kIEwgKExpbmUgVG8pIGNvbW1hbmRzXG4gICAgY29uc3QgY29tbWFuZHMgPSBkQXR0ci5zcGxpdCgvKD89W0xNXSkvKTtcbiAgICBjb25zdCBzdGFydFBvc2l0aW9uID0gY29tbWFuZHNbMF1cbiAgICAgICAgLnN1YnN0cmluZygxKVxuICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgIC5tYXAoKGNvb3JkKSA9PiBwYXJzZUZsb2F0KGNvb3JkKSk7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSBjb21tYW5kc1tjb21tYW5kcy5sZW5ndGggLSAxXVxuICAgICAgICAuc3Vic3RyaW5nKDEpXG4gICAgICAgIC5zcGxpdChcIixcIilcbiAgICAgICAgLm1hcCgoY29vcmQpID0+IHBhcnNlRmxvYXQoY29vcmQpKTtcbiAgICBjb25zdCByZWZsZWN0aW9uUG9pbnRzID0gY29tbWFuZHNcbiAgICAgICAgLm1hcCgoY29tbWFuZCkgPT4ge1xuICAgICAgICBjb25zdCBjb29yZHMgPSBjb21tYW5kXG4gICAgICAgICAgICAuc3Vic3RyaW5nKDEpXG4gICAgICAgICAgICAuc3BsaXQoXCIsXCIpXG4gICAgICAgICAgICAubWFwKChjb29yZCkgPT4gcGFyc2VGbG9hdChjb29yZCkpO1xuICAgICAgICByZXR1cm4geyB4OiBjb29yZHNbMF0sIHk6IGNvb3Jkc1sxXSB9O1xuICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKHBvaW50LCBpbmRleCwgYXJyYXkpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcmV2UG9pbnQgPSBhcnJheVtpbmRleCAtIDFdO1xuICAgICAgICByZXR1cm4gKGluZGV4ID09PSAwIHx8IChwb2ludC54ICE9PSBwcmV2UG9pbnQueCAmJiBwb2ludC55ICE9PSBwcmV2UG9pbnQueSkpO1xuICAgIH0pXG4gICAgICAgIC5tYXAoKHApID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHAueCArIG9mZnNldC54LFxuICAgICAgICAgICAgeTogcC55ICsgb2Zmc2V0LnksXG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3RhcnRYOiBzdGFydFBvc2l0aW9uWzBdICsgb2Zmc2V0LngsXG4gICAgICAgIHN0YXJ0WTogc3RhcnRQb3NpdGlvblsxXSArIG9mZnNldC55LFxuICAgICAgICBlbmRYOiBlbmRQb3NpdGlvblswXSArIG9mZnNldC54LFxuICAgICAgICBlbmRZOiBlbmRQb3NpdGlvblsxXSArIG9mZnNldC55LFxuICAgICAgICByZWZsZWN0aW9uUG9pbnRzLFxuICAgIH07XG59O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/@excalidraw/mermaid-to-excalidraw/dist/utils.js\n");
|
|
401
445
|
|
|
402
446
|
/***/ }),
|
|
403
447
|
|
|
@@ -7624,7 +7668,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7624
7668
|
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
7625
7669
|
|
|
7626
7670
|
"use strict";
|
|
7627
|
-
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\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_AI_BACKEND\":\"http://localhost:3015\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.1-
|
|
7671
|
+
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\n\nlet FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = ({\"VITE_APP_BACKEND_V2_GET_URL\":\"https://json-dev.excalidraw.com/api/v2/\",\"VITE_APP_BACKEND_V2_POST_URL\":\"https://json-dev.excalidraw.com/api/v2/post/\",\"VITE_APP_LIBRARY_URL\":\"https://libraries.excalidraw.com\",\"VITE_APP_LIBRARY_BACKEND\":\"https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries\",\"VITE_APP_WS_SERVER_URL\":\"http://localhost:3002\",\"VITE_APP_PORTAL_URL\":\"\",\"VITE_APP_PLUS_LP\":\"https://plus.excalidraw.com\",\"VITE_APP_PLUS_APP\":\"https://app.excalidraw.com\",\"VITE_APP_AI_BACKEND\":\"http://localhost:3015\",\"VITE_APP_FIREBASE_CONFIG\":\"{\\\"apiKey\\\":\\\"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8\\\",\\\"authDomain\\\":\\\"excalidraw-oss-dev.firebaseapp.com\\\",\\\"projectId\\\":\\\"excalidraw-oss-dev\\\",\\\"storageBucket\\\":\\\"excalidraw-oss-dev.appspot.com\\\",\\\"messagingSenderId\\\":\\\"664559512677\\\",\\\"appId\\\":\\\"1:664559512677:web:a385181f2928d328a7aa8c\\\"}\",\"VITE_APP_DEV_ENABLE_SW\":\"\",\"VITE_APP_DEV_DISABLE_LIVE_RELOAD\":\"\",\"VITE_APP_DISABLE_TRACKING\":\"true\",\"FAST_REFRESH\":\"false\",\"VITE_APP_PORT\":\"3000\",\"VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX\":\"\",\"VITE_APP_COLLAPSE_OVERLAY\":\"true\",\"VITE_APP_ENABLE_ESLINT\":\"true\",\"VITE_PKG_NAME\":\"@excalidraw/excalidraw\",\"VITE_PKG_VERSION\":\"0.17.1-7381-cdf6d3e\",\"VITE_IS_EXCALIDRAW_NPM_PACKAGE\":true}) || 0);\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nconst $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t),\n\n\t// modifiers\n\treset: init(0, 0),\n\tbold: init(1, 22),\n\tdim: init(2, 22),\n\titalic: init(3, 23),\n\tunderline: init(4, 24),\n\tinverse: init(7, 27),\n\thidden: init(8, 28),\n\tstrikethrough: init(9, 29),\n\n\t// colors\n\tblack: init(30, 39),\n\tred: init(31, 39),\n\tgreen: init(32, 39),\n\tyellow: init(33, 39),\n\tblue: init(34, 39),\n\tmagenta: init(35, 39),\n\tcyan: init(36, 39),\n\twhite: init(37, 39),\n\tgray: init(90, 39),\n\tgrey: init(90, 39),\n\n\t// background colors\n\tbgBlack: init(40, 49),\n\tbgRed: init(41, 49),\n\tbgGreen: init(42, 49),\n\tbgYellow: init(43, 49),\n\tbgBlue: init(44, 49),\n\tbgMagenta: init(45, 49),\n\tbgCyan: init(46, 49),\n\tbgWhite: init(47, 49)\n};\n\nfunction run(arr, str) {\n\tlet i=0, tmp, beg='', end='';\n\tfor (; i < arr.length; i++) {\n\t\ttmp = arr[i];\n\t\tbeg += tmp.open;\n\t\tend += tmp.close;\n\t\tif (!!~str.indexOf(tmp.close)) {\n\t\t\tstr = str.replace(tmp.rgx, tmp.close + tmp.open);\n\t\t}\n\t}\n\treturn beg + str + end;\n}\n\nfunction chain(has, keys) {\n\tlet ctx = { has, keys };\n\n\tctx.reset = $.reset.bind(ctx);\n\tctx.bold = $.bold.bind(ctx);\n\tctx.dim = $.dim.bind(ctx);\n\tctx.italic = $.italic.bind(ctx);\n\tctx.underline = $.underline.bind(ctx);\n\tctx.inverse = $.inverse.bind(ctx);\n\tctx.hidden = $.hidden.bind(ctx);\n\tctx.strikethrough = $.strikethrough.bind(ctx);\n\n\tctx.black = $.black.bind(ctx);\n\tctx.red = $.red.bind(ctx);\n\tctx.green = $.green.bind(ctx);\n\tctx.yellow = $.yellow.bind(ctx);\n\tctx.blue = $.blue.bind(ctx);\n\tctx.magenta = $.magenta.bind(ctx);\n\tctx.cyan = $.cyan.bind(ctx);\n\tctx.white = $.white.bind(ctx);\n\tctx.gray = $.gray.bind(ctx);\n\tctx.grey = $.grey.bind(ctx);\n\n\tctx.bgBlack = $.bgBlack.bind(ctx);\n\tctx.bgRed = $.bgRed.bind(ctx);\n\tctx.bgGreen = $.bgGreen.bind(ctx);\n\tctx.bgYellow = $.bgYellow.bind(ctx);\n\tctx.bgBlue = $.bgBlue.bind(ctx);\n\tctx.bgMagenta = $.bgMagenta.bind(ctx);\n\tctx.bgCyan = $.bgCyan.bind(ctx);\n\tctx.bgWhite = $.bgWhite.bind(ctx);\n\n\treturn ctx;\n}\n\nfunction init(open, close) {\n\tlet blk = {\n\t\topen: `\\x1b[${open}m`,\n\t\tclose: `\\x1b[${close}m`,\n\t\trgx: new RegExp(`\\\\x1b\\\\[${close}m`, 'g')\n\t};\n\treturn function (txt) {\n\t\tif (this !== void 0 && this.has !== void 0) {\n\t\t\t!!~this.has.indexOf(open) || (this.has.push(open),this.keys.push(blk));\n\t\t\treturn txt === void 0 ? this : $.enabled ? run(this.keys, txt+'') : txt+'';\n\t\t}\n\t\treturn txt === void 0 ? chain([open], [blk]) : $.enabled ? run([blk], txt+'') : txt+'';\n\t};\n}\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ($);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2tsZXVyL2luZGV4Lm1qcy5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQWE7O0FBRWI7QUFDQTtBQUNBLElBQUksbURBQW1ELEVBQUUsaXVDQUFXLElBQUksQ0FBRTtBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRLGdCQUFnQjtBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxnQkFBZ0IsS0FBSztBQUNyQixpQkFBaUIsTUFBTTtBQUN2Qiw2QkFBNkIsTUFBTTtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWUsQ0FBQyxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9rbGV1ci9pbmRleC5tanM/MmE5ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmxldCBGT1JDRV9DT0xPUiwgTk9ERV9ESVNBQkxFX0NPTE9SUywgTk9fQ09MT1IsIFRFUk0sIGlzVFRZPXRydWU7XG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnKSB7XG5cdCh7IEZPUkNFX0NPTE9SLCBOT0RFX0RJU0FCTEVfQ09MT1JTLCBOT19DT0xPUiwgVEVSTSB9ID0gcHJvY2Vzcy5lbnYgfHwge30pO1xuXHRpc1RUWSA9IHByb2Nlc3Muc3Rkb3V0ICYmIHByb2Nlc3Muc3Rkb3V0LmlzVFRZO1xufVxuXG5jb25zdCAkID0ge1xuXHRlbmFibGVkOiAhTk9ERV9ESVNBQkxFX0NPTE9SUyAmJiBOT19DT0xPUiA9PSBudWxsICYmIFRFUk0gIT09ICdkdW1iJyAmJiAoXG5cdFx0Rk9SQ0VfQ09MT1IgIT0gbnVsbCAmJiBGT1JDRV9DT0xPUiAhPT0gJzAnIHx8IGlzVFRZXG5cdCksXG5cblx0Ly8gbW9kaWZpZXJzXG5cdHJlc2V0OiBpbml0KDAsIDApLFxuXHRib2xkOiBpbml0KDEsIDIyKSxcblx0ZGltOiBpbml0KDIsIDIyKSxcblx0aXRhbGljOiBpbml0KDMsIDIzKSxcblx0dW5kZXJsaW5lOiBpbml0KDQsIDI0KSxcblx0aW52ZXJzZTogaW5pdCg3LCAyNyksXG5cdGhpZGRlbjogaW5pdCg4LCAyOCksXG5cdHN0cmlrZXRocm91Z2g6IGluaXQoOSwgMjkpLFxuXG5cdC8vIGNvbG9yc1xuXHRibGFjazogaW5pdCgzMCwgMzkpLFxuXHRyZWQ6IGluaXQoMzEsIDM5KSxcblx0Z3JlZW46IGluaXQoMzIsIDM5KSxcblx0eWVsbG93OiBpbml0KDMzLCAzOSksXG5cdGJsdWU6IGluaXQoMzQsIDM5KSxcblx0bWFnZW50YTogaW5pdCgzNSwgMzkpLFxuXHRjeWFuOiBpbml0KDM2LCAzOSksXG5cdHdoaXRlOiBpbml0KDM3LCAzOSksXG5cdGdyYXk6IGluaXQoOTAsIDM5KSxcblx0Z3JleTogaW5pdCg5MCwgMzkpLFxuXG5cdC8vIGJhY2tncm91bmQgY29sb3JzXG5cdGJnQmxhY2s6IGluaXQoNDAsIDQ5KSxcblx0YmdSZWQ6IGluaXQoNDEsIDQ5KSxcblx0YmdHcmVlbjogaW5pdCg0MiwgNDkpLFxuXHRiZ1llbGxvdzogaW5pdCg0MywgNDkpLFxuXHRiZ0JsdWU6IGluaXQoNDQsIDQ5KSxcblx0YmdNYWdlbnRhOiBpbml0KDQ1LCA0OSksXG5cdGJnQ3lhbjogaW5pdCg0NiwgNDkpLFxuXHRiZ1doaXRlOiBpbml0KDQ3LCA0OSlcbn07XG5cbmZ1bmN0aW9uIHJ1bihhcnIsIHN0cikge1xuXHRsZXQgaT0wLCB0bXAsIGJlZz0nJywgZW5kPScnO1xuXHRmb3IgKDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuXHRcdHRtcCA9IGFycltpXTtcblx0XHRiZWcgKz0gdG1wLm9wZW47XG5cdFx0ZW5kICs9IHRtcC5jbG9zZTtcblx0XHRpZiAoISF+c3RyLmluZGV4T2YodG1wLmNsb3NlKSkge1xuXHRcdFx0c3RyID0gc3RyLnJlcGxhY2UodG1wLnJneCwgdG1wLmNsb3NlICsgdG1wLm9wZW4pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gYmVnICsgc3RyICsgZW5kO1xufVxuXG5mdW5jdGlvbiBjaGFpbihoYXMsIGtleXMpIHtcblx0bGV0IGN0eCA9IHsgaGFzLCBrZXlzIH07XG5cblx0Y3R4LnJlc2V0ID0gJC5yZXNldC5iaW5kKGN0eCk7XG5cdGN0eC5ib2xkID0gJC5ib2xkLmJpbmQoY3R4KTtcblx0Y3R4LmRpbSA9ICQuZGltLmJpbmQoY3R4KTtcblx0Y3R4Lml0YWxpYyA9ICQuaXRhbGljLmJpbmQoY3R4KTtcblx0Y3R4LnVuZGVybGluZSA9ICQudW5kZXJsaW5lLmJpbmQoY3R4KTtcblx0Y3R4LmludmVyc2UgPSAkLmludmVyc2UuYmluZChjdHgpO1xuXHRjdHguaGlkZGVuID0gJC5oaWRkZW4uYmluZChjdHgpO1xuXHRjdHguc3RyaWtldGhyb3VnaCA9ICQuc3RyaWtldGhyb3VnaC5iaW5kKGN0eCk7XG5cblx0Y3R4LmJsYWNrID0gJC5ibGFjay5iaW5kKGN0eCk7XG5cdGN0eC5yZWQgPSAkLnJlZC5iaW5kKGN0eCk7XG5cdGN0eC5ncmVlbiA9ICQuZ3JlZW4uYmluZChjdHgpO1xuXHRjdHgueWVsbG93ID0gJC55ZWxsb3cuYmluZChjdHgpO1xuXHRjdHguYmx1ZSA9ICQuYmx1ZS5iaW5kKGN0eCk7XG5cdGN0eC5tYWdlbnRhID0gJC5tYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmN5YW4gPSAkLmN5YW4uYmluZChjdHgpO1xuXHRjdHgud2hpdGUgPSAkLndoaXRlLmJpbmQoY3R4KTtcblx0Y3R4LmdyYXkgPSAkLmdyYXkuYmluZChjdHgpO1xuXHRjdHguZ3JleSA9ICQuZ3JleS5iaW5kKGN0eCk7XG5cblx0Y3R4LmJnQmxhY2sgPSAkLmJnQmxhY2suYmluZChjdHgpO1xuXHRjdHguYmdSZWQgPSAkLmJnUmVkLmJpbmQoY3R4KTtcblx0Y3R4LmJnR3JlZW4gPSAkLmJnR3JlZW4uYmluZChjdHgpO1xuXHRjdHguYmdZZWxsb3cgPSAkLmJnWWVsbG93LmJpbmQoY3R4KTtcblx0Y3R4LmJnQmx1ZSA9ICQuYmdCbHVlLmJpbmQoY3R4KTtcblx0Y3R4LmJnTWFnZW50YSA9ICQuYmdNYWdlbnRhLmJpbmQoY3R4KTtcblx0Y3R4LmJnQ3lhbiA9ICQuYmdDeWFuLmJpbmQoY3R4KTtcblx0Y3R4LmJnV2hpdGUgPSAkLmJnV2hpdGUuYmluZChjdHgpO1xuXG5cdHJldHVybiBjdHg7XG59XG5cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UpIHtcblx0bGV0IGJsayA9IHtcblx0XHRvcGVuOiBgXFx4MWJbJHtvcGVufW1gLFxuXHRcdGNsb3NlOiBgXFx4MWJbJHtjbG9zZX1tYCxcblx0XHRyZ3g6IG5ldyBSZWdFeHAoYFxcXFx4MWJcXFxcWyR7Y2xvc2V9bWAsICdnJylcblx0fTtcblx0cmV0dXJuIGZ1bmN0aW9uICh0eHQpIHtcblx0XHRpZiAodGhpcyAhPT0gdm9pZCAwICYmIHRoaXMuaGFzICE9PSB2b2lkIDApIHtcblx0XHRcdCEhfnRoaXMuaGFzLmluZGV4T2Yob3BlbikgfHwgKHRoaXMuaGFzLnB1c2gob3BlbiksdGhpcy5rZXlzLnB1c2goYmxrKSk7XG5cdFx0XHRyZXR1cm4gdHh0ID09PSB2b2lkIDAgPyB0aGlzIDogJC5lbmFibGVkID8gcnVuKHRoaXMua2V5cywgdHh0KycnKSA6IHR4dCsnJztcblx0XHR9XG5cdFx0cmV0dXJuIHR4dCA9PT0gdm9pZCAwID8gY2hhaW4oW29wZW5dLCBbYmxrXSkgOiAkLmVuYWJsZWQgPyBydW4oW2Jsa10sIHR4dCsnJykgOiB0eHQrJyc7XG5cdH07XG59XG5cbmV4cG9ydCBkZWZhdWx0ICQ7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/kleur/index.mjs\n");
|
|
7628
7672
|
|
|
7629
7673
|
/***/ }),
|
|
7630
7674
|
|