@elementspanel/panel 1.0.0 → 1.0.2
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/app.js +3995 -197
- package/app.js.map +1 -1
- package/package.json +18 -18
- package/public/assets/{AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js → AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js} +2 -2
- package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-e6e38e8b.js.map +1 -0
- package/public/assets/CardPanel-59b7da2e.js +2 -0
- package/public/assets/CardPanel-59b7da2e.js.map +1 -0
- package/public/assets/{DesktopDialog-081410ca.js → DesktopDialog-e4041e4e.js} +2 -2
- package/public/assets/DesktopDialog-e4041e4e.js.map +1 -0
- package/public/assets/{Loading.vue_vue_type_script_setup_true_lang-9e79de95.js → Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js} +2 -2
- package/public/assets/Loading.vue_vue_type_script_setup_true_lang-1b74dd54.js.map +1 -0
- package/public/assets/{PageToolbar-5ca1a069.js → PageToolbar-7130e13d.js} +2 -2
- package/public/assets/PageToolbar-7130e13d.js.map +1 -0
- package/public/assets/{_elements-sdk_pinia-fc8ba898.js → _elements-sdk_pinia-2c56d2c1.js} +3 -3
- package/public/assets/{_elements-sdk_pinia-fc8ba898.js.map → _elements-sdk_pinia-2c56d2c1.js.map} +1 -1
- package/public/assets/{_elements-sdk_vue-b86b0db6.js → _elements-sdk_vue-80f42d87.js} +2 -2
- package/public/assets/_elements-sdk_vue-80f42d87.js.map +1 -0
- package/public/assets/{_elements-sdk_vue-i18n-64f8e172.js → _elements-sdk_vue-i18n-4b8a106a.js} +2 -2
- package/public/assets/_elements-sdk_vue-i18n-4b8a106a.js.map +1 -0
- package/public/assets/{_elements-sdk_vue-router-a62f518d.js → _elements-sdk_vue-router-a171591a.js} +2 -2
- package/public/assets/_elements-sdk_vue-router-a171591a.js.map +1 -0
- package/public/assets/{const-cfe7ddfe.js → const-93b324c0.js} +2 -2
- package/public/assets/const-93b324c0.js.map +1 -0
- package/public/assets/{const-01673e6b.js → const-ea30795c.js} +2 -2
- package/public/assets/const-ea30795c.js.map +1 -0
- package/public/assets/{context-b16af9cc.js → context-cc90576e.js} +2 -2
- package/public/assets/{context-b16af9cc.js.map → context-cc90576e.js.map} +1 -1
- package/public/assets/{copy-4d64fc1f.js → copy-b106bb10.js} +2 -2
- package/public/assets/copy-b106bb10.js.map +1 -0
- package/public/assets/{core-b6992169.js → core-d3bfdede.js} +2 -2
- package/public/assets/core-d3bfdede.js.map +1 -0
- package/public/assets/{desktopNotice-2c886f6b.js → desktopNotice-5ca3448c.js} +2 -2
- package/public/assets/desktopNotice-5ca3448c.js.map +1 -0
- package/public/assets/dom-ff483262.js.map +1 -1
- package/public/assets/{i18n-fe0f1ee7.js → i18n-e810b9fa.js} +2 -2
- package/public/assets/i18n-e810b9fa.js.map +1 -0
- package/public/assets/index-1da88aed.js +2 -0
- package/public/assets/index-1da88aed.js.map +1 -0
- package/public/assets/index-e3f35709.js.map +1 -1
- package/public/assets/{instance-26cca4c8.js → instance-cc59e210.js} +2 -2
- package/public/assets/instance-cc59e210.js.map +1 -0
- package/public/assets/lodash-001e4f93.js.map +1 -1
- package/public/assets/{nodes-402cdcbd.js → nodes-a56b1b35.js} +2 -2
- package/public/assets/nodes-a56b1b35.js.map +1 -0
- package/public/assets/protocol-97f7bab7.js.map +1 -1
- package/public/assets/randId-56f93901.js +2 -0
- package/public/assets/randId-56f93901.js.map +1 -0
- package/public/assets/{router-0f7d4714.js → router-eff205cc.js} +2 -2
- package/public/assets/router-eff205cc.js.map +1 -0
- package/public/assets/safe-87846d89.js.map +1 -1
- package/public/assets/{sdk-01dda668.js → sdk-3f2277ab.js} +2 -2
- package/public/assets/sdk-3f2277ab.js.map +1 -0
- package/public/assets/{shared-f2e37690.js → shared-597ef52b.js} +2 -2
- package/public/assets/shared-597ef52b.js.map +1 -0
- package/public/assets/{useAppConfigStore-289073ec.js → useAppConfigStore-352fe033.js} +2 -2
- package/public/assets/useAppConfigStore-352fe033.js.map +1 -0
- package/public/assets/useAppRouters-747b627a.js +2 -0
- package/public/assets/useAppRouters-747b627a.js.map +1 -0
- package/public/assets/{useAppStateStore-a644582a.js → useAppStateStore-a438b9a6.js} +2 -2
- package/public/assets/useAppStateStore-a438b9a6.js.map +1 -0
- package/public/assets/{useAppToolsStore-3a911226.js → useAppToolsStore-288c4fe8.js} +2 -2
- package/public/assets/useAppToolsStore-288c4fe8.js.map +1 -0
- package/public/assets/{useDefineApi-ead2616e.js → useDefineApi-b726db1e.js} +2 -2
- package/public/assets/useDefineApi-b726db1e.js.map +1 -0
- package/public/assets/{useInstanceActionAvailability-dec16c10.js → useInstanceActionAvailability-16de3001.js} +2 -2
- package/public/assets/useInstanceActionAvailability-16de3001.js.map +1 -0
- package/public/assets/{useKeyboardEvents-dba9d5ca.js → useKeyboardEvents-6f7f845c.js} +2 -2
- package/public/assets/useKeyboardEvents-6f7f845c.js.map +1 -0
- package/public/assets/{useMountComponent-dd1fcfea.js → useMountComponent-4043cb4c.js} +2 -2
- package/public/assets/useMountComponent-4043cb4c.js.map +1 -0
- package/public/assets/{useOverviewChart-119bda3b.js → useOverviewChart-7d758bc4.js} +2 -2
- package/public/assets/useOverviewChart-7d758bc4.js.map +1 -0
- package/public/assets/{useOverviewInfo-a149d634.js → useOverviewInfo-9ca25ab9.js} +2 -2
- package/public/assets/useOverviewInfo-9ca25ab9.js.map +1 -0
- package/public/assets/{usePolling-f2f09d27.js → usePolling-1bc2009b.js} +2 -2
- package/public/assets/usePolling-1bc2009b.js.map +1 -0
- package/public/assets/{useScreen-e3715e1f.js → useScreen-fad29b7c.js} +2 -2
- package/public/assets/useScreen-fad29b7c.js.map +1 -0
- package/public/assets/{useSocketIo-bc0a62c2.js → useSocketIo-ea3c9a61.js} +2 -2
- package/public/assets/useSocketIo-ea3c9a61.js.map +1 -0
- package/public/assets/{useThemeSwitch-6ff90248.js → useThemeSwitch-dc70883c.js} +2 -2
- package/public/assets/useThemeSwitch-dc70883c.js.map +1 -0
- package/public/assets/{vue-2433bd89.js → vue-6b52a630.js} +2 -2
- package/public/assets/{vue-2433bd89.js.map → vue-6b52a630.js.map} +1 -1
- package/public/assets/{vuetifyModal-49cb95ba.js → vuetifyModal-8382b175.js} +2 -2
- package/public/assets/vuetifyModal-8382b175.js.map +1 -0
- package/public/index.html +4 -4
- package/public/stats.html +2 -2
- package/runtime/npm-plugins.cjs +49 -13
- package/runtime/plugin-resolution.cjs +27 -9
- package/public/assets/AppDialog.vue_vue_type_style_index_0_lang-8b56f871.js.map +0 -1
- package/public/assets/CardPanel-a704f146.js +0 -2
- package/public/assets/CardPanel-a704f146.js.map +0 -1
- package/public/assets/DesktopDialog-081410ca.js.map +0 -1
- package/public/assets/Loading.vue_vue_type_script_setup_true_lang-9e79de95.js.map +0 -1
- package/public/assets/PageToolbar-5ca1a069.js.map +0 -1
- package/public/assets/_elements-sdk_vue-b86b0db6.js.map +0 -1
- package/public/assets/_elements-sdk_vue-i18n-64f8e172.js.map +0 -1
- package/public/assets/_elements-sdk_vue-router-a62f518d.js.map +0 -1
- package/public/assets/const-01673e6b.js.map +0 -1
- package/public/assets/const-cfe7ddfe.js.map +0 -1
- package/public/assets/copy-4d64fc1f.js.map +0 -1
- package/public/assets/core-b6992169.js.map +0 -1
- package/public/assets/desktopNotice-2c886f6b.js.map +0 -1
- package/public/assets/i18n-fe0f1ee7.js.map +0 -1
- package/public/assets/index-76b0df52.js +0 -2
- package/public/assets/index-76b0df52.js.map +0 -1
- package/public/assets/instance-26cca4c8.js.map +0 -1
- package/public/assets/nodes-402cdcbd.js.map +0 -1
- package/public/assets/randId-ed0b95b7.js +0 -2
- package/public/assets/randId-ed0b95b7.js.map +0 -1
- package/public/assets/router-0f7d4714.js.map +0 -1
- package/public/assets/sdk-01dda668.js.map +0 -1
- package/public/assets/shared-f2e37690.js.map +0 -1
- package/public/assets/useAppConfigStore-289073ec.js.map +0 -1
- package/public/assets/useAppRouters-5f58db32.js +0 -2
- package/public/assets/useAppRouters-5f58db32.js.map +0 -1
- package/public/assets/useAppStateStore-a644582a.js.map +0 -1
- package/public/assets/useAppToolsStore-3a911226.js.map +0 -1
- package/public/assets/useDefineApi-ead2616e.js.map +0 -1
- package/public/assets/useInstanceActionAvailability-dec16c10.js.map +0 -1
- package/public/assets/useKeyboardEvents-dba9d5ca.js.map +0 -1
- package/public/assets/useMountComponent-dd1fcfea.js.map +0 -1
- package/public/assets/useOverviewChart-119bda3b.js.map +0 -1
- package/public/assets/useOverviewInfo-a149d634.js.map +0 -1
- package/public/assets/usePolling-f2f09d27.js.map +0 -1
- package/public/assets/useScreen-e3715e1f.js.map +0 -1
- package/public/assets/useSocketIo-bc0a62c2.js.map +0 -1
- package/public/assets/useThemeSwitch-6ff90248.js.map +0 -1
- package/public/assets/vuetifyModal-49cb95ba.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"randId-ed0b95b7.js","sources":["../../../panel/node_modules/uuid/dist/esm-browser/rng.js","../../../panel/node_modules/uuid/dist/esm-browser/regex.js","../../../panel/node_modules/uuid/dist/esm-browser/validate.js","../../../panel/node_modules/uuid/dist/esm-browser/stringify.js","../../../panel/node_modules/uuid/dist/esm-browser/v4.js","../../../panel/plugins/console/src/tools/randId.ts"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 } from \"uuid\";\n\nexport function generateRandomString(len = 16) {\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let randomString = \"\";\n\n for (let i = 0; i < len; i++) {\n const randomIndex = Math.floor(Math.random() * characters.length);\n randomString += characters.charAt(randomIndex);\n }\n\n return randomString;\n}\nexport function getRandomId() {\n return v4();\n}\n"],"names":["getRandomValues","rnds8","rng","REGEX","validate","uuid","byteToHex","i","stringify","arr","offset","v4","options","buf","rnds","getRandomId"],"mappings":"AAGA,IAAIA,EACAC,EAAQ,IAAI,WAAW,EAAE,EACd,SAASC,GAAM,CAE5B,GAAI,CAACF,IAGHA,EAAkB,OAAO,OAAW,KAAe,OAAO,iBAAmB,OAAO,gBAAgB,KAAK,MAAM,GAAK,OAAO,SAAa,KAAe,OAAO,SAAS,iBAAoB,YAAc,SAAS,gBAAgB,KAAK,QAAQ,EAE3O,CAACA,GACH,MAAM,IAAI,MAAM,0GAA0G,EAI9H,OAAOA,EAAgBC,CAAK,CAC9B,CClBA,MAAAE,EAAe,sHCEf,SAASC,EAASC,EAAM,CACtB,OAAO,OAAOA,GAAS,UAAYF,EAAM,KAAKE,CAAI,CACpD,CCEA,IAAIC,EAAY,CAAA,EAEhB,QAASC,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACzBD,EAAU,MAAMC,EAAI,KAAO,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,EAGnD,SAASC,EAAUC,EAAK,CACtB,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,CAAC,IAAM,OAAY,UAAU,CAAC,EAAI,EAG7EL,GAAQC,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,CAAC,CAAC,EAAI,IAAMJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,EAAIJ,EAAUG,EAAIC,EAAS,EAAE,CAAC,GAAG,cAMzf,GAAI,CAACN,EAASC,CAAI,EAChB,MAAM,UAAU,6BAA6B,EAG/C,OAAOA,CACT,CCxBA,SAASM,EAAGC,EAASC,EAAKH,EAAQ,CAChCE,EAAUA,GAAW,GACrB,IAAIE,EAAOF,EAAQ,SAAWA,EAAQ,KAAOV,KAK7C,GAHAY,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,GAC3BA,EAAK,CAAC,EAAIA,EAAK,CAAC,EAAI,GAAO,IAEvBD,EAAK,CACPH,EAASA,GAAU,EAEnB,QAASH,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxBM,EAAIH,EAASH,CAAC,EAAIO,EAAKP,CAAC,EAG1B,OAAOM,CACR,CAED,OAAOL,EAAUM,CAAI,CACvB,CCRO,SAASC,GAAc,CAC5B,OAAOJ,EAAG,CACZ","x_google_ignoreList":[0,1,2,3,4]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router-0f7d4714.js","sources":["../../../panel/plugins/console/src/services/TopProgressBar.ts","../../../panel/plugins/console/src/config/router.ts"],"sourcesContent":["class TopProgressBar {\n private element: HTMLElement | null = null;\n private timer: number | null = null;\n private progress: number = 0;\n private isDone: boolean = false;\n private hideTimeout: number | null = null;\n\n constructor() {\n this.init();\n }\n\n private init() {\n if (typeof document === \"undefined\") return;\n\n if (document.getElementById(\"top-progress-bar\")) {\n this.element = document.getElementById(\"top-progress-bar\");\n return;\n }\n\n this.element = document.createElement(\"div\");\n this.element.id = \"top-progress-bar\";\n document.body.appendChild(this.element);\n }\n\n start() {\n if (!this.element) this.init();\n\n this.isDone = false;\n this.progress = 0;\n\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (this.element) {\n this.element.classList.add(\"active\");\n this.element.style.width = \"0%\";\n this.element.style.opacity = \"1\";\n }\n\n this.inc();\n }\n\n private inc() {\n if (this.isDone) return;\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n let amount = 0;\n if (this.progress >= 0 && this.progress < 0.2) {\n amount = 0.1;\n } else if (this.progress >= 0.2 && this.progress < 0.5) {\n amount = 0.04;\n } else if (this.progress >= 0.5 && this.progress < 0.8) {\n amount = 0.02;\n } else if (this.progress >= 0.8 && this.progress < 0.99) {\n amount = 0.005;\n }\n\n this.progress += amount;\n\n if (this.progress > 0.994) {\n this.progress = 0.994;\n }\n\n if (this.element) {\n this.element.style.width = `${this.progress * 100}%`;\n }\n\n this.timer = window.setTimeout(() => {\n this.inc();\n }, 200);\n }\n\n done() {\n this.isDone = true;\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n\n if (this.element) {\n this.element.style.width = \"100%\";\n\n this.hideTimeout = window.setTimeout(() => {\n if (this.element) {\n this.element.style.opacity = \"0\";\n this.element.classList.remove(\"active\");\n\n setTimeout(() => {\n if (this.element && !this.element.classList.contains(\"active\")) {\n this.element.style.width = \"0%\";\n }\n }, 400);\n }\n }, 1000);\n }\n }\n}\n\nexport const topProgressBar = new TopProgressBar();\n","import { topProgressBar } from \"@/services/TopProgressBar\";\nimport { useAppStateStore } from \"@/stores/useAppStateStore\";\nimport type { LoginUserInfo } from \"@/types/user\";\nimport type { Component } from \"vue\";\nimport {\n createRouter,\n createWebHashHistory,\n type RouteLocationNormalized,\n type RouteRecordRaw\n} from \"vue-router\";\n\nexport interface RouterMetaInfo {\n icon?: Component | string;\n mainMenu?: boolean;\n permission?: number;\n redirect?:\n | string\n | ((userInfo: LoginUserInfo | undefined,\n to: RouteLocationNormalized,\n from: RouteLocationNormalized\n ) => string);\n customClass?: string[];\n condition?: () => boolean;\n public?: boolean;\n immersive?: boolean;\n breadcrumbs?: Array<{\n name: string;\n path: string;\n mainMenu?: boolean;\n permission: number;\n }>;\n}\n\nexport interface RouterConfig {\n path: string;\n name: string;\n component?: any;\n children?: RouterConfig[];\n meta: RouterMetaInfo;\n redirect?:\n | string\n | ((\n userInfo: LoginUserInfo,\n to: RouteLocationNormalized,\n from: RouteLocationNormalized\n ) => string);\n}\n\nexport enum ROLE {\n // eslint-disable-next-line no-unused-vars\n ADMIN = 10,\n // eslint-disable-next-line no-unused-vars\n USER = 1,\n // eslint-disable-next-line no-unused-vars\n GUEST = 0\n}\n\n// The base routes belong to the `console` plugin. Keeping the router itself in\n// core lets every plugin register routes before the Vue app is mounted.\nconst originRouterConfig: RouterConfig[] = [];\n\nconst router = createRouter({\n history: createWebHashHistory(),\n routes: originRouterConfig as RouteRecordRaw[]\n});\n\nrouter.beforeEach(async (to, from, next) => {\n topProgressBar.start();\n const { state, updateUserInfo, isAdmin, authEnabled } = useAppStateStore();\n\n // Without the user plugin every visitor is an anonymous administrator.\n const requiresLogin = authEnabled.value;\n const userPermission = state.userInfo?.permission ?? 0;\n const toPagePermission = Number(to.meta.permission ?? 0);\n const fromRoutePath = router.currentRoute.value.path.trim();\n const toRoutePath = to.path.trim();\n console.info(\n \"Router Changed:\",\n fromRoutePath,\n \"->\",\n toRoutePath,\n \"\\nMyPermission:\",\n userPermission,\n \"toPagePermission:\",\n toPagePermission\n );\n\n if (to.meta?.redirect) {\n if (typeof to.meta.redirect === \"function\") {\n const userInfo = state.userInfo;\n return next(to.meta.redirect(userInfo, to, from));\n }\n return next(to.meta.redirect as string);\n }\n\n if (toRoutePath === \"/sso/callback\") {\n try {\n await updateUserInfo();\n return next(isAdmin.value ? \"/\" : \"/customer\");\n } catch {\n return next(\"/login\");\n }\n }\n\n if (\n toRoutePath.startsWith(\"/sso/\") ||\n to.meta.public === true ||\n [\"/login\", \"/404\"].includes(toRoutePath)\n ) {\n return next();\n }\n\n if (!to.name) return next(\"/404\");\n\n if (requiresLogin && !state.userInfo?.token) return next(\"/login\");\n\n if (toPagePermission > userPermission && userPermission !== ROLE.ADMIN) {\n return next(\"/customer\");\n }\n\n if (toPagePermission <= userPermission) {\n next();\n } else {\n next(\"/404\");\n }\n});\n\nrouter.afterEach(() => {\n topProgressBar.done();\n});\n\nexport { originRouterConfig, router };\n"],"names":["TopProgressBar","amount","topProgressBar","ROLE","originRouterConfig","router","createRouter","createWebHashHistory","to","from","next","state","updateUserInfo","isAdmin","authEnabled","useAppStateStore","requiresLogin","userPermission","_a","toPagePermission","fromRoutePath","toRoutePath","_b","userInfo","_c"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-01dda668.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shared-f2e37690.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAppConfigStore-289073ec.js","sources":["../../../panel/plugins/console/src/assets/logo.svg","../../../panel/plugins/console/src/assets/logo_b.svg","../../../panel/plugins/console/src/services/apis/appearance.ts","../../../panel/plugins/console/src/stores/useAppConfigStore.ts"],"sourcesContent":["export default \"__VITE_ASSET__c2b3a5f0__\"","export default \"__VITE_ASSET__b23f8509__\"","import { useDefineApi } from \"@/stores/useDefineApi\";\n\nexport interface PanelAppearance {\n pageTitle: string;\n logoImage: string;\n logoImageLight?: string;\n logoImageDark?: string;\n backgroundImage: string;\n}\n\n/** Public: the shell reads it before authentication is restored. */\nexport const getAppearance = useDefineApi<unknown, PanelAppearance>({\n url: \"/api/overview/appearance\",\n method: \"GET\"\n});\n","/* eslint-disable no-unused-vars */\nimport logo from \"@/assets/logo.svg\";\nimport logoB from \"@/assets/logo_b.svg\";\nimport { getCurrentLang, setLanguage } from \"@/lang/i18n\";\nimport { AppTheme, THEME_AUTO_MIGRATED_KEY, THEME_KEY } from \"@/types/const\";\nimport { createGlobalState, useBreakpoints, useLocalStorage, usePreferredDark } from \"@vueuse/core\";\nimport { getAppearance, type PanelAppearance } from \"@/services/apis/appearance\";\nimport { computed, onMounted, reactive, ref, watch } from \"vue\";\n\n/**\n * Older builds defaulted to LIGHT and wrote that value on the very first visit,\n * so an upgraded browser keeps rendering the light background even on a dark\n * system. Rewrite that one stored value to AUTO, once: a light theme picked\n * after this has run is left alone.\n */\nconst migrateLegacyLightDefault = () => {\n try {\n if (localStorage.getItem(THEME_AUTO_MIGRATED_KEY)) return;\n localStorage.setItem(THEME_AUTO_MIGRATED_KEY, \"1\");\n if (Number(localStorage.getItem(THEME_KEY)) === AppTheme.LIGHT) {\n localStorage.setItem(THEME_KEY, String(AppTheme.AUTO));\n }\n } catch {\n // Storage can be unavailable (private mode, blocked cookies): nothing to migrate.\n }\n};\n\nmigrateLegacyLightDefault();\n\nexport const useAppConfigStore = createGlobalState(() => {\n const isPreferredDark = usePreferredDark();\n\n const appConfig = reactive({\n logoImage: \"\",\n logoImageLight: undefined as string | undefined,\n logoImageDark: undefined as string | undefined\n });\n\n const isDarkTheme = computed(() => {\n if (currentTheme.value === AppTheme.DARK) return true;\n if (currentTheme.value === AppTheme.AUTO) return isPreferredDark.value;\n return false;\n });\n\n const logoImage = computed(() => {\n const themedLogo = isDarkTheme.value ? appConfig.logoImageDark : appConfig.logoImageLight;\n return (themedLogo ?? appConfig.logoImage) || (isDarkTheme.value ? logo : logoB);\n });\n\n // Default to AUTO so a fresh visit follows the system dark mode\n // (index.html's loading screen already does the same).\n const currentTheme = useLocalStorage<AppTheme>(THEME_KEY, AppTheme.AUTO);\n\n const hasBgImage = ref(false);\n\n /** Desktop uses the sidebar/header layout; phones keep the compact navigation. */\n const breakpoints = useBreakpoints({ sidebar: 993 });\n const isWideEnoughForSidebar = breakpoints.greaterOrEqual(\"sidebar\");\n const useSidebarLayout = computed(() => isWideEnoughForSidebar.value);\n const sidebarOpen = useLocalStorage(\"app-sidebar-open\", true);\n const isSidebarOpen = computed(() => useSidebarLayout.value && sidebarOpen.value);\n\n const toggleSidebar = () => {\n sidebarOpen.value = !sidebarOpen.value;\n };\n\n const clearBackgroundImage = () => {\n const body = document.querySelector(\"body\");\n if (!body) return;\n body.style.removeProperty(\"background-image\");\n body.style.removeProperty(\"background-size\");\n body.style.removeProperty(\"background-position\");\n body.style.removeProperty(\"background-repeat\");\n body.classList.remove(\"app-light-extend-theme\", \"app-dark-extend-theme\");\n hasBgImage.value = false;\n };\n\n const setBackgroundImage = (url: string) => {\n if (!url) {\n clearBackgroundImage();\n return;\n }\n const body = document.querySelector(\"body\");\n if (body) {\n body.style.backgroundSize = \"cover\";\n body.style.backgroundPosition = \"center\";\n body.style.backgroundRepeat = \"no-repeat\";\n if (isDarkTheme.value) {\n body.style.backgroundImage = `linear-gradient(135deg, rgba(0,0,0,0.65), rgba(0,0,0,0.65) 100%), url(${url})`;\n body.classList.remove(\"app-light-extend-theme\");\n body.classList.add(\"app-dark-extend-theme\");\n } else {\n body.style.backgroundImage = `linear-gradient(135deg, rgba(220,220,220,0.3), rgba(53,53,53,0.3) 100%), url(${url})`;\n body.classList.remove(\"app-dark-extend-theme\");\n body.classList.add(\"app-light-extend-theme\");\n }\n\n hasBgImage.value = true;\n }\n };\n\n const setLight = () => {\n document.body.classList.add(\"app-light-theme\");\n document.body.classList.remove(\"app-dark-theme\");\n };\n\n const setDark = () => {\n document.body.classList.add(\"app-dark-theme\");\n document.body.classList.remove(\"app-light-theme\");\n };\n\n const resetTheme = () => (currentTheme.value = AppTheme.AUTO);\n\n const initAppTheme = async () => {\n if (\n isNaN(currentTheme.value) ||\n currentTheme.value < AppTheme.AUTO ||\n currentTheme.value > AppTheme.DARK\n ) {\n resetTheme();\n }\n const fn = {\n [AppTheme.AUTO]: () => (isPreferredDark.value ? setDark() : setLight()),\n [AppTheme.LIGHT]: () => setLight(),\n [AppTheme.DARK]: () => setDark()\n };\n fn[currentTheme.value]?.();\n\n const { value: appearance } = await getAppearance().execute();\n setLogoImages(appearance);\n setBackgroundImage(appearance?.backgroundImage || \"\");\n };\n\n const setTheme = (t: AppTheme) => {\n currentTheme.value = t;\n initAppTheme();\n };\n\n const changeLanguage = (lang: string) => {\n setLanguage(lang);\n };\n\n const getCurrentLanguage = () => {\n return getCurrentLang() ?? \"en_us\";\n };\n\n const setLogoImage = (url: string) => {\n appConfig.logoImage = url;\n };\n\n const setLogoImages = (appearance?: PanelAppearance) => {\n setLogoImage(appearance?.logoImage || \"\");\n appConfig.logoImageLight = appearance?.logoImageLight;\n appConfig.logoImageDark = appearance?.logoImageDark;\n };\n\n watch(isPreferredDark, () => {\n if (currentTheme.value === AppTheme.AUTO) {\n initAppTheme();\n }\n });\n\n onMounted(async () => {\n try {\n const { value: appearance } = await getAppearance().execute();\n setLogoImages(appearance);\n } catch (error) {\n console.error(\"Failed to load appearance settings:\", error);\n }\n });\n\n return {\n appConfig,\n logoImage,\n hasBgImage,\n useSidebarLayout,\n isSidebarOpen,\n toggleSidebar,\n setLogoImage,\n changeLanguage,\n getCurrentLanguage,\n isDarkTheme,\n initAppTheme,\n setTheme,\n clearBackgroundImage,\n setBackgroundImage,\n currentTheme\n };\n});\n"],"names":["logo","logoB","getAppearance","useDefineApi","migrateLegacyLightDefault","THEME_AUTO_MIGRATED_KEY","THEME_KEY","AppTheme","useAppConfigStore","createGlobalState","isPreferredDark","usePreferredDark","appConfig","reactive","isDarkTheme","computed","currentTheme","logoImage","useLocalStorage","hasBgImage","ref","isWideEnoughForSidebar","useBreakpoints","useSidebarLayout","sidebarOpen","isSidebarOpen","toggleSidebar","clearBackgroundImage","body","setBackgroundImage","url","setLight","setDark","resetTheme","initAppTheme","fn","_a","appearance","setLogoImages","setTheme","t","changeLanguage","lang","setLanguage","getCurrentLanguage","getCurrentLang","setLogoImage","watch","onMounted","error"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as o}from"./router-0f7d4714.js";import{c9 as u}from"./vue-2433bd89.js";function c(){const t=u();return{getRouteParamsUrl:()=>t.fullPath.split("?")[1]||"",toPage:r=>{const e={...r};return e.query={...t.query||{},...r.query||{}},o.push(e)}}}export{c as u};
|
|
2
|
-
//# sourceMappingURL=useAppRouters-5f58db32.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAppRouters-5f58db32.js","sources":["../../../panel/plugins/console/src/hooks/useAppRouters.ts"],"sourcesContent":["import { router } from \"@/config/router\";\nimport { useRoute, type RouteLocationPathRaw } from \"vue-router\";\n\nexport function useAppRouters() {\n const route = useRoute();\n\n const getRouteParamsUrl = () => {\n return route.fullPath.split(\"?\")[1] || \"\";\n };\n\n const toPage = (params: RouteLocationPathRaw) => {\n const tmp = {\n ...params\n };\n tmp.query = {\n ...(route.query || {}),\n ...(params.query || {})\n };\n\n return router.push(tmp);\n };\n\n return {\n getRouteParamsUrl,\n toPage\n };\n}\n"],"names":["useAppRouters","route","useRoute","params","tmp","router"],"mappings":"gFAGO,SAASA,GAAgB,CAC9B,MAAMC,EAAQC,IAkBP,MAAA,CACL,kBAjBwB,IACjBD,EAAM,SAAS,MAAM,GAAG,EAAE,CAAC,GAAK,GAiBvC,OAdcE,GAAiC,CAC/C,MAAMC,EAAM,CACV,GAAGD,CAAA,EAEL,OAAAC,EAAI,MAAQ,CACV,GAAIH,EAAM,OAAS,CAAC,EACpB,GAAIE,EAAO,OAAS,CAAC,CAAA,EAGhBE,EAAO,KAAKD,CAAG,CAAA,CAKtB,CAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAppStateStore-a644582a.js","sources":["../../../panel/plugins/console/src/services/apis/user.ts","../../../panel/plugins/console/src/services/apis/index.ts","../../../panel/plugins/console/src/stores/useAppStateStore.ts"],"sourcesContent":["import { usePluginService } from \"@/plugin/context\";\nimport type { BaseUserInfo, EditUserInfo, LoginUserInfo, UserInstance } from \"@/types/user\";\nimport type { Ref } from \"vue\";\n\n/**\n * Facade over the account API, which is owned by the \"user\" panel plugin.\n *\n * The console implementation and other plugins keep importing these names from\n * `@/services/apis`; the real definitions are registered by the plugin as the\n * `user.api` service and resolved at call time, so unloading the plugin takes\n * the API with it. Without the plugin the panel runs unauthenticated and\n * nothing should be calling these — guard with `isUserPluginLoaded()` or with\n * `useAppStateStore().authEnabled`.\n *\n * Imports `@/plugin/context` rather than `@/plugin` on purpose: the barrel pulls\n * the whole card and route registry into the app entry graph.\n */\n\nexport interface ApiCall<P, T> {\n isLoading: Ref<boolean>;\n state: Ref<T | undefined>;\n isReady: Ref<boolean>;\n execute: (config?: P & Record<string, any>) => Promise<Ref<T | undefined>>;\n}\n\nexport interface SsoPublicConfig {\n enabled: boolean;\n onlyMode: boolean;\n autoRedirect: boolean;\n providerName: string;\n iconUrl: string;\n}\n\nexport interface UserPluginApi {\n loginUser: () => ApiCall<\n { data: { username: string; password: string; code?: string } } | undefined,\n string\n >;\n loginPageInfo: () => ApiCall<any, { loginInfo: string; isFirstStartup: boolean }>;\n logoutUser: () => ApiCall<any, any>;\n userInfoApi: () => ApiCall<any, LoginUserInfo>;\n userInfoApiAdvanced: () => ApiCall<\n { params: { uuid: string; advanced: boolean } },\n BaseUserInfo\n >;\n getUserInfo: () => ApiCall<\n { params: { userName: string; page: number; page_size: number; role: string } },\n { total: number; pageSize: number; page: number; maxPage: number; data: BaseUserInfo[] }\n >;\n deleteUser: () => ApiCall<{ data: string[] }, any>;\n addUser: () => ApiCall<\n { data: { username: string; password: string; permission: number } },\n { uuid: string }\n >;\n editUserInfo: () => ApiCall<{ data: { config: EditUserInfo; uuid: string } }, boolean>;\n updateUserInstance: () => ApiCall<\n { data: { config: { instances: UserInstance[] }; uuid: string } },\n boolean\n >;\n setUserApiKey: () => ApiCall<{ data: { enable: boolean } }, string>;\n updatePassword: () => ApiCall<{ data: { passWord: string } }, boolean>;\n bind2FA: () => ApiCall<any, string>;\n confirm2FA: () => ApiCall<{ data: { enable: boolean; TOTPCode: string } }, undefined>;\n queryUsername: () => ApiCall<\n { params: { username: string } },\n { uuid?: string; userName?: string }\n >;\n ssoConfig: () => ApiCall<any, SsoPublicConfig | null>;\n ssoBindLogin: () => ApiCall<\n { data: { username: string; password: string; code?: string } },\n string\n >;\n ssoBindCurrent: () => ApiCall<any, boolean>;\n ssoUnbind: () => ApiCall<{ data: { uuid: string } }, boolean>;\n}\n\nexport function isUserPluginLoaded(): boolean {\n return usePluginService(\"user\") != null;\n}\n\nfunction resolveUserApi(): UserPluginApi {\n const user = usePluginService<{ api: UserPluginApi }>(\"user\");\n if (!user) {\n throw new Error('Panel frontend plugin \"user\" is not loaded.');\n }\n return user.api;\n}\n\nexport const loginUser = () => resolveUserApi().loginUser();\nexport const loginPageInfo = () => resolveUserApi().loginPageInfo();\nexport const logoutUser = () => resolveUserApi().logoutUser();\nexport const userInfoApi = () => resolveUserApi().userInfoApi();\nexport const userInfoApiAdvanced = () => resolveUserApi().userInfoApiAdvanced();\nexport const getUserInfo = () => resolveUserApi().getUserInfo();\nexport const deleteUser = () => resolveUserApi().deleteUser();\nexport const addUser = () => resolveUserApi().addUser();\nexport const editUserInfo = () => resolveUserApi().editUserInfo();\nexport const updateUserInstance = () => resolveUserApi().updateUserInstance();\nexport const setUserApiKey = () => resolveUserApi().setUserApiKey();\nexport const updatePassword = () => resolveUserApi().updatePassword();\nexport const bind2FA = () => resolveUserApi().bind2FA();\nexport const confirm2FA = () => resolveUserApi().confirm2FA();\nexport const queryUsername = () => resolveUserApi().queryUsername();\nexport const ssoConfig = () => resolveUserApi().ssoConfig();\nexport const ssoBindLogin = () => resolveUserApi().ssoBindLogin();\nexport const ssoBindCurrent = () => resolveUserApi().ssoBindCurrent();\nexport const ssoUnbind = () => resolveUserApi().ssoUnbind();\n","import { useDefineApi } from \"@/stores/useDefineApi\";\nimport type { PanelStatus, Settings } from \"@/types\";\nexport { addNode, connectNode, deleteNode, editNode, remoteNodeList } from \"./node\";\nexport { remoteInstances } from \"./instance\";\n// Account APIs live in the \"user\" plugin; these are facades over its\n// `user.api` service so existing call sites keep working.\nexport {\n addUser,\n bind2FA,\n confirm2FA,\n deleteUser,\n editUserInfo,\n getUserInfo,\n isUserPluginLoaded,\n loginPageInfo,\n loginUser,\n logoutUser,\n queryUsername,\n setUserApiKey,\n ssoBindCurrent,\n ssoBindLogin,\n ssoConfig,\n ssoUnbind,\n updatePassword,\n updateUserInstance,\n userInfoApi,\n userInfoApiAdvanced,\n type SsoPublicConfig\n} from \"./user\";\n\nexport const panelStatus = useDefineApi<any, PanelStatus>({\n url: \"/api/auth/status\",\n method: \"GET\"\n});\n\nexport const settingInfo = useDefineApi<any, Settings>({\n url: \"/api/overview/setting\"\n});\n\nexport const setSettingInfo = useDefineApi<\n | {\n data: Partial<Settings>;\n }\n | undefined,\n string\n>({\n url: \"/api/overview/setting\",\n method: \"PUT\"\n});\n\nexport const overviewInfo = useDefineApi<any, IPanelOverviewResponse>({\n url: \"/api/overview\"\n});\n","import { LANGUAGE_KEY, toStandardLang } from \"@/lang/i18n\";\nimport { setAuthToken } from \"@/services/apiService\";\nimport { panelStatus } from \"@/services/apis\";\nimport { isUserPluginLoaded, userInfoApi } from \"@/services/apis/user\";\nimport type { PanelStatus } from \"@/types\";\nimport type { LoginUserInfo } from \"@/types/user\";\nimport { createGlobalState, useLocalStorage } from \"@vueuse/core\";\nimport _ from \"lodash\";\nimport { computed, reactive } from \"vue\";\n\ninterface AppStateInfo extends PanelStatus {\n userInfo: LoginUserInfo | null;\n}\n\n/**\n * Identity used when the \"user\" plugin is absent. Authentication then lives\n * nowhere, the backend treats every request as an administrator, and the\n * frontend has to agree so the router lets the user in without a login page.\n */\nconst ANONYMOUS_ADMIN = {\n uuid: \"\",\n userName: \"\",\n permission: 10,\n token: \"\",\n instances: []\n} as unknown as LoginUserInfo;\n\nexport const useAppStateStore = createGlobalState(() => {\n const language = useLocalStorage(LANGUAGE_KEY, toStandardLang(window.navigator.language));\n const state: AppStateInfo = reactive<AppStateInfo>({\n userInfo: null,\n versionChange: false,\n language: language.value,\n settings: {\n canFileManager: false,\n allowChangeCmd: false,\n allowJavaManager: true\n }\n });\n\n const cloneState = (): AppStateInfo => {\n const tmp = _.cloneDeep(state);\n return reactive(tmp);\n };\n\n /** False when the \"user\" plugin is not installed: the panel has no login. */\n const authEnabled = computed(() => isUserPluginLoaded());\n const isAdmin = computed(() => state.userInfo?.permission === 10);\n const isLogged = computed(() => Number(state.userInfo?.permission) > 0);\n const setStateUserInfo = (userInfo: LoginUserInfo | null) => {\n state.userInfo = userInfo;\n setAuthToken(userInfo?.token);\n };\n\n const updateUserInfo = async (userInfo?: LoginUserInfo) => {\n if (!authEnabled.value) {\n setStateUserInfo({ ...ANONYMOUS_ADMIN });\n return;\n }\n try {\n if (userInfo) {\n setStateUserInfo(userInfo);\n } else {\n const info = await userInfoApi().execute();\n if (info.value) {\n setStateUserInfo(info.value);\n } else {\n throw new Error(\"Failed to get user information from server!\");\n }\n }\n } catch (err: any) {\n console.error(err);\n throw new Error(err.message);\n }\n };\n\n const updatePanelStatus = async () => {\n const { state } = useAppStateStore();\n const panelStatusRes = await panelStatus().execute();\n state.versionChange = panelStatusRes.value?.versionChange ? true : false;\n if (panelStatusRes.value?.settings) {\n state.settings = panelStatusRes.value?.settings;\n }\n state.language = language.value = toStandardLang(panelStatusRes.value?.language);\n console.info(\"Window.navigator.language:\", window.navigator.language);\n console.info(\"Panel Language:\", state.language);\n };\n\n return {\n cloneState,\n updateUserInfo,\n updatePanelStatus,\n authEnabled,\n isAdmin,\n isLogged,\n state\n };\n});\n"],"names":["isUserPluginLoaded","usePluginService","resolveUserApi","user","loginUser","loginPageInfo","logoutUser","userInfoApi","userInfoApiAdvanced","getUserInfo","deleteUser","addUser","editUserInfo","updateUserInstance","setUserApiKey","updatePassword","bind2FA","confirm2FA","ssoConfig","ssoBindLogin","ssoBindCurrent","ssoUnbind","panelStatus","useDefineApi","overviewInfo","ANONYMOUS_ADMIN","useAppStateStore","createGlobalState","language","useLocalStorage","LANGUAGE_KEY","toStandardLang","state","reactive","cloneState","tmp","_","authEnabled","computed","isAdmin","_a","isLogged","setStateUserInfo","userInfo","setAuthToken","info","err","panelStatusRes","_b","_c","_d"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAppToolsStore-3a911226.js","sources":["../../../panel/plugins/console/src/stores/useAppToolsStore.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport { createGlobalState } from \"@vueuse/core\";\nimport { reactive } from \"vue\";\n\nexport const useAppToolsStore = createGlobalState(() => {\n const state = reactive({\n inputDialog: {\n title: \"\",\n show: false,\n resolve: (value: any) => {},\n reject: (value: any) => {}\n },\n showUserInfoDialog: false\n });\n\n const openInputDialog = (title: string) => {\n state.inputDialog.title = title;\n state.inputDialog.show = true;\n return new Promise<any>((resolve, reject) => {\n state.inputDialog.resolve = resolve;\n state.inputDialog.reject = reject;\n });\n };\n\n return {\n state,\n openInputDialog\n };\n});\n"],"names":["useAppToolsStore","createGlobalState","state","reactive","value","title","resolve","reject"],"mappings":"+CAIa,MAAAA,EAAmBC,EAAkB,IAAM,CACtD,MAAMC,EAAQC,EAAS,CACrB,YAAa,CACX,MAAO,GACP,KAAM,GACN,QAAUC,GAAe,CAAC,EAC1B,OAASA,GAAe,CAAC,CAC3B,EACA,mBAAoB,EAAA,CACrB,EAWM,MAAA,CACL,MAAAF,EACA,gBAXuBG,IACvBH,EAAM,YAAY,MAAQG,EAC1BH,EAAM,YAAY,KAAO,GAClB,IAAI,QAAa,CAACI,EAASC,IAAW,CAC3CL,EAAM,YAAY,QAAUI,EAC5BJ,EAAM,YAAY,OAASK,CAAA,CAC5B,EAKD,CAEJ,CAAC"}
|