diff --git a/.DS_Store b/.DS_Store index dae9c7d0dcdc21ba5d17ba2e3a4c0152f1cf5af3..7c151520d1ec9af8f44f958c18c4acaf27efe015 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/packages/check-file-name/main.js b/packages/check-file-name/main.js new file mode 100644 index 0000000000000000000000000000000000000000..6b88848271172857a66582f8931ada937b282bb1 --- /dev/null +++ b/packages/check-file-name/main.js @@ -0,0 +1,28 @@ +var fs = require('fs-extra'); +var file = require('./util/file'); + +module.exports = { + load() { + }, + + unload() { + }, + + replaceDirUuid: function (path, dbpath) { + Editor.log('开始检查:' + path); + file.findDirUuid(path); + Editor.log('èµ„æºæ£€æŸ¥å®Œæˆ'); + }, + + messages: { + 'checkFileName'() { + var uuids = Editor.Selection.curSelection('asset'); + uuids.forEach((uuid) => { + var dir_path = Editor.assetdb._uuid2path[uuid]; + if (fs.existsSync(dir_path)) { + this.replaceDirUuid(dir_path, Editor.assetdb.uuidToUrl(uuid)); + } + }); + }, + }, +} \ No newline at end of file diff --git a/packages/check-file-name/package-lock.json b/packages/check-file-name/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..d594378507d11c50af4a85363a384147245e859d --- /dev/null +++ b/packages/check-file-name/package-lock.json @@ -0,0 +1,30 @@ +{ + "name": "check-file-name", + "version": "0.0.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "0.0.1", + "dependencies": { + "node-uuid": "1.4.8" + } + }, + "node_modules/node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=", + "deprecated": "Use uuid module instead", + "bin": { + "uuid": "bin/uuid" + } + } + }, + "dependencies": { + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + } + } +} diff --git a/packages/check-file-name/package.json b/packages/check-file-name/package.json new file mode 100644 index 0000000000000000000000000000000000000000..7aa059e7c7e14baf0c13afe51ff9d35cf9fe80d6 --- /dev/null +++ b/packages/check-file-name/package.json @@ -0,0 +1,15 @@ +{ + "name": "check-file-name", + "version": "0.0.1", + "description": "check-file-name", + "author": "Cocos Creator", + "main": "main.js", + "main-menu": { + "i18n:MAIN_MENU.package.title/check-file-name": { + "message": "check-file-name:checkFileName" + } + }, + "dependencies": { + "node-uuid": "1.4.8" + } +} diff --git a/packages/check-file-name/util/file.js b/packages/check-file-name/util/file.js new file mode 100644 index 0000000000000000000000000000000000000000..d9cd1467ce432c25e38a9d86fb9389524c500386 --- /dev/null +++ b/packages/check-file-name/util/file.js @@ -0,0 +1,74 @@ +var fs = require("fs-extra"); +var path = require("path"); +var AppName = "" +module.exports = { + /** + * 递归目录 检查文件å + * å‚考 https://docs.cocos.com/creator/manual/zh/advanced-topics/meta.html + */ + findDirUuid: function (dir) { + if(AppName == '') { + AppName = this.getRootDirName(dir); + if(AppName != "") { + Editor.log("AppName: " + AppName); + } + } + var stat = fs.statSync(dir); + if (!stat.isDirectory()) { + return; + } + var subpaths = fs.readdirSync(dir), + subpath; + for (var i = 0; i < subpaths.length; ++i) { + if (subpaths[i][0] === ".") { + continue; + } + subpath = path.join(dir, subpaths[i]); + stat = fs.statSync(subpath); + if (stat.isDirectory()) { + this.findDirUuid(subpath); + } else if (stat.isFile()) { + var metastr = subpath.substr(subpath.length - 5, 5); + if (metastr != ".meta") { + this.check(AppName, subpaths[i]); + } + } + } + }, + + getRootDirName: function (path) { + let pArr = path.split("/"); + let assteIndex = -1; + pArr.find((item, index) => { + if(item == 'assets') { + assteIndex = index; + return true + } else { + return false + } + }) + if(assteIndex > 0 && assteIndex<(pArr.length-1)) { + return pArr[assteIndex + 1]; + } else { + return "" + } + }, + + check: (appName, filePath) => { + if(escape(filePath).indexOf("%u")>=0) { + Editor.log(`检测到[䏿–‡æˆ–䏿–‡ç¬¦å·]命å的文件: ${filePath}`); + } + + if (!/^\S*$/.test(filePath)) { + Editor.log(`检测到[包å«ç©ºæ ¼]命å的文件: ${filePath}`); + } + + if (/[-]/.test(filePath)) { + Editor.log(`检测到å˜åœ¨[包å«å‡å·ï¼ˆ-)]命å的文件: ${filePath}`); + } + + if(filePath.indexOf(appName) == -1 && (filePath.endsWith(".js") || filePath.endsWith(".ts"))) { + Editor.log(`检测到[ä¸åŒ…å«åŒ…å(${appName})]的文件: ${filePath}`); + } + } +}; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/.gitignore" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/.gitignore" new file mode 100644 index 0000000000000000000000000000000000000000..baaf5317ebfe15a155b962d02056e1c8ef95cdda --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/.gitignore" @@ -0,0 +1,2 @@ +# é…置文件 +config.json \ No newline at end of file diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/CHANGELOG.md" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/CHANGELOG.md" new file mode 100644 index 0000000000000000000000000000000000000000..c0ab77a8d778e2d09b48aaf869e422558e3fd89c --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/CHANGELOG.md" @@ -0,0 +1,30 @@ +### 1.3.0.20210929 + +1. 代ç 釿ž„ +2. 引入 eazax 框架 +3. 查找性能大幅æå‡ +4. 文件解æžä¼˜åŒ–,增强稳定性 +5. 去除「通过 uuid 查找ã€é¢æ¿ +6. åŠ å…¥æ£€æŸ¥æ›´æ–°æœºåˆ¶ + + + +### 1.2.0.20210405 + +1. ä¿®å¤â€œåŒå¼€ç¼–è¾‘å™¨å¡æ»â€çš„问题 +2. 代ç 优化,æé«˜æŸ¥æ‰¾é€Ÿåº¦ +3. å¢žåŠ å¤šè¯è¨€ï¼ˆè‹±è¯ï¼‰æ”¯æŒ +4. 支æŒè‡ªå®šä¹‰å¿«æ·é”®ï¼ˆè®¾ç½®é¢æ¿ï¼‰ + + + +### 1.1.0-20201112 + +1. å¢žåŠ â€œé€šè¿‡ uuid 查找â€åŠŸèƒ½ï¼ˆæ–°å¢žé¢æ¿ï¼‰ +2. 优化代ç + + + +### 1.0.0-20201103 + +1. 首次å‘布 diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/LICENSE" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/LICENSE" new file mode 100644 index 0000000000000000000000000000000000000000..330185a8e7f1f998d8d9d979bfa9e8d1defbb5fc --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/LICENSE" @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 陈皮皮 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/README.en.md" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/README.en.md" new file mode 100644 index 0000000000000000000000000000000000000000..60f8cbfbd07b640b231d4be0029b4a10bf87fc14 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/README.en.md" @@ -0,0 +1,111 @@ +# References Finder + +## Introduction + +[Cocos Creator Editor Extension] + +**Find asset references in seconds by one press.** + + + +## Open Source + +This extension is an open source project, here is the git repository: [https://gitee.com/ifaswind/ccc-references-finder](https://gitee.com/ifaswind/ccc-references-finder) + +If you like this project, don't forget to star [](https://gitee.com/ifaswind/ccc-references-finder/stargazers)! + +*If you have any usage problems, just create an issue on Gitee or add my WeChat `im_chenpipi` and leave a message.* + + + +## Screenshots + + + + + + + + + +## Environment + +Platform: Windowsã€macOS + +Engine: Cocos Creator 2.x + + + +## Download & Installation + +### Install from Cocos Store + +You can find this extension in Cocos Store now, click on *Extension -> Cocos Store* option to open the Cocos Store. + +Enter "**References Finder**" in the search bar, find it and then install it. + + + +*References Finder: [https://store.cocos.com/app/detail/2531](https://store.cocos.com/app/detail/2531)* + + + +### Download from git repository + +Click [here](https://gitee.com/ifaswind/ccc-references-finder/releases) or go to the release panel, download the latest version package of this extension. + +And then unzip the package: + +- Windows: Unzip to `C:\Users\${your username}\.CocosCreator\packages\` +- macOS: Unzip to `~/.CocosCreator/packages/` + +For example, on my Windows computer, the full path of `package.json` file should be `C:\Users\Shaun\.CocosCreator\packages\ccc-references-finder\package.json`. + + + +## Usage + +### Find Asset References + +1. Select any asset(s) in Asset Panel. + +2. Press the hotkey (The default is `F6`) or click on *Extension -> References Finder -> Find Selected* option to find references. + +3. Then all references of asset would be printed on Console Panel. + + + +### Settings + +Click on *Extension -> References Finder -> Setting* option to open the setting panel. + +- **Show Details**: Show more details(node, component, property) +- **Fold Result**: Fold result in one log + +In the **Hotkey** option, you can choose a hotkey(shortcut, for finding references of current selected asset) in preset list, or you can customize one in **Custom** option by yourself. + +One thing you should know, not every keys/keys-combinations can be used, because some keys/keys-combinations have been used by the system or Cocos Creator. + +*Accelerator reference: [https://www.electronjs.org/docs/api/accelerator](https://www.electronjs.org/docs/api/accelerator)* + +🥳 Enjoy! + + + +--- + + + +# å…¬ä¼—å· + +## èœé¸Ÿå°æ ˆ + +😺 æˆ‘æ˜¯é™ˆçš®çš®ï¼Œä¸€ä¸ªè¿˜åœ¨ä¸æ–å¦ä¹ 的游æˆå¼€å‘者,一个çƒçˆ±åˆ†äº«çš„ Cocos Star Writer。 + +🎨 这是我的个人公众å·ï¼Œä¸“注但ä¸ä»…é™äºŽæ¸¸æˆå¼€å‘å’Œå‰ç«¯æŠ€æœ¯åˆ†äº«ã€‚ + +💖 æ¯ä¸€ç¯‡åŽŸåˆ›éƒ½éžå¸¸ç”¨å¿ƒï¼Œä½ çš„å…³æ³¨å°±æ˜¯æˆ‘åŽŸåˆ›çš„åŠ¨åŠ›ï¼ + +> Input and output. + + \ No newline at end of file diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/README.md" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..b24100111a22f99ba6eabdd0ae3da37fc15ae66d --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/README.md" @@ -0,0 +1,115 @@ +# 引用查找器 + +## ä»‹ç» + +[Cocos Creator 编辑器扩展] + +**一键查找资æºçš„æ‰€æœ‰å¼•用,å¯ç²¾ç¡®åˆ°é¢„制体或场景ä¸çš„节点ã€ç»„件和属性(ä¸åŒ…括代ç ä¸çš„动æ€å¼•用)。** + + + +## å¼€æº + +本扩展项目完全开æºï¼Œä»“库地å€ï¼š[https://gitee.com/ifaswind/ccc-references-finder](https://gitee.com/ifaswind/ccc-references-finder) + +å¦‚æžœä½ è§‰å¾—è¿™ä¸ªé¡¹ç›®è¿˜ä¸é”™ï¼Œè¯·ä¸è¦å¿˜è®°ç‚¹ [](https://gitee.com/ifaswind/ccc-references-finder/stargazers)ï¼ + +*如有使用上的问题,å¯ä»¥åœ¨ Gitee ä»“åº“ä¸æ Issue æˆ–è€…æ·»åŠ æˆ‘çš„å¾®ä¿¡ `im_chenpipi` 并留言。* + + + +## 截图 + + + + + + + + + +## è¿è¡ŒçŽ¯å¢ƒ + +å¹³å°ï¼šWindowsã€macOS + +引擎:Cocos Creator 2.x + + + +## 下载 & 安装 + +### 扩展商店安装 + +本扩展已上架 Cocos 商店,点击 Cocos Creator 编辑器顶部èœå•æ ä¸çš„ *扩展 -> 扩展商店* å³å¯æ‰“开扩展商店。 + +在页é¢ä¸Šæ–¹çš„æœç´¢æ 䏿œç´¢â€œ**引用查找器**â€å°±å¯ä»¥æ‰¾åˆ°æœ¬æ’件,进入详情页å³å¯ç›´æŽ¥å®‰è£…(建议安装到全局)。 + + + +*引用查找器:[https://store.cocos.com/app/detail/2531](https://store.cocos.com/app/detail/2531)* + + + +### 自行下载安装 + +在[æ¤å¤„](https://gitee.com/ifaswind/ccc-references-finder/releases)或仓库å‘行版处下载最新的扩展压缩包。 + +下载完æˆåŽå°†åŽ‹ç¼©åŒ…è§£åŽ‹ï¼š + +- Windows:解压到 `C:\Users\${ä½ çš„ç”¨æˆ·å}\.CocosCreator\packages\` 目录下 +- macOS:解压到 `~/.CocosCreator/packages/` 目录下 + +以 Windows 为例,扩展的 `package.json` 文件在我的电脑上的完整目录为 `C:\Users\Shaun\.CocosCreator\packages\ccc-references-finder\package.json`。 + + + +## 使用说明 + +### 一键查找资æºå¼•用 + +安装本扩展åŽï¼Œåœ¨èµ„æºç®¡ç†å™¨ä¸é€‰ä¸ä»»æ„资æºï¼ŒæŒ‰ä¸‹å¿«æ·é”®ï¼ˆé»˜è®¤ä¸º `F6`)å³å¯èŽ·å–该资æºçš„æ‰€æœ‰å¼•用(ä¸åŒ…括代ç ä¸çš„动æ€å¼•用),结果将在控制å°ä¸ä»¥æ–‡æœ¬çš„æ–¹å¼æ‰“å°å‡ºæ¥ã€‚ + +> 查找快æ·é”®å¯è¿›å…¥æ‰©å±•çš„è®¾ç½®é¢æ¿è¿›è¡Œä¿®æ”¹ + + + +### 设置 + +点击编辑器顶部èœå•æ ä¸çš„ *扩展 -> 引用查找器 -> 设置* å³å¯æ‰“å¼€æ‰©å±•çš„è®¾ç½®é¢æ¿ã€‚ + +- **自动展开结果**:切æ¢ä¸åŒçš„结果展示方å¼ï¼ˆè‡ªåŠ¨å±•å¼€æˆ–æ‰‹åŠ¨å±•å¼€ï¼‰ +- **精确到组件属性**:引用信æ¯ç²¾ç¡®åˆ°é¢„制体或场景ä¸çš„节点上的组件和属性(有的è¯ï¼‰ + +åœ¨è®¾ç½®é¢æ¿ä¸ä½ å¯ä»¥æ›´æ¢å¿«é€ŸæŸ¥æ‰¾å¼•用的快æ·é”®ï¼Œä¹Ÿå¯ä»¥è‡ªå®šä¹‰ä¸€ä¸ªè‡ªå·±å–œæ¬¢çš„å¿«æ·é”®ã€‚ + +ä¸è¿‡éœ€è¦æ³¨æ„çš„æ˜¯ï¼Œå¹¶éžæ‰€æœ‰çš„æŒ‰é”®éƒ½å¯ä»¥ä½¿ç”¨ï¼Œå› 为有些快æ·é”®å·²è¢«ç³»ç»Ÿæˆ– Cocos Creator å 用。 + +*键盘快æ·é”®å‚考:[https://www.electronjs.org/docs/api/accelerator](https://www.electronjs.org/docs/api/accelerator)* + + + +--- + + + +# å…¬ä¼—å· + +## èœé¸Ÿå°æ ˆ + +😺 æˆ‘æ˜¯é™ˆçš®çš®ï¼Œä¸€ä¸ªè¿˜åœ¨ä¸æ–å¦ä¹ 的游æˆå¼€å‘者,一个çƒçˆ±åˆ†äº«çš„ Cocos Star Writer。 + +🎨 这是我的个人公众å·ï¼Œä¸“注但ä¸ä»…é™äºŽæ¸¸æˆå¼€å‘å’Œå‰ç«¯æŠ€æœ¯åˆ†äº«ã€‚ + +💖 æ¯ä¸€ç¯‡åŽŸåˆ›éƒ½éžå¸¸ç”¨å¿ƒï¼Œä½ çš„å…³æ³¨å°±æ˜¯æˆ‘åŽŸåˆ›çš„åŠ¨åŠ›ï¼ + +> Input and output. + + + + + +## 游æˆå¼€å‘交æµç¾¤ + +皮皮创建了一个**游æˆå¼€å‘交æµç¾¤**,供å°ä¼™ä¼´ä»¬äº¤æµå¼€å‘ç»éªŒã€é—®é¢˜æ±‚助和摸鱼(划掉)。 + +感兴趣的å°ä¼™ä¼´å¯ä»¥æ·»åŠ æˆ‘å¾®ä¿¡ `im_chenpipi` 并留言 `åŠ ç¾¤`。 \ No newline at end of file diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/i18n/en.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/i18n/en.js" new file mode 100644 index 0000000000000000000000000000000000000000..3a0ba2940954ba9fd2156a09954b58d133e13794 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/i18n/en.js" @@ -0,0 +1,55 @@ +module.exports = { + 'name': 'References Finder', + 'find': 'Find Current Selected', + 'find-panel': 'Find Panel', + 'settings': 'Settings', + 'check-update': 'Check Update', + // update + 'current-latest': 'Currently the latest version!', + 'has-new-version': 'New version found!', + 'local-version': 'Local version: ', + 'latest-version': 'Latest version: ', + 'git-releases': 'Releases: https://gitee.com/ifaswind/ccc-references-finder/releases', + 'cocos-store': 'Cocos Store: https://store.cocos.com/app/detail/2531', + // main + 'please-select-assets': 'Please select asset(s) in Asset Panel first', + 'invalid-uuid': 'Invalid uuid', + 'not-support-folder': 'Does not support folder', + 'find-asset-refs': 'Find references', + 'no-refs': 'No references found', + 'scene': 'Scene', + 'prefab': 'Prefab', + 'animation': 'Animation', + 'material': 'Material', + 'font': 'Font', + 'node': 'Node', + 'component': 'Component', + 'property': 'Property', + 'result': 'Reference result', + 'node-refs': 'Node References', + 'asset-refs': 'Asset References', + 'asset-info': 'Asset Info', + 'asset-type': 'Type: ', + 'asset-uuid': 'Uuid: ', + 'asset-url': 'Url: ', + 'asset-path': 'Path: ', + // settings + 'none': 'None', + 'select-key': 'Hotkey', + 'select-key-tooltip': 'Chose a hotkey to open the search bar quickly', + 'custom-key': 'Custom', + 'custom-key-placeholder': 'Choose a hotkey above or customize one by yourself', + 'custom-key-tooltip': 'You can also customize your own hotkey', + 'auto-check-update': 'Auto Check Update', + 'auto-check-update-tooltip': 'Check if there is a new version when the extension is loaded', + 'reference': '· Hotkey customization reference: ', + 'accelerator': 'Keyboard Shortcuts', + 'repository': '· Git repository of this extension: ', + 'apply': 'Apply', + 'quote-error': 'Do not use double quotes!', + 'custom-key-error': 'Please specify a hotkey!', + 'print-details': 'Show Details', + 'print-details-tooltip': 'Show more details(node, component, property)', + 'print-folding': 'Fold Result', + 'print-folding-tooltip': 'Fold result in one log', +}; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/i18n/zh.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/i18n/zh.js" new file mode 100644 index 0000000000000000000000000000000000000000..c37351655f87c9ca1cb7de755862ce4cbf3e2d68 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/i18n/zh.js" @@ -0,0 +1,55 @@ +module.exports = { + 'name': '引用查找器', + 'find': '查找当å‰é€‰ä¸èµ„æº', + 'find-panel': 'æŸ¥æ‰¾é¢æ¿', + 'settings': '设置', + 'check-update': '检查更新', + // update + 'current-latest': '当å‰å·²æ˜¯æœ€æ–°ç‰ˆæœ¬ï¼', + 'has-new-version': 'å‘现新版本ï¼', + 'local-version': '本地版本:', + 'latest-version': '最新版本:', + 'git-releases': 'å‘行版:https://gitee.com/ifaswind/ccc-references-finder/releases', + 'cocos-store': 'Cocos 商店:https://store.cocos.com/app/detail/2531', + // main + 'please-select-assets': '请先在资æºç®¡ç†å™¨ä¸é€‰æ‹©éœ€è¦æŸ¥æ‰¾å¼•用的资æº', + 'invalid-uuid': 'æ— æ•ˆçš„ uuid', + 'not-support-folder': 'æš‚ä¸æ”¯æŒæŸ¥æ‰¾æ–‡ä»¶å¤¹', + 'find-asset-refs': '查找资æºå¼•用', + 'no-refs': '没有找到该资æºçš„引用', + 'scene': '场景', + 'prefab': '预制体', + 'animation': '动画', + 'material': 'æè´¨', + 'font': 'å—体', + 'node': '节点', + 'component': '组件', + 'property': '属性', + 'result': '引用查找结果', + 'node-refs': '节点引用', + 'asset-refs': '资æºå¼•用', + 'asset-info': '资æºä¿¡æ¯', + 'asset-type': 'Type:', + 'asset-uuid': 'Uuid:', + 'asset-url': 'Url:', + 'asset-path': 'Path:', + // settings + 'none': 'æ— ', + 'select-key': 'å¿«æ·é”®', + 'select-key-tooltip': '选择一个快速打开æœç´¢æ 的快æ·é”®', + 'custom-key': '自定义', + 'custom-key-placeholder': '在上方选择一个快æ·é”®æˆ–自定义一个快æ·é”®', + 'custom-key-tooltip': '自定义快速打开æœç´¢æ 的快æ·é”®', + 'auto-check-update': '自动检查更新', + 'auto-check-update-tooltip': '扩展å¯åŠ¨æ—¶è‡ªåŠ¨æ£€æŸ¥æ˜¯å¦æœ‰æ–°ç‰ˆæœ¬', + 'reference': '· å¿«æ·é”®è‡ªå®šä¹‰è¯·å‚考:', + 'accelerator': '键盘快æ·é”®', + 'repository': '· 本扩展的 Git 仓库:', + 'apply': '应用', + 'quote-error': '请勿使用åŒå¼•å·ï¼', + 'custom-key-error': '请指定一个快æ·é”®ï¼', + 'print-details': '展示详情', + 'print-details-tooltip': '引用查找结果精确到节点ã€ç»„件和属性', + 'print-folding': '折å 结果', + 'print-folding-tooltip': 'å¼•ç”¨æŸ¥æ‰¾ç»“æžœå°†éœ€è¦æ‰‹åŠ¨å±•å¼€ï¼Œæ‹¯æ•‘ä½ çš„æŽ§åˆ¶å°', +}; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/search.png" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/search.png" new file mode 100644 index 0000000000000000000000000000000000000000..e2e7521b9a4a5289ce24eea6eb2109829377a2a5 Binary files /dev/null and "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/search.png" differ diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/settings.png" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/settings.png" new file mode 100644 index 0000000000000000000000000000000000000000..0ecfeec9c0f01184a72a463d7351961707750846 Binary files /dev/null and "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/settings.png" differ diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/update.png" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/update.png" new file mode 100644 index 0000000000000000000000000000000000000000..6d11595bc4ab1de63a6791effc3e8b1fad099387 Binary files /dev/null and "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/update.png" differ diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/version.png" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/version.png" new file mode 100644 index 0000000000000000000000000000000000000000..8f12e138cd648430ae52c2a63fa9e3fed0ac9456 Binary files /dev/null and "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/images/version.png" differ diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/jsconfig.json" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/jsconfig.json" new file mode 100644 index 0000000000000000000000000000000000000000..08b2afb5884db4f17323bf4103734c9128bf789d --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/jsconfig.json" @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "moduleResolution": "node", + "resolveJsonModule": true, + "checkJs": false + }, + "exclude": [ + "node_modules" + ], + "include": [ + "lib/**/*", + "src/**/*", + "typings/**/*" + ] +} \ No newline at end of file diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/lib/node-fetch.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/lib/node-fetch.js" new file mode 100644 index 0000000000000000000000000000000000000000..4b241bfbf8bee961f077bf9574150660355928cd --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/lib/node-fetch.js" @@ -0,0 +1,1649 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var Stream = _interopDefault(require('stream')); +var http = _interopDefault(require('http')); +var Url = _interopDefault(require('url')); +var https = _interopDefault(require('https')); +var zlib = _interopDefault(require('zlib')); + +// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js + +// fix for "Readable" isn't a named export issue +const Readable = Stream.Readable; + +const BUFFER = Symbol('buffer'); +const TYPE = Symbol('type'); + +class Blob { + constructor() { + this[TYPE] = ''; + + const blobParts = arguments[0]; + const options = arguments[1]; + + const buffers = []; + let size = 0; + + if (blobParts) { + const a = blobParts; + const length = Number(a.length); + for (let i = 0; i < length; i++) { + const element = a[i]; + let buffer; + if (element instanceof Buffer) { + buffer = element; + } else if (ArrayBuffer.isView(element)) { + buffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength); + } else if (element instanceof ArrayBuffer) { + buffer = Buffer.from(element); + } else if (element instanceof Blob) { + buffer = element[BUFFER]; + } else { + buffer = Buffer.from(typeof element === 'string' ? element : String(element)); + } + size += buffer.length; + buffers.push(buffer); + } + } + + this[BUFFER] = Buffer.concat(buffers); + + let type = options && options.type !== undefined && String(options.type).toLowerCase(); + if (type && !/[^\u0020-\u007E]/.test(type)) { + this[TYPE] = type; + } + } + get size() { + return this[BUFFER].length; + } + get type() { + return this[TYPE]; + } + text() { + return Promise.resolve(this[BUFFER].toString()); + } + arrayBuffer() { + const buf = this[BUFFER]; + const ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + return Promise.resolve(ab); + } + stream() { + const readable = new Readable(); + readable._read = function () {}; + readable.push(this[BUFFER]); + readable.push(null); + return readable; + } + toString() { + return '[object Blob]'; + } + slice() { + const size = this.size; + + const start = arguments[0]; + const end = arguments[1]; + let relativeStart, relativeEnd; + if (start === undefined) { + relativeStart = 0; + } else if (start < 0) { + relativeStart = Math.max(size + start, 0); + } else { + relativeStart = Math.min(start, size); + } + if (end === undefined) { + relativeEnd = size; + } else if (end < 0) { + relativeEnd = Math.max(size + end, 0); + } else { + relativeEnd = Math.min(end, size); + } + const span = Math.max(relativeEnd - relativeStart, 0); + + const buffer = this[BUFFER]; + const slicedBuffer = buffer.slice(relativeStart, relativeStart + span); + const blob = new Blob([], { type: arguments[2] }); + blob[BUFFER] = slicedBuffer; + return blob; + } +} + +Object.defineProperties(Blob.prototype, { + size: { enumerable: true }, + type: { enumerable: true }, + slice: { enumerable: true } +}); + +Object.defineProperty(Blob.prototype, Symbol.toStringTag, { + value: 'Blob', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * fetch-error.js + * + * FetchError interface for operational errors + */ + +/** + * Create FetchError instance + * + * @param String message Error message for human + * @param String type Error type for machine + * @param String systemError For Node.js system error + * @return FetchError + */ +function FetchError(message, type, systemError) { + Error.call(this, message); + + this.message = message; + this.type = type; + + // when err.type is `system`, err.code contains system error code + if (systemError) { + this.code = this.errno = systemError.code; + } + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +FetchError.prototype = Object.create(Error.prototype); +FetchError.prototype.constructor = FetchError; +FetchError.prototype.name = 'FetchError'; + +let convert; +try { + convert = require('encoding').convert; +} catch (e) {} + +const INTERNALS = Symbol('Body internals'); + +// fix an issue where "PassThrough" isn't a named export for node <10 +const PassThrough = Stream.PassThrough; + +/** + * Body mixin + * + * Ref: https://fetch.spec.whatwg.org/#body + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +function Body(body) { + var _this = this; + + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + _ref$size = _ref.size; + + let size = _ref$size === undefined ? 0 : _ref$size; + var _ref$timeout = _ref.timeout; + let timeout = _ref$timeout === undefined ? 0 : _ref$timeout; + + if (body == null) { + // body is undefined or null + body = null; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + body = Buffer.from(body.toString()); + } else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + body = Buffer.from(body); + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + body = Buffer.from(body.buffer, body.byteOffset, body.byteLength); + } else if (body instanceof Stream) ; else { + // none of the above + // coerce to string then buffer + body = Buffer.from(String(body)); + } + this[INTERNALS] = { + body, + disturbed: false, + error: null + }; + this.size = size; + this.timeout = timeout; + + if (body instanceof Stream) { + body.on('error', function (err) { + const error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err); + _this[INTERNALS].error = error; + }); + } +} + +Body.prototype = { + get body() { + return this[INTERNALS].body; + }, + + get bodyUsed() { + return this[INTERNALS].disturbed; + }, + + /** + * Decode response as ArrayBuffer + * + * @return Promise + */ + arrayBuffer() { + return consumeBody.call(this).then(function (buf) { + return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength); + }); + }, + + /** + * Return raw response as Blob + * + * @return Promise + */ + blob() { + let ct = this.headers && this.headers.get('content-type') || ''; + return consumeBody.call(this).then(function (buf) { + return Object.assign( + // Prevent copying + new Blob([], { + type: ct.toLowerCase() + }), { + [BUFFER]: buf + }); + }); + }, + + /** + * Decode response as json + * + * @return Promise + */ + json() { + var _this2 = this; + + return consumeBody.call(this).then(function (buffer) { + try { + return JSON.parse(buffer.toString()); + } catch (err) { + return Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json')); + } + }); + }, + + /** + * Decode response as text + * + * @return Promise + */ + text() { + return consumeBody.call(this).then(function (buffer) { + return buffer.toString(); + }); + }, + + /** + * Decode response as buffer (non-spec api) + * + * @return Promise + */ + buffer() { + return consumeBody.call(this); + }, + + /** + * Decode response as text, while automatically detecting the encoding and + * trying to decode to UTF-8 (non-spec api) + * + * @return Promise + */ + textConverted() { + var _this3 = this; + + return consumeBody.call(this).then(function (buffer) { + return convertBody(buffer, _this3.headers); + }); + } +}; + +// In browsers, all properties are enumerable. +Object.defineProperties(Body.prototype, { + body: { enumerable: true }, + bodyUsed: { enumerable: true }, + arrayBuffer: { enumerable: true }, + blob: { enumerable: true }, + json: { enumerable: true }, + text: { enumerable: true } +}); + +Body.mixIn = function (proto) { + for (const name of Object.getOwnPropertyNames(Body.prototype)) { + // istanbul ignore else: future proof + if (!(name in proto)) { + const desc = Object.getOwnPropertyDescriptor(Body.prototype, name); + Object.defineProperty(proto, name, desc); + } + } +}; + +/** + * Consume and convert an entire Body to a Buffer. + * + * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body + * + * @return Promise + */ +function consumeBody() { + var _this4 = this; + + if (this[INTERNALS].disturbed) { + return Body.Promise.reject(new TypeError(`body used already for: ${this.url}`)); + } + + this[INTERNALS].disturbed = true; + + if (this[INTERNALS].error) { + return Body.Promise.reject(this[INTERNALS].error); + } + + let body = this.body; + + // body is null + if (body === null) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is blob + if (isBlob(body)) { + body = body.stream(); + } + + // body is buffer + if (Buffer.isBuffer(body)) { + return Body.Promise.resolve(body); + } + + // istanbul ignore if: should never happen + if (!(body instanceof Stream)) { + return Body.Promise.resolve(Buffer.alloc(0)); + } + + // body is stream + // get ready to actually consume the body + let accum = []; + let accumBytes = 0; + let abort = false; + + return new Body.Promise(function (resolve, reject) { + let resTimeout; + + // allow timeout on slow response body + if (_this4.timeout) { + resTimeout = setTimeout(function () { + abort = true; + reject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout')); + }, _this4.timeout); + } + + // handle stream errors + body.on('error', function (err) { + if (err.name === 'AbortError') { + // if the request was aborted, reject with this Error + abort = true; + reject(err); + } else { + // other errors, such as incorrect content-encoding + reject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + + body.on('data', function (chunk) { + if (abort || chunk === null) { + return; + } + + if (_this4.size && accumBytes + chunk.length > _this4.size) { + abort = true; + reject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size')); + return; + } + + accumBytes += chunk.length; + accum.push(chunk); + }); + + body.on('end', function () { + if (abort) { + return; + } + + clearTimeout(resTimeout); + + try { + resolve(Buffer.concat(accum, accumBytes)); + } catch (err) { + // handle streams that have accumulated too much data (issue #414) + reject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err)); + } + }); + }); +} + +/** + * Detect buffer encoding and convert to target encoding + * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding + * + * @param Buffer buffer Incoming buffer + * @param String encoding Target encoding + * @return String + */ +function convertBody(buffer, headers) { + if (typeof convert !== 'function') { + throw new Error('The package `encoding` must be installed to use the textConverted() function'); + } + + const ct = headers.get('content-type'); + let charset = 'utf-8'; + let res, str; + + // header + if (ct) { + res = /charset=([^;]*)/i.exec(ct); + } + + // no charset in content type, peek at response body for at most 1024 bytes + str = buffer.slice(0, 1024).toString(); + + // html5 + if (!res && str) { + res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str); + } + + // html4 + if (!res && str) { + res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str); + if (!res) { + res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str); + if (res) { + res.pop(); // drop last quote + } + } + + if (res) { + res = /charset=(.*)/i.exec(res.pop()); + } + } + + // xml + if (!res && str) { + res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str); + } + + // found charset + if (res) { + charset = res.pop(); + + // prevent decode issues when sites use incorrect encoding + // ref: https://hsivonen.fi/encoding-menu/ + if (charset === 'gb2312' || charset === 'gbk') { + charset = 'gb18030'; + } + } + + // turn raw buffers into a single utf-8 buffer + return convert(buffer, 'UTF-8', charset).toString(); +} + +/** + * Detect a URLSearchParams object + * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143 + * + * @param Object obj Object to detect by type or brand + * @return String + */ +function isURLSearchParams(obj) { + // Duck-typing as a necessary condition. + if (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') { + return false; + } + + // Brand-checking and more duck-typing as optional condition. + return obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function'; +} + +/** + * Check if `obj` is a W3C `Blob` object (which `File` inherits from) + * @param {*} obj + * @return {boolean} + */ +function isBlob(obj) { + return typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]); +} + +/** + * Clone body given Res/Req instance + * + * @param Mixed instance Response or Request instance + * @return Mixed + */ +function clone(instance) { + let p1, p2; + let body = instance.body; + + // don't allow cloning a used body + if (instance.bodyUsed) { + throw new Error('cannot clone body after it is used'); + } + + // check that body is a stream and not form-data object + // note: we can't clone the form-data object without having it as a dependency + if (body instanceof Stream && typeof body.getBoundary !== 'function') { + // tee instance body + p1 = new PassThrough(); + p2 = new PassThrough(); + body.pipe(p1); + body.pipe(p2); + // set instance body to teed body and return the other teed body + instance[INTERNALS].body = p1; + body = p2; + } + + return body; +} + +/** + * Performs the operation "extract a `Content-Type` value from |object|" as + * specified in the specification: + * https://fetch.spec.whatwg.org/#concept-bodyinit-extract + * + * This function assumes that instance.body is present. + * + * @param Mixed instance Any options.body input + */ +function extractContentType(body) { + if (body === null) { + // body is null + return null; + } else if (typeof body === 'string') { + // body is string + return 'text/plain;charset=UTF-8'; + } else if (isURLSearchParams(body)) { + // body is a URLSearchParams + return 'application/x-www-form-urlencoded;charset=UTF-8'; + } else if (isBlob(body)) { + // body is blob + return body.type || null; + } else if (Buffer.isBuffer(body)) { + // body is buffer + return null; + } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') { + // body is ArrayBuffer + return null; + } else if (ArrayBuffer.isView(body)) { + // body is ArrayBufferView + return null; + } else if (typeof body.getBoundary === 'function') { + // detect form data input from form-data module + return `multipart/form-data;boundary=${body.getBoundary()}`; + } else if (body instanceof Stream) { + // body is stream + // can't really do much about this + return null; + } else { + // Body constructor defaults other things to string + return 'text/plain;charset=UTF-8'; + } +} + +/** + * The Fetch Standard treats this as if "total bytes" is a property on the body. + * For us, we have to explicitly get it with a function. + * + * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes + * + * @param Body instance Instance of Body + * @return Number? Number of bytes, or null if not possible + */ +function getTotalBytes(instance) { + const body = instance.body; + + + if (body === null) { + // body is null + return 0; + } else if (isBlob(body)) { + return body.size; + } else if (Buffer.isBuffer(body)) { + // body is buffer + return body.length; + } else if (body && typeof body.getLengthSync === 'function') { + // detect form data input from form-data module + if (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x + body.hasKnownLength && body.hasKnownLength()) { + // 2.x + return body.getLengthSync(); + } + return null; + } else { + // body is stream + return null; + } +} + +/** + * Write a Body to a Node.js WritableStream (e.g. http.Request) object. + * + * @param Body instance Instance of Body + * @return Void + */ +function writeToStream(dest, instance) { + const body = instance.body; + + + if (body === null) { + // body is null + dest.end(); + } else if (isBlob(body)) { + body.stream().pipe(dest); + } else if (Buffer.isBuffer(body)) { + // body is buffer + dest.write(body); + dest.end(); + } else { + // body is stream + body.pipe(dest); + } +} + +// expose Promise +Body.Promise = global.Promise; + +/** + * headers.js + * + * Headers class offers convenient helpers + */ + +const invalidTokenRegex = /[^\^_`a-zA-Z\-0-9!#$%&'*+.|~]/; +const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/; + +function validateName(name) { + name = `${name}`; + if (invalidTokenRegex.test(name) || name === '') { + throw new TypeError(`${name} is not a legal HTTP header name`); + } +} + +function validateValue(value) { + value = `${value}`; + if (invalidHeaderCharRegex.test(value)) { + throw new TypeError(`${value} is not a legal HTTP header value`); + } +} + +/** + * Find the key in the map object given a header name. + * + * Returns undefined if not found. + * + * @param String name Header name + * @return String|Undefined + */ +function find(map, name) { + name = name.toLowerCase(); + for (const key in map) { + if (key.toLowerCase() === name) { + return key; + } + } + return undefined; +} + +const MAP = Symbol('map'); +class Headers { + /** + * Headers class + * + * @param Object headers Response headers + * @return Void + */ + constructor() { + let init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; + + this[MAP] = Object.create(null); + + if (init instanceof Headers) { + const rawHeaders = init.raw(); + const headerNames = Object.keys(rawHeaders); + + for (const headerName of headerNames) { + for (const value of rawHeaders[headerName]) { + this.append(headerName, value); + } + } + + return; + } + + // We don't worry about converting prop to ByteString here as append() + // will handle it. + if (init == null) ; else if (typeof init === 'object') { + const method = init[Symbol.iterator]; + if (method != null) { + if (typeof method !== 'function') { + throw new TypeError('Header pairs must be iterable'); + } + + // sequence<sequence<ByteString>> + // Note: per spec we have to first exhaust the lists then process them + const pairs = []; + for (const pair of init) { + if (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') { + throw new TypeError('Each header pair must be iterable'); + } + pairs.push(Array.from(pair)); + } + + for (const pair of pairs) { + if (pair.length !== 2) { + throw new TypeError('Each header pair must be a name/value tuple'); + } + this.append(pair[0], pair[1]); + } + } else { + // record<ByteString, ByteString> + for (const key of Object.keys(init)) { + const value = init[key]; + this.append(key, value); + } + } + } else { + throw new TypeError('Provided initializer must be an object'); + } + } + + /** + * Return combined header value given name + * + * @param String name Header name + * @return Mixed + */ + get(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key === undefined) { + return null; + } + + return this[MAP][key].join(', '); + } + + /** + * Iterate over all headers + * + * @param Function callback Executed for each item with parameters (value, name, thisArg) + * @param Boolean thisArg `this` context for callback function + * @return Void + */ + forEach(callback) { + let thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + + let pairs = getHeaders(this); + let i = 0; + while (i < pairs.length) { + var _pairs$i = pairs[i]; + const name = _pairs$i[0], + value = _pairs$i[1]; + + callback.call(thisArg, value, name, this); + pairs = getHeaders(this); + i++; + } + } + + /** + * Overwrite header values given name + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + set(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + this[MAP][key !== undefined ? key : name] = [value]; + } + + /** + * Append a value onto existing header + * + * @param String name Header name + * @param String value Header value + * @return Void + */ + append(name, value) { + name = `${name}`; + value = `${value}`; + validateName(name); + validateValue(value); + const key = find(this[MAP], name); + if (key !== undefined) { + this[MAP][key].push(value); + } else { + this[MAP][name] = [value]; + } + } + + /** + * Check for header name existence + * + * @param String name Header name + * @return Boolean + */ + has(name) { + name = `${name}`; + validateName(name); + return find(this[MAP], name) !== undefined; + } + + /** + * Delete all header values given name + * + * @param String name Header name + * @return Void + */ + delete(name) { + name = `${name}`; + validateName(name); + const key = find(this[MAP], name); + if (key !== undefined) { + delete this[MAP][key]; + } + } + + /** + * Return raw headers (non-spec api) + * + * @return Object + */ + raw() { + return this[MAP]; + } + + /** + * Get an iterator on keys. + * + * @return Iterator + */ + keys() { + return createHeadersIterator(this, 'key'); + } + + /** + * Get an iterator on values. + * + * @return Iterator + */ + values() { + return createHeadersIterator(this, 'value'); + } + + /** + * Get an iterator on entries. + * + * This is the default iterator of the Headers object. + * + * @return Iterator + */ + [Symbol.iterator]() { + return createHeadersIterator(this, 'key+value'); + } +} +Headers.prototype.entries = Headers.prototype[Symbol.iterator]; + +Object.defineProperty(Headers.prototype, Symbol.toStringTag, { + value: 'Headers', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Headers.prototype, { + get: { enumerable: true }, + forEach: { enumerable: true }, + set: { enumerable: true }, + append: { enumerable: true }, + has: { enumerable: true }, + delete: { enumerable: true }, + keys: { enumerable: true }, + values: { enumerable: true }, + entries: { enumerable: true } +}); + +function getHeaders(headers) { + let kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value'; + + const keys = Object.keys(headers[MAP]).sort(); + return keys.map(kind === 'key' ? function (k) { + return k.toLowerCase(); + } : kind === 'value' ? function (k) { + return headers[MAP][k].join(', '); + } : function (k) { + return [k.toLowerCase(), headers[MAP][k].join(', ')]; + }); +} + +const INTERNAL = Symbol('internal'); + +function createHeadersIterator(target, kind) { + const iterator = Object.create(HeadersIteratorPrototype); + iterator[INTERNAL] = { + target, + kind, + index: 0 + }; + return iterator; +} + +const HeadersIteratorPrototype = Object.setPrototypeOf({ + next() { + // istanbul ignore if + if (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) { + throw new TypeError('Value of `this` is not a HeadersIterator'); + } + + var _INTERNAL = this[INTERNAL]; + const target = _INTERNAL.target, + kind = _INTERNAL.kind, + index = _INTERNAL.index; + + const values = getHeaders(target, kind); + const len = values.length; + if (index >= len) { + return { + value: undefined, + done: true + }; + } + + this[INTERNAL].index = index + 1; + + return { + value: values[index], + done: false + }; + } +}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))); + +Object.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, { + value: 'HeadersIterator', + writable: false, + enumerable: false, + configurable: true +}); + +/** + * Export the Headers object in a form that Node.js can consume. + * + * @param Headers headers + * @return Object + */ +function exportNodeCompatibleHeaders(headers) { + const obj = Object.assign({ __proto__: null }, headers[MAP]); + + // http.request() only supports string as Host header. This hack makes + // specifying custom Host header possible. + const hostHeaderKey = find(headers[MAP], 'Host'); + if (hostHeaderKey !== undefined) { + obj[hostHeaderKey] = obj[hostHeaderKey][0]; + } + + return obj; +} + +/** + * Create a Headers object from an object of headers, ignoring those that do + * not conform to HTTP grammar productions. + * + * @param Object obj Object of headers + * @return Headers + */ +function createHeadersLenient(obj) { + const headers = new Headers(); + for (const name of Object.keys(obj)) { + if (invalidTokenRegex.test(name)) { + continue; + } + if (Array.isArray(obj[name])) { + for (const val of obj[name]) { + if (invalidHeaderCharRegex.test(val)) { + continue; + } + if (headers[MAP][name] === undefined) { + headers[MAP][name] = [val]; + } else { + headers[MAP][name].push(val); + } + } + } else if (!invalidHeaderCharRegex.test(obj[name])) { + headers[MAP][name] = [obj[name]]; + } + } + return headers; +} + +const INTERNALS$1 = Symbol('Response internals'); + +// fix an issue where "STATUS_CODES" aren't a named export for node <10 +const STATUS_CODES = http.STATUS_CODES; + +/** + * Response class + * + * @param Stream body Readable stream + * @param Object opts Response options + * @return Void + */ +class Response { + constructor() { + let body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + Body.call(this, body, opts); + + const status = opts.status || 200; + const headers = new Headers(opts.headers); + + if (body != null && !headers.has('Content-Type')) { + const contentType = extractContentType(body); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + this[INTERNALS$1] = { + url: opts.url, + status, + statusText: opts.statusText || STATUS_CODES[status], + headers, + counter: opts.counter + }; + } + + get url() { + return this[INTERNALS$1].url || ''; + } + + get status() { + return this[INTERNALS$1].status; + } + + /** + * Convenience property representing if the request ended normally + */ + get ok() { + return this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300; + } + + get redirected() { + return this[INTERNALS$1].counter > 0; + } + + get statusText() { + return this[INTERNALS$1].statusText; + } + + get headers() { + return this[INTERNALS$1].headers; + } + + /** + * Clone this response + * + * @return Response + */ + clone() { + return new Response(clone(this), { + url: this.url, + status: this.status, + statusText: this.statusText, + headers: this.headers, + ok: this.ok, + redirected: this.redirected + }); + } +} + +Body.mixIn(Response.prototype); + +Object.defineProperties(Response.prototype, { + url: { enumerable: true }, + status: { enumerable: true }, + ok: { enumerable: true }, + redirected: { enumerable: true }, + statusText: { enumerable: true }, + headers: { enumerable: true }, + clone: { enumerable: true } +}); + +Object.defineProperty(Response.prototype, Symbol.toStringTag, { + value: 'Response', + writable: false, + enumerable: false, + configurable: true +}); + +const INTERNALS$2 = Symbol('Request internals'); + +// fix an issue where "format", "parse" aren't a named export for node <10 +const parse_url = Url.parse; +const format_url = Url.format; + +const streamDestructionSupported = 'destroy' in Stream.Readable.prototype; + +/** + * Check if a value is an instance of Request. + * + * @param Mixed input + * @return Boolean + */ +function isRequest(input) { + return typeof input === 'object' && typeof input[INTERNALS$2] === 'object'; +} + +function isAbortSignal(signal) { + const proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal); + return !!(proto && proto.constructor.name === 'AbortSignal'); +} + +/** + * Request class + * + * @param Mixed input Url or Request instance + * @param Object init Custom options + * @return Void + */ +class Request { + constructor(input) { + let init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + let parsedURL; + + // normalize input + if (!isRequest(input)) { + if (input && input.href) { + // in order to support Node.js' Url objects; though WHATWG's URL objects + // will fall into this branch also (since their `toString()` will return + // `href` property anyway) + parsedURL = parse_url(input.href); + } else { + // coerce input to a string before attempting to parse + parsedURL = parse_url(`${input}`); + } + input = {}; + } else { + parsedURL = parse_url(input.url); + } + + let method = init.method || input.method || 'GET'; + method = method.toUpperCase(); + + if ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) { + throw new TypeError('Request with GET/HEAD method cannot have body'); + } + + let inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null; + + Body.call(this, inputBody, { + timeout: init.timeout || input.timeout || 0, + size: init.size || input.size || 0 + }); + + const headers = new Headers(init.headers || input.headers || {}); + + if (inputBody != null && !headers.has('Content-Type')) { + const contentType = extractContentType(inputBody); + if (contentType) { + headers.append('Content-Type', contentType); + } + } + + let signal = isRequest(input) ? input.signal : null; + if ('signal' in init) signal = init.signal; + + if (signal != null && !isAbortSignal(signal)) { + throw new TypeError('Expected signal to be an instanceof AbortSignal'); + } + + this[INTERNALS$2] = { + method, + redirect: init.redirect || input.redirect || 'follow', + headers, + parsedURL, + signal + }; + + // node-fetch-only options + this.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20; + this.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true; + this.counter = init.counter || input.counter || 0; + this.agent = init.agent || input.agent; + } + + get method() { + return this[INTERNALS$2].method; + } + + get url() { + return format_url(this[INTERNALS$2].parsedURL); + } + + get headers() { + return this[INTERNALS$2].headers; + } + + get redirect() { + return this[INTERNALS$2].redirect; + } + + get signal() { + return this[INTERNALS$2].signal; + } + + /** + * Clone this request + * + * @return Request + */ + clone() { + return new Request(this); + } +} + +Body.mixIn(Request.prototype); + +Object.defineProperty(Request.prototype, Symbol.toStringTag, { + value: 'Request', + writable: false, + enumerable: false, + configurable: true +}); + +Object.defineProperties(Request.prototype, { + method: { enumerable: true }, + url: { enumerable: true }, + headers: { enumerable: true }, + redirect: { enumerable: true }, + clone: { enumerable: true }, + signal: { enumerable: true } +}); + +/** + * Convert a Request to Node.js http request options. + * + * @param Request A Request instance + * @return Object The options object to be passed to http.request + */ +function getNodeRequestOptions(request) { + const parsedURL = request[INTERNALS$2].parsedURL; + const headers = new Headers(request[INTERNALS$2].headers); + + // fetch step 1.3 + if (!headers.has('Accept')) { + headers.set('Accept', '*/*'); + } + + // Basic fetch + if (!parsedURL.protocol || !parsedURL.hostname) { + throw new TypeError('Only absolute URLs are supported'); + } + + if (!/^https?:$/.test(parsedURL.protocol)) { + throw new TypeError('Only HTTP(S) protocols are supported'); + } + + if (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) { + throw new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8'); + } + + // HTTP-network-or-cache fetch steps 2.4-2.7 + let contentLengthValue = null; + if (request.body == null && /^(POST|PUT)$/i.test(request.method)) { + contentLengthValue = '0'; + } + if (request.body != null) { + const totalBytes = getTotalBytes(request); + if (typeof totalBytes === 'number') { + contentLengthValue = String(totalBytes); + } + } + if (contentLengthValue) { + headers.set('Content-Length', contentLengthValue); + } + + // HTTP-network-or-cache fetch step 2.11 + if (!headers.has('User-Agent')) { + headers.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)'); + } + + // HTTP-network-or-cache fetch step 2.15 + if (request.compress && !headers.has('Accept-Encoding')) { + headers.set('Accept-Encoding', 'gzip,deflate'); + } + + let agent = request.agent; + if (typeof agent === 'function') { + agent = agent(parsedURL); + } + + if (!headers.has('Connection') && !agent) { + headers.set('Connection', 'close'); + } + + // HTTP-network fetch step 4.2 + // chunked encoding is handled by Node.js + + return Object.assign({}, parsedURL, { + method: request.method, + headers: exportNodeCompatibleHeaders(headers), + agent + }); +} + +/** + * abort-error.js + * + * AbortError interface for cancelled requests + */ + +/** + * Create AbortError instance + * + * @param String message Error message for human + * @return AbortError + */ +function AbortError(message) { + Error.call(this, message); + + this.type = 'aborted'; + this.message = message; + + // hide custom error implementation details from end-users + Error.captureStackTrace(this, this.constructor); +} + +AbortError.prototype = Object.create(Error.prototype); +AbortError.prototype.constructor = AbortError; +AbortError.prototype.name = 'AbortError'; + +// fix an issue where "PassThrough", "resolve" aren't a named export for node <10 +const PassThrough$1 = Stream.PassThrough; +const resolve_url = Url.resolve; + +/** + * Fetch function + * + * @param Mixed url Absolute url or Request instance + * @param Object opts Fetch options + * @return Promise + */ +function fetch(url, opts) { + + // allow custom promise + if (!fetch.Promise) { + throw new Error('native promise missing, set fetch.Promise to your favorite alternative'); + } + + Body.Promise = fetch.Promise; + + // wrap http.request into fetch + return new fetch.Promise(function (resolve, reject) { + // build request object + const request = new Request(url, opts); + const options = getNodeRequestOptions(request); + + const send = (options.protocol === 'https:' ? https : http).request; + const signal = request.signal; + + let response = null; + + const abort = function abort() { + let error = new AbortError('The user aborted a request.'); + reject(error); + if (request.body && request.body instanceof Stream.Readable) { + request.body.destroy(error); + } + if (!response || !response.body) return; + response.body.emit('error', error); + }; + + if (signal && signal.aborted) { + abort(); + return; + } + + const abortAndFinalize = function abortAndFinalize() { + abort(); + finalize(); + }; + + // send request + const req = send(options); + let reqTimeout; + + if (signal) { + signal.addEventListener('abort', abortAndFinalize); + } + + function finalize() { + req.abort(); + if (signal) signal.removeEventListener('abort', abortAndFinalize); + clearTimeout(reqTimeout); + } + + if (request.timeout) { + req.once('socket', function (socket) { + reqTimeout = setTimeout(function () { + reject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout')); + finalize(); + }, request.timeout); + }); + } + + req.on('error', function (err) { + reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err)); + finalize(); + }); + + req.on('response', function (res) { + clearTimeout(reqTimeout); + + const headers = createHeadersLenient(res.headers); + + // HTTP fetch step 5 + if (fetch.isRedirect(res.statusCode)) { + // HTTP fetch step 5.2 + const location = headers.get('Location'); + + // HTTP fetch step 5.3 + const locationURL = location === null ? null : resolve_url(request.url, location); + + // HTTP fetch step 5.5 + switch (request.redirect) { + case 'error': + reject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect')); + finalize(); + return; + case 'manual': + // node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL. + if (locationURL !== null) { + // handle corrupted header + try { + headers.set('Location', locationURL); + } catch (err) { + // istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request + reject(err); + } + } + break; + case 'follow': + // HTTP-redirect fetch step 2 + if (locationURL === null) { + break; + } + + // HTTP-redirect fetch step 5 + if (request.counter >= request.follow) { + reject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 6 (counter increment) + // Create a new Request object. + const requestOpts = { + headers: new Headers(request.headers), + follow: request.follow, + counter: request.counter + 1, + agent: request.agent, + compress: request.compress, + method: request.method, + body: request.body, + signal: request.signal, + timeout: request.timeout, + size: request.size + }; + + // HTTP-redirect fetch step 9 + if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { + reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); + finalize(); + return; + } + + // HTTP-redirect fetch step 11 + if (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') { + requestOpts.method = 'GET'; + requestOpts.body = undefined; + requestOpts.headers.delete('content-length'); + } + + // HTTP-redirect fetch step 15 + resolve(fetch(new Request(locationURL, requestOpts))); + finalize(); + return; + } + } + + // prepare response + res.once('end', function () { + if (signal) signal.removeEventListener('abort', abortAndFinalize); + }); + let body = res.pipe(new PassThrough$1()); + + const response_options = { + url: request.url, + status: res.statusCode, + statusText: res.statusMessage, + headers: headers, + size: request.size, + timeout: request.timeout, + counter: request.counter + }; + + // HTTP-network fetch step 12.1.1.3 + const codings = headers.get('Content-Encoding'); + + // HTTP-network fetch step 12.1.1.4: handle content codings + + // in following scenarios we ignore compression support + // 1. compression support is disabled + // 2. HEAD request + // 3. no Content-Encoding header + // 4. no content response (204) + // 5. content not modified response (304) + if (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) { + response = new Response(body, response_options); + resolve(response); + return; + } + + // For Node v6+ + // Be less strict when decoding compressed responses, since sometimes + // servers send slightly invalid responses that are still accepted + // by common browsers. + // Always using Z_SYNC_FLUSH is what cURL does. + const zlibOptions = { + flush: zlib.Z_SYNC_FLUSH, + finishFlush: zlib.Z_SYNC_FLUSH + }; + + // for gzip + if (codings == 'gzip' || codings == 'x-gzip') { + body = body.pipe(zlib.createGunzip(zlibOptions)); + response = new Response(body, response_options); + resolve(response); + return; + } + + // for deflate + if (codings == 'deflate' || codings == 'x-deflate') { + // handle the infamous raw deflate response from old servers + // a hack for old IIS and Apache servers + const raw = res.pipe(new PassThrough$1()); + raw.once('data', function (chunk) { + // see http://stackoverflow.com/questions/37519828 + if ((chunk[0] & 0x0F) === 0x08) { + body = body.pipe(zlib.createInflate()); + } else { + body = body.pipe(zlib.createInflateRaw()); + } + response = new Response(body, response_options); + resolve(response); + }); + return; + } + + // for br + if (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') { + body = body.pipe(zlib.createBrotliDecompress()); + response = new Response(body, response_options); + resolve(response); + return; + } + + // otherwise, use response as-is + response = new Response(body, response_options); + resolve(response); + }); + + writeToStream(req, request); + }); +} +/** + * Redirect code matching + * + * @param Number code Status code + * @return Boolean + */ +fetch.isRedirect = function (code) { + return code === 301 || code === 302 || code === 303 || code === 307 || code === 308; +}; + +// expose Promise +fetch.Promise = global.Promise; + +module.exports = exports = fetch; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.default = exports; +exports.Headers = Headers; +exports.Request = Request; +exports.Response = Response; +exports.FetchError = FetchError; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/lib/vue.global.prod.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/lib/vue.global.prod.js" new file mode 100644 index 0000000000000000000000000000000000000000..1dd6b677ddb46b1f0dffa280b0e6a1ab3b8d196b --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/lib/vue.global.prod.js" @@ -0,0 +1,7 @@ +// Vue 3.2.4 +// https://cdn.jsdelivr.net/npm/vue@3.2.4/dist/vue.global.prod.js +// converted to es5 (babel) +// minified (babel) +// exported for node modules +function _inherits(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),n&&_setPrototypeOf(e,n)}function _setPrototypeOf(e,n){return _setPrototypeOf=Object.setPrototypeOf||function(e,n){return e.__proto__=n,e},_setPrototypeOf(e,n)}function _createSuper(e){var n=_isNativeReflectConstruct();return function(){var t,o=_getPrototypeOf(e);if(n){var s=_getPrototypeOf(this).constructor;t=Reflect.construct(o,arguments,s)}else t=o.apply(this,arguments);return _possibleConstructorReturn(this,t)}}function _possibleConstructorReturn(e,n){if(n&&("object"===_typeof(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(n){return!1}}function _getPrototypeOf(e){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},_getPrototypeOf(e)}function _createForOfIteratorHelper(e,n){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=_unsupportedIterableToArray(e))||n&&e&&"number"==typeof e.length){t&&(e=t);var s=0,a=function(){};return{s:a,n:function(){return s>=e.length?{done:!0}:{done:!1,value:e[s++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,d=!0,l=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return d=e.done,e},e:function(e){l=!0,r=e},f:function(){try{d||null==t["return"]||t["return"]()}finally{if(l)throw r}}}}function _classCallCheck(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,n){for(var t,o=0;o<n.length;o++)t=n[o],t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(e,t.key,t)}function _createClass(e,n,t){return n&&_defineProperties(e.prototype,n),t&&_defineProperties(e,t),e}function _typeof(e){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _defineProperty(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function _slicedToArray(e,n){return _arrayWithHoles(e)||_iterableToArrayLimit(e,n)||_unsupportedIterableToArray(e,n)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var o,s,a=[],r=!0,i=!1;try{for(t=t.call(e);!(r=(o=t.next()).done)&&(a.push(o.value),!(n&&a.length===n));r=!0);}catch(e){i=!0,s=e}finally{try{r||null==t["return"]||t["return"]()}finally{if(i)throw s}}return a}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var o=Object.prototype.toString.call(e).slice(8,-1);return"Object"===o&&e.constructor&&(o=e.constructor.name),"Map"===o||"Set"===o?Array.from(e):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(e,t):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,o=Array(n);t<n;t++)o[t]=e[t];return o}var Vue=function(Re){var Nl=Math.max;function e(s,e){for(var t=Object.create(null),n=s.split(","),o=0;o<n.length;o++)t[n[o]]=!0;return e?function(n){return!!t[n.toLowerCase()]}:function(n){return!!t[n]}}function Qe(n){return!!n||""===n}function r(n){if(Gl(n)){for(var e={},t=0;t<n.length;t++){var o=n[t],a=N(o)?s(o):r(o);if(a)for(var i in a)e[i]=a[i]}return e}return N(n)||R(n)?n:void 0}function s(s){var a={};return s.split(n).forEach(function(n){if(n){var e=n.split(o);1<e.length&&(a[e[0].trim()]=e[1].trim())}}),a}function c(n){var e="";if(N(n))e=n;else if(Gl(n))for(var o,s=0;s<n.length;s++)o=c(n[s]),o&&(e+=o+" ");else if(R(n))for(var a in n)n[a]&&(e+=a+" ");return e.trim()}function a(s,e){if(s===e)return!0;var t=T(s),r=T(e);if(t||r)return t&&r&&s.getTime()===e.getTime();if(t=Gl(s),r=Gl(e),t||r)return t&&r&&function(o,e){if(o.length!==e.length)return!1;for(var t=!0,s=0;t&&s<o.length;s++)t=a(o[s],e[s]);return t}(s,e);if(t=R(s),r=R(e),t||r){if(!t||!r)return!1;if(Object.keys(s).length!==Object.keys(e).length)return!1;for(var i in s){var d=s.hasOwnProperty(i),l=e.hasOwnProperty(i);if(d&&!l||!d&&l||!a(s[i],e[i]))return!1}}return s+""===e+""}function d(n,o){return n.findIndex(function(n){return a(n,o)})}function h(n,e){(e=e||Ml)&&e.active&&e.effects.push(n)}function t(n){var e=n.deps;if(e.length){for(var t=0;t<e.length;t++)e[t]["delete"](n);e.length=0}}function te(){ue.push(pe),pe=!1}function de(){var n=ue.pop();pe=void 0===n||n}function ge(s,e,t){if(ye()){var n=Z.get(s);n||Z.set(s,n=new Map);var a=n.get(t);a||n.set(t,a=J()),ve(a)}}function ye(){return pe&&void 0!==Ul}function ve(t){var e=!1;30>=ee?Y(t)||(t.n|=ne,e=!Q(t)):e=!t.has(Ul),e&&(t.add(Ul),Ul.deps.push(t))}function _e(s,e,t,n){var o=Z.get(s);if(o){var a=[];if("clear"===e)a=_toConsumableArray(o.values());else if("length"===t&&Gl(s))o.forEach(function(o,e){("length"==e||e>=n)&&a.push(o)});else switch(void 0!==t&&a.push(o.get(t)),e){case"add":Gl(s)?V(t)&&a.push(o.get("length")):(a.push(o.get(se)),S(s)&&a.push(o.get(re)));break;case"delete":Gl(s)||(a.push(o.get(se)),S(s)&&a.push(o.get(re)));break;case"set":S(s)&&a.push(o.get(se));}if(1===a.length)a[0]&&be(a[0]);else{var r,i=[],d=_createForOfIteratorHelper(a);try{for(d.s();!(r=d.n()).done;){var c=r.value;c&&i.push.apply(i,_toConsumableArray(c))}}catch(e){d.e(e)}finally{d.f()}be(J(i))}}}function be(n){var e,t=_createForOfIteratorHelper(Gl(n)?n:_toConsumableArray(n));try{for(t.s();!(e=t.n()).done;){var o=e.value;(o!==Ul||o.allowRecurse)&&(o.scheduler?o.scheduler():o.run())}}catch(e){t.e(e)}finally{t.f()}}function xe(){var a=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0],e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return function(t,n,o){if("__v_isReactive"===n)return!a;if("__v_isReadonly"===n)return a;if("__v_raw"===n&&o===(a?e?at:ct:e?lt:it).get(t))return t;var r=Gl(t);if(!a&&r&&C(Ne,n))return Reflect.get(Ne,n,o);var s=Reflect.get(t,n,o);return(E(n)?me.has(n):fe(n))?s:(a||ge(t,0,n),e)?s:xt(s)?r&&V(n)?s:s.value:R(s)?a?dt(s):nt(s):s}}function Se(){var a=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0];return function(e,t,n,d){var r=e[t];if(!a&&(n=yt(n),r=yt(r),!Gl(e)&&xt(r)&&!xt(n)))return r.value=n,!0;var c=Gl(e)&&V(t)?+t<e.length:C(e,t),i=Reflect.set(e,t,n,d);return e===yt(d)&&(c?$(n,r)&&_e(e,"set",t,n):_e(e,"add",t,n)),i}}function Fe(a,d){var t=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3],o=yt(a=a.__v_raw),r=yt(d);d===r||t||ge(o,0,d),t||ge(o,0,r);var s=Le(o),c=s.has,i=n?Be:t?Ve:Ie;return c.call(o,d)?i(a.get(d)):c.call(o,r)?i(a.get(r)):void(a!==o&&a.get(d))}function Ae(s){var e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1],t=this.__v_raw,n=yt(t),o=yt(s);return s!==o&&!e&&ge(n,0,s),!e&&ge(n,0,o),s===o?t.has(s):t.has(s)||t.has(o)}function Ue(n){var o=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return n=n.__v_raw,!o&&ge(yt(n),0,se),Reflect.get(n,"size",n)}function He(n){n=yt(n);var o=yt(this);return Le(o).has.call(o,n)||(o.add(n),_e(o,"add",n,n)),this}function De(a,d){d=yt(d);var l=yt(this),n=Le(l),c=n.has,o=n.get,r=c.call(l,a);r||(a=yt(a),r=c.call(l,a));var p=o.call(l,a);return l.set(a,d),r?$(d,p)&&_e(l,"set",a,d):_e(l,"add",a,d),this}function We(a){var i=yt(this),t=Le(i),d=t.has,n=t.get,o=d.call(i,a);o||(a=yt(a),o=d.call(i,a)),n&&n.call(i,a);var l=i["delete"](a);return o&&_e(i,"delete",a,void 0),l}function Ke(){var o=yt(this),e=0!==o.size,t=o.clear();return e&&_e(o,"clear",void 0,void 0),t}function ze(a,e){return function(d,n){var o=this,t=o.__v_raw,s=yt(t),r=e?Be:a?Ve:Ie;return!a&&ge(s,0,se),t.forEach(function(s,e){return d.call(n,r(s),r(e),o)})}}function Ge(o,e,t){return function(){var n=this.__v_raw,r=yt(n),s=S(r),i="entries"===o||o===Symbol.iterator&&s,d=n[o].apply(n,arguments),a=t?Be:e?Ve:Ie;return!e&&ge(r,0,"keys"===o&&s?re:se),_defineProperty({next:function(){var n=d.next(),o=n.value,e=n.done;return e?{value:o,done:e}:{value:i?[a(o[0]),a(o[1])]:a(o),done:e}}},Symbol.iterator,function(){return this})}}function qe(n){return function(){return"delete"!==n&&this}}function Je(s,e){var a=e?s?et:Ye:s?Xe:ql;return function(e,n,t){return"__v_isReactive"===n?!s:"__v_isReadonly"===n?s:"__v_raw"===n?e:Reflect.get(C(a,n)&&n in e?a:e,n,t)}}function Ze(n){return n.__v_skip||!Object.isExtensible(n)?0:function(n){return"Object"===n||"Array"===n?1:"Map"===n||"Set"===n||"WeakMap"===n||"WeakSet"===n?2:0}(function(n){return I(n).slice(8,-1)}(n))}function nt(n){return n&&n.__v_isReadonly?n:ht(n,!1,Ee,tt,it)}function pt(n){return ht(n,!1,Oe,ot,lt)}function dt(n){return ht(n,!0,Me,rt,ct)}function ht(a,e,t,n,o){if(!R(a))return a;if(a.__v_raw&&(!e||!a.__v_isReactive))return a;var r=o.get(a);if(r)return r;var s=Ze(a);if(0===s)return a;var i=new Proxy(a,2===s?n:t);return o.set(a,i),i}function ft(n){return gt(n)?ft(n.__v_raw):n&&n.__v_isReactive}function gt(n){return n&&n.__v_isReadonly}function mt(n){return ft(n)||gt(n)}function yt(n){var e=n&&n.__v_raw;return e?yt(e):n}function vt(n){return W(n,"__v_skip",!0),n}function _t(n){ye()&&((n=yt(n)).dep||(n.dep=J()),ve(n.dep))}function bt(n){(n=yt(n)).dep&&be(n.dep)}function xt(n){return!!(n&&!0===n.__v_isRef)}function St(n){return kt(n)}function kt(n){var e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return xt(n)?n:new Ct(n,e)}function wt(n){return xt(n)?n.value:n}function Nt(n){return ft(n)?n:new Proxy(n,Tt)}function Et(o,e){var t=o[e];return xt(t)?t:new Ft(o,e)}function Rt(t){var e,s;return w(t)?(e=t,s=Wl):(e=t.get,s=t.set),new At(e,s,w(t)||!t.set)}function Pt(d,e){for(var t=d.vnode.props||Kl,o=arguments.length,p=Array(2<o?o-2:0),n=2;n<o;n++)p[n-2]=arguments[n];var u=p,h=e.startsWith("update:"),s=h&&e.slice(7);if(s&&s in t){var i="".concat("modelValue"===s?"model":s,"Modifiers"),f=t[i]||Kl,g=f.number,m=f.trim;m?u=p.map(function(n){return n.trim()}):g&&(u=p.map(z))}var y,v=t[y=j(e)]||t[y=j(O(e))];!v&&h&&(v=t[y=j(H(e))]),v&&_r(v,d,6,u);var _=t[y+"Once"];if(_){if(!d.emitted)d.emitted={};else if(d.emitted[y])return;d.emitted[y]=!0,_r(_,d,6,u)}}function It(a,d){var e=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=d.emitsCache,t=n.get(a);if(void 0!==t)return t;var o=a.emits,s={},r=!1;if(!w(a)){var i=function(t){var e=It(t,d,!0);e&&(r=!0,zl(s,e))};!e&&d.mixins.length&&d.mixins.forEach(i),a["extends"]&&i(a["extends"]),a.mixins&&a.mixins.forEach(i)}return o||r?(Gl(o)?o.forEach(function(n){return s[n]=null}):zl(s,o),n.set(a,s),s):(n.set(a,null),null)}function Vt(n,e){return n&&_(e)&&(e=e.slice(2).replace(/Once$/,""),C(n,e[0].toLowerCase()+e.slice(1))||C(n,H(e))||C(n,e))}function Mt(n){var e=Ot;return Ot=n,Jl=n&&n.type.__scopeId||null,e}function Bt(a){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:Ot,t=2<arguments.length?arguments[2]:void 0;if(!e)return a;if(a._n)return a;var n=function n(){n._d&&No(-1);var t=Mt(e),o=a.apply(void 0,arguments);return Mt(t),n._d&&No(1),o};return n._n=!0,n._c=!0,n._d=!0,n}function Ut(_){var e,y=_.type,t=_.vnode,n=_.proxy,o=_.withProxy,r=_.props,s=_slicedToArray(_.propsOptions,1),b=s[0],i=_.slots,l=_.attrs,c=_.emit,a=_.render,u=_.renderCache,p=_.data,f=_.setupState,d=_.ctx,h=_.inheritAttrs,m=Mt(_);try{var x;if(4&t.shapeFlag){var C=o||n;e=Wo(a.call(C,C,u,r,f,p,d)),x=l}else{var S=y;0,e=Wo(S(r,1<S.length?{attrs:l,slots:i,emit:c}:null)),x=y.props?l:Ql(l)}var k=e;if(x&&!1!==h){var T=Object.keys(x),w=k,N=w.shapeFlag;T.length&&7&N&&(b&&T.some(v)&&(x=zt(x,b)),k=jo(k,x))}0,t.dirs&&(k.dirs=k.dirs?k.dirs.concat(t.dirs):t.dirs),t.transition&&(k.transition=t.transition),e=k}catch(n){Oo.length=0,br(n,_,1),e=Go(Ao)}return Mt(m),e}function Ht(n){for(var e,o,s=0;s<n.length;s++){if(o=n[s],!Bo(o))return;if(o.type!==Ao||"v-if"===o.children){if(e)return;e=o}}return e}function Dt(s,e,t){var n=Object.keys(e);if(n.length!==Object.keys(s).length)return!0;for(var o,a=0;a<n.length;a++)if(o=n[a],e[o]!==s[o]&&!Vt(t,o))return!0;return!1}function Wt(o,s){for(var n=o.vnode,a=o.parent;a&&a.subTree===n;)(n=a.vnode).el=s,a=a.parent}function Gt(o,e){var t=o.props&&o.props[e];w(t)&&t()}function qt(_,e,b,n,t,o,x,C,S,s){var a=!!(10<arguments.length&&arguments[10]!==void 0)&&arguments[10],l=s.p,c=s.m,p=s.um,d=s.n,r=s.o,i=r.parentNode,u=r.remove,h=z(_.props&&_.props.timeout),f={vnode:_,parent:e,parentComponent:b,isSVG:x,container:n,hiddenContainer:t,anchor:o,deps:0,pendingId:0,timeout:"number"==typeof h?h:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:a,isUnmounted:!1,effects:[],resolve:function(){var u=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0],e=f.vnode,t=f.activeBranch,n=f.pendingBranch,o=f.pendingId,r=f.effects,s=f.parentComponent,i=f.container;if(f.isHydrating)f.isHydrating=!1;else if(!u){var l=t&&n.transition&&"out-in"===n.transition.mode;l&&(t.transition.afterLeave=function(){o===f.pendingId&&c(n,i,h,0)});var h=f.anchor;t&&(h=d(t),p(t,s,f,!0)),l||c(n,i,h,0)}Xt(f,n),f.pendingBranch=null,f.isInFallback=!1;for(var g=f.parent,m=!1;g;){if(g.pendingBranch){var y;(y=g.effects).push.apply(y,_toConsumableArray(r)),m=!0;break}g=g.parent}m||Nr(r),f.effects=[],Gt(e,"onResolve")},fallback:function(c){if(f.pendingBranch){var e=f.vnode,t=f.activeBranch,n=f.parentComponent,o=f.container,r=f.isSVG;Gt(e,"onFallback");var s=d(t),i=function(){f.isInFallback&&(l(null,c,o,s,n,null,r,C,S),Xt(f,c))},a=c.transition&&"out-in"===c.transition.mode;a&&(t.transition.afterLeave=i),f.isInFallback=!0,p(t,n,null,!0),a||i()}},move:function(o,e,t){f.activeBranch&&c(f.activeBranch,o,e,t),f.container=o},next:function(){return f.activeBranch&&d(f.activeBranch)},registerDep:function(a,e){var t=!!f.pendingBranch;t&&f.deps++;var n=a.vnode.el;a.asyncDep["catch"](function(e){br(e,a,0)}).then(function(o){if(!(a.isUnmounted||f.isUnmounted||f.pendingId!==a.suspenseId)){a.asyncResolved=!0;var r=a.vnode;ms(a,o),n&&(r.el=n);var s=!n&&a.subTree.el;e(a,r,i(n||a.subTree.el),n?null:d(a.subTree),f,x,S),s&&u(s),Wt(a,r.el),t&&0==--f.deps&&f.resolve()}})},unmount:function(n,e){f.isUnmounted=!0,f.activeBranch&&p(f.activeBranch,b,n,e),f.pendingBranch&&p(f.pendingBranch,b,n,e)}};return f}function Jt(n){var o;if(w(n)){var s=n._c;s&&(n._d=!1,ko()),n=n(),s&&(n._d=!0,o=Po,To())}if(Gl(n)){var a=Ht(n);n=a}return n=Wo(n),o&&!n.dynamicChildren&&(n.dynamicChildren=o.filter(function(e){return e!==n})),n}function Qt(n,e){var t;e&&e.pendingBranch?Gl(n)?(t=e.effects).push.apply(t,_toConsumableArray(n)):e.effects.push(n):Nr(n)}function Xt(s,e){s.activeBranch=e;var t=s.vnode,n=s.parentComponent,o=t.el=e.el;n&&n.subTree===t&&(n.vnode.el=o,Wt(n,o))}function en(n,e){if(ac){var t=ac.provides,o=ac.parent&&ac.parent.provides;o===t&&(t=ac.provides=Object.create(o)),t[n]=e}else;}function tn(s,e){var t=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=ac||Ot;if(n){var o=null==n.parent?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides;if(o&&s in o)return o[s];if(1<arguments.length)return t&&w(e)?e.call(n.proxy):e}}function nn(){var n={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Nn(function(){n.isMounted=!0}),Rn(function(){n.isUnmounting=!0}),n}function on(s,e){var t=s.leavingVNodes,n=t.get(e.type);return n||(n=Object.create(null),t.set(e.type,n)),n}function ln(C,i,k,n){var e=i.appear,t=i.mode,o=i.persisted,r=i.onBeforeEnter,T=i.onEnter,c=i.onAfterEnter,a=i.onEnterCancelled,l=i.onBeforeLeave,p=i.onLeave,u=i.onAfterLeave,d=i.onLeaveCancelled,s=i.onBeforeAppear,h=i.onAppear,f=i.onAfterAppear,g=i.onAppearCancelled,m=C.key+"",y=on(k,C),v=function(o,e){o&&_r(o,n,9,e)},_={mode:t,persisted:void 0!==o&&o,beforeEnter:function(n){var t=r;if(!k.isMounted){if(!e)return;t=s||r}n._leaveCb&&n._leaveCb(!0);var a=y[m];a&&Uo(C,a)&&a.el._leaveCb&&a.el._leaveCb(),v(t,[n])},enter:function(n){var r=T,d=c,p=a;if(!k.isMounted){if(!e)return;r=h||T,d=f||c,p=g||a}var u=!1,m=n._enterCb=function(e){u||(u=!0,v(e?p:d,[n]),_.delayedLeave&&_.delayedLeave(),n._enterCb=void 0)};r?(r(n,m),1>=r.length&&m()):m()},leave:function(e,t){var o=C.key+"";if(e._enterCb&&e._enterCb(!0),k.isUnmounting)return t();v(l,[e]);var a=!1,n=e._leaveCb=function(s){a||(a=!0,t(),v(s?d:u,[e]),e._leaveCb=void 0,y[o]===C&&delete y[o])};y[o]=C,p?(p(e,n),1>=p.length&&n()):n()},clone:function(t){return ln(t,i,k,n)}};return _}function cn(n){if(hn(n))return(n=jo(n)).children=null,n}function an(n){return hn(n)?n.children?n.children[0]:void 0:n}function un(n,e){6&n.shapeFlag&&n.component?un(n.component.subTree,e):128&n.shapeFlag?(n.ssContent.transition=e.clone(n.ssContent),n.ssFallback.transition=e.clone(n.ssFallback)):n.transition=e}function pn(s){for(var e,a=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1],t=[],r=0,i=0;i<s.length;i++)e=s[i],e.type===Eo?(128&e.patchFlag&&r++,t=t.concat(pn(e.children,a))):(a||e.type!==Ao)&&t.push(e);if(1<r)for(var d=0;d<t.length;d++)t[d].patchFlag=-2;return t}function fn(n){return w(n)?{setup:n,name:n.name}:n}function dn(s,e){var a=e.vnode,i=a.ref,t=a.props,n=a.children,o=Go(s,t,n);return o.ref=i,o}function mn(n,o){return Gl(n)?n.some(function(n){return mn(n,o)}):N(n)?-1<n.split(",").indexOf(o):!!n.test&&n.test(o)}function yn(n,e){_n(n,"a",e)}function bn(n,e){_n(n,"da",e)}function _n(s,e){var a=2<arguments.length&&arguments[2]!==void 0?arguments[2]:ac,n=s.__wdc||(s.__wdc=function(){for(var e=a;e;){if(e.isDeactivated)return;e=e.parent}s()});if(wn(e,n,a),a)for(var t=a.parent;t&&t.parent;)hn(t.parent.vnode)&&Sn(n,e,a,t),t=t.parent}function Sn(s,e,t,n){var o=wn(e,s,n,!0);Fn(function(){b(n[e],o)},t)}function xn(n){var e=n.shapeFlag;256&e&&(e-=256),512&e&&(e-=512),n.shapeFlag=e}function Cn(n){return 128&n.shapeFlag?n.ssContent:n}function wn(s,e){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:ac,n=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3];if(t){var o=t[s]||(t[s]=[]),a=e.__weh||(e.__weh=function(){if(!t.isUnmounted){te(),pr(t);for(var n=arguments.length,a=Array(n),o=0;o<n;o++)a[o]=arguments[o];var i=_r(e,t,s,a);return fr(),de(),i}});return n?o.unshift(a):o.push(a),a}}function kn(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:ac;wn("ec",n,e)}function In(y){function e(n,e){Gl(e)?e.forEach(function(e){return n(e.bind(I))}):e&&n(e.bind(I))}var N=jn(y),I=y.proxy,n=y.ctx;Pn=!1,N.beforeCreate&&Bn(N.beforeCreate,y,"bc");var t=N.data,o=N.computed,s=N.methods,r=N.watch,i=N.provide,l=N.inject,a=N.created,c=N.beforeMount,p=N.mounted,u=N.beforeUpdate,d=N.updated,h=N.activated,f=N.deactivated,g=N.beforeUnmount,m=N.unmounted,v=N.render,_=N.renderTracked,b=N.renderTriggered,x=N.errorCaptured,C=N.serverPrefetch,S=N.expose,k=N.inheritAttrs,T=N.components,E=N.directives;if(l&&function(a,r){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:Wl,i=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3];Gl(a)&&(a=Wn(a));var n=function(e){var t=a[e],n=void 0;n=R(t)?"default"in t?tn(t.from||e,t["default"],!0):tn(t.from||e):tn(t),xt(n)&&i?Object.defineProperty(r,e,{enumerable:!0,configurable:!0,get:function(){return n.value},set:function(t){return n.value=t}}):r[e]=n};for(var o in a)n(o)}(l,n,null,y.appContext.config.unwrapInjectedRef),s)for(var P in s){var F=s[P];w(F)&&(n[P]=F.bind(I))}if(t){var A=t.call(I,I);R(A)&&(y.data=nt(A))}if(Pn=!0,o){var V=function(s){var a=o[s],r=Rt({get:w(a)?a.bind(I,I):w(a.get)?a.get.bind(I,I):Wl,set:!w(a)&&w(a.set)?a.set.bind(I):Wl});Object.defineProperty(n,s,{enumerable:!0,configurable:!0,get:function(){return r.value},set:function(n){return r.value=n}})};for(var M in o)V(M)}if(r)for(var B in r)Ln(r[B],n,I,B);if(i){var L=w(i)?i.call(I):i;Reflect.ownKeys(L).forEach(function(e){en(e,L[e])})}if(a&&Bn(a,y,"c"),e(Tn,c),e(Nn,p),e(En,u),e($n,d),e(yn,h),e(bn,f),e(kn,x),e(On,_),e(Mn,b),e(Rn,g),e(Fn,m),e(An,C),Gl(S))if(S.length){var O=y.exposed||(y.exposed={});S.forEach(function(n){Object.defineProperty(O,n,{get:function(){return I[n]},set:function(e){return I[n]=e}})})}else y.exposed||(y.exposed={});v&&y.render===Wl&&(y.render=v),null!=k&&(y.inheritAttrs=k),T&&(y.components=T),E&&(y.directives=E)}function Bn(o,s,e){_r(Gl(o)?o.map(function(n){return n.bind(s.proxy)}):o.bind(s.proxy),s,e)}function Ln(s,a,t,n){var e=n.includes(".")?ss(t,n):function(){return t[n]};if(N(s)){var o=a[s];w(o)&&ts(e,o)}else if(w(s))ts(e,s.bind(t));else if(R(s))if(Gl(s))s.forEach(function(o){return Ln(o,a,t,n)});else{var r=w(s.handler)?s.handler.bind(t):a[s.handler];w(r)&&ts(e,r,s)}}function jn(a){var d,e=a.type,t=e.mixins,n=e["extends"],o=a.appContext,p=o.mixins,r=o.optionsCache,s=o.config.optionMergeStrategies,i=r.get(e);return i?d=i:p.length||t||n?(d={},p.length&&p.forEach(function(n){return Un(d,n,s,!0)}),Un(d,e,s)):d=e,r.set(e,d),d}function Un(a,e,i){var n=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],t=e.mixins,o=e["extends"];for(var s in o&&Un(a,o,i,!0),t&&t.forEach(function(e){return Un(a,e,i,!0)}),e)if(n&&"expose"===s);else{var r=Yl[s]||i&&i[s];a[s]=r?r(a[s],e[s]):e[s]}return a}function Hn(n,e){return e?n?function(){return zl(w(n)?n.call(this,this):n,w(e)?e.call(this,this):e)}:e:n}function Wn(n){if(Gl(n)){for(var e={},t=0;t<n.length;t++)e[n[t]]=n[t];return e}return n}function zn(n,e){return n?_toConsumableArray(new Set([].concat(n,e))):e}function Kn(n,e){return n?zl(zl(Object.create(null),n),e):e}function Gn(a,e,t,n){var o,d=_slicedToArray(a.propsOptions,2),c=d[0],r=d[1],s=!1;if(e)for(var p in e)if(!M(p)){var u=e[p],h=void 0;c&&C(c,h=O(p))?r&&r.includes(h)?(o||(o={}))[h]=u:t[h]=u:Vt(a.emitsOptions,p)||u!==n[p]&&(n[p]=u,s=!0)}if(r)for(var f,g=yt(t),m=o||Kl,y=0;y<r.length;y++)f=r[y],t[f]=qn(c,g,f,m[f],a,!C(m,f));return s}function qn(a,e,t,n,d,r){var s=a[t];if(null!=s){var i=C(s,"default");if(i&&void 0===n){var l=s["default"];if(s.type!==Function&&w(l)){var c=d.propsDefaults;t in c?n=c[t]:(pr(d),n=c[t]=l.call(null,e),fr())}else n=l}s[0]&&(r&&!i?n=!1:!s[1]||""!==n&&n!==H(t)||(n=!0))}return n}function Jn(d,p){var e=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=p.propsCache,t=n.get(d);if(t)return t;var o=d.props,s={},r=[],i=!1;if(!w(d)){var l=function(t){i=!0;var e=Jn(t,p,!0),a=_slicedToArray(e,2),d=a[0],n=a[1];zl(s,d),n&&r.push.apply(r,_toConsumableArray(n))};!e&&p.mixins.length&&p.mixins.forEach(l),d["extends"]&&l(d["extends"]),d.mixins&&d.mixins.forEach(l)}if(!o&&!i)return n.set(d,g),g;if(Gl(o))for(var u,h=0;h<o.length;h++)u=O(o[h]),Zn(u)&&(s[u]=Kl);else if(o)for(var f in o){var m=O(f);if(Zn(m)){var y=o[f],v=s[m]=Gl(y)||w(y)?{type:y}:y;if(v){var _=Yn(Boolean,v.type),b=Yn(String,v.type);v[0]=-1<_,v[1]=0>b||_<b,(-1<_||C(v,"default"))&&r.push(m)}}}var x=[s,r];return n.set(d,x),x}function Zn(n){return"$"!==n[0]}function Qn(n){var e=n&&n.toString().match(/^\s*function (\w+)/);return e?e[1]:null===n?"null":""}function Xn(n,e){return Qn(n)===Qn(e)}function Yn(n,e){return Gl(e)?e.findIndex(function(e){return Xn(e,n)}):w(e)&&Xn(e,n)?0:-1}function Yt(a,e,t,n){for(var o,i=a.dirs,r=e&&e.dirs,s=0;s<i.length;s++){o=i[s],r&&(o.oldValue=r[s].value);var d=o.dir[n];d&&(te(),_r(d,t,8,[a.el,o,a,e]),de())}}function Zt(){return{app:null,config:{isNativeTag:m,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}function eo(d,e){return function(t){var n=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;null==n||R(n)||(n=null);var p=Zt(),a=new Set,r=!1,u=p.app={_uid:so++,_component:t,_props:n,_container:null,_context:p,_instance:null,version:us,get config(){return p.config},set config(n){},use:function(n){for(var e=arguments.length,o=Array(1<e?e-1:0),t=1;t<e;t++)o[t-1]=arguments[t];return a.has(n)||(n&&w(n.install)?(a.add(n),n.install.apply(n,[u].concat(o))):w(n)&&(a.add(n),n.apply(void 0,[u].concat(o)))),u},mixin:function(n){return p.mixins.includes(n)||p.mixins.push(n),u},component:function(n,e){return e?(p.components[n]=e,u):p.components[n]},directive:function(n,e){return e?(p.directives[n]=e,u):p.directives[n]},mount:function(o,s,i){if(!r){var a=Go(t,n);return a.appContext=p,s&&e?e(a,o):d(a,o,i),r=!0,u._container=o,o.__vue_app__=u,a.component.proxy}},unmount:function(){r&&(d(null,u._container),delete u._container.__vue_app__)},provide:function(n,e){return p.provides[n]=e,u}};return u}}function ao(b){var e=b.mt,g=b.p,n=b.o,m=n.patchProp,C=n.nextSibling,r=n.parentNode,s=n.remove,y=n.insert,l=n.createComment,v=function s(u,n,o,i,l){var c=!!(5<arguments.length&&arguments[5]!==void 0)&&arguments[5],h=po(u)&&"["===u.data,f=function(){return a(u,n,o,i,l,h)},g=n.type,m=n.ref,y=n.shapeFlag,v=u.nodeType;n.el=u;var _=null;switch(g){case Fo:3===v?(u.data!==n.children&&(Zl=!0,u.data=n.children),_=C(u)):_=f();break;case Ao:_=8!==v||h?f():C(u);break;case Mo:if(1===v){_=u;for(var S=!n.children.length,T=0;T<n.staticCount;T++)S&&(n.children+=_.outerHTML),T===n.staticCount-1&&(n.anchor=_),_=C(_);return _}_=f();break;case Eo:_=h?p(u,n,o,i,l,c):f();break;default:if(1&y)_=1!==v||n.type.toLowerCase()!==u.tagName.toLowerCase()?f():t(u,n,o,i,l,c);else if(6&y){n.slotScopeIds=l;var w=r(u);if(e(n,w,null,o,i,ec(w),c),_=h?d(u):C(u),sn(n)){var N;h?(N=Go(Eo),N.anchor=_?_.previousSibling:w.lastChild):N=3===u.nodeType?$o(""):Go("div"),N.el=u,n.component.subTree=N}}else 64&y?_=8===v?n.type.hydrate(u,n,o,i,l,c,b,k):f():128&y&&(_=n.type.hydrate(u,n,o,i,ec(r(u)),l,c,b,s));}return null!=m&&go(m,null,i,n),_},t=function(o,e,t,n,r,i){i=i||!!e.dynamicChildren;var p=e.type,c=e.props,a=e.patchFlag,u=e.shapeFlag,f=e.dirs,d="input"===p&&f||"option"===p;if(d||-1!==a){if(f&&Yt(e,null,t,"created"),c)if(d||!i||48&a)for(var h in c)(d&&h.endsWith("value")||_(h)&&!M(h))&&m(o,h,null,c[h]);else c.onClick&&m(o,"onClick",null,c.onClick);var g;if((g=c&&c.onVnodeBeforeMount)&&yo(g,t,e),f&&Yt(e,null,t,"beforeMount"),((g=c&&c.onVnodeMounted)||f)&&Qt(function(){g&&yo(g,t,e),f&&Yt(e,null,t,"mounted")},n),16&u&&(!c||!c.innerHTML&&!c.textContent))for(var y=k(o.firstChild,e,o,t,n,r,i);y;){Zl=!0;var v=y;y=y.nextSibling,s(v)}else 8&u&&o.textContent!==e.children&&(Zl=!0,o.textContent=e.children)}return o.nextSibling},k=function(n,a,t,o,r,s,i){i=i||!!a.dynamicChildren;for(var d,p=a.children,c=p.length,u=0;u<c;u++)if(d=i?p[u]:p[u]=Wo(p[u]),n)n=v(n,d,o,r,s,i);else{if(d.type===Fo&&!d.children)continue;Zl=!0,g(null,d,t,null,o,r,ec(t),s)}return n},p=function(s,e,t,n,o,c){var a=e.slotScopeIds;a&&(o=o?o.concat(a):a);var p=r(s),u=k(C(s),e,p,t,n,o,c);return u&&po(u)&&"]"===u.data?C(e.anchor=u):(Zl=!0,y(e.anchor=l("]"),p,u),u)},a=function(n,e,t,o,i,l){if(Zl=!0,e.el=null,l)for(var a,c=d(n);;){if(a=C(n),!a||a===c)break;s(a)}var h=C(n),u=r(n);return s(n),g(null,e,u,h,t,o,ec(u),i),h},d=function(n){for(var o=0;n;)if((n=C(n))&&po(n)&&("["===n.data&&o++,"]"===n.data)){if(0===o)return C(n);o--}return n};return[function(n,e){return e.hasChildNodes()?void(Zl=!1,v(e.firstChild,n,null,null,null),Rr(),Zl&&console.error("Hydration completed but contains mismatches.")):(g(null,n,e),void Rr())},v]}function io(n){return ho(n)}function lo(n){return ho(n,ao)}function ho(y,e){var t,v,T,P,D=y.insert,j=y.remove,z=y.patchProp,n=y.createElement,J=y.createText,s=y.createComment,o=y.setText,Z=y.setElementText,a=y.parentNode,i=y.nextSibling,r=y.setScopeId,l=void 0===r?Wl:r,ee=y.cloneNode,d=y.insertStaticContent,h=function(d,h,t){var n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null,g=4<arguments.length&&arguments[4]!==void 0?arguments[4]:null,r=5<arguments.length&&arguments[5]!==void 0?arguments[5]:null,s=!!(6<arguments.length&&arguments[6]!==void 0)&&arguments[6],i=7<arguments.length&&arguments[7]!==void 0?arguments[7]:null,l=8<arguments.length&&arguments[8]!==void 0?arguments[8]:!!h.dynamicChildren;if(d!==h){d&&!Uo(d,h)&&(n=Q(d),$(d,g,r,!0),d=null),-2===h.patchFlag&&(l=!1,h.dynamicChildren=null);var y=h.type,a=h.ref,u=h.shapeFlag;y===Fo?f(d,h,t,n):y===Ao?m(d,h,t,n):y===Mo?null==d&&_(h,t,n,s):y===Eo?N(d,h,t,n,g,r,s,i,l):1&u?b(d,h,t,n,g,r,s,i,l):6&u?E(d,h,t,n,g,r,s,i,l):(64&u||128&u)&&y.process(d,h,t,n,g,r,s,i,l,Y),null!=a&&g&&go(a,d&&d.ref,r,h||d,!h)}},f=function(n,e,t,s){if(null==n)D(e.el=J(e.children),t,s);else{var a=e.el=n.el;e.children!==n.children&&o(a,e.children)}},m=function(n,e,t,o){null==n?D(e.el=s(e.children||""),t,o):e.el=n.el},_=function(s,e,t,n){var o=d(s.children,e,t,n),a=_slicedToArray(o,2);s.el=a[0],s.anchor=a[1]},b=function(a,e,t,n,o,r,s,d,l){s=s||"svg"===e.type,null==a?p(e,t,n,o,r,s,d,l):u(a,e,o,r,s,d,l)},p=function(s,e,t,o,a,r,i,d){var l,c,p=s.type,u=s.props,g=s.shapeFlag,m=s.transition,y=s.patchFlag,v=s.dirs;if(s.el&&void 0!==ee&&-1===y)l=s.el=ee(s.el);else{if(l=s.el=n(s.type,r,u&&u.is,u),8&g?Z(l,s.children):16&g&&S(s.children,l,null,o,a,r&&"foreignObject"!==p,i,d),v&&Yt(s,null,o,"created"),u){for(var _ in u)"value"===_||M(_)||z(l,_,null,u[_],r,s.children,o,a,re);"value"in u&&z(l,"value",null,u.value),(c=u.onVnodeBeforeMount)&&yo(c,o,s)}x(l,s,s.scopeId,i,o)}v&&Yt(s,null,o,"beforeMount");var b=(!a||a&&!a.pendingBranch)&&m&&!m.persisted;b&&m.beforeEnter(l),D(l,e,t),((c=u&&u.onVnodeMounted)||b||v)&&fo(function(){c&&yo(c,o,s),b&&m.enter(l),v&&Yt(s,null,o,"mounted")},a)},x=function s(a,e,t,n,o){if(t&&l(a,t),n)for(var r=0;r<n.length;r++)l(a,n[r]);if(o&&e===o.subTree){var i=o.vnode;s(a,i,i.scopeId,i.slotScopeIds,o.parent)}},S=function(a,e,t,n,o,r,s,i){for(var d,l=8<arguments.length&&arguments[8]!==void 0?arguments[8]:0,c=l;c<a.length;c++)d=a[c]=i?qo(a[c]):Wo(a[c]),h(null,d,e,t,n,o,r,s,i)},u=function(a,e,t,n,o,s,r){var i=e.el=a.el,l=e.patchFlag,c=e.dynamicChildren,p=e.dirs;l|=16&a.patchFlag;var f,g=a.props||Kl,d=e.props||Kl;(f=d.onVnodeBeforeUpdate)&&yo(f,t,e,a),p&&Yt(e,a,t,"beforeUpdate");var h=o&&"foreignObject"!==e.type;if(c?k(a.dynamicChildren,c,i,t,n,h,s):r||V(a,e,i,null,t,n,h,s,!1),0<l){if(16&l)w(i,e,g,d,t,n,o);else if(2&l&&g["class"]!==d["class"]&&z(i,"class",null,d["class"],o),4&l&&z(i,"style",g.style,d.style,o),8&l)for(var y=e.dynamicProps,v=0;v<y.length;v++){var _=y[v],b=g[_],x=d[_];x===b&&"value"!==_||z(i,_,b,x,o,a.children,t,n,re)}1&l&&a.children!==e.children&&Z(i,e.children)}else r||null!=c||w(i,e,g,d,t,n,o);((f=d.onVnodeUpdated)||p)&&fo(function(){f&&yo(f,t,e,a),p&&Yt(e,a,t,"updated")},n)},k=function(d,e,t,n,o,r,s){for(var i=0;i<e.length;i++){var l=d[i],c=e[i],p=l.el&&(l.type===Eo||!Uo(l,c)||70&l.shapeFlag)?a(l.el):t;h(l,c,p,null,n,o,r,s,!0)}},w=function(a,e,t,n,o,s,r){if(t!==n){for(var i in n)if(!M(i)){var d=n[i],l=t[i];d!==l&&"value"!==i&&z(a,i,l,d,r,e.children,o,s,re)}if(t!==Kl)for(var c in t)M(c)||c in n||z(a,c,t[c],null,r,e.children,o,s,re);"value"in n&&z(a,"value",t.value,n.value)}},N=function(n,e,t,o,r,s,i,l,c){var u=e.el=n?n.el:J(""),p=e.anchor=n?n.anchor:J(""),f=e.patchFlag,d=e.dynamicChildren,h=e.slotScopeIds;h&&(l=l?l.concat(h):h),null==n?(D(u,t,o),D(p,t,o),S(e.children,t,p,r,s,i,l,c)):0<f&&64&f&&d&&n.dynamicChildren?(k(n.dynamicChildren,d,t,r,s,i,l),(null!=e.key||r&&e===r.subTree)&&vo(n,e,!0)):V(n,e,t,p,r,s,i,l,c)},E=function(a,e,t,n,o,r,s,i,d){e.slotScopeIds=i,null==a?512&e.shapeFlag?o.ctx.activate(e,t,n,s,d):R(e,t,n,o,r,s,d):A(a,e,d)},R=function(a,e,t,n,o,r,s){var i=a.component=function(a,e,t){var n=a.type,o=(e?e.appContext:a.appContext)||lr,r={uid:cr++,vnode:a,type:n,parent:e,appContext:o,root:null,next:null,subTree:null,update:null,scope:new q(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:e?e.provides:Object.create(o.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Jn(n,o),emitsOptions:It(n,o),emit:null,emitted:null,propsDefaults:Kl,inheritAttrs:n.inheritAttrs,ctx:Kl,data:Kl,props:Kl,attrs:Kl,slots:Kl,refs:Kl,setupState:Kl,setupContext:null,suspense:t,suspenseId:t?t.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=e?e.root:r,r.emit=Pt.bind(null,r),a.ce&&a.ce(r),r}(a,n,o);if(!(hn(a)&&(i.ctx.renderer=Y),function(s){var e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];dr=e;var t=s.vnode,a=t.props,n=t.children,o=Zo(s);(function(a,e,t){var n=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],o={},r={};for(var s in W(r,tc,1),a.propsDefaults=Object.create(null),Gn(a,e,o,r),a.propsOptions[0])s in o||(o[s]=void 0);a.props=t?n?o:pt(o):a.type.props?o:r,a.attrs=r})(s,a,o,e),function(n,e){if(32&n.vnode.shapeFlag){var t=e._;t?(n.slots=yt(e),W(e,"_",t)):oo(e,n.slots={})}else n.slots={},e&&ro(n,e);W(n.slots,tc,1)}(s,n);o?function(s,e){var t=s.type;s.accessCache=Object.create(null),s.proxy=vt(new Proxy(s.ctx,sr));var n=t.setup;if(n){var o=s.setupContext=1<n.length?Ps(s):null;pr(s),te();var a=yr(n,s,0,[s.props,o]);if(de(),fr(),F(a)){if(a.then(fr,fr),e)return a.then(function(e){ms(s,e)})["catch"](function(e){br(e,s,0)});s.asyncDep=a}else ms(s,a)}else Is(s)}(s,e):void 0;dr=!1}(i),i.asyncDep))c(i,a,e,t,o,r,s);else if(o&&o.registerDep(i,c),!a.el){var d=i.subTree=Go(Ao);m(null,d,e,t)}},A=function(s,e,t){var n=e.component=s.component;if(function(d,e,t){var n=d.props,o=d.children,r=d.component,s=e.props,i=e.children,l=e.patchFlag,c=r.emitsOptions;if(e.dirs||e.transition)return!0;if(!(t&&0<=l))return(o||i)&&(!i||!i.$stable)||n!==s&&(n?!s||Dt(n,s,c):!!s);if(1024&l)return!0;if(16&l)return n?Dt(n,s,c):!!s;if(8&l)for(var a,p=e.dynamicProps,u=0;u<p.length;u++)if(a=p[u],s[a]!==n[a]&&!Vt(c,a))return!0;return!1}(s,e,t)){if(n.asyncDep&&!n.asyncResolved)return void I(n,e,t);n.next=e,function(n){var e=pc.indexOf(n);e>Pr&&pc.splice(e,1)}(n.update),n.update()}else e.component=s.component,e.el=s.el,n.vnode=e},c=function(d,e,p,u,f,r,s){var i=new ce(function(){if(d.isMounted){var n,t=d.next,o=d.bu,l=d.u,c=d.parent,g=d.vnode,m=t;i.allowRecurse=!1,t?(t.el=g.el,I(d,t,s)):t=g,o&&K(o),(n=t.props&&t.props.onVnodeBeforeUpdate)&&yo(n,c,t,g),i.allowRecurse=!0;var y=Ut(d),v=d.subTree;d.subTree=y,h(v,y,a(v.el),Q(v),d,f,r),t.el=y.el,null===m&&Wt(d,y.el),l&&fo(l,f),(n=t.props&&t.props.onVnodeUpdated)&&fo(function(){return yo(n,c,t,g)},f)}else{var _,b=e,x=b.el,C=b.props,S=d.bm,k=d.m,T=d.parent,w=sn(e);if(i.allowRecurse=!1,S&&K(S),!w&&(_=C&&C.onVnodeBeforeMount)&&yo(_,T,e),i.allowRecurse=!0,x&&P){var N=function(){d.subTree=Ut(d),P(x,d.subTree,d,f,null)};w?e.type.__asyncLoader().then(function(){return!d.isUnmounted&&N()}):N()}else{var E=d.subTree=Ut(d);h(null,E,p,u,d,f,r),e.el=E.el}if(k&&fo(k,f),!w&&(_=C&&C.onVnodeMounted)){var R=e;fo(function(){return yo(_,T,R)},f)}256&e.shapeFlag&&d.a&&fo(d.a,f),d.isMounted=!0,e=p=u=null}},function(){return Sr(d.update)},d.scope),l=d.update=i.run.bind(i);l.id=d.uid,i.allowRecurse=l.allowRecurse=!0,l()},I=function(s,e,t){e.component=s;var n=s.vnode.props;s.vnode=e,s.next=null,function(d,e,t,n){var o=d.props,r=d.attrs,s=d.vnode.patchFlag,i=yt(o),l=_slicedToArray(d.propsOptions,1),p=l[0],c=!1;if(!(n||0<s)||16&s){var u;for(var h in Gn(d,e,o,r)&&(c=!0),i)e&&(C(e,h)||(u=H(h))!==h&&C(e,u))||(p?!t||void 0===t[h]&&void 0===t[u]||(o[h]=qn(p,i,h,void 0,d,!0)):delete o[h]);if(r!==i)for(var f in r)e&&C(e,f)||(delete r[f],c=!0)}else if(8&s)for(var g=d.vnode.dynamicProps,m=0;m<g.length;m++){var y=g[m],v=e[y];if(!p)v!==r[y]&&(r[y]=v,c=!0);else if(C(r,y))v!==r[y]&&(r[y]=v,c=!0);else{var _=O(y);o[_]=qn(p,i,_,v,d,!1)}}c&&_e(d,"set","$attrs")}(s,e.props,n,t),function(a,e,t){var n=a.vnode,o=a.slots,r=!0,d=Kl;if(32&n.shapeFlag){var l=e._;l?t&&1===l?r=!1:(zl(o,e),t||1!==l||delete o._):(r=!e.$stable,oo(e,o)),d=e}else e&&(ro(a,e),d={default:1});if(r)for(var c in o)Dn(c)||c in d||delete o[c]}(s,e.children,t),te(),Er(void 0,s.update),de()},V=function(a,e,t,n,o,r,s,i){var l=!!(8<arguments.length&&arguments[8]!==void 0)&&arguments[8],c=a&&a.children,u=a?a.shapeFlag:0,p=e.children,f=e.patchFlag,d=e.shapeFlag;if(0<f){if(128&f)return void L(c,p,t,n,o,r,s,i,l);if(256&f)return void B(c,p,t,n,o,r,s,i,l)}8&d?(16&u&&re(c,o,r),p!==c&&Z(t,p)):16&u?16&d?L(c,p,t,n,o,r,s,i,l):re(c,o,r,!0):(8&u&&Z(t,""),16&d&&S(p,t,n,o,r,s,i,l))},B=function(d,m,y,n,o,r,s,i,l){var c,v=(d=d||g).length,a=(m=m||g).length,u=Math.min(v,a);for(c=0;c<u;c++){var p=m[c]=l?qo(m[c]):Wo(m[c]);h(d[c],p,y,null,o,r,s,i,l)}v>a?re(d,o,r,!0,!1,u):S(m,y,n,o,r,s,i,l,u)},L=function(d,e,t,n,o,r,s,i,l){for(var c=0,m=e.length,u=d.length-1,y=m-1;c<=u&&c<=y;){var v=d[c],_=e[c]=l?qo(e[c]):Wo(e[c]);if(!Uo(v,_))break;h(v,_,t,null,o,r,s,i,l),c++}for(;c<=u&&c<=y;){var b=d[u],x=e[y]=l?qo(e[y]):Wo(e[y]);if(!Uo(b,x))break;h(b,x,t,null,o,r,s,i,l),u--,y--}if(c>u){if(c<=y)for(var C=y+1,S=C<m?e[C].el:n;c<=y;)h(null,e[c]=l?qo(e[c]):Wo(e[c]),t,S,o,r,s,i,l),c++;}else if(c>y)for(;c<=u;)$(d[c],o,r,!0),c++;else{var k=c,T=c,w=new Map;for(c=T;c<=y;c++){var N=e[c]=l?qo(e[c]):Wo(e[c]);null!=N.key&&w.set(N.key,c)}var E,R=0,I=y-T+1,P=!1,F=0,A=Array(I);for(c=0;c<I;c++)A[c]=0;for(c=k;c<=u;c++){var V=d[c];if(R>=I){$(V,o,r,!0);continue}var M=void 0;if(null!=V.key)M=w.get(V.key);else for(E=T;E<=y;E++)if(0===A[E-T]&&Uo(V,e[E])){M=E;break}void 0===M?$(V,o,r,!0):(A[M-T]=c+1,M>=F?F=M:P=!0,h(V,e[M],t,null,o,r,s,i,l),R++)}var B=P?function(a){var e,d,p,u,h,f=a.slice(),t=[0],n=a.length;for(e=0;e<n;e++){var c=a[e];if(0!==c){if(d=t[t.length-1],a[d]<c){f[e]=d,t.push(e);continue}for(p=0,u=t.length-1;p<u;)h=p+u>>1,a[t[h]]<c?p=h+1:u=h;c<a[t[p]]&&(0<p&&(f[e]=t[p-1]),t[p]=e)}}for(p=t.length,u=t[p-1];0<p--;)t[p]=u,u=f[u];return t}(A):g;for(E=B.length-1,c=I-1;0<=c;c--){var L=T+c,O=e[L],H=L+1<m?e[L+1].el:n;0===A[c]?h(null,O,t,H,o,r,s,i,l):P&&(0>E||c!==B[E]?U(O,t,H,2):E--)}}},U=function n(d,e,t,o){var r=4<arguments.length&&arguments[4]!==void 0?arguments[4]:null,s=d.el,p=d.type,l=d.transition,c=d.children,a=d.shapeFlag;if(6&a)return void n(d.component.subTree,e,t,o);if(128&a)return void d.suspense.move(e,t,o);if(64&a)return void p.move(d,e,t,Y);if(p===Eo){D(s,e,t);for(var u=0;u<c.length;u++)n(c[u],e,t,o);return void D(d.anchor,e,t)}if(p===Mo)return void function(n,a,o){for(var r,d=n.el,l=n.anchor;d&&d!==l;)r=i(d),D(d,a,o),d=r;D(l,a,o)}(d,e,t);if(!(2!==o&&1&a&&l))D(s,e,t);else if(0===o)l.beforeEnter(s),D(s,e,t),fo(function(){return l.enter(s)},r);else{var h=l.leave,f=l.delayLeave,g=l.afterLeave,m=function(){return D(s,e,t)},y=function(){h(s,function(){m(),g&&g()})};f?f(s,m,y):y()}},$=function(g,e,t){var n=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3],o=!!(4<arguments.length&&arguments[4]!==void 0)&&arguments[4],r=g.type,s=g.props,i=g.ref,l=g.children,c=g.dynamicChildren,a=g.shapeFlag,u=g.patchFlag,p=g.dirs;if(null!=i&&go(i,null,t,g,!0),256&a)return void e.ctx.deactivate(g);var f,y=1&a&&p,d=!sn(g);if(d&&(f=s&&s.onVnodeBeforeUnmount)&&yo(f,e,g),6&a)G(g.component,t,n);else{if(128&a)return void g.suspense.unmount(t,n);y&&Yt(g,null,e,"beforeUnmount"),64&a?g.type.remove(g,e,t,o,Y,n):c&&(r!==Eo||0<u&&64&u)?re(c,e,t,!1,!0):(r===Eo&&384&u||!o&&16&a)&&re(l,e,t),n&&se(g)}(d&&(f=s&&s.onVnodeUnmounted)||y)&&fo(function(){f&&yo(f,e,g),y&&Yt(g,null,e,"unmounted")},t)},se=function(o){var e=o.type,t=o.el,n=o.anchor,a=o.transition;if(e===Eo)return void ae(t,n);if(e===Mo)return void function(o){for(var s,a=o.el,r=o.anchor;a&&a!==r;)s=i(a),j(a),a=s;j(r)}(o);var s=function(){j(t),a&&!a.persisted&&a.afterLeave&&a.afterLeave()};if(1&o.shapeFlag&&a&&!a.persisted){var r=a.leave,d=a.delayLeave,l=function(){return r(t,s)};d?d(o.el,s,l):l()}else s()},ae=function(o,s){for(var t;o!==s;)t=i(o),j(o),o=t;j(s)},G=function(a,e,t){var n=a.bum,o=a.scope,r=a.update,s=a.subTree,i=a.um;n&&K(n),o.stop(),r&&(r.active=!1,$(s,a,e,t)),i&&fo(i,e),fo(function(){a.isUnmounted=!0},e),e&&e.pendingBranch&&!e.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===e.pendingId&&(e.deps--,0===e.deps&&e.resolve())},re=function(a,e,t){for(var n=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3],o=!!(4<arguments.length&&arguments[4]!==void 0)&&arguments[4],r=5<arguments.length&&arguments[5]!==void 0?arguments[5]:0,s=r;s<a.length;s++)$(a[s],e,t,n,o)},Q=function n(t){return 6&t.shapeFlag?n(t.component.subTree):128&t.shapeFlag?t.suspense.next():i(t.anchor||t.el)},X=function(o,e,t){null==o?e._vnode&&$(e._vnode,null,null,!0):h(e._vnode||null,o,e,null,null,null,t),Rr(),e._vnode=o},Y={p:h,um:$,m:U,r:se,mt:R,mc:S,pc:V,pbc:k,n:Q,o:y};return e&&(t=e(Y),v=_slicedToArray(t,2),T=v[0],P=v[1],t),{render:X,hydrate:T,createApp:eo(X,T)}}function go(d,h,t,n){var o=!!(4<arguments.length&&arguments[4]!==void 0)&&arguments[4];if(Gl(d))return void d.forEach(function(a,e){return go(a,h&&(Gl(h)?h[e]:h),t,n,o)});if(!sn(n)||o){var e=4&n.shapeFlag?er(n.component)||n.component.proxy:n.el,s=o?null:e,r=d.i,i=d.r,l=h&&h.r,a=r.refs===Kl?r.refs={}:r.refs,c=r.setupState;if(null!=l&&l!==i&&(N(l)?(a[l]=null,C(c,l)&&(c[l]=null)):xt(l)&&(l.value=null)),N(i)){var p=function(){a[i]=s,C(c,i)&&(c[i]=s)};s?(p.id=-1,fo(p,t)):p()}else if(xt(i)){var u=function(){i.value=s};s?(u.id=-1,fo(u,t)):u()}else w(i)&&yr(i,r,12,[s,a])}}function yo(s,e,t){var n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;_r(s,e,7,[t,n])}function vo(s,e){var t=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=s.children,o=e.children;if(Gl(n)&&Gl(o))for(var a=0;a<n.length;a++){var r=n[a],i=o[a];1&i.shapeFlag&&!i.dynamicChildren&&((0>=i.patchFlag||32===i.patchFlag)&&(i=o[a]=qo(o[a]),i.el=r.el),t||vo(r,i))}}function _o(d,e,t,n){var h=n.o.insert,o=n.m,r=4<arguments.length&&arguments[4]!==void 0?arguments[4]:2;0===r&&h(d.targetAnchor,e,t);var s=d.el,i=d.anchor,l=d.shapeFlag,c=d.children,a=d.props,u=2===r;if(u&&h(s,e,t),(!u||mo(a))&&16&l)for(var p=0;p<c.length;p++)o(c[p],e,t,2);u&&h(i,e,t)}function bo(s,e){var t=!(2<arguments.length&&arguments[2]!==void 0)||arguments[2],n=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3],o=Ot||ac;if(o){var a=o.type;if(s==="components"){var r=nr(a);if(r&&(r===e||r===O(e)||r===D(O(e))))return a}var i=So(o[s]||a[s],e)||So(o.appContext[s],e);return!i&&n?a:i}}function So(n,e){return n&&(n[e]||n[O(e)]||n[D(O(e))])}function ko(){var n=!!(0<arguments.length&&arguments[0]!==void 0)&&arguments[0];Oo.push(Po=n?null:[])}function To(){Oo.pop(),Po=Oo[Oo.length-1]||null}function No(n){nc+=n}function Ro(n){return n.dynamicChildren=0<nc?Po||g:null,To(),0<nc&&Po&&Po.push(n),n}function Vo(s,e,t,n,o){return Ro(Go(s,e,t,n,o,!0))}function Bo(n){return!!n&&!0===n.__v_isVNode}function Uo(n,e){return n.type===e.type&&n.key===e.key}function Ho(a){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null,t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null,n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:0,o=4<arguments.length&&arguments[4]!==void 0?arguments[4]:null,r=5<arguments.length&&arguments[5]!==void 0?arguments[5]:a===Eo?0:1,s=!!(6<arguments.length&&arguments[6]!==void 0)&&arguments[6],i=!!(7<arguments.length&&arguments[7]!==void 0)&&arguments[7],d={__v_isVNode:!0,__v_skip:!0,type:a,props:e,key:e&&zo(e),ref:e&&Ko(e),scopeId:Jl,slotScopeIds:null,children:t,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:n,dynamicProps:o,dynamicChildren:null,appContext:null};return i?(Qo(d,t),128&r&&a.normalize(d)):t&&(d.shapeFlag|=N(t)?8:16),0<nc&&!s&&Po&&(0<d.patchFlag||6&r)&&32!==d.patchFlag&&Po.push(d),d}function Do(n){return n?mt(n)||"__vInternal"in n?zl({},n):n:null}function jo(a,e){var t=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=a.props,o=a.ref,r=a.patchFlag,s=a.children,i=e?Xo(n||{},e):n;return{__v_isVNode:!0,__v_skip:!0,type:a.type,props:i,key:i&&zo(i),ref:e&&e.ref?t&&o?Gl(o)?o.concat(Ko(e)):[o,Ko(e)]:Ko(e):o,scopeId:a.scopeId,slotScopeIds:a.slotScopeIds,children:s,target:a.target,targetAnchor:a.targetAnchor,staticCount:a.staticCount,shapeFlag:a.shapeFlag,patchFlag:e&&a.type!==Eo?-1===r?16:16|r:r,dynamicProps:a.dynamicProps,dynamicChildren:a.dynamicChildren,appContext:a.appContext,dirs:a.dirs,transition:a.transition,component:a.component,suspense:a.suspense,ssContent:a.ssContent&&jo(a.ssContent),ssFallback:a.ssFallback&&jo(a.ssFallback),el:a.el,anchor:a.anchor}}function $o(){var n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:" ",e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:0;return Go(Fo,null,n,e)}function Wo(n){return null==n||"boolean"==typeof n?Go(Ao):Gl(n)?Go(Eo,null,n.slice()):"object"==_typeof(n)?qo(n):Go(Fo,null,n+"")}function qo(n){return null===n.el||n.memo?n:jo(n)}function Qo(s,e){var a=0,r=s.shapeFlag;if(null==e)e=null;else if(Gl(e))a=16;else if("object"==_typeof(e)){if(65&r){var o=e["default"];return void(o&&(o._c&&(o._d=!1),Qo(s,o()),o._c&&(o._d=!0)))}{a=32;var i=e._;i||"__vInternal"in e?3===i&&Ot&&(1===Ot.slots._?e._=1:(e._=2,s.patchFlag|=1024)):e._ctx=Ot}}else w(e)?(e={default:e,_ctx:Ot},a=32):(e=e+"",64&r?(a=16,e=[$o(e)]):a=8);s.children=e,s.shapeFlag|=a}function Xo(){for(var e,n={},t=0;t<arguments.length;t++)for(var o in e=0>t||arguments.length<=t?void 0:arguments[t],e)if("class"===o)n["class"]!==e["class"]&&(n["class"]=c([n["class"],e["class"]]));else if("style"===o)n.style=r([n.style,e.style]);else if(_(o)){var s=n[o],a=e[o];s!==a&&(n[o]=s?[].concat(s,a):a)}else""!==o&&(n[o]=e[o]);return n}function Yo(n){return n.some(function(n){return!Bo(n)||n.type!==Ao&&(n.type!==Eo||Yo(n.children))})?n:null}function Zo(n){return 4&n.vnode.shapeFlag}function ms(n,e){w(e)?n.render=e:R(e)&&(n.setupState=Nt(e)),Is(n)}function _s(n){Hl=n,Dl=function(n){n.render._rc&&(n.withProxy=new Proxy(n.ctx,ir))}}function Is(n){var e=n.type;if(!n.render){if(Hl&&!e.render){var t=e.template;if(t){var o=n.appContext.config,s=o.isCustomElement,a=o.compilerOptions,r=e.delimiters,i=e.compilerOptions,d=zl(zl({isCustomElement:s,delimiters:r},a),i);e.render=Hl(t,d)}}n.render=e.render||Wl,Dl&&Dl(n)}pr(n),te(),In(n),de(),fr()}function Ps(t){var e;return{get attrs(){return e||(e=function(o){return new Proxy(o.attrs,{get:function(e,t){return ge(o,0,"$attrs"),e[t]}})}(t))},slots:t.slots,emit:t.emit,expose:function(e){t.exposed=e||{}}}}function er(o){if(o.exposed)return o.exposeProxy||(o.exposeProxy=new Proxy(Nt(vt(o.exposed)),{get:function(e,t){return t in e?e[t]:t in rr?rr[t](o):void 0}}))}function nr(n){return w(n)&&n.displayName||n.name}function tr(s,a){var e=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=nr(a);if(!n&&a.__file){var t=a.__file.match(/([^/\\]+)\.\w+$/);t&&(n=t[1])}if(!n&&s&&s.parent){var r=function(n){for(var e in n)if(n[e]===a)return e};n=r(s.components||s.parent.type.components)||r(s.appContext.components)}return n?n.replace(lc,function(n){return n.toUpperCase()}).replace(/[-_]/g,""):e?"App":"Anonymous"}function or(o){var e=[],t=Object.keys(o);return t.slice(0,3).forEach(function(t){e.push.apply(e,_toConsumableArray(hr(t,o[t])))}),3<t.length&&e.push(" ..."),e}function hr(o,e,s){return N(e)?(e=JSON.stringify(e),s?e:["".concat(o,"=").concat(e)]):"number"==typeof e||"boolean"==typeof e||null==e?s?e:["".concat(o,"=").concat(e)]:xt(e)?(e=hr(o,yt(e.value),!0),s?e:["".concat(o,"=Ref<"),e,">"]):w(e)?["".concat(o,"=fn").concat(e.name?"<".concat(e.name,">"):"")]:(e=yt(e),s?e:["".concat(o,"="),e])}function yr(s,e,t,n){var o;try{o=n?s.apply(void 0,_toConsumableArray(n)):s()}catch(n){br(n,e,t)}return o}function _r(s,a,t,e){if(w(s)){var n=yr(s,a,t,e);return n&&F(n)&&n["catch"](function(n){br(n,a,t)}),n}for(var o=[],r=0;r<s.length;r++)o.push(_r(s[r],a,t,e));return o}function br(s,e,t){var n=!(3<arguments.length&&arguments[3]!==void 0)||arguments[3];if(e){for(var o=e.parent,a=e.proxy,r=t;o;){var i=o.ec;if(i)for(var d=0;d<i.length;d++)if(!1===i[d](s,a,r))return;o=o.parent}var l=e.appContext.config.errorHandler;if(l)return void yr(l,null,10,[s,a,r])}!function(n){!(3<arguments.length&&arguments[3]!==void 0)||arguments[3];console.error(n)}(s,0,0,n)}function xr(n){var e=Dr||mc;return n?e.then(this?n.bind(this):n):e}function Sr(n){pc.length&&pc.includes(n,Tr&&n.allowRecurse?Pr+1:Pr)||n===yc||(null==n.id?pc.push(n):pc.splice(function(o){for(var e=Pr+1,s=pc.length;e<s;){var a=e+s>>>1;vc(pc[a])<o?e=a+1:s=a}return e}(n.id),0,n),kr())}function kr(){Tr||cc||(cc=!0,Dr=mc.then(Fr))}function wr(s,e,t,n){Gl(s)?t.push.apply(t,_toConsumableArray(s)):e&&e.includes(s,s.allowRecurse?n+1:n)||t.push(s),kr()}function Nr(n){wr(n,jr,fc,gc)}function Er(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:null;if(uc.length){for(yc=e,Vr=_toConsumableArray(new Set(uc)),uc.length=0,hc=0;hc<Vr.length;hc++)Vr[hc]();Vr=null,hc=0,yc=null,Er(n,e)}}function Rr(){if(fc.length){var e,n=_toConsumableArray(new Set(fc));if(fc.length=0,jr)return void(e=jr).push.apply(e,_toConsumableArray(n));for(jr=n,jr.sort(function(n,e){return vc(n)-vc(e)}),gc=0;gc<jr.length;gc++)jr[gc]();jr=null,gc=0}}function Fr(n){cc=!1,Tr=!0,Er(n),pc.sort(function(n,e){return vc(n)-vc(e)});try{for(Pr=0;Pr<pc.length;Pr++){var e=pc[Pr];e&&!1!==e.active&&yr(e,null,14)}}finally{Pr=0,pc.length=0,Rr(),Tr=!1,Dr=null,(pc.length||uc.length||fc.length)&&Fr(n)}}function es(n){return os(n,null,{flush:"post"})}function ts(o,e,t){return os(o,e,t)}function os(g,e){var t,m,y=2<arguments.length&&arguments[2]!==void 0?arguments[2]:Kl,v=y.immediate,n=y.deep,_=y.flush,r=ac,s=!1,x=!1;if(xt(g)?(t=function(){return g.value},s=!!g._shallow):ft(g)?(t=function(){return g},n=!0):Gl(g)?(x=!0,s=g.some(ft),t=function(){return g.map(function(n){return xt(n)?n.value:ft(n)?is(n):w(n)?yr(n,r,2):void 0})}):t=w(g)?e?function(){return yr(g,r,2)}:function(){if(!r||!r.isUnmounted)return m&&m(),_r(g,r,3,[k])}:Wl,e&&n){var C=t;t=function(){return is(C())}}var S,k=function(n){m=f.onStop=function(){yr(n,r,4)}},u=x?[]:Yr,T=function(){if(f.active)if(e){var t=f.run();(n||s||(x?t.some(function(n,e){return $(n,u[e])}):$(t,u)))&&(m&&m(),_r(e,r,3,[t,u===Yr?void 0:u,k]),u=t)}else f.run()};T.allowRecurse=!!e,S="sync"===_?T:"post"===_?function(){return fo(T,r&&r.suspense)}:function(){!r||r.isMounted?function(n){wr(n,Vr,uc,hc)}(T):T()};var f=new ce(t,S);return e?v?T():u=f.run():"post"===_?fo(f.run.bind(f),r&&r.suspense):f.run(),function(){f.stop(),r&&r.scope&&b(r.scope.effects,f)}}function rs(a,e,t){var d,c=this.proxy,o=N(a)?a.includes(".")?ss(c,a):function(){return c[a]}:a.bind(c,c);w(e)?d=e:(d=e.handler,t=e);var r=ac;pr(this);var i=os(o,d.bind(c),t);return r?pr(r):fr(),i}function ss(o,e){var s=e.split(".");return function(){for(var e=o,n=0;n<s.length&&e;n++)e=e[s[n]];return e}}function is(n){var o=1<arguments.length&&arguments[1]!==void 0?arguments[1]:new Set;if(!R(n)||n.__v_skip)return n;if((o=o||new Set).has(n))return n;if(o.add(n),xt(n))is(n.value,o);else if(Gl(n))for(var e=0;e<n.length;e++)is(n[e],o);else if(k(n)||S(n))n.forEach(function(n){is(n,o)});else if(A(n))for(var s in n)is(n[s],o);return n}function ls(){var n=ic();return n.setupContext||(n.setupContext=Ps(n))}function cs(s,e,t){var a=arguments.length;return 2===a?R(e)&&!Gl(e)?Bo(e)?Go(s,null,[e]):Go(s,e):Go(s,null,e):(3<a?t=Array.prototype.slice.call(arguments,2):3===a&&Bo(t)&&(t=[t]),Go(s,e,t))}function as(o,e){var t=o.memo;if(t.length!=e.length)return!1;for(var n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return 0<nc&&Po&&Po.push(o),!0}function ps(o,e,t){if(Gl(t))t.forEach(function(t){return ps(o,e,t)});else if(e.startsWith("--"))o.setProperty(e,t);else{var n=function(s,e){var t=ys[e];if(t)return t;var n=O(e);if("filter"!==n&&n in s)return ys[e]=n;n=D(n);for(var a,r=0;r<gs.length;r++)if(a=gs[r]+n,a in s)return ys[e]=a;return e}(o,e);hs.test(t)?o.setProperty(H(n),t.replace(hs,""),"important"):o[n]=t}}function vs(s,e,t,n){s.addEventListener(e,t,n)}function Ts(a,e,t,n){var o=4<arguments.length&&arguments[4]!==void 0?arguments[4]:null,r=a._vei||(a._vei={}),s=r[e];if(n&&s)s.value=n;else{var i=function(n){var o;if(ks.test(n)){var s;for(o={};s=n.match(ks);)n=n.slice(0,n.length-s[0].length),o[s[0].toLowerCase()]=!0}return[H(n.slice(2)),o]}(e),d=_slicedToArray(i,2),l=d[0],c=d[1];n?vs(a,l,r[e]=function(o,s){var e=function t(n){var e=n.timeStamp||bs();(_c||e>=t.attached-1)&&_r(function(n,e){if(Gl(e)){var t=n.stopImmediatePropagation;return n.stopImmediatePropagation=function(){t.call(n),n._stopped=!0},e.map(function(n){return function(e){return!e._stopped&&n(e)}})}return e}(n,t.value),s,5,[n])};return e.value=o,e.attached=function(){return xc||(Cc.then(ws),xc=bs())}(),e}(n,o),c):s&&(!function(s,e,t,n){s.removeEventListener(e,t,n)}(a,l,s,c),r[e]=void 0)}}function Ns(s,a){var t=fn(s),e=/*#__PURE__*/function(e){function n(s){return _classCallCheck(this,n),o.call(this,t,s,a)}_inherits(n,e);var o=_createSuper(n);return n}(Fs);return e.def=t,e}function Rs(n,o){if(128&n.shapeFlag){var t=n.suspense;n=t.activeBranch,t.pendingBranch&&!t.isHydrating&&t.effects.push(function(){Rs(t.activeBranch,o)})}for(;n.component;)n=n.component.subTree;if(1&n.shapeFlag&&n.el)Ms(n.el,o);else if(n.type===Eo)n.children.forEach(function(n){return Rs(n,o)});else if(n.type===Mo)for(var s=n,a=s.el,r=s.anchor;a&&(Ms(a,o),a!==r);)a=a.nextSibling}function Ms(n,e){if(1===n.nodeType){var t=n.style;for(var o in e)t.setProperty("--".concat(o),e[o])}}function Os(C){var e={};for(var t in C)t in Tc||(e[t]=C[t]);if(!1===C.css)return e;var I=C.name,P=void 0===I?"v":I,F=C.type,n=C.duration,o=C.enterFromClass,A=void 0===o?"".concat(P,"-enter-from"):o,s=C.enterActiveClass,r=void 0===s?"".concat(P,"-enter-active"):s,i=C.enterToClass,V=void 0===i?"".concat(P,"-enter-to"):i,l=C.appearFromClass,M=void 0===l?A:l,c=C.appearActiveClass,B=void 0===c?r:c,a=C.appearToClass,L=void 0===a?V:a,u=C.leaveFromClass,O=void 0===u?"".concat(P,"-leave-from"):u,p=C.leaveActiveClass,U=void 0===p?"".concat(P,"-leave-active"):p,f=C.leaveToClass,H=void 0===f?"".concat(P,"-leave-to"):f,d=function(n){if(null==n)return null;if(R(n))return[Hs(n.enter),Hs(n.leave)];{var e=Hs(n);return[e,e]}}(n),h=d&&d[0],m=d&&d[1],g=e.onBeforeEnter,v=e.onEnter,y=e.onEnterCancelled,b=e.onLeave,_=e.onLeaveCancelled,S=e.onBeforeAppear,D=void 0===S?g:S,x=e.onAppear,j=void 0===x?v:x,w=e.onAppearCancelled,$=void 0===w?y:w,k=function(o,e,t){Ws(o,e?L:V),Ws(o,e?B:r),t&&t()},T=function(n,e){Ws(n,H),Ws(n,U),e&&e()},N=function(o){return function(e,t){var n=o?j:v,s=function(){return k(e,o,t)};Ls(n,[e,s]),zs(function(){Ws(e,o?M:A),Ds(e,o?L:V),js(n)||Ks(e,F,h,s)})}};return zl(e,{onBeforeEnter:function(n){Ls(g,[n]),Ds(n,A),Ds(n,r)},onBeforeAppear:function(n){Ls(D,[n]),Ds(n,M),Ds(n,B)},onEnter:N(!1),onAppear:N(!0),onLeave:function(o,e){var t=function(){return T(o,e)};Ds(o,O),Qs(),Ds(o,U),zs(function(){Ws(o,O),Ds(o,H),js(b)||Ks(o,F,m,t)}),Ls(b,[o,t])},onEnterCancelled:function(n){k(n,!1),Ls(y,[n])},onAppearCancelled:function(n){k(n,!0),Ls($,[n])},onLeaveCancelled:function(n){T(n),Ls(_,[n])}})}function Hs(n){return z(n)}function Ds(n,e){e.split(/\s+/).forEach(function(e){return e&&n.classList.add(e)}),(n._vtc||(n._vtc=new Set)).add(e)}function Ws(o,e){e.split(/\s+/).forEach(function(e){return e&&o.classList.remove(e)});var t=o._vtc;t&&(t["delete"](e),t.size||(o._vtc=void 0))}function zs(n){requestAnimationFrame(function(){requestAnimationFrame(n)})}function Ks(d,e,t,n){var o=d._endId=++Us,r=function(){o===d._endId&&n()};if(t)return setTimeout(r,t);var s=qs(d,e),h=s.type,i=s.timeout,l=s.propCount;if(!h)return n();var c=h+"end",a=0,g=function(){d.removeEventListener(c,p),r()},p=function(e){e.target===d&&++a>=l&&g()};setTimeout(function(){a<l&&g()},i+1),d.addEventListener(c,p)}function qs(d,e){var t=window.getComputedStyle(d),n=function(n){return(t[n]||"").split(", ")},o=n("transitionDelay"),r=n("transitionDuration"),s=Js(o,r),i=n("animationDelay"),l=n("animationDuration"),c=Js(i,l),a=null,h=0,g=0;return"transition"===e?0<s&&(a="transition",h=s,g=r.length):"animation"===e?0<c&&(a="animation",h=c,g=l.length):(h=Nl(s,c),a=0<h?s>c?"transition":"animation":null,g=a?"transition"===a?r.length:l.length:0),{type:a,timeout:h,propCount:g,hasTransform:"transition"===a&&/\b(transform|all)(,|$)/.test(t.transitionProperty)}}function Js(o,n){for(;o.length<n.length;)o=o.concat(o);return Nl.apply(Math,_toConsumableArray(n.map(function(e,t){return Zs(e)+Zs(o[t])})))}function Zs(n){return 1e3*+n.slice(0,-1).replace(",",".")}function Qs(){return document.body.offsetHeight}function Xs(n){var e=n.el;e._moveCb&&e._moveCb(),e._enterCb&&e._enterCb()}function Ar(n){Ys.set(n,n.el.getBoundingClientRect())}function $r(s){var e=wc.get(s),t=Ys.get(s),n=e.left-t.left,o=e.top-t.top;if(n||o){var a=s.el.style;return a.transform=a.webkitTransform="translate(".concat(n,"px,").concat(o,"px)"),a.transitionDuration="0s",s}}function Kr(n){n.target.composing=!0}function Gr(n){var e=n.target;e.composing&&(e.composing=!1,function(o,e){var t=document.createEvent("HTMLEvents");t.initEvent(e,!0,!0),o.dispatchEvent(t)}(e,"input"))}function qr(s,e,r){var o=e.value,t=e.oldValue;s._modelValue=o,Gl(o)?s.checked=-1<d(o,r.props.value):k(o)?s.checked=o.has(r.props.value):o!==t&&(s.checked=a(o,Xr(s,!0)))}function Jr(o,e){var t=o.multiple;if(!t||Gl(e)||k(e)){for(var n=0,s=o.options.length;n<s;n++){var r=o.options[n],i=Qr(r);if(t)r.selected=Gl(e)?-1<d(e,i):e.has(i);else if(a(Qr(r),e))return void(o.selectedIndex!==n&&(o.selectedIndex=n))}t||-1===o.selectedIndex||(o.selectedIndex=-1)}}function Qr(n){return"_value"in n?n._value:n.value}function Xr(o,e){var t=e?"_trueValue":"_falseValue";return t in o?o[t]:e}function Zr(a,e,t,n,o){var r;switch(a.tagName){case"SELECT":r=pi;break;case"TEXTAREA":r=si;break;default:switch(t.props&&t.props.type){case"checkbox":r=ci;break;case"radio":r=ai;break;default:r=si;}}var d=r[o];d&&d(a,e,t,n)}function ni(n,e){n.style.display=e?n._vod:"none"}function oi(){return Vs||(Vs=io(_i))}function ri(){return Vs=Ci?Vs:lo(_i),Ci=!0,Vs}function ii(n){return N(n)?document.querySelector(n):n}function di(n){throw n}function li(){}function ui(n,e){var t=new SyntaxError(n+"");return t.code=n,t.loc=e,t}function hi(d,e,t,n,o,r,s){var i=!!(7<arguments.length&&arguments[7]!==void 0)&&arguments[7],l=!!(8<arguments.length&&arguments[8]!==void 0)&&arguments[8],c=!!(9<arguments.length&&arguments[9]!==void 0)&&arguments[9],a=10<arguments.length&&arguments[10]!==void 0?arguments[10]:_l;return d&&(i?(d.helper(Bi),d.helper(ld(d.inSSR,c))):d.helper(dd(d.inSSR,c)),s&&d.helper(Zi)),{type:13,tag:e,props:t,children:n,patchFlag:o,dynamicProps:r,directives:s,isBlock:i,disableTracking:l,isComponent:c,loc:a}}function gi(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:_l;return{type:17,loc:e,elements:n}}function mi(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:_l;return{type:15,loc:e,properties:n}}function vi(n,e){return{type:16,loc:_l,key:N(n)?xi(n,!0):n,value:e}}function xi(s){var e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1],t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:_l,n=3<arguments.length&&arguments[3]!==void 0?arguments[3]:0;return{type:4,loc:t,content:s,isStatic:e,constType:e?3:n}}function Si(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:_l;return{type:8,loc:e,children:n}}function Ti(o){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[],t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:_l;return{type:14,loc:t,callee:o,arguments:e}}function Ni(s,e){var t=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=!!(3<arguments.length&&arguments[3]!==void 0)&&arguments[3],o=4<arguments.length&&arguments[4]!==void 0?arguments[4]:_l;return{type:18,params:s,returns:e,newline:t,isSlot:n,loc:o}}function Ri(s,e,t){var n=!(3<arguments.length&&arguments[3]!==void 0)||arguments[3];return{type:19,test:s,consequent:e,alternate:t,newline:n,loc:_l}}function Fi(n){return Fl(n,"Teleport")?Oi:Fl(n,"Suspense")?Pi:Fl(n,"KeepAlive")?Ii:Fl(n,"BaseTransition")?Vi:void 0}function Ai(s,e,t){var n={source:s.source.substr(e,t),start:Mi(s.start,s.source,e),end:s.end};return null!=t&&(n.end=Mi(s.start,s.source,e+t)),n}function Mi(o,e){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:e.length;return ed(zl({},o),e,t)}function ed(s,e){for(var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:e.length,n=0,a=-1,i=0;i<t;i++)10===e.charCodeAt(i)&&(n++,a=i);return s.offset+=t,s.line+=n,s.column=-1===a?s.column+t:t-a,s}function nd(o,e){for(var t,s=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],n=0;n<o.props.length;n++)if(t=o.props[n],7===t.type&&(s||t.exp)&&(N(e)?t.name===e:e.test(t.name)))return t}function td(s,e){for(var t,a=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],n=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],o=0;o<s.props.length;o++)if(t=s.props[o],6===t.type){if(a)continue;if(t.name===e&&(t.value||n))return t}else if("bind"===t.name&&(t.exp||n)&&od(t.arg,e))return t}function od(n,e){return n&&Sl(n)&&n.content===e}function sd(n){return 5===n.type||2===n.type}function ad(n){return 7===n.type&&"slot"===n.name}function rd(n){return 1===n.type&&3===n.tagType}function id(n){return 1===n.type&&2===n.tagType}function dd(n,e){return n||e?Ui:Hi}function ld(n,e){return n||e?Li:ji}function cd(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[];if(n&&!N(n)&&14===n.type){var t=n.callee;if(!N(t)&&Ll.has(t))return cd(n.arguments[0],e.concat(n))}return[n,e]}function pd(a,e,t){var n,d,l=13===a.type?a.props:a.arguments[2],c=[];if(l&&!N(l)&&14===l.type){var p=cd(l);l=p[0],c=p[1],d=c[c.length-1]}if(null==l||N(l))n=mi([e]);else if(14===l.type){var u=l.arguments[0];N(u)||15!==u.type?l.callee===il?n=Ti(t.helper(tl),[mi([e]),l]):l.arguments.unshift(mi([e])):u.properties.unshift(e),n||(n=l)}else if(15===l.type){var h=!1;if(4===e.key.type){var f=e.key.content;h=l.properties.some(function(n){return 4===n.key.type&&n.key.content===f})}h||l.properties.unshift(e),n=l}else n=Ti(t.helper(tl),[mi([e]),l]),d&&d.callee===sl&&(d=c[c.length-2]);13===a.type?d?d.arguments[0]=n:a.props=n:d?d.arguments[0]=n:a.arguments[2]=n}function ud(n,e){return"_".concat(e,"_").concat(n.replace(/[^\w]/g,"_"))}function hd(s,e){var a=e.helper,t=e.removeHelper,n=e.inSSR;s.isBlock||(s.isBlock=!0,t(dd(n,s.isComponent)),a(Bi),a(ld(n,s.isComponent)))}function fd(s){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},t=function(s,e){var t,a=zl({},rc);for(t in e)a[t]=void 0===e[t]?rc[t]:e[t];return{options:a,column:1,line:1,offset:0,originalSource:s,source:s,inPre:!1,inVPre:!1,onWarn:a.onWarn}}(s,e),n=Nd(t);return function(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:_l;return{type:0,children:n,helpers:[],components:[],directives:[],hoists:[],imports:[],cached:0,temps:0,codegenNode:void 0,loc:e}}(gd(t,0,[]),Ed(t,n))}function gd(a,e,t){for(var n=Rd(t),o=n?n.ns:0,r=[];!Vd(a,e,t);){var s=a.source,d=void 0;if(0===e||1===e)if(!a.inVPre&&Id(s,a.options.delimiters[0]))d=kd(a,e);else if(0===e&&"<"===s[0])if(1===s.length);else if("!"===s[1])d=Id(s,"<!--")?vd(a):Id(s,"<!DOCTYPE")?_d(a):Id(s,"<![CDATA[")&&0!==o?yd(a,t):_d(a);else if(!("/"===s[1]))/[a-z]/i.test(s[1])?d=bd(a,t):"?"===s[1]&&(d=_d(a));else if(2===s.length);else{if(">"===s[2]){Pd(a,3);continue}if(/[a-z]/i.test(s[2])){xd(a,1,n);continue}d=_d(a)}if(d||(d=Td(a,e)),Gl(d))for(var l=0;l<d.length;l++)md(r,d[l]);else md(r,d)}var c=!1;if(2!==e&&1!==e){for(var p,u="preserve"!==a.options.whitespace,h=0;h<r.length;h++)if(p=r[h],a.inPre||2!==p.type)3!==p.type||a.options.comments||(c=!0,r[h]=null);else if(/[^\t\r\n\f ]/.test(p.content))u&&(p.content=p.content.replace(/[\t\r\n\f ]+/g," "));else{var f=r[h-1],g=r[h+1];!f||!g||u&&(3===f.type||3===g.type||1===f.type&&1===g.type&&/[\r\n]/.test(p.content))?(c=!0,r[h]=null):p.content=" "}if(a.inPre&&n&&a.options.isPreTag(n.tag)){var m=r[0];m&&2===m.type&&(m.content=m.content.replace(/^\r?\n/,""))}}return c?r.filter(Boolean):r}function md(n,e){if(2===e.type){var t=Rd(n);if(t&&2===t.type&&t.loc.end.offset===e.loc.start.offset)return t.content+=e.content,t.loc.end=e.loc.end,void(t.loc.source+=e.loc.source)}n.push(e)}function yd(o,e){Pd(o,9);var t=gd(o,3,e);return 0===o.source.length||Pd(o,3),t}function vd(s){var e,a=Nd(s),t=/--(\!)?>/.exec(s.source);if(t){e=s.source.slice(4,t.index);for(var o=s.source.slice(0,t.index),r=1,i=0;-1!==(i=o.indexOf("<!--",r));)Pd(s,i-r+1),r=i+1;Pd(s,t.index+t[0].length-r+1)}else e=s.source.slice(4),Pd(s,s.source.length);return{type:3,content:e,loc:Ed(s,a)}}function _d(s){var e,a=Nd(s),t="?"===s.source[1]?1:2,n=s.source.indexOf(">");return-1===n?(e=s.source.slice(t),Pd(s,s.source.length)):(e=s.source.slice(t,n),Pd(s,n+1)),{type:3,content:e,loc:Ed(s,a)}}function bd(d,e){var t=d.inPre,n=d.inVPre,o=Rd(e),r=xd(d,0,o),s=d.inPre&&!t,i=d.inVPre&&!n;if(r.isSelfClosing||d.options.isVoidTag(r.tag))return s&&(d.inPre=!1),i&&(d.inVPre=!1),r;e.push(r);var l=d.options.getTextMode(r,o),c=gd(d,l,e);if(e.pop(),r.children=c,Md(d.source,r.tag))xd(d,1,o);else if(0===d.source.length&&"script"===r.tag.toLowerCase()){var a=c[0];a&&Id(a.loc.source,"<!--")}return r.loc=Ed(d,r.loc.start),s&&(d.inPre=!1),i&&(d.inVPre=!1),r}function xd(d,e,t){var n=Nd(d),o=/^<\/?([a-z][^\t\r\n\f />]*)/i.exec(d.source),r=o[1],s=d.options.getNamespace(r,t);Pd(d,o[0].length),Fd(d);var i=Nd(d),l=d.source;d.options.isPreTag(r)&&(d.inPre=!0);var c=Cd(d,e);0===e&&!d.inVPre&&c.some(function(n){return 7===n.type&&"pre"===n.name})&&(d.inVPre=!0,zl(d,i),d.source=l,c=Cd(d,e).filter(function(n){return"v-pre"!==n.name}));var h=!1;if(0===d.source.length||(h=Id(d.source,"/>"),Pd(d,h?2:1)),1!==e){var f=0;return d.inVPre||("slot"===r?f=2:"template"===r?c.some(function(n){return 7===n.type&&sc(n.name)})&&(f=3):function(s,e,t){var n=t.options;if(n.isCustomElement(s))return!1;if("component"===s||/^[A-Z]/.test(s)||Fi(s)||n.isBuiltInComponent&&n.isBuiltInComponent(s)||n.isNativeTag&&!n.isNativeTag(s))return!0;for(var o,a=0;a<e.length;a++)if(o=e[a],6!==o.type){if("is"===o.name)return!0;"bind"===o.name&&od(o.arg,"is")}else if("is"===o.name&&o.value&&o.value.content.startsWith("vue:"))return!0}(r,c,d)&&(f=1)),{type:1,ns:s,tag:r,tagType:f,props:c,isSelfClosing:h,children:[],loc:Ed(d,n),codegenNode:void 0}}}function Cd(s,e){for(var t=[],n=new Set;0<s.source.length&&!Id(s.source,">")&&!Id(s.source,"/>");){if(Id(s.source,"/")){Pd(s,1),Fd(s);continue}var o=Sd(s,n);0===e&&t.push(o),/^[^\t\r\n\f />]/.test(s.source),Fd(s)}return t}function Sd(a,e){var t=Nd(a),n=/^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(a.source)[0];e.has(n),e.add(n);for(var o,i=/["'<]/g;o=i.exec(n););var d;Pd(a,n.length),/^[\t\r\n\f ]*=/.test(a.source)&&(Fd(a),Pd(a,1),Fd(a),d=function(s){var e,a=Nd(s),t=s.source[0],o="\""===t||"'"===t;if(o){Pd(s,1);var r=s.source.indexOf(t);-1===r?e=wd(s,s.source.length,4):(e=wd(s,r,4),Pd(s,1))}else{var i=/^[^\t\r\n\f >]+/.exec(s.source);if(!i)return;for(var d,l=/["'<=`]/g;d=l.exec(i[0]););e=wd(s,i[0].length,4)}return{content:e,isQuoted:o,loc:Ed(s,a)}}(a));var l=Ed(a,t);if(!a.inVPre&&/^(v-|:|\.|@|#)/.test(n)){var s,c=/(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec(n),p=Id(n,"."),u=c[1]||(p||Id(n,":")?"bind":Id(n,"@")?"on":"slot");if(c[2]){var h="slot"===u,f=n.lastIndexOf(c[2]),g=Ed(a,Ad(a,t,f),Ad(a,t,f+c[2].length+(h&&c[3]||"").length)),m=c[2],y=!0;m.startsWith("[")?(y=!1,m.endsWith("]"),m=m.substr(1,m.length-2)):h&&(m+=c[3]||""),s={type:4,content:m,isStatic:y,constType:y?3:0,loc:g}}if(d&&d.isQuoted){var v=d.loc;v.start.offset++,v.start.column++,v.end=Mi(v.start,d.content),v.source=v.source.slice(1,-1)}var _=c[3]?c[3].substr(1).split("."):[];return p&&_.push("prop"),{type:7,name:u,exp:d&&{type:4,content:d.content,isStatic:!1,constType:0,loc:d.loc},arg:s,modifiers:_,loc:l}}return{type:6,name:n,value:d&&{type:2,content:d.content,loc:d.loc},loc:l}}function kd(d,e){var t=_slicedToArray(d.options.delimiters,2),h=t[0],n=t[1],o=d.source.indexOf(n,h.length);if(-1!==o){var r=Nd(d);Pd(d,h.length);var s=Nd(d),i=Nd(d),l=o-h.length,c=d.source.slice(0,l),a=wd(d,l,e),u=a.trim(),p=a.indexOf(u);return 0<p&&ed(s,c,p),ed(i,c,l-(a.length-u.length-p)),Pd(d,n.length),{type:5,content:{type:4,isStatic:!1,constType:0,content:u,loc:Ed(d,s,i)},loc:Ed(d,r)}}}function Td(s,e){var t=["<",s.options.delimiters[0]];3===e&&t.push("]]>");for(var n,a=s.source.length,i=0;i<t.length;i++)n=s.source.indexOf(t[i],1),-1!==n&&a>n&&(a=n);var d=Nd(s);return{type:2,content:wd(s,a,e),loc:Ed(s,d)}}function wd(s,e,t){var n=s.source.slice(0,e);return Pd(s,e),2===t||3===t||-1===n.indexOf("&")?n:s.options.decodeEntities(n,4==t)}function Nd(s){var e=s.column,t=s.line,n=s.offset;return{column:e,line:t,offset:n}}function Ed(o,e,t){return{start:e,end:t=t||Nd(o),source:o.originalSource.slice(e.offset,t.offset)}}function Rd(n){return n[n.length-1]}function Id(n,e){return n.startsWith(e)}function Pd(o,e){var t=o.source;ed(o,t,e),o.source=t.slice(e)}function Fd(n){var e=/^[\t\r\n\f ]+/.exec(n.source);e&&Pd(n,e[0].length)}function Ad(o,e,t){return Mi(e,o.originalSource.slice(e.offset,t),t)}function Vd(s,e,t){var n=s.source;switch(e){case 0:if(Id(n,"</"))for(var o=t.length-1;0<=o;--o)if(Md(n,t[o].tag))return!0;break;case 1:case 2:{var a=Rd(t);if(a&&Md(n,a.tag))return!0;break}case 3:if(Id(n,"]]>"))return!0;}return!n}function Md(n,e){return Id(n,"</")&&n.substr(2,e.length).toLowerCase()===e.toLowerCase()&&/[\t\r\n\f />]/.test(n[2+e.length]||">")}function Bd(n,e){Od(n,e,Ld(n,n.children[0]))}function Ld(o,e){var t=o.children;return 1===t.length&&1===e.type&&!id(e)}function Od(a,e){for(var t,d=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],n=!0,l=a.children,r=l.length,s=0,c=0;c<l.length;c++){if(t=l[c],1===t.type&&0===t.tagType){var p=d?0:Ud(t,e);if(!(0<p)){var u=t.codegenNode;if(13===u.type){var h=$d(u);if((!h||512===h||1===h)&&2<=Dd(t,e)){var f=jd(t);f&&(u.props=e.hoist(f))}u.dynamicProps&&(u.dynamicProps=e.hoist(u.dynamicProps))}}else if(3>p&&(n=!1),2<=p){t.codegenNode.patchFlag="-1",t.codegenNode=e.hoist(t.codegenNode),s++;continue}}else if(12===t.type){var g=Ud(t.content,e);0<g&&(3>g&&(n=!1),2<=g&&(t.codegenNode=e.hoist(t.codegenNode),s++))}if(1===t.type){var m=1===t.tagType;m&&e.scopes.vSlot++,Od(t,e),m&&e.scopes.vSlot--}else if(11===t.type)Od(t,e,1===t.children.length);else if(9===t.type)for(var y=0;y<t.branches.length;y++)Od(t.branches[y],e,1===t.branches[y].children.length)}n&&s&&e.transformHoist&&e.transformHoist(l,e,a),s&&s===r&&1===a.type&&0===a.tagType&&a.codegenNode&&13===a.codegenNode.type&&Gl(a.codegenNode.children)&&(a.codegenNode.children=e.hoist(gi(a.codegenNode.children)))}function Ud(o,e){var t=e.constantCache;switch(o.type){case 1:if(0!==o.tagType)return 0;var n=t.get(o);if(void 0!==n)return n;var s=o.codegenNode;if(13!==s.type)return 0;if($d(s))return t.set(o,0),0;{var a=3,r=Dd(o,e);if(0===r)return t.set(o,0),0;r<a&&(a=r);for(var i,d=0;d<o.children.length;d++){if(i=Ud(o.children[d],e),0===i)return t.set(o,0),0;i<a&&(a=i)}if(1<a)for(var l,c=0;c<o.props.length;c++)if(l=o.props[c],7===l.type&&"bind"===l.name&&l.exp){var p=Ud(l.exp,e);if(0===p)return t.set(o,0),0;p<a&&(a=p)}return s.isBlock&&(e.removeHelper(Bi),e.removeHelper(ld(e.inSSR,s.isComponent)),s.isBlock=!1,e.helper(dd(e.inSSR,s.isComponent))),t.set(o,a),a}case 2:case 3:return 3;case 9:case 11:case 10:return 0;case 5:case 12:return Ud(o.content,e);case 4:return o.constType;case 8:for(var u,h=3,f=0;f<o.children.length;f++)if(u=o.children[f],!(N(u)||E(u))){var g=Ud(u,e);if(0===g)return 0;g<h&&(h=g)}return h;default:return 0;}}function Hd(n,e){if(14===n.type&&!N(n.callee)&&dc.has(n.callee)){var t=n.arguments[0];if(4===t.type)return Ud(t,e);if(14===t.type)return Hd(t,e)}return 0}function Dd(s,e){var t=3,a=jd(s);if(a&&15===a.type)for(var o=a.properties,r=0;r<o.length;r++){var i=o[r],d=i.key,l=i.value,c=Ud(d,e);if(0===c)return c;var p=void 0;if(c<t&&(t=c),p=4===l.type?Ud(l,e):14===l.type?Hd(l,e):0,0===p)return p;p<t&&(t=p)}return t}function jd(n){var e=n.codegenNode;if(13===e.type)return e.props}function $d(n){var e=n.patchFlag;return e?parseInt(e,10):void 0}function Kd(n,e){var o=e.filename,r=void 0===o?"":o,t=e.prefixIdentifiers,d=e.hoistStatic,h=e.cacheHandlers,f=e.nodeTransforms,g=void 0===f?[]:f,s=e.directiveTransforms,y=void 0===s?{}:s,i=e.transformHoist,_=void 0===i?null:i,l=e.isBuiltInComponent,b=void 0===l?Wl:l,c=e.isCustomElement,T=void 0===c?Wl:c,a=e.expressionPlugins,E=void 0===a?[]:a,u=e.scopeId,R=void 0===u?null:u,p=e.slotted,I=e.ssr,P=e.inSSR,F=e.ssrCssVars,A=void 0===F?"":F,m=e.bindingMetadata,V=void 0===m?Kl:m,v=e.inline,M=e.isTS,B=e.onError,L=void 0===B?di:B,S=e.onWarn,U=void 0===S?li:S,x=e.compatConfig,C=r.replace(/\?.*$/,"").match(/([^/\\]+)\.\w+$/),w={selfName:C&&D(O(C[1])),prefixIdentifiers:void 0!==t&&t,hoistStatic:void 0!==d&&d,cacheHandlers:void 0!==h&&h,nodeTransforms:g,directiveTransforms:y,transformHoist:_,isBuiltInComponent:b,isCustomElement:T,expressionPlugins:E,scopeId:R,slotted:!(void 0!==p)||p,ssr:void 0!==I&&I,inSSR:void 0!==P&&P,ssrCssVars:A,bindingMetadata:V,inline:void 0!==v&&v,isTS:void 0!==M&&M,onError:L,onWarn:U,compatConfig:x,root:n,helpers:new Map,components:new Set,directives:new Set,hoists:[],imports:[],constantCache:new Map,temps:0,cached:0,identifiers:Object.create(null),scopes:{vFor:0,vSlot:0,vPre:0,vOnce:0},parent:null,currentNode:n,childIndex:0,inVOnce:!1,helper:function(n){var e=w.helpers.get(n)||0;return w.helpers.set(n,e+1),n},removeHelper:function(n){var e=w.helpers.get(n);if(e){var t=e-1;t?w.helpers.set(n,t):w.helpers["delete"](n)}},helperString:function(n){return"_".concat(bl[w.helper(n)])},replaceNode:function(n){w.parent.children[w.childIndex]=w.currentNode=n},removeNode:function(n){var e=n?w.parent.children.indexOf(n):w.currentNode?w.childIndex:-1;n&&n!==w.currentNode?w.childIndex>e&&(w.childIndex--,w.onNodeRemoved()):(w.currentNode=null,w.onNodeRemoved()),w.parent.children.splice(e,1)},onNodeRemoved:function(){},addIdentifiers:function(){},removeIdentifiers:function(){},hoist:function(n){N(n)&&(n=xi(n)),w.hoists.push(n);var o=xi("_hoisted_".concat(w.hoists.length),!1,n.loc,2);return o.hoisted=n,o},cache:function(n){var e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return function(o,e){var t=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2];return{type:20,index:o,value:e,isVNode:t,loc:_l}}(w.cached++,n,e)}};return w}function Wd(o,e){var t=Kd(o,e);zd(o,t),e.hoistStatic&&Bd(o,t),e.ssr||function(s,e){var t=e.helper,n=s.children;if(1===n.length){var o=n[0];if(Ld(s,o)&&o.codegenNode){var a=o.codegenNode;13===a.type&&hd(a,e),s.codegenNode=a}else s.codegenNode=o}else if(1<n.length){s.codegenNode=hi(e,t($i),void 0,s.children,"64",void 0,void 0,!0,void 0,!1)}}(o,t),o.helpers=_toConsumableArray(t.helpers.keys()),o.components=_toConsumableArray(t.components),o.directives=_toConsumableArray(t.directives),o.imports=t.imports,o.hoists=t.hoists,o.temps=t.temps,o.cached=t.cached}function zd(s,a){a.currentNode=s;for(var t,i=a.nodeTransforms,n=[],o=0;o<i.length;o++){if(t=i[o](s,a),t&&(Gl(t)?n.push.apply(n,_toConsumableArray(t)):n.push(t)),!a.currentNode)return;s=a.currentNode}switch(s.type){case 3:a.ssr||a.helper(Di);break;case 5:a.ssr||a.helper(el);break;case 9:for(var d=0;d<s.branches.length;d++)zd(s.branches[d],a);break;case 10:case 11:case 1:case 0:!function(s,e){for(var t=0,a=function(){t--};t<s.children.length;t++){var o=s.children[t];N(o)||(e.parent=s,e.childIndex=t,e.onNodeRemoved=a,zd(o,e))}}(s,a);}a.currentNode=s;for(var l=n.length;l--;)n[l]()}function Gd(o,s){var t=N(o)?function(e){return e===o}:function(e){return o.test(e)};return function(n,e){if(1===n.type){var o=n.props;if(3===n.tagType&&o.some(ad))return;for(var a,r=[],i=0;i<o.length;i++)if(a=o[i],7===a.type&&t(a.name)){o.splice(i,1),i--;var d=s(n,a,e);d&&r.push(d)}return r}}}function qd(d){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t=function(o,e){function a(n){x.push("\n"+" ".repeat(n))}var i=e.mode,d=void 0===i?"function":i,t=e.prefixIdentifiers,p=void 0===t?"module"===d:t,n=e.sourceMap,u=e.filename,h=void 0===u?"template.vue.html":u,r=e.scopeId,g=void 0===r?null:r,s=e.optimizeImports,m=e.runtimeGlobalName,y=void 0===m?"Vue":m,l=e.runtimeModuleName,v=void 0===l?"vue":l,c=e.ssr,_=e.isTS,b=e.inSSR,x={mode:d,prefixIdentifiers:p,sourceMap:void 0!==n&&n,filename:h,scopeId:g,optimizeImports:void 0!==s&&s,runtimeGlobalName:y,runtimeModuleName:v,ssr:void 0!==c&&c,isTS:void 0!==_&&_,inSSR:void 0!==b&&b,source:o.loc.source,code:"",column:1,line:1,offset:0,indentLevel:0,pure:!1,map:void 0,helper:function(n){return"_".concat(bl[n])},push:function(n){x.code+=n},indent:function(){a(++x.indentLevel)},deindent:function(){var n=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];n?--x.indentLevel:a(--x.indentLevel)},newline:function(){a(x.indentLevel)}};return x}(d,e);e.onContextCreated&&e.onContextCreated(t);var n=t.mode,o=t.push,r=t.prefixIdentifiers,s=t.indent,i=t.deindent,l=t.newline,c=t.ssr,a=0<d.helpers.length,u=!r&&"module"!==n;if(!function(s,e){var t=e.push,n=e.newline,o=e.runtimeGlobalName;0<s.helpers.length&&(t("const _Vue = ".concat(o,"\n")),s.hoists.length)&&t("const { ".concat([Ui,Hi,Di,Wi,zi].filter(function(e){return s.helpers.includes(e)}).map(function(n){return"".concat(bl[n],": _").concat(bl[n])}).join(", ")," } = _Vue\n")),function(s,a){if(s.length){a.pure=!0;var t=a.push,n=a.newline;n(),s.forEach(function(o,e){o&&(t("const _hoisted_".concat(e+1," = ")),Yd(o,a),n())}),a.pure=!1}}(s.hoists,e),n(),t("return ")}(d,t),o("function ".concat(c?"ssrRender":"render","(").concat((c?["_ctx","_push","_parent","_attrs"]:["_ctx","_cache"]).join(", "),") {")),s(),u&&(o("with (_ctx) {"),s(),a&&(o("const { ".concat(d.helpers.map(function(n){return"".concat(bl[n],": _").concat(bl[n])}).join(", ")," } = _Vue")),o("\n"),l())),d.components.length&&(Jd(d.components,"component",t),(d.directives.length||0<d.temps)&&l()),d.directives.length&&(Jd(d.directives,"directive",t),0<d.temps&&l()),0<d.temps){o("let ");for(var p=0;p<d.temps;p++)o("".concat(0<p?", ":"","_temp").concat(p))}return(d.components.length||d.directives.length||d.temps)&&(o("\n"),l()),c||o("return "),d.codegenNode?Yd(d.codegenNode,t):o("null"),u&&(i(),o("}")),i(),o("}"),{ast:d,code:t.code,preamble:"",map:t.map?t.map.toJSON():void 0}}function Jd(a,e,t){for(var d=t.helper,n=t.push,o=t.newline,r=t.isTS,s=d("component"===e?Ki:qi),i=0;i<a.length;i++){var l=a[i],c=l.endsWith("__self");c&&(l=l.slice(0,-6)),n("const ".concat(ud(l,e)," = ").concat(s,"(").concat(JSON.stringify(l)).concat(c?", true":"",")").concat(r?"!":"")),i<a.length-1&&o()}}function Qd(o,e){var t=3<o.length||!1;e.push("["),t&&e.indent(),Xd(o,e,t),t&&e.deindent(),e.push("]")}function Xd(a,e){for(var t,i=!!(2<arguments.length&&arguments[2]!==void 0)&&arguments[2],n=!(3<arguments.length&&arguments[3]!==void 0)||arguments[3],o=e.push,r=e.newline,s=0;s<a.length;s++)t=a[s],N(t)?o(t):Gl(t)?Qd(t,e):Yd(t,e),s<a.length-1&&(i?(n&&o(","),r()):n&&o(", "))}function Yd(n,e){if(N(n))e.push(n);else if(E(n))e.push(e.helper(n));else switch(n.type){case 1:case 9:case 11:Yd(n.codegenNode,e);break;case 2:!function(n,e){e.push(JSON.stringify(n.content),n)}(n,e);break;case 4:Zd(n,e);break;case 5:!function(s,e){var t=e.push,n=e.helper,o=e.pure;o&&t("/*#__PURE__*/"),t("".concat(n(el),"(")),Yd(s.content,e),t(")")}(n,e);break;case 12:Yd(n.codegenNode,e);break;case 8:xl(n,e);break;case 3:!function(s,e){var t=e.push,n=e.helper,o=e.pure;o&&t("/*#__PURE__*/"),t("".concat(n(Di),"(").concat(JSON.stringify(s.content),")"),s)}(n,e);break;case 13:!function(g,e){var t=e.push,n=e.helper,o=e.pure,r=g.tag,s=g.props,i=g.children,l=g.patchFlag,c=g.dynamicProps,a=g.directives,u=g.isBlock,p=g.disableTracking,f=g.isComponent;a&&t(n(Zi)+"("),u&&t("(".concat(n(Bi),"(").concat(p?"true":"","), ")),o&&t("/*#__PURE__*/");var d=u?ld(e.inSSR,f):dd(e.inSSR,f);t(n(d)+"(",g),Xd(function(n){for(var e=n.length;e--&&null==n[e];);return n.slice(0,e+1).map(function(n){return n||"null"})}([r,s,i,l,c]),e),t(")"),u&&t(")"),a&&(t(", "),Yd(a,e),t(")"))}(n,e);break;case 14:!function(a,e){var t=e.push,n=e.helper,o=e.pure,r=N(a.callee)?a.callee:n(a.callee);o&&t("/*#__PURE__*/"),t(r+"(",a),Xd(a.arguments,e),t(")")}(n,e);break;case 15:!function(a,e){var t=e.push,n=e.indent,o=e.deindent,r=e.newline,s=a.properties;if(!s.length)return void t("{}",a);var i=1<s.length||!1;t(i?"{":"{ "),i&&n();for(var d=0;d<s.length;d++){var l=s[d],c=l.key,p=l.value;Cl(c,e),t(": "),Yd(p,e),d<s.length-1&&(t(","),r())}i&&o(),t(i?"}":" }")}(n,e);break;case 17:!function(n,e){Qd(n.elements,e)}(n,e);break;case 18:!function(d,e){var t=e.push,n=e.indent,o=e.deindent,r=d.params,s=d.returns,i=d.body,l=d.newline,c=d.isSlot;c&&t("_".concat(bl[hl],"(")),t("(",d),Gl(r)?Xd(r,e):r&&Yd(r,e),t(") => "),(l||i)&&(t("{"),n()),s?(l&&t("return "),Gl(s)?Qd(s,e):Yd(s,e)):i&&Yd(i,e),(l||i)&&(o(),t("}")),c&&t(")")}(n,e);break;case 19:!function(d,e){var t=d.test,n=d.consequent,o=d.alternate,r=d.newline,s=e.push,i=e.indent,l=e.deindent,c=e.newline;if(4===t.type){var a=!Ol(t.content);a&&s("("),Zd(t,e),a&&s(")")}else s("("),Yd(t,e),s(")");r&&i(),e.indentLevel++,r||s(" "),s("? "),Yd(n,e),e.indentLevel--,r&&c(),r||s(" "),s(": ");var p=19===o.type;p||e.indentLevel++,Yd(o,e),p||e.indentLevel--,r&&l(!0)}(n,e);break;case 20:!function(a,e){var t=e.push,n=e.helper,o=e.indent,r=e.deindent,s=e.newline;t("_cache[".concat(a.index,"] || (")),a.isVNode&&(o(),t("".concat(n(ul),"(-1),")),s()),t("_cache[".concat(a.index,"] = ")),Yd(a.value,e),a.isVNode&&(t(","),s(),t("".concat(n(ul),"(1),")),s(),t("_cache[".concat(a.index,"]")),r()),t(")")}(n,e);break;case 21:Xd(n.body,e,!0,!1);}}function Zd(s,e){var t=s.content,n=s.isStatic;e.push(n?JSON.stringify(t):t,s)}function xl(n,e){for(var t,o=0;o<n.children.length;o++)t=n.children[o],N(t)?e.push(t):Yd(t,e)}function Cl(o,e){var t=e.push;8===o.type?(t("["),xl(o,e),t("]")):o.isStatic?t(Ol(o.content)?o.content:JSON.stringify(o.content),o):t("[".concat(o.content,"]"),o)}function kl(n,e){return{type:10,loc:n.loc,condition:"else"===e.name?void 0:e.exp,children:3!==n.tagType||nd(n,"for")?[n]:n.children,userKey:td(n,"key")}}function Tl(o,e,t){return o.condition?Ri(o.condition,wl(o,e,t),Ti(t.helper(Di),["\"\"","true"])):wl(o,e,t)}function wl(a,e,t){var n=t.helper,d=vi("key",xi("".concat(e),!1,_l,2)),r=a.children,s=r[0];if(1!==r.length||1!==s.type){if(1===r.length&&11===s.type){var i=s.codegenNode;return pd(i,d,t),i}{return hi(t,n($i),mi([d]),r,"64",void 0,void 0,!0,!1,!1,a.loc)}}{var l=s.codegenNode,c=14===(o=l).type&&o.callee===vl?o.arguments[1].returns:o;return 13===c.type&&hd(c,t),pd(c,d,t),l}}function ea(t){var e=t.loc,n=t.content,o=n.match(ta);if(o){var r=_slicedToArray(o,3),d=r[1],s=r[2],i={source:sa(e,s.trim(),n.indexOf(s,d.length)),value:void 0,key:void 0,index:void 0},l=d.trim().replace(oa,"").trim(),p=d.indexOf(l),a=l.match(na);if(a){l=l.replace(na,"").trim();var u,h=a[1].trim();if(h&&(u=n.indexOf(h,p+l.length),i.key=sa(e,h,u)),a[2]){var f=a[2].trim();f&&(i.index=sa(e,f,n.indexOf(f,i.key?u+h.length:p+l.length)))}}return l&&(i.value=sa(e,l,p)),i}}function sa(o,e,t){return xi(e,!1,Ai(o,t,e.length))}function ia(s){var a=s.value,e=s.key,t=s.index,n=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[];return function(n){for(var e=n.length;e--&&!n[e];);return n.slice(0,e+1).map(function(n,e){return n||xi("_".repeat(e+1),!1)})}([a,e,t].concat(_toConsumableArray(n)))}function la(g,e){var m=2<arguments.length&&arguments[2]!==void 0?arguments[2]:aa;e.helper(hl);var n=g.children,o=g.loc,t=[],s=[],r=0<e.scopes.vSlot||0<e.scopes.vFor,i=nd(g,"slot",!0);if(i){var c=i.arg,y=i.exp;c&&!Sl(c)&&(r=!0),t.push(vi(c||xi("default",!0),m(y,n,o)))}for(var v=!1,_=!1,b=[],p=new Set,f=0;f<n.length;f++){var x=n[f],C=void 0;if(!rd(x)||!(C=nd(x,"slot",!0))){3!==x.type&&b.push(x);continue}if(i)break;v=!0;var S=x.children,k=x.loc,T=C,w=T.arg,N=void 0===w?xi("default",!0):w,E=T.exp,R=void 0;Sl(N)?R=N?N.content:"default":r=!0;var I=m(E,S,k),P=void 0,F=void 0,A=void 0;if(P=nd(x,"if"))r=!0,s.push(Ri(P.exp,pa(N,I),ra));else if(F=nd(x,/^else(-if)?$/,!0)){for(var V=void 0,M=f;M--&&(V=n[M],3===V.type););if(V&&rd(V)&&nd(V,"if")){n.splice(f,1),f--;for(var B=s[s.length-1];19===B.alternate.type;)B=B.alternate;B.alternate=F.exp?Ri(F.exp,pa(N,I),ra):pa(N,I)}}else if(A=nd(x,"for")){r=!0;var L=A.parseResult||ea(A.exp);L&&s.push(Ti(e.helper(Qi),[L.source,Ni(ia(L),pa(N,I),!0)]))}else{if(R){if(p.has(R))continue;p.add(R),"default"===R&&(_=!0)}t.push(vi(N,I))}}if(!i){var O=function(n,e){return vi("default",m(n,e,o))};v?b.length&&b.some(function(n){return da(n)})&&(_||t.push(O(void 0,b))):t.push(O(void 0,n))}var U=r?2:fa(g.children)?3:1,d=mi(t.concat(vi("_",xi(U+"",!1))),o);return s.length&&(d=Ti(e.helper(Yi),[d,gi(s)])),{slots:d,hasDynamicSlots:r}}function pa(n,e){return mi([vi("name",n),vi("fn",e)])}function fa(n){for(var e,t=0;t<n.length;t++)switch(e=n[t],e.type){case 1:if(2===e.tagType||fa(e.children))return!0;break;case 9:if(fa(e.branches))return!0;break;case 10:case 11:if(fa(e.children))return!0;}return!1}function da(n){return 2!==n.type&&12!==n.type||(2===n.type?!!n.content.trim():da(n.content))}function ha(x,C){for(var e,t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:x.props,n=!!(3<arguments.length&&void 0!==arguments[3])&&arguments[3],o=x.tag,r=x.loc,s=1===x.tagType,i=[],S=[],c=[],a=0,k=!1,T=!1,w=!1,N=!1,R=!1,I=!1,P=[],v=function(t){var o=t.key,e=t.value;if(Sl(o)){var n=o.content,a=_(n);if(s||!a||"onclick"===n.toLowerCase()||"onUpdate:modelValue"===n||M(n)||(N=!0),a&&M(n)&&(I=!0),20===e.type||(4===e.type||8===e.type)&&0<Ud(e,C))return;"ref"===n?k=!0:"class"===n?T=!0:"style"===n?w=!0:"key"===n||P.includes(n)||P.push(n),!s||"class"!==n&&"style"!==n||P.includes(n)||P.push(n)}else R=!0},y=0;y<t.length;y++)if(e=t[y],6===e.type){var F=e.loc,A=e.name,V=e.value;if("ref"===A&&(k=!0),"is"===A&&(ba(o)||V&&V.content.startsWith("vue:")))continue;i.push(vi(xi(A,!0,Ai(F,0,A.length)),xi(V?V.content:"",!0,V?V.loc:F)))}else{var B=e.name,L=e.arg,O=e.exp,U=e.loc,H="bind"===B,D="on"===B;if("slot"===B)continue;if("once"===B||"memo"===B)continue;if("is"===B||H&&od(L,"is")&&ba(o))continue;if(D&&n)continue;if(!L&&(H||D)){R=!0,O&&(i.length&&(S.push(mi(va(i),r)),i=[]),S.push(H?O:{type:14,loc:U,callee:C.helper(il),arguments:[O]}));continue}var j=C.directiveTransforms[B];if(j){var $,K=j(e,x,C),W=K.props,z=K.needRuntime;n||W.forEach(v),($=i).push.apply($,_toConsumableArray(W)),z&&(c.push(e),E(z)&&ua.set(e,z))}else c.push(e)}var G;if(S.length?(i.length&&S.push(mi(va(i),r)),G=1<S.length?Ti(C.helper(tl),S,r):S[0]):i.length&&(G=mi(va(i),r)),R?a|=16:(T&&!s&&(a|=2),w&&!s&&(a|=4),P.length&&(a|=8),N&&(a|=32)),0!=a&&32!=a||!(k||I||0<c.length)||(a|=512),!C.inSSR&&G)switch(G.type){case 15:for(var q,J=-1,Q=-1,X=!1,Y=0;Y<G.properties.length;Y++)q=G.properties[Y].key,Sl(q)?"class"===q.content?J=Y:"style"===q.content&&(Q=Y):q.isHandlerKey||(X=!0);var Z=G.properties[J],ee=G.properties[Q];X?G=Ti(C.helper(rl),[G]):(Z&&!Sl(Z.value)&&(Z.value=Ti(C.helper(nl),[Z.value])),!ee||Sl(ee.value)||!w&&17!==ee.value.type||(ee.value=Ti(C.helper(ol),[ee.value])));break;case 14:break;default:G=Ti(C.helper(rl),[Ti(C.helper(sl),[G])]);}return{props:G,directives:c,patchFlag:a,dynamicPropNames:P}}function va(o){for(var e,s=new Map,t=[],n=0;n<o.length;n++){if(e=o[n],8===e.key.type||!e.key.isStatic){t.push(e);continue}var a=e.key.content,r=s.get(a);r?("style"===a||"class"===a||a.startsWith("on"))&&ya(r,e):(s.set(a,e),t.push(e))}return t}function ya(n,e){17===n.value.type?n.value.elements.push(e.value):n.value=gi([n.value,e.value],n.loc)}function ba(n){return"component"===n[0].toLowerCase()+n.slice(1)}function _a(){var n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:[];return{props:n}}function Ra(s){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},t=e.onError||di,n="module"===e.mode;!0===e.prefixIdentifiers?t(ui(45)):n&&t(ui(46)),e.cacheHandlers&&t(ui(47)),e.scopeId&&!n&&t(ui(48));var o=N(s)?fd(s,e):s;return Wd(o,zl({},e,{prefixIdentifiers:!1,nodeTransforms:[].concat(_toConsumableArray([Na,Ec,Fa,Rc,ga,ma,ca,ka]),_toConsumableArray(e.nodeTransforms||[])),directiveTransforms:zl({},{on:xa,bind:Ca,model:Ea},e.directiveTransforms||{})})),qd(o,zl({},e,{prefixIdentifiers:!1}))}function Ma(a,i){if(!N(a)){if(!a.nodeType)return Wl;a=a.innerHTML}var t=a,n=Fc[t];if(n)return n;if("#"===a[0]){var o=document.querySelector(a);a=o?o.innerHTML:""}var d=function(n){var e=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{};return Ra(n,zl({},Ka,e,{nodeTransforms:[Ya].concat(Ic,_toConsumableArray(e.nodeTransforms||[])),directiveTransforms:zl({},Pc,e.directiveTransforms||{}),transformHoist:null}))}(a,zl({hoistStatic:!0,onError:void 0,onWarn:Wl},i)),l=d.code,r=new Function(l)();return r._rc=!0,Fc[t]=r}var El,Rl,Ml,Ul,Hl,Dl,jl=e("Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt"),$l=e("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly"),n=/;(?![^(]*\))/g,o=/:(.+)/,i=e("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"),u=e("svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"),p=e("area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"),f=function n(o,e){return e&&e.__v_isRef?n(o,e.value):S(e)?_defineProperty({},"Map(".concat(e.size,")"),_toConsumableArray(e.entries()).reduce(function(o,e){var s=_slicedToArray(e,2),a=s[0],t=s[1];return o["".concat(a," =>")]=t,o},{})):k(e)?_defineProperty({},"Set(".concat(e.size,")"),_toConsumableArray(e.values())):!R(e)||Gl(e)||A(e)?e:e+""},Kl={},g=[],Wl=function(){},m=function(){return!1},y=/^on[^a-z]/,_=function(n){return y.test(n)},v=function(n){return n.startsWith("onUpdate:")},zl=Object.assign,b=function(o,e){var t=o.indexOf(e);-1<t&&o.splice(t,1)},x=Object.prototype.hasOwnProperty,C=function(n,e){return x.call(n,e)},Gl=Array.isArray,S=function(n){return"[object Map]"===I(n)},k=function(n){return"[object Set]"===I(n)},T=function(n){return n instanceof Date},w=function(n){return"function"==typeof n},N=function(n){return"string"==typeof n},E=function(n){return"symbol"==_typeof(n)},R=function(n){return null!==n&&"object"==_typeof(n)},F=function(n){return R(n)&&w(n.then)&&w(n["catch"])},P=Object.prototype.toString,I=function(n){return P.call(n)},A=function(n){return"[object Object]"===I(n)},V=function(n){return N(n)&&"NaN"!==n&&"-"!==n[0]&&""+parseInt(n,10)===n},M=e(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),B=function(o){var e=Object.create(null);return function(t){return e[t]||(e[t]=o(t))}},L=/-(\w)/g,O=B(function(n){return n.replace(L,function(n,e){return e?e.toUpperCase():""})}),U=/\B([A-Z])/g,H=B(function(n){return n.replace(U,"-$1").toLowerCase()}),D=B(function(n){return n.charAt(0).toUpperCase()+n.slice(1)}),j=B(function(n){return n?"on".concat(D(n)):""}),$=function(n,e){return!Object.is(n,e)},K=function(n,e){for(var t=0;t<n.length;t++)n[t](e)},W=function(o,e,t){Object.defineProperty(o,e,{configurable:!0,enumerable:!1,value:t})},z=function(n){var e=parseFloat(n);return isNaN(e)?n:e},G=[],q=/*#__PURE__*/function(){function n(){var t=!!(0<arguments.length&&void 0!==arguments[0])&&arguments[0];_classCallCheck(this,n),this.active=!0,this.effects=[],this.cleanups=[],!t&&Ml&&(this.parent=Ml,this.index=(Ml.scopes||(Ml.scopes=[])).push(this)-1)}return _createClass(n,[{key:"run",value:function(n){if(this.active)try{return this.on(),n()}finally{this.off()}}},{key:"on",value:function(){this.active&&(G.push(this),Ml=this)}},{key:"off",value:function(){this.active&&(G.pop(),Ml=G[G.length-1])}},{key:"stop",value:function(n){if(this.active){if(this.effects.forEach(function(n){return n.stop()}),this.cleanups.forEach(function(n){return n()}),this.scopes&&this.scopes.forEach(function(n){return n.stop(!0)}),this.parent&&!n){var e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.active=!1}}}]),n}(),J=function(n){var e=new Set(n);return e.w=0,e.n=0,e},Q=function(n){return 0<(n.w&ne)},Y=function(n){return 0<(n.n&ne)},Z=new WeakMap,ee=0,ne=1,oe=[],se=Symbol(""),re=Symbol(""),ce=/*#__PURE__*/function(){function o(s){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,t=2<arguments.length?arguments[2]:void 0;_classCallCheck(this,o),this.fn=s,this.scheduler=e,this.active=!0,this.deps=[],h(this,t)}return _createClass(o,[{key:"run",value:function(){if(!this.active)return this.fn();if(!oe.includes(this))try{return oe.push(Ul=this),ue.push(pe),pe=!0,ne=1<<++ee,30>=ee?function(n){var t=n.deps;if(t.length)for(var e=0;e<t.length;e++)t[e].w|=ne}(this):t(this),this.fn()}finally{30>=ee&&function(n){var e=n.deps;if(e.length){for(var t,o=0,s=0;s<e.length;s++)t=e[s],Q(t)&&!Y(t)?t["delete"](n):e[o++]=t,t.w&=~ne,t.n&=~ne;e.length=o}}(this),ne=1<<--ee,de(),oe.pop();var e=oe.length;Ul=0<e?oe[e-1]:void 0}}},{key:"stop",value:function(){this.active&&(t(this),this.onStop&&this.onStop(),this.active=!1)}}]),o}(),pe=!0,ue=[],fe=e("__proto__,__v_isRef,__isVue"),me=new Set(Object.getOwnPropertyNames(Symbol).map(function(n){return Symbol[n]}).filter(E)),Ce=xe(),ke=xe(!1,!0),Te=xe(!0),we=xe(!0,!0),Ne=function(){var n={};return["includes","indexOf","lastIndexOf"].forEach(function(s){n[s]=function(){for(var t=yt(this),n=0,a=this.length;n<a;n++)ge(t,0,n+"");for(var r=arguments.length,i=Array(r),e=0;e<r;e++)i[e]=arguments[e];var d=t[s].apply(t,i);return-1===d||!1===d?t[s].apply(t,_toConsumableArray(i.map(yt))):d}}),["push","pop","shift","unshift","splice"].forEach(function(o){n[o]=function(){te();for(var t=arguments.length,s=Array(t),e=0;e<t;e++)s[e]=arguments[e];var a=yt(this)[o].apply(this,s);return de(),a}}),n}(),Ee={get:Ce,set:Se(),deleteProperty:function(s,e){var t=C(s,e),n=Reflect.deleteProperty(s,e);return n&&t&&_e(s,"delete",e,void 0),n},has:function(o,e){var t=Reflect.has(o,e);return E(e)&&me.has(e)||ge(o,0,e),t},ownKeys:function(n){return ge(n,0,Gl(n)?"length":se),Reflect.ownKeys(n)}},Me={get:Te,set:function(){return!0},deleteProperty:function(){return!0}},Oe=zl({},Ee,{get:ke,set:Se(!0)}),Pe=zl({},Me,{get:we}),Ie=function(n){return R(n)?nt(n):n},Ve=function(n){return R(n)?dt(n):n},Be=function(n){return n},Le=function(n){return Reflect.getPrototypeOf(n)},je=function(){var s={get:function(n){return Fe(this,n)},get size(){return Ue(this)},has:Ae,add:He,set:De,delete:We,clear:Ke,forEach:ze(!1,!1)},e={get:function(n){return Fe(this,n,!1,!0)},get size(){return Ue(this)},has:Ae,add:He,set:De,delete:We,clear:Ke,forEach:ze(!1,!0)},t={get:function(n){return Fe(this,n,!0)},get size(){return Ue(this,!0)},has:function(n){return Ae.call(this,n,!0)},add:qe("add"),set:qe("set"),delete:qe("delete"),clear:qe("clear"),forEach:ze(!0,!1)},n={get:function(n){return Fe(this,n,!0,!0)},get size(){return Ue(this,!0)},has:function(n){return Ae.call(this,n,!0)},add:qe("add"),set:qe("set"),delete:qe("delete"),clear:qe("clear"),forEach:ze(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(function(o){s[o]=Ge(o,!1,!1),t[o]=Ge(o,!0,!1),e[o]=Ge(o,!1,!0),n[o]=Ge(o,!0,!0)}),[s,t,e,n]}(),$e=_slicedToArray(je,4),ql=$e[0],Xe=$e[1],Ye=$e[2],et=$e[3],tt={get:Je(!1,!1)},ot={get:Je(!1,!0)},rt={get:Je(!0,!1)},st={get:Je(!0,!0)},it=new WeakMap,lt=new WeakMap,ct=new WeakMap,at=new WeakMap,ut=function(n){return R(n)?nt(n):n},Ct=/*#__PURE__*/function(){function n(o){var e=!!(1<arguments.length&&void 0!==arguments[1])&&arguments[1];_classCallCheck(this,n),this._shallow=e,this.dep=void 0,this.__v_isRef=!0,this._rawValue=e?o:yt(o),this._value=e?o:ut(o)}return _createClass(n,[{key:"value",get:function(){return _t(this),this._value},set:function(n){n=this._shallow?n:yt(n),$(n,this._rawValue)&&(this._rawValue=n,this._value=this._shallow?n:ut(n),bt(this))}}]),n}(),Tt={get:function(o,e,t){return wt(Reflect.get(o,e,t))},set:function(s,e,t,n){var o=s[e];return xt(o)&&!xt(t)?(o.value=t,!0):Reflect.set(s,e,t,n)}},$t=/*#__PURE__*/function(){function o(s){var e=this;_classCallCheck(this,o),this.dep=void 0,this.__v_isRef=!0;var a=s(function(){return _t(e)},function(){return bt(e)}),r=a.get,t=a.set;this._get=r,this._set=t}return _createClass(o,[{key:"value",get:function(){return this._get()},set:function(n){this._set(n)}}]),o}(),Ft=/*#__PURE__*/function(){function n(o,e){_classCallCheck(this,n),this._object=o,this._key=e,this.__v_isRef=!0}return _createClass(n,[{key:"value",get:function(){return this._object[this._key]},set:function(n){this._object[this._key]=n}}]),n}(),At=/*#__PURE__*/function(){function o(s,e,t){var n=this;_classCallCheck(this,o),this._setter=e,this.dep=void 0,this._dirty=!0,this.__v_isRef=!0,this.effect=new ce(s,function(){n._dirty||(n._dirty=!0,bt(n))}),this.__v_isReadonly=t}return _createClass(o,[{key:"value",get:function(){var n=yt(this);return _t(n),n._dirty&&(n._dirty=!1,n._value=n.effect.run()),n._value},set:function(n){this._setter(n)}}]),o}(),Ot=null,Jl=null,Ql=function(n){var e;for(var o in n)("class"===o||"style"===o||_(o))&&((e||(e={}))[o]=n[o]);return e},zt=function(o,e){var t={};for(var n in o)v(n)&&n.slice(9)in e||(t[n]=o[n]);return t},Kt=[Function,Array],rn={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Kt,onEnter:Kt,onAfterEnter:Kt,onEnterCancelled:Kt,onBeforeLeave:Kt,onLeave:Kt,onAfterLeave:Kt,onLeaveCancelled:Kt,onBeforeAppear:Kt,onAppear:Kt,onAfterAppear:Kt,onAppearCancelled:Kt},setup:function(g,e){var s,m=e.slots,t=ic(),y=nn();return function(){var e=m["default"]&&pn(m["default"](),!0);if(e&&e.length){var n=yt(g),o=n.mode,r=e[0];if(y.isLeaving)return cn(r);var i=an(r);if(!i)return cn(r);var a=ln(i,n,y,t);un(i,a);var l=t.subTree,c=l&&an(l),p=!1,u=i.type.getTransitionKey;if(u){var h=u();void 0===s?s=h:h!==s&&(s=h,p=!0)}if(c&&c.type!==Ao&&(!Uo(i,c)||p)){var f=ln(c,n,y,t);if(un(c,f),"out-in"===o)return y.isLeaving=!0,f.afterLeave=function(){y.isLeaving=!1,t.update()},cn(r);"in-out"===o&&i.type!==Ao&&(f.delayLeave=function(o,e,t){on(y,c)[c.key+""]=c,o._leaveCb=function(){e(),o._leaveCb=void 0,delete a.delayedLeave},a.delayedLeave=t})}return r}}}},sn=function(n){return!!n.type.__asyncLoader},hn=function(n){return n.type.__isKeepAlive},gn={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup:function(y,e){function _(n){xn(n),o(n,h,C)}function d(s){x.forEach(function(e,t){var n=nr(e.type);!n||s&&s(n)||b(t)})}function b(n){var e=x.get(n);s&&e.type===s.type?s&&xn(s):_(e),x["delete"](n),r["delete"](n)}var m=e.slots,h=ic(),n=h.ctx;if(!n.renderer)return m["default"];var x=new Map,r=new Set,s=null,C=h.suspense,t=n.renderer,l=t.p,c=t.m,o=t.um,a=t.o.createElement,p=a("div");n.activate=function(a,e,t,n,o){var r=a.component;c(a,e,t,0,C),l(r.vnode,a,e,t,r,C,n,a.slotScopeIds,o),fo(function(){r.isDeactivated=!1,r.a&&K(r.a);var e=a.props&&a.props.onVnodeMounted;e&&yo(e,r.parent,a)},C)},n.deactivate=function(o){var e=o.component;c(o,p,null,1,C),fo(function(){e.da&&K(e.da);var t=o.props&&o.props.onVnodeUnmounted;t&&yo(t,e.parent,o),e.isDeactivated=!0},C)},ts(function(){return[y.include,y.exclude]},function(n){var o=_slicedToArray(n,2),s=o[0],a=o[1];s&&d(function(e){return mn(s,e)}),a&&d(function(n){return!mn(a,n)})},{flush:"post",deep:!0});var S=null,u=function(){null!=S&&x.set(S,Cn(h.subTree))};return Nn(u),$n(u),Rn(function(){x.forEach(function(n){var e=h.subTree,t=h.suspense,o=Cn(e);if(n.type!==o.type)_(n);else{xn(o);var s=o.component.da;s&&fo(s,t)}})}),function(){if(S=null,!m["default"])return null;var e=m["default"](),n=e[0];if(1<e.length)return s=null,e;if(!(Bo(n)&&(4&n.shapeFlag||128&n.shapeFlag)))return s=null,n;var t=Cn(n),o=t.type,i=nr(sn(t)?t.type.__asyncResolved||{}:o),a=y.include,c=y.exclude,p=y.max;if(a&&(!i||!mn(a,i))||c&&i&&mn(c,i))return s=t,n;var u=null==t.key?o:t.key,d=x.get(u);return t.el&&(t=jo(t),128&n.shapeFlag&&(n.ssContent=t)),S=u,d?(t.el=d.el,t.component=d.component,t.transition&&un(t,t.transition),t.shapeFlag|=512,r["delete"](u),r.add(u)):(r.add(u),p&&r.size>parseInt(p,10)&&b(r.values().next().value)),t.shapeFlag|=256,s=t,n}}},vn=function(o){return function(e){var t=1<arguments.length&&arguments[1]!==void 0?arguments[1]:ac;return(!dr||"sp"===o)&&wn(o,e,t)}},Tn=vn("bm"),Nn=vn("m"),En=vn("bu"),$n=vn("u"),Rn=vn("bum"),Fn=vn("um"),An=vn("sp"),Mn=vn("rtg"),On=vn("rtc"),Pn=!0,Yl={data:Hn,props:Kn,emits:Kn,methods:Kn,computed:Kn,beforeCreate:zn,created:zn,beforeMount:zn,mounted:zn,beforeUpdate:zn,updated:zn,beforeDestroy:zn,destroyed:zn,activated:zn,deactivated:zn,errorCaptured:zn,serverPrefetch:zn,components:Kn,directives:Kn,watch:function(o,e){if(!o)return e;if(!e)return o;var t=zl(Object.create(null),o);for(var n in e)t[n]=zn(o[n],e[n]);return t},provide:Hn,inject:function(n,e){return Kn(Wn(n),Wn(e))}},Dn=function(n){return"_"===n[0]||"$stable"===n},to=function(n){return Gl(n)?n.map(Wo):[Wo(n)]},no=function(s,e,t){var n=Bt(function(){return to(e.apply(void 0,arguments))},t);return n._c=!1,n},oo=function(n,s){var e=n._ctx;for(var t in n)if(!Dn(t)){var o=n[t];w(o)?s[t]=no(0,o,e):null!=o&&function(){var n=to(o);s[t]=function(){return n}}()}},ro=function(o,e){var t=to(e);o.slots["default"]=function(){return t}},so=0,Zl=!1,ec=function(n){return /svg/.test(n.namespaceURI)&&"foreignObject"!==n.tagName},po=function(n){return 8===n.nodeType},fo=Qt,mo=function(n){return n&&(n.disabled||""===n.disabled)},xo=function(n){return"undefined"!=typeof SVGElement&&n instanceof SVGElement},Co=function(o,e){var t=o&&o.to;return N(t)?e?e(t):null:t},wo=Symbol(),Eo=Symbol(void 0),Fo=Symbol(void 0),Ao=Symbol(void 0),Mo=Symbol(void 0),Oo=[],Po=null,nc=1,tc="__vInternal",zo=function(n){var t=n.key;return null==t?null:t},Ko=function(n){var t=n.ref;return null==t?null:N(t)||xt(t)||w(t)?{i:Ot,r:t}:t},Go=function(s){var a=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,d=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:null,p=!!(5<arguments.length&&void 0!==arguments[5])&&arguments[5];if(s&&s!==wo||(s=Ao),Bo(s)){var i=jo(s,a,!0);return d&&Qo(i,d),i}u=s,w(u)&&"__vccOpts"in u&&(s=s.__vccOpts);var u;if(a){a=Do(a);var h=a,f=h["class"],g=h.style;f&&!N(f)&&(a["class"]=c(f)),R(g)&&(mt(g)&&!Gl(g)&&(g=zl({},g)),a.style=r(g))}var m=N(s)?1:function(n){return n.__isSuspense}(s)?128:function(n){return n.__isTeleport}(s)?64:R(s)?4:w(s)?2:0;return Ho(s,a,d,n,o,m,p,!0)},Jo=function n(t){return t?Zo(t)?er(t)||t.proxy:n(t.parent):null},rr=zl(Object.create(null),{$:function(n){return n},$el:function(n){return n.vnode.el},$data:function(n){return n.data},$props:function(n){return n.props},$attrs:function(n){return n.attrs},$slots:function(n){return n.slots},$refs:function(n){return n.refs},$parent:function(n){return Jo(n.parent)},$root:function(n){return Jo(n.root)},$emit:function(n){return n.emit},$options:function(n){return jn(n)},$forceUpdate:function(n){return function(){return Sr(n.update)}},$nextTick:function(n){return xr.bind(n.proxy)},$watch:function(n){return rs.bind(n)}}),sr={get:function(d,h){var t,g=d._,e=g.ctx,n=g.setupState,o=g.data,r=g.props,s=g.accessCache,i=g.type,l=g.appContext;if("$"!==h[0]){var c=s[h];if(void 0!==c)switch(c){case 0:return n[h];case 1:return o[h];case 3:return e[h];case 2:return r[h];}else{if(n!==Kl&&C(n,h))return s[h]=0,n[h];if(o!==Kl&&C(o,h))return s[h]=1,o[h];if((t=g.propsOptions[0])&&C(t,h))return s[h]=2,r[h];if(e!==Kl&&C(e,h))return s[h]=3,e[h];Pn&&(s[h]=4)}}var m,y,v=rr[h];return v?("$attrs"===h&&ge(g,0,h),v(g)):(m=i.__cssModules)&&(m=m[h])?m:e!==Kl&&C(e,h)?(s[h]=3,e[h]):(y=l.config.globalProperties,C(y,h)?y[h]:void 0)},set:function(a,i,t){var n=a._,e=n.data,o=n.setupState,r=n.ctx;if(o!==Kl&&C(o,i))o[i]=t;else if(e!==Kl&&C(e,i))e[i]=t;else if(C(n.props,i))return!1;return("$"!==i[0]||!(i.slice(1)in n))&&(r[i]=t,!0)},has:function(a,d){var i,c=a._,p=c.data,e=c.setupState,t=c.accessCache,n=c.ctx,o=c.appContext,r=c.propsOptions;return void 0!==t[d]||p!==Kl&&C(p,d)||e!==Kl&&C(e,d)||(i=r[0])&&C(i,d)||C(n,d)||C(rr,d)||C(o.config.globalProperties,d)}},ir=zl({},sr,{get:function(n,e){if(e!==Symbol.unscopables)return sr.get(n,e,n)},has:function(n,e){return"_"!==e[0]&&!jl(e)}}),lr=Zt(),cr=0,ac=null,ic=function(){return ac||Ot},pr=function(n){ac=n,n.scope.on()},fr=function(){ac&&ac.scope.off(),ac=null},dr=!1,lc=/(?:^|[-_])(\w)/g,Cr=[],Tr=!1,cc=!1,pc=[],Pr=0,uc=[],Vr=null,hc=0,fc=[],jr=null,gc=0,mc=Promise.resolve(),Dr=null,yc=null,vc=function(n){return null==n.id?1/0:n.id},Yr={},ns=Symbol(""),us="3.2.4",fs="undefined"==typeof document?null:document,ds=new Map,hs=/\s*!important$/,gs=["Webkit","Moz","ms"],ys={},bs=Date.now,_c=!1;if("undefined"!=typeof window){bs()>document.createEvent("Event").timeStamp&&(bs=function(){return performance.now()});var bc=navigator.userAgent.match(/firefox\/(\d+)/i);_c=!!(bc&&53>=+bc[1])}var xc=0,Cc=Promise.resolve(),ws=function(){xc=0},ks=/(?:Once|Passive|Capture)$/,Es=/^on[a-z]/,$s="undefined"==typeof HTMLElement?/*#__PURE__*/function(){function e(){_classCallCheck(this,e)}return e}():HTMLElement,Fs=/*#__PURE__*/function(e){function o(a){var e,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},t=2<arguments.length?arguments[2]:void 0;_classCallCheck(this,o),e=s.call(this),e._def=a,e._props=r,e._instance=null,e._connected=!1,e._resolved=!1,e.shadowRoot&&t?t(e._createVNode(),e.shadowRoot):e.attachShadow({mode:"open"});for(var n=0;n<e.attributes.length;n++)e._setAttr(e.attributes[n].name);return new MutationObserver(function(n){var t,o=_createForOfIteratorHelper(n);try{for(o.s();!(t=o.n()).done;){var s=t.value;e._setAttr(s.attributeName)}}catch(e){o.e(e)}finally{o.f()}}).observe(_assertThisInitialized(e),{attributes:!0}),e}_inherits(o,e);var s=_createSuper(o);return _createClass(o,[{key:"connectedCallback",value:function(){this._connected=!0,this._instance||(this._resolveDef(),Nc(this._createVNode(),this.shadowRoot))}},{key:"disconnectedCallback",value:function(){var e=this;this._connected=!1,xr(function(){e._connected||(Nc(null,e.shadowRoot),e._instance=null)})}},{key:"_resolveDef",value:function(){var s=this;if(!this._resolved){var a=function(e){s._resolved=!0;for(var a,r=0,i=Object.keys(s);r<i.length;r++)a=i[r],"_"!==a[0]&&s._setProp(a,s[a]);var d,l=e.props,t=e.styles,n=l?Gl(l)?l:Object.keys(l):[],o=_createForOfIteratorHelper(n.map(O));try{var c=function(){var n=d.value;Object.defineProperty(s,n,{get:function(){return this._getProp(n)},set:function(t){this._setProp(n,t)}})};for(o.s();!(d=o.n()).done;)c()}catch(e){o.e(e)}finally{o.f()}s._applyStyles(t)},e=this._def.__asyncLoader;e?e().then(a):a(this._def)}}},{key:"_setAttr",value:function(n){this._setProp(O(n),z(this.getAttribute(n)),!1)}},{key:"_getProp",value:function(n){return this._props[n]}},{key:"_setProp",value:function(o,e){var t=!(2<arguments.length&&void 0!==arguments[2])||arguments[2];e!==this._props[o]&&(this._props[o]=e,this._instance&&Nc(this._createVNode(),this.shadowRoot),t&&(!0===e?this.setAttribute(H(o),""):"string"==typeof e||"number"==typeof e?this.setAttribute(H(o),e+""):e||this.removeAttribute(H(o))))}},{key:"_createVNode",value:function(){var n=this,t=Go(this._def,zl({},this._props));return this._instance||(t.ce=function(s){n._instance=s,s.isCE=!0,s.emit=function(o){for(var e=arguments.length,s=Array(1<e?e-1:0),t=1;t<e;t++)s[t-1]=arguments[t];n.dispatchEvent(new CustomEvent(o,{detail:s}))};for(var e=n;e=e&&(e.parentNode||e.host);)if(e instanceof o){s.parent=e._instance;break}}),t}},{key:"_applyStyles",value:function(n){var o=this;n&&n.forEach(function(n){var e=document.createElement("style");e.textContent=n,o.shadowRoot.appendChild(e)})}}]),o}($s),As=function(n,e){var o=e.slots;return cs(rn,Os(n),o)};As.displayName="Transition";var Vs,Sc,kc,Tc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Bs=As.props=zl({},rn.props,Tc),Ls=function(n){var o=1<arguments.length&&arguments[1]!==void 0?arguments[1]:[];Gl(n)?n.forEach(function(n){return n.apply(void 0,_toConsumableArray(o))}):n&&n.apply(void 0,_toConsumableArray(o))},js=function(n){return!!n&&(Gl(n)?n.some(function(n){return 1<n.length}):1<n.length)},Us=0,wc=new WeakMap,Ys=new WeakMap,ei={name:"TransitionGroup",props:zl({},Bs,{tag:String,moveClass:String}),setup:function(a,e){var d,p,u=e.slots,i=ic(),n=nn();return $n(function(){if(d.length){var s=a.moveClass||"".concat(a.name||"v","-move");if(function(a,e,t){var n=a.cloneNode();a._vtc&&a._vtc.forEach(function(t){t.split(/\s+/).forEach(function(t){return t&&n.classList.remove(t)})}),t.split(/\s+/).forEach(function(t){return t&&n.classList.add(t)}),n.style.display="none";var o=1===e.nodeType?e:e.parentNode;o.appendChild(n);var r=qs(n),i=r.hasTransform;return o.removeChild(n),i}(d[0].el,i.vnode.el,s)){d.forEach(Xs),d.forEach(Ar);var e=d.filter($r);Qs(),e.forEach(function(t){var a=t.el,e=a.style;Ds(a,s),e.transform=e.webkitTransform=e.transitionDuration="";var n=a._moveCb=function(t){t&&t.target!==a||t&&!/transform$/.test(t.propertyName)||(a.removeEventListener("transitionend",n),a._moveCb=null,Ws(a,s))};a.addEventListener("transitionend",n)})}}}),function(){var e=yt(a),t=Os(e),o=e.tag||Eo;d=p,p=u["default"]?pn(u["default"]()):[];for(var s,r=0;r<p.length;r++)s=p[r],null!=s.key&&un(s,ln(s,t,n,i));if(d)for(var l,c=0;c<d.length;c++)l=d[c],un(l,ln(l,t,n,i)),wc.set(l,l.el.getBoundingClientRect());return Go(o,null,p)}}},ti=function(n){var o=n.props["onUpdate:modelValue"];return Gl(o)?function(n){return K(o,n)}:o},si={created:function(a,e,i){var r=e.modifiers,d=r.lazy,t=r.trim,n=r.number;a._assign=ti(i);var l=n||i.props&&"number"===i.props.type;vs(a,d?"change":"input",function(e){if(!e.target.composing){var n=a.value;t?n=n.trim():l&&(n=z(n)),a._assign(n)}}),t&&vs(a,"change",function(){a.value=a.value.trim()}),d||(vs(a,"compositionstart",Kr),vs(a,"compositionend",Gr),vs(a,"change",Gr))},mounted:function(n,e){var o=e.value;n.value=null==o?"":o},beforeUpdate:function(a,e,d){var s=e.value,t=e.modifiers,l=t.lazy,n=t.trim,o=t.number;if(a._assign=ti(d),!a.composing){if(document.activeElement===a){if(l)return;if(n&&a.value.trim()===s)return;if((o||"number"===a.type)&&z(a.value)===s)return}var r=null==s?"":s;a.value!==r&&(a.value=r)}}},ci={deep:!0,created:function(s,e,t){s._assign=ti(t),vs(s,"change",function(){var e=s._modelValue,t=Qr(s),n=s.checked,o=s._assign;if(Gl(e)){var a=d(e,t),r=-1!==a;if(n&&!r)o(e.concat(t));else if(!n&&r){var i=_toConsumableArray(e);i.splice(a,1),o(i)}}else if(k(e)){var l=new Set(e);n?l.add(t):l["delete"](t),o(l)}else o(Xr(s,n))})},mounted:qr,beforeUpdate:function(o,e,t){o._assign=ti(t),qr(o,e,t)}},ai={created:function(o,e,s){var n=e.value;o.checked=a(n,s.props.value),o._assign=ti(s),vs(o,"change",function(){o._assign(Qr(o))})},beforeUpdate:function(s,e,r){var o=e.value,t=e.oldValue;s._assign=ti(r),o!==t&&(s.checked=a(o,r.props.value))}},pi={deep:!0,created:function(s,e,a){var o=e.value,t=e.modifiers.number,n=k(o);vs(s,"change",function(){var e=Array.prototype.filter.call(s.options,function(n){return n.selected}).map(function(n){return t?z(Qr(n)):Qr(n)});s._assign(s.multiple?n?new Set(e):e:e[0])}),s._assign=ti(a)},mounted:function(n,e){var o=e.value;Jr(n,o)},beforeUpdate:function(o,e,t){o._assign=ti(t)},updated:function(n,e){var o=e.value;Jr(n,o)}},fi=["ctrl","shift","alt","meta"],yi={stop:function(n){return n.stopPropagation()},prevent:function(n){return n.preventDefault()},self:function(n){return n.target!==n.currentTarget},ctrl:function(n){return!n.ctrlKey},shift:function(n){return!n.shiftKey},alt:function(n){return!n.altKey},meta:function(n){return!n.metaKey},left:function(n){return"button"in n&&0!==n.button},middle:function(n){return"button"in n&&1!==n.button},right:function(n){return"button"in n&&2!==n.button},exact:function(o,e){return fi.some(function(t){return o["".concat(t,"Key")]&&!e.includes(t)})}},bi={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},_i=zl({patchProp:function(o,e,r,n){var s=!!(4<arguments.length&&arguments[4]!==void 0)&&arguments[4],i=5<arguments.length?arguments[5]:void 0,d=6<arguments.length?arguments[6]:void 0,l=7<arguments.length?arguments[7]:void 0,a=8<arguments.length?arguments[8]:void 0;"class"===e?function(s,e,a){var n=s._vtc;n&&(e=(e?[e].concat(_toConsumableArray(n)):_toConsumableArray(n)).join(" ")),null==e?s.removeAttribute("class"):a?s.setAttribute("class",e):s.className=e}(o,n,s):"style"===e?function(s,e,t){var n=s.style;if(!t)s.removeAttribute("style");else if(!N(t)){for(var o in t)ps(n,o,t[o]);if(e&&!N(e))for(var a in e)null==t[a]&&ps(n,a,"")}else if(e!==t){var r=n.display;n.cssText=t,"_vod"in s&&(n.display=r)}}(o,r,n):_(e)?v(e)||Ts(o,e,0,n,d):("."===e[0]?(e=e.slice(1),1):"^"===e[0]?(e=e.slice(1),0):function(s,e,t,n){return n?"innerHTML"===e||"textContent"===e||!!(e in s&&Es.test(e)&&w(t)):"spellcheck"!==e&&"draggable"!==e&&"form"!==e&&("list"!==e||"INPUT"!==s.tagName)&&("type"!==e||"TEXTAREA"!==s.tagName)&&!(Es.test(e)&&N(t))&&e in s}(o,e,n,s))?function(a,e,t,n,o,s,r){if("innerHTML"===e||"textContent"===e)return n&&r(n,o,s),void(a[e]=null==t?"":t);if("value"===e&&"PROGRESS"!==a.tagName){a._value=t;var i=null==t?"":t;return a.value!==i&&(a.value=i),void(null==t&&a.removeAttribute(e))}if(""===t||null==t){var d=_typeof(a[e]);if("boolean"===d)return void(a[e]=Qe(t));if(null==t&&"string"===d)return a[e]="",void a.removeAttribute(e);if("number"===d){try{a[e]=0}catch(e){}return void a.removeAttribute(e)}}try{a[e]=t}catch(e){}}(o,e,n,i,d,l,a):("true-value"===e?o._trueValue=n:"false-value"===e&&(o._falseValue=n),function(o,e,t,n){if(n&&e.startsWith("xlink:"))null==t?o.removeAttributeNS("http://www.w3.org/1999/xlink",e.slice(6,e.length)):o.setAttributeNS("http://www.w3.org/1999/xlink",e,t);else{var s=$l(e);null==t||s&&!Qe(t)?o.removeAttribute(e):o.setAttribute(e,s?"":t)}}(o,e,n,s))}},{insert:function(o,e,t){e.insertBefore(o,t||null)},remove:function(n){var e=n.parentNode;e&&e.removeChild(n)},createElement:function(s,e,t,n){var o=e?fs.createElementNS("http://www.w3.org/2000/svg",s):fs.createElement(s,t?{is:t}:void 0);return"select"===s&&n&&null!=n.multiple&&o.setAttribute("multiple",n.multiple),o},createText:function(n){return fs.createTextNode(n)},createComment:function(n){return fs.createComment(n)},setText:function(n,e){n.nodeValue=e},setElementText:function(n,e){n.textContent=e},parentNode:function(n){return n.parentNode},nextSibling:function(n){return n.nextSibling},querySelector:function(n){return fs.querySelector(n)},setScopeId:function(n,e){n.setAttribute(e,"")},cloneNode:function(n){var e=n.cloneNode(!0);return"_value"in n&&(e._value=n._value),e},insertStaticContent:function(a,e,t,n){var o=t?t.previousSibling:e.lastChild,r=ds.get(a);if(!r){var i=fs.createElement("template");if(i.innerHTML=n?"<svg>".concat(a,"</svg>"):a,r=i.content,n){for(var d=r.firstChild;d.firstChild;)r.appendChild(d.firstChild);r.removeChild(d)}ds.set(a,r)}return e.insertBefore(r.cloneNode(!0),t),[o?o.nextSibling:e.firstChild,t?t.previousSibling:e.lastChild]}}),Ci=!1,Nc=function(){var e;(e=oi()).render.apply(e,arguments)},Ei=function(){var e;(e=ri()).hydrate.apply(e,arguments)},$i=Symbol(""),Oi=Symbol(""),Pi=Symbol(""),Ii=Symbol(""),Vi=Symbol(""),Bi=Symbol(""),Li=Symbol(""),ji=Symbol(""),Ui=Symbol(""),Hi=Symbol(""),Di=Symbol(""),Wi=Symbol(""),zi=Symbol(""),Ki=Symbol(""),Gi=Symbol(""),qi=Symbol(""),Ji=Symbol(""),Zi=Symbol(""),Qi=Symbol(""),Xi=Symbol(""),Yi=Symbol(""),el=Symbol(""),tl=Symbol(""),nl=Symbol(""),ol=Symbol(""),rl=Symbol(""),sl=Symbol(""),il=Symbol(""),ll=Symbol(""),cl=Symbol(""),al=Symbol(""),ul=Symbol(""),pl=Symbol(""),fl=Symbol(""),dl=Symbol(""),hl=Symbol(""),ml=Symbol(""),gl=Symbol(""),vl=Symbol(""),yl=Symbol(""),bl=(El={},_defineProperty(El,$i,"Fragment"),_defineProperty(El,Oi,"Teleport"),_defineProperty(El,Pi,"Suspense"),_defineProperty(El,Ii,"KeepAlive"),_defineProperty(El,Vi,"BaseTransition"),_defineProperty(El,Bi,"openBlock"),_defineProperty(El,Li,"createBlock"),_defineProperty(El,ji,"createElementBlock"),_defineProperty(El,Ui,"createVNode"),_defineProperty(El,Hi,"createElementVNode"),_defineProperty(El,Di,"createCommentVNode"),_defineProperty(El,Wi,"createTextVNode"),_defineProperty(El,zi,"createStaticVNode"),_defineProperty(El,Ki,"resolveComponent"),_defineProperty(El,Gi,"resolveDynamicComponent"),_defineProperty(El,qi,"resolveDirective"),_defineProperty(El,Ji,"resolveFilter"),_defineProperty(El,Zi,"withDirectives"),_defineProperty(El,Qi,"renderList"),_defineProperty(El,Xi,"renderSlot"),_defineProperty(El,Yi,"createSlots"),_defineProperty(El,el,"toDisplayString"),_defineProperty(El,tl,"mergeProps"),_defineProperty(El,nl,"normalizeClass"),_defineProperty(El,ol,"normalizeStyle"),_defineProperty(El,rl,"normalizeProps"),_defineProperty(El,sl,"guardReactiveProps"),_defineProperty(El,il,"toHandlers"),_defineProperty(El,ll,"camelize"),_defineProperty(El,cl,"capitalize"),_defineProperty(El,al,"toHandlerKey"),_defineProperty(El,ul,"setBlockTracking"),_defineProperty(El,pl,"pushScopeId"),_defineProperty(El,fl,"popScopeId"),_defineProperty(El,dl,"withScopeId"),_defineProperty(El,hl,"withCtx"),_defineProperty(El,ml,"unref"),_defineProperty(El,gl,"isRef"),_defineProperty(El,vl,"withMemo"),_defineProperty(El,yl,"isMemoSame"),El),_l={source:"",start:{line:1,column:1,offset:0},end:{line:1,column:1,offset:0}},Sl=function(n){return 4===n.type&&n.isStatic},Fl=function(n,e){return n===e||n===H(e)},Al=/^\d|[^\$\w]/,Ol=function(n){return!Al.test(n)},Pl=/[A-Za-z_$\xA0-\uFFFF]/,Il=/[\.\?\w$\xA0-\uFFFF]/,Vl=/\s+[.[]\s*|\s*[.[]\s+/g,Bl=function(a){a=a.trim().replace(Vl,function(n){return n.trim()});for(var i,d=0,l=[],n=0,c=0,p=null,u=0;u<a.length;u++)switch(i=a.charAt(u),d){case 0:if("["===i)l.push(d),d=1,n++;else if("("===i)l.push(d),d=2,c++;else if(!(0===u?Pl:Il).test(i))return!1;break;case 1:"'"===i||"\""===i||"`"===i?(l.push(d),d=3,p=i):"["===i?n++:"]"===i&&(--n||(d=l.pop()));break;case 2:if("'"===i||"\""===i||"`"===i)l.push(d),d=3,p=i;else if("("===i)c++;else if(")"===i){if(u===a.length-1)return!1;--c||(d=l.pop())}break;case 3:i===p&&(d=l.pop(),p=null);}return!n&&!c},Ll=new Set([rl,sl]),Xl=/&(gt|lt|amp|apos|quot);/g,oc={gt:">",lt:"<",amp:"&",apos:"'",quot:"\""},rc={delimiters:["{{","}}"],getNamespace:function(){return 0},getTextMode:function(){return 0},isVoidTag:m,isPreTag:m,isCustomElement:m,decodeEntities:function(n){return n.replace(Xl,function(n,e){return oc[e]})},onError:di,onWarn:li,comments:!1},sc=e("if,else,else-if,for,slot"),dc=new Set([nl,ol,rl,sl]),Ec=Gd(/^(if|else|else-if)$/,function(o,e,a){return function(s,e,t,n){if("else"===e.name||e.exp&&e.exp.content.trim()||(e.exp=xi("true",!1,e.exp?e.exp.loc:s.loc)),"if"===e.name){var o=kl(s,e),a={type:9,loc:s.loc,branches:[o]};if(t.replaceNode(a),n)return n(a,o,!0)}else for(var r,i=t.parent.children,d=i.indexOf(s);-1<=d--;){if(r=i[d],!r||2!==r.type||r.content.trim().length){if(r&&9===r.type){t.removeNode();var l=kl(s,e);r.branches.push(l);var c=n&&n(r,l,!1);zd(l,t),c&&c(),t.currentNode=null}break}t.removeNode(r)}}(o,e,a,function(n,e,t){for(var o=a.parent.children,r=o.indexOf(n),d=0;0<=r--;){var l=o[r];l&&9===l.type&&(d+=l.branches.length)}return function(){t?n.codegenNode=Tl(e,d,a):function(n){for(;;)if(19===n.type){if(19!==n.alternate.type)return n;n=n.alternate}else 20===n.type&&(n=n.value)}(n.codegenNode).alternate=Tl(e,d+n.branches.length-1,a)}})}),Rc=Gd("for",function(g,e,m){var n=m.helper,o=m.removeHelper;return function(d,e,t,n){if(e.exp){var o=ea(e.exp);if(o){var r=t.scopes,s=o.source,i=o.value,l=o.key,c=o.index,a={type:11,loc:e.loc,source:s,valueAlias:i,keyAlias:l,objectIndexAlias:c,parseResult:o,children:rd(d)?d.children:[d]};t.replaceNode(a),r.vFor++;var u=n&&n(a);return function(){r.vFor--,u&&u()}}}}(g,e,m,function(e){var t=Ti(n(Qi),[e.source]),s=nd(g,"memo"),r=td(g,"key"),i=r&&(6===r.type?xi(r.value.content,!0):r.exp),c=r?vi("key",i):null,a=4===e.source.type&&0<e.source.constType,d=a?64:r?128:256;return e.codegenNode=hi(m,n($i),void 0,t,d+"",void 0,void 0,!0,!a,!1,g.loc),function(){var r,u=rd(g),p=e.children,f=1!==p.length||1!==p[0].type,d=id(g)?g:u&&1===g.children.length&&id(g.children[0])?g.children[0]:null;if(d?(r=d.codegenNode,u&&c&&pd(r,c,m)):f?r=hi(m,n($i),c?mi([c]):void 0,g.children,"64",void 0,void 0,!0,void 0,!1):(r=p[0].codegenNode,u&&c&&pd(r,c,m),r.isBlock!==!a&&(r.isBlock?(o(Bi),o(ld(m.inSSR,r.isComponent))):o(dd(m.inSSR,r.isComponent))),r.isBlock=!a,r.isBlock?(n(Bi),n(ld(m.inSSR,r.isComponent))):n(dd(m.inSSR,r.isComponent))),s){var h=Ni(ia(e.parseResult,[xi("_cached")]));h.body={type:21,body:[Si(["const _memo = (",s.exp,")"]),Si(["if (_cached"].concat(_toConsumableArray(i?[" && _cached.key === ",i]:[]),[" && ".concat(m.helperString(yl),"(_cached, _memo)) return _cached")])),Si(["const _item = ",r]),xi("_item.memo = _memo"),xi("return _item")],loc:_l},t.arguments.push(h,xi("_cache"),xi(m.cached++ +""))}else t.arguments.push(Ni(ia(e.parseResult),r,!0))}})}),ta=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,na=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,oa=/^\(|\)$/g,ra=xi("undefined",!1),ca=function(n,e){if(1===n.type&&(1===n.tagType||3===n.tagType)){var t=nd(n,"slot");if(t)return e.scopes.vSlot++,function(){e.scopes.vSlot--}}},aa=function(o,e,t){return Ni(o,e,!1,!0,e.length?e[0].loc:t)},ua=new WeakMap,ma=function(h,g){return function(){if(1===(h=g.currentNode).type&&(0===h.tagType||1===h.tagType)){var e,t,m,y,v,_,b=h,x=b.tag,n=b.props,o=1===h.tagType,r=o?function(a,e){var t=!!(2<arguments.length&&void 0!==arguments[2])&&arguments[2],n=a.tag,d=ba(n),r=td(a,"is");if(r)if(d){var s=6===r.type?r.value&&xi(r.value.content,!0):r.exp;if(s)return Ti(e.helper(Gi),[s])}else 6===r.type&&r.value.content.startsWith("vue:")&&(n=r.value.content.slice(4));var c=!d&&nd(a,"is");if(c&&c.exp)return Ti(e.helper(Gi),[c.exp]);var i=Fi(n)||e.isBuiltInComponent(n);return i?(t||e.helper(i),i):(e.helper(Ki),e.components.add(n),ud(n,"component"))}(h,g):"\"".concat(x,"\""),s=0,C=R(r)&&r.callee===Gi||r===Oi||r===Pi||!o&&("svg"===x||"foreignObject"===x||td(h,"key",!0));if(0<n.length){var S=ha(h,g);e=S.props,s=S.patchFlag,v=S.dynamicPropNames;var k=S.directives;_=k&&k.length?gi(k.map(function(n){return function(s,e){var t=[],n=ua.get(s);n?t.push(e.helperString(n)):(e.helper(qi),e.directives.add(s.name),t.push(ud(s.name,"directive")));var o=s.loc;if(s.exp&&t.push(s.exp),s.arg&&(s.exp||t.push("void 0"),t.push(s.arg)),Object.keys(s.modifiers).length){s.arg||(s.exp||t.push("void 0"),t.push("void 0"));var a=xi("true",!1,o);t.push(mi(s.modifiers.map(function(n){return vi(n,a)}),o))}return gi(t,s.loc)}(n,g)})):void 0}if(0<h.children.length)if(r===Ii&&(C=!0,s|=1024),o&&r!==Oi&&r!==Ii){var T=la(h,g),w=T.slots,N=T.hasDynamicSlots;t=w,N&&(s|=1024)}else if(1===h.children.length&&r!==Oi){var E=h.children[0],I=E.type,P=5===I||8===I;P&&0===Ud(E,g)&&(s|=1),t=P||2===I?E:h.children}else t=h.children;0!==s&&(m=s+"",v&&v.length&&(y=function(n){for(var e="[",o=0,s=n.length;o<s;o++)e+=JSON.stringify(n[o]),o<s-1&&(e+=", ");return e+"]"}(v))),h.codegenNode=hi(g,r,e,t,m,y,_,!!C,!1,o,h.loc)}}},ga=function(n,e){if(id(n)){var t=n.children,o=n.loc,s=function(s,e){for(var t,a,i="\"default\"",d=[],r=0;r<s.props.length;r++)a=s.props[r],6===a.type?a.value&&("name"===a.name?i=JSON.stringify(a.value.content):(a.name=O(a.name),d.push(a))):"bind"===a.name&&od(a.arg,"name")?a.exp&&(i=a.exp):("bind"===a.name&&a.arg&&Sl(a.arg)&&(a.arg.content=O(a.arg.content)),d.push(a));if(0<d.length){var l=ha(s,e,d),c=l.props,p=l.directives;t=c}return{slotName:i,slotProps:t}}(n,e),a=s.slotName,r=s.slotProps,i=[e.prefixIdentifiers?"_ctx.$slots":"$slots",a];r&&i.push(r),t.length&&(r||i.push("{}"),i.push(Ni([],t,!1,!1,o))),e.scopeId&&!e.slotted&&(r||i.push("{}"),t.length||i.push("undefined"),i.push("true")),n.codegenNode=Ti(e.helper(Xi),i,o)}},Sa=/^\s*([\w$_]+|\([^)]*?\))\s*=>|^\s*function(?:\s+[\w$]+)?\s*\(/,xa=function(d,e,t,n){var o,p=d.loc,r=d.modifiers,s=d.arg;4===s.type?s.isStatic?o=xi(j(O(s.content)),!0,s.loc):o=Si(["".concat(t.helperString(al),"("),s,")"]):(o=s,o.children.unshift("".concat(t.helperString(al),"(")),o.children.push(")"));var i=d.exp;i&&!i.content.trim()&&(i=void 0);var h=t.cacheHandlers&&!i&&!t.inVOnce;if(i){var a=Bl(i.content),f=!(a||Sa.test(i.content)),g=i.content.includes(";");(f||h&&a)&&(i=Si(["".concat(f?"$event":"(...args)"," => ").concat(g?"{":"("),i,g?"}":")"]))}var m={props:[vi(o,i||xi("() => {}",!1,p))]};return n&&(m=n(m)),h&&(m.props[0].value=t.cache(m.props[0].value)),m.props.forEach(function(n){return n.key.isHandlerKey=!0}),m},Ca=function(a,e,t){var n=a.exp,o=a.modifiers,r=a.loc,s=a.arg;return 4===s.type?s.isStatic||(s.content="".concat(s.content," || \"\"")):(s.children.unshift("("),s.children.push(") || \"\"")),o.includes("camel")&&(4===s.type?s.content=s.isStatic?O(s.content):"".concat(t.helperString(ll),"(").concat(s.content,")"):(s.children.unshift("".concat(t.helperString(ll),"(")),s.children.push(")"))),t.inSSR||(o.includes("prop")&&wa(s,"."),o.includes("attr")&&wa(s,"^")),n&&(4!==n.type||n.content.trim())?{props:[vi(s,n)]}:{props:[vi(s,xi("",!0,r))]}},wa=function(n,e){4===n.type?n.content=n.isStatic?e+n.content:"`".concat(e,"${").concat(n.content,"}`"):(n.children.unshift("'".concat(e,"' + (")),n.children.push(")"))},ka=function(s,o){if(0===s.type||1===s.type||11===s.type||10===s.type)return function(){for(var e,t,a=s.children,n=!1,i=0;i<a.length;i++)if(t=a[i],sd(t)){n=!0;for(var d,l=i+1;l<a.length;l++){if(d=a[l],!sd(d)){e=void 0;break}e||(e=a[i]={type:8,loc:t.loc,children:[t]}),e.children.push(" + ",d),a.splice(l,1),l--}}if(n&&(1!==a.length||0!==s.type&&(1!==s.type||0!==s.tagType||s.props.find(function(n){return 7===n.type&&!o.directiveTransforms[n.name]}))))for(var c,p=0;p<a.length;p++)if(c=a[p],sd(c)||8===c.type){var u=[];2===c.type&&" "===c.content||u.push(c),o.ssr||0!==Ud(c,o)||u.push("1"),a[p]={type:12,content:c,loc:c.loc,codegenNode:Ti(o.helper(Wi),u)}}}},Ta=new WeakSet,Na=function(n,o){if(1===n.type&&nd(n,"once",!0))return Ta.has(n)||o.inVOnce?void 0:(Ta.add(n),o.inVOnce=!0,o.helper(ul),function(){o.inVOnce=!1;var n=o.currentNode;n.codegenNode&&(n.codegenNode=o.cache(n.codegenNode,!0))})},Ea=function(d,e,t){var n=d.exp,o=d.arg;if(!n)return _a();var r=n.loc.source,s=4===n.type?n.content:r;if(!s.trim()||!Bl(s))return _a();var i,p=o||xi("modelValue",!0),l=o?Sl(o)?"onUpdate:".concat(o.content):Si(["\"onUpdate:\" + ",o]):"onUpdate:modelValue";i=Si(["".concat(t.isTS?"($event: any)":"$event"," => ("),n," = $event)"]);var c=[vi(p,d.exp),vi(l,i)];if(d.modifiers.length&&1===e.tagType){var u=d.modifiers.map(function(n){return(Ol(n)?n:JSON.stringify(n))+": true"}).join(", "),h=o?Sl(o)?"".concat(o.content,"Modifiers"):Si([o," + \"Modifiers\""]):"modelModifiers";c.push(vi(h,xi("{ ".concat(u," }"),!1,d.loc,2)))}return _a(c)},$a=new WeakSet,Fa=function(n,e){if(1===n.type){var t=nd(n,"memo");return!t||$a.has(n)?void 0:($a.add(n),function(){var s=n.codegenNode||e.currentNode.codegenNode;s&&13===s.type&&(1!==n.tagType&&hd(s,e),n.codegenNode=Ti(e.helper(vl),[t.exp,Ni(void 0,s),"_cache",e.cached++ +""]))})}},Aa=Symbol(""),Oa=Symbol(""),Pa=Symbol(""),Ia=Symbol(""),Va=Symbol(""),Ba=Symbol(""),La=Symbol(""),ja=Symbol(""),Ua=Symbol(""),Ha=Symbol("");Sc=(Rl={},_defineProperty(Rl,Aa,"vModelRadio"),_defineProperty(Rl,Oa,"vModelCheckbox"),_defineProperty(Rl,Pa,"vModelText"),_defineProperty(Rl,Ia,"vModelSelect"),_defineProperty(Rl,Va,"vModelDynamic"),_defineProperty(Rl,Ba,"withModifiers"),_defineProperty(Rl,La,"withKeys"),_defineProperty(Rl,ja,"vShow"),_defineProperty(Rl,Ua,"Transition"),_defineProperty(Rl,Ha,"TransitionGroup"),Rl),Object.getOwnPropertySymbols(Sc).forEach(function(n){bl[n]=Sc[n]});var Da=e("style,iframe,script,noscript",!0),Ka={isVoidTag:p,isNativeTag:function(n){return i(n)||u(n)},isPreTag:function(n){return"pre"===n},decodeEntities:function(n){var e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return kc||(kc=document.createElement("div")),e?(kc.innerHTML="<div foo=\"".concat(n.replace(/"/g,"""),"\">"),kc.children[0].getAttribute("foo")):(kc.innerHTML=n,kc.textContent)},isBuiltInComponent:function(n){return Fl(n,"Transition")?Ua:Fl(n,"TransitionGroup")?Ha:void 0},getNamespace:function(o,e){var t=e?e.ns:0;if(!(e&&2===t))e&&1==t&&("foreignObject"!==e.tag&&"desc"!==e.tag&&"title"!==e.tag||(t=0));else if("annotation-xml"===e.tag){if("svg"===o)return 1;e.props.some(function(n){return 6===n.type&&"encoding"===n.name&&null!=n.value&&("text/html"===n.value.content||"application/xhtml+xml"===n.value.content)})&&(t=0)}else /^m(?:[ions]|text)$/.test(e.tag)&&"mglyph"!==o&&"malignmark"!==o&&(t=0);if(0===t){if("svg"===o)return 1;if("math"===o)return 2}return t},getTextMode:function(n){var o=n.tag,e=n.ns;if(0===e){if("textarea"===o||"title"===o)return 1;if(Da(o))return 2}return 0}},Ga=function(o,e){var t=s(o);return xi(JSON.stringify(t),!1,e,3)},qa=e("passive,once,capture"),Ja=e("stop,prevent,self,ctrl,shift,alt,meta,exact,middle"),Za=e("left,right"),Qa=e("onkeyup,onkeydown,onkeypress",!0),Xa=function(n,e){return Sl(n)&&"onclick"===n.content.toLowerCase()?xi(e,!0):4===n.type?n:Si(["(",n,") === \"onClick\" ? \"".concat(e,"\" : ("),n,")"])},Ya=function(n,e){1!==n.type||0!==n.tagType||"script"!==n.tag&&"style"!==n.tag||e.removeNode()},Ic=[function(o){1===o.type&&o.props.forEach(function(e,t){6===e.type&&"style"===e.name&&e.value&&(o.props[t]={type:7,name:"bind",arg:xi("style",!0,e.loc),exp:Ga(e.value.content,e.loc),modifiers:[],loc:e.loc})})}],Pc={cloak:function(){return{props:[]}},html:function(n,e){var t=n.exp,o=n.loc;return e.children.length&&(e.children.length=0),{props:[vi(xi("innerHTML",!0,o),t||xi("",!0))]}},text:function(s,e,t){var n=s.exp,o=s.loc;return e.children.length&&(e.children.length=0),{props:[vi(xi("textContent",!0),n?Ti(t.helperString(el),[n],o):xi("",!0))]}},model:function(a,e,t){var n=Ea(a,e,t);if(!n.props.length||1===e.tagType)return n;var o=e.tag,r=t.isCustomElement(o);if("input"===o||"textarea"===o||"select"===o||r){var s=Pa,i=!1;if("input"===o||r){var d=td(e,"type");if(!d)(function(n){return n.props.some(function(n){return!(7!==n.type||"bind"!==n.name||n.arg&&4===n.arg.type&&n.arg.isStatic)})})(e)&&(s=Va);else if(7===d.type)s=Va;else if(d.value)switch(d.value.content){case"radio":s=Aa;break;case"checkbox":s=Oa;break;case"file":i=!0;}}else"select"===o&&(s=Ia);i||(n.needRuntime=t.helper(s))}return n.props=n.props.filter(function(n){return 4!==n.key.type||"modelValue"!==n.key.content}),n},on:function(a,e,d){return xa(a,0,d,function(e){var n=a.modifiers;if(!n.length)return e;var t=e.props[0],o=t.key,p=t.value,u=function(n,e){for(var t,o=[],a=[],s=[],r=0;r<e.length;r++)t=e[r],qa(t)?s.push(t):Za(t)?Sl(n)?Qa(n.content)?o.push(t):a.push(t):(o.push(t),a.push(t)):Ja(t)?a.push(t):o.push(t);return{keyModifiers:o,nonKeyModifiers:a,eventOptionModifiers:s}}(o,n),h=u.keyModifiers,i=u.nonKeyModifiers,l=u.eventOptionModifiers;if(i.includes("right")&&(o=Xa(o,"onContextmenu")),i.includes("middle")&&(o=Xa(o,"onMouseup")),i.length&&(p=Ti(d.helper(Ba),[p,JSON.stringify(i)])),!h.length||Sl(o)&&!Qa(o.content)||(p=Ti(d.helper(La),[p,JSON.stringify(h)])),l.length){var c=l.map(D).join("");o=Sl(o)?xi("".concat(o.content).concat(c),!0):Si(["(",o,") + \"".concat(c,"\"")])}return{props:[vi(o,p)]}})},show:function(o,e,t){return{props:[],needRuntime:t.helper(ja)}}},Fc=Object.create(null);return _s(Ma),Re.$computed=function(){},Re.$fromRefs=function(){return null},Re.$raw=function(){return null},Re.$ref=function(){},Re.$shallowRef=function(n){return n},Re.BaseTransition=rn,Re.Comment=Ao,Re.EffectScope=q,Re.Fragment=Eo,Re.KeepAlive=gn,Re.ReactiveEffect=ce,Re.Static=Mo,Re.Suspense={name:"Suspense",__isSuspense:!0,process:function(d,e,t,n,o,r,s,i,l,c){null==d?function(d,e,t,n,o,r,s,i,l){var c=l.p,a=l.o.createElement,u=a("div"),p=d.suspense=qt(d,o,n,e,u,t,r,s,i,l);c(null,p.pendingBranch=d.ssContent,u,null,n,p,r,s),0<p.deps?(Gt(d,"onPending"),Gt(d,"onFallback"),c(null,d.ssFallback,e,t,n,null,r,s),Xt(p,d.ssFallback)):p.resolve()}(e,t,n,o,r,s,i,l,c):function(y,e,t,n,o,r,s,i,l){var _=l.p,c=l.um,a=l.o.createElement,u=e.suspense=y.suspense;u.vnode=e,e.el=y.el;var p=e.ssContent,f=e.ssFallback,d=u.activeBranch,h=u.pendingBranch,m=u.isInFallback,g=u.isHydrating;if(h)u.pendingBranch=p,Uo(p,h)?(_(h,p,u.hiddenContainer,null,o,u,r,s,i),0>=u.deps?u.resolve():m&&(_(d,f,t,n,o,null,r,s,i),Xt(u,f))):(u.pendingId++,g?(u.isHydrating=!1,u.activeBranch=h):c(h,o,u),u.deps=0,u.effects.length=0,u.hiddenContainer=a("div"),m?(_(null,p,u.hiddenContainer,null,o,u,r,s,i),0>=u.deps?u.resolve():(_(d,f,t,n,o,null,r,s,i),Xt(u,f))):d&&Uo(p,d)?(_(d,p,t,n,o,u,r,s,i),u.resolve(!0)):(_(null,p,u.hiddenContainer,null,o,u,r,s,i),0>=u.deps&&u.resolve()));else if(d&&Uo(p,d))_(d,p,t,n,o,u,r,s,i),Xt(u,p);else if(Gt(e,"onPending"),u.pendingBranch=p,u.pendingId++,_(null,p,u.hiddenContainer,null,o,u,r,s,i),0>=u.deps)u.resolve();else{var v=u.timeout,b=u.pendingId;0<v?setTimeout(function(){u.pendingId===b&&u.fallback(f)},v):0===v&&u.fallback(f)}}(d,e,t,n,o,s,i,l,c)},hydrate:function(d,e,t,n,o,r,s,i,l){var c=e.suspense=qt(e,n,t,d.parentNode,document.createElement("div"),null,o,r,s,i,!0),a=l(d,c.pendingBranch=e.ssContent,t,c,r,s);return 0===c.deps&&c.resolve(),a},create:qt,normalize:function(s){var e=s.shapeFlag,t=s.children,n=32&e;s.ssContent=Jt(n?t["default"]:t),s.ssFallback=n?Jt(t.fallback):Go(Comment)}},Re.Teleport={__isTeleport:!0,process:function(_,e,t,n,o,r,s,x,l,c){var a=c.mc,u=c.pc,p=c.pbc,f=c.o,C=f.insert,d=f.querySelector,h=f.createText,m=mo(e.props),g=e.shapeFlag,v=e.children,y=e.dynamicChildren;if(null==_){var b=e.el=h(""),S=e.anchor=h("");C(b,t,n),C(S,t,n);var k=e.target=Co(e.props,d),T=e.targetAnchor=h("");k&&(C(T,k),s=s||xo(k));var w=function(n,e){16&g&&a(v,n,e,o,r,s,x,l)};m?w(t,S):k&&w(k,T)}else{e.el=_.el;var N=e.anchor=_.anchor,E=e.target=_.target,R=e.targetAnchor=_.targetAnchor,I=mo(_.props),P=I?t:E,F=I?N:R;if(s=s||xo(E),y?(p(_.dynamicChildren,y,P,o,r,s,x),vo(_,e,!0)):l||u(_,e,P,F,o,r,s,x,!1),m)I||_o(e,t,N,c,1);else if((e.props&&e.props.to)!==(_.props&&_.props.to)){var A=e.target=Co(e.props,d);A&&_o(e,A,null,c,0)}else I&&_o(e,E,R,c,1)}},remove:function(d,e,t,n,o,h){var i=o.um,r=o.o.remove,s=d.shapeFlag,l=d.children,c=d.anchor,a=d.targetAnchor,u=d.target,p=d.props;if(u&&r(a),(h||!mo(p))&&(r(c),16&s))for(var f,g=0;g<l.length;g++)f=l[g],i(f,e,t,!0,!!f.dynamicChildren)},move:_o,hydrate:function(d,e,t,n,o,r,s,p){var a=s.o,h=a.nextSibling,i=a.parentNode,l=a.querySelector,c=e.target=Co(e.props,l);if(c){var u=c._lpa||c.firstChild;16&e.shapeFlag&&(mo(e.props)?(e.anchor=p(h(d),e,i(d),t,n,o,r),e.targetAnchor=u):(e.anchor=h(d),e.targetAnchor=p(u,e,c,t,n,o,r)),c._lpa=e.targetAnchor&&h(e.targetAnchor))}return e.anchor&&h(e.anchor)}},Re.Text=Fo,Re.Transition=As,Re.TransitionGroup=ei,Re.VueElement=Fs,Re.callWithAsyncErrorHandling=_r,Re.callWithErrorHandling=yr,Re.camelize=O,Re.capitalize=D,Re.cloneVNode=jo,Re.compatUtils=null,Re.compile=Ma,Re.computed=Rt,Re.createApp=function(){var e,a=(e=oi()).createApp.apply(e,arguments),t=a.mount;return a.mount=function(n){var e=ii(n);if(e){var o=a._component;w(o)||o.render||o.template||(o.template=e.innerHTML),e.innerHTML="";var r=t(e,!1,e instanceof SVGElement);return e instanceof Element&&(e.removeAttribute("v-cloak"),e.setAttribute("data-v-app","")),r}},a},Re.createBlock=Vo,Re.createCommentVNode=function(){var n=0<arguments.length&&arguments[0]!==void 0?arguments[0]:"",e=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return e?(ko(),Vo(Ao,null,n)):Go(Ao,null,n)},Re.createElementBlock=function(a,e,t,n,o,r){return Ro(Ho(a,e,t,n,o,r,!0))},Re.createElementVNode=Ho,Re.createHydrationRenderer=lo,Re.createRenderer=io,Re.createSSRApp=function(){var e,o=(e=ri()).createApp.apply(e,arguments),s=o.mount;return o.mount=function(n){var e=ii(n);if(e)return s(e,!0,e instanceof SVGElement)},o},Re.createSlots=function(n,e){for(var t,o=0;o<e.length;o++)if(t=e[o],Gl(t))for(var s=0;s<t.length;s++)n[t[s].name]=t[s].fn;else t&&(n[t.name]=t.fn);return n},Re.createStaticVNode=function(o,e){var t=Go(Mo,null,o);return t.staticCount=e,t},Re.createTextVNode=$o,Re.createVNode=Go,Re.customRef=function(n){return new $t(n)},Re.defineAsyncComponent=function(i){w(i)&&(i={loader:i});var d,h=i,f=h.loader,t=h.loadingComponent,n=h.errorComponent,o=h.delay,g=void 0===o?200:o,r=h.timeout,s=h.suspensible,m=h.onError,l=null,y=0,v=function n(){var o;return l||(o=l=f()["catch"](function(o){if(o=o instanceof Error?o:new Error(o+""),m)return new Promise(function(e,t){m(o,function(){return e((y++,l=null,n()))},function(){return t(o)},y+1)});throw o}).then(function(e){return o!==l&&l?l:(e&&(e.__esModule||"Module"===e[Symbol.toStringTag])&&(e=e["default"]),d=e,e)}))};return fn({name:"AsyncComponentWrapper",__asyncLoader:v,get __asyncResolved(){return d},setup:function(){var o=ac;if(d)return function(){return dn(d,o)};var a=function(e){l=null,br(e,o,13,!n)};if((!(void 0!==s)||s)&&o.suspense)return v().then(function(e){return function(){return dn(e,o)}})["catch"](function(t){return a(t),function(){return n?Go(n,{error:t}):null}});var e=St(!1),i=St(),c=St(!!g);return g&&setTimeout(function(){c.value=!1},g),null!=r&&setTimeout(function(){if(!e.value&&!i.value){var n=new Error("Async component timed out after ".concat(r,"ms."));a(n),i.value=n}},r),v().then(function(){e.value=!0,o.parent&&hn(o.parent.vnode)&&Sr(o.parent.update)})["catch"](function(n){a(n),i.value=n}),function(){return e.value&&d?dn(d,o):i.value&&n?Go(n,{error:i.value}):t&&!c.value?Go(t):void 0}}})},Re.defineComponent=fn,Re.defineCustomElement=Ns,Re.defineEmits=function(){return null},Re.defineExpose=function(){},Re.defineProps=function(){return null},Re.defineSSRCustomElement=function(n){return Ns(n,Ei)},Re.effect=function(s,a){s.effect&&(s=s.effect.fn);var t=new ce(s);a&&(zl(t,a),a.scope&&h(t,a.scope)),a&&a.lazy||t.run();var n=t.run.bind(t);return n.effect=t,n},Re.effectScope=function(n){return new q(n)},Re.getCurrentInstance=ic,Re.getCurrentScope=function(){return Ml},Re.getTransitionRawChildren=pn,Re.guardReactiveProps=Do,Re.h=cs,Re.handleError=br,Re.hydrate=Ei,Re.initCustomFormatter=function(){},Re.inject=tn,Re.isMemoSame=as,Re.isProxy=mt,Re.isReactive=ft,Re.isReadonly=gt,Re.isRef=xt,Re.isRuntimeOnly=function(){return!Hl},Re.isVNode=Bo,Re.markRaw=vt,Re.mergeDefaults=function(n,e){for(var t in e){var o=n[t];o?o["default"]=e[t]:null===o&&(n[t]={default:e[t]})}return n},Re.mergeProps=Xo,Re.nextTick=xr,Re.normalizeClass=c,Re.normalizeProps=function(o){if(!o)return null;var e=o["class"],t=o.style;return e&&!N(e)&&(o["class"]=c(e)),t&&(o.style=r(t)),o},Re.normalizeStyle=r,Re.onActivated=yn,Re.onBeforeMount=Tn,Re.onBeforeUnmount=Rn,Re.onBeforeUpdate=En,Re.onDeactivated=bn,Re.onErrorCaptured=kn,Re.onMounted=Nn,Re.onRenderTracked=On,Re.onRenderTriggered=Mn,Re.onScopeDispose=function(n){Ml&&Ml.cleanups.push(n)},Re.onServerPrefetch=An,Re.onUnmounted=Fn,Re.onUpdated=$n,Re.openBlock=ko,Re.popScopeId=function(){Jl=null},Re.provide=en,Re.proxyRefs=Nt,Re.pushScopeId=function(n){Jl=n},Re.queuePostFlushCb=Nr,Re.reactive=nt,Re.readonly=dt,Re.ref=St,Re.registerRuntimeCompiler=_s,Re.render=Nc,Re.renderList=function(a,i,e,n){var t,o=e&&e[n];if(Gl(a)||N(a)){t=Array(a.length);for(var s=0,d=a.length;s<d;s++)t[s]=i(a[s],s,void 0,o&&o[s])}else if("number"==typeof a){t=Array(a);for(var l=0;l<a;l++)t[l]=i(l+1,l,void 0,o&&o[l])}else if(!R(a))t=[];else if(a[Symbol.iterator])t=Array.from(a,function(t,e){return i(t,e,void 0,o&&o[e])});else{var c=Object.keys(a);t=Array(c.length);for(var p,u=0,h=c.length;u<h;u++)p=c[u],t[u]=i(a[p],p,u,o&&o[u])}return e&&(e[n]=t),t},Re.renderSlot=function(a,e){var t=2<arguments.length&&arguments[2]!==void 0?arguments[2]:{},n=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;if(Ot.isCE)return Go("slot","default"===e?null:{name:e},n&&n());var r=a[e];r&&r._c&&(r._d=!1),ko();var s=r&&Yo(r(t)),i=Vo(Eo,{key:t.key||"_".concat(e)},s||(n?n():[]),s&&1===a._?64:-2);return!o&&i.scopeId&&(i.slotScopeIds=[i.scopeId+"-s"]),r&&r._c&&(r._d=!0),i},Re.resolveComponent=function(n,e){return bo("components",n,!0,e)||n},Re.resolveDirective=function(n){return bo("directives",n)},Re.resolveDynamicComponent=function(n){return N(n)?bo("components",n,!1)||n:n||wo},Re.resolveFilter=null,Re.resolveTransitionHooks=ln,Re.setBlockTracking=No,Re.setDevtoolsHook=function(e){Re.devtools=e},Re.setTransitionHooks=un,Re.shallowReactive=pt,Re.shallowReadonly=function(n){return ht(n,!0,Pe,st,at)},Re.shallowRef=function(n){return kt(n,!0)},Re.ssrContextKey=ns,Re.ssrUtils=null,Re.stop=function(n){n.effect.stop()},Re.toDisplayString=function(n){return null==n?"":Gl(n)||R(n)&&(n.toString===P||!w(n.toString))?JSON.stringify(n,f,2):n+""},Re.toHandlerKey=j,Re.toHandlers=function(n){var e={};for(var t in n)e[j(t)]=n[t];return e},Re.toRaw=yt,Re.toRef=Et,Re.toRefs=function(n){var e=Gl(n)?Array(n.length):{};for(var t in n)e[t]=Et(n,t);return e},Re.transformVNodeArgs=function(){},Re.triggerRef=function(n){bt(n)},Re.unref=wt,Re.useAttrs=function(){return ls().attrs},Re.useCssModule=function(){0<arguments.length&&arguments[0]!==void 0?arguments[0]:"$style";return Kl},Re.useCssVars=function(o){var s=ic();if(s){var t=function(){return Rs(s.subTree,o(s.proxy))};es(t),Nn(function(){var n=new MutationObserver(t);n.observe(s.subTree.el.parentNode,{childList:!0}),Fn(function(){return n.disconnect()})})}},Re.useSSRContext=function(){},Re.useSlots=function(){return ls().slots},Re.useTransitionState=nn,Re.vModelCheckbox=ci,Re.vModelDynamic={created:function(o,e,t){Zr(o,e,t,null,"created")},mounted:function(o,e,t){Zr(o,e,t,null,"mounted")},beforeUpdate:function(s,e,t,n){Zr(s,e,t,n,"beforeUpdate")},updated:function(s,e,t,n){Zr(s,e,t,n,"updated")}},Re.vModelRadio=ai,Re.vModelSelect=pi,Re.vModelText=si,Re.vShow={beforeMount:function(o,e,s){var a=e.value,t=s.transition;o._vod="none"===o.style.display?"":o.style.display,t&&a?t.beforeEnter(o):ni(o,a)},mounted:function(o,e,s){var a=e.value,t=s.transition;t&&a&&t.enter(o)},updated:function(s,e,a){var r=e.value,t=e.oldValue,n=a.transition;!r!=!t&&(n?r?(n.beforeEnter(s),ni(s,!0),n.enter(s)):n.leave(s,function(){ni(s,!1)}):ni(s,r))},beforeUnmount:function(n,e){var o=e.value;ni(n,o)}},Re.version="3.2.4",Re.warn=function(s){te();for(var a=Cr.length?Cr[Cr.length-1].component:null,e=a&&a.appContext.config.warnHandler,n=function(){var n=Cr[Cr.length-1];if(!n)return[];for(var o=[];n;){var t=o[0];t&&t.vnode===n?t.recurseCount++:o.push({vnode:n,recurseCount:0});var s=n.component&&n.component.parent;n=s&&s.vnode}return o}(),o=arguments.length,r=Array(1<o?o-1:0),t=1;t<o;t++)r[t-1]=arguments[t];if(e)yr(e,a,11,[s+r.join(""),a&&a.proxy,n.map(function(n){var t=n.vnode;return"at <".concat(tr(a,t.type),">")}).join("\n"),n]);else{var i,d=["[Vue warn]: ".concat(s)].concat(r);n.length&&d.push.apply(d,["\n"].concat(_toConsumableArray(function(n){var o=[];return n.forEach(function(t,e){o.push.apply(o,_toConsumableArray(0===e?[]:["\n"]).concat(_toConsumableArray(function(s){var a=s.vnode,e=s.recurseCount,t=0<e?"... (".concat(e," recursive calls)"):"",n=" at <".concat(tr(a.component,a.type,!!a.component&&null==a.component.parent)),o=">"+t;return a.props?[n].concat(_toConsumableArray(or(a.props)),[o]):[n+o]}(t))))}),o}(n)))),(i=console).warn.apply(i,_toConsumableArray(d))}de()},Re.watch=ts,Re.watchEffect=function(n,e){return os(n,null,e)},Re.watchPostEffect=es,Re.watchSyncEffect=function(n){return os(n,null,{flush:"sync"})},Re.withAsyncContext=function(o){var s=ic(),e=o();return fr(),F(e)&&(e=e["catch"](function(n){throw pr(s),n})),[e,function(){return pr(s)}]},Re.withCtx=Bt,Re.withDefaults=function(){return null},Re.withDirectives=function(s,e){if(null===Ot)return s;for(var t=Ot.proxy,n=s.dirs||(s.dirs=[]),o=0;o<e.length;o++){var a=_slicedToArray(e[o],4),r=a[0],i=a[1],d=a[2],l=a[3],c=void 0===l?Kl:l;w(r)&&(r={mounted:r,updated:r}),r.deep&&is(i),n.push({dir:r,instance:t,value:i,oldValue:void 0,arg:d,modifiers:c})}return s},Re.withKeys=function(s,e){return function(t){if("key"in t){var n=H(t.key);return e.some(function(t){return t===n||bi[t]===n})?s(t):void 0}}},Re.withMemo=function(a,e,t,n){var o=t[n];if(o&&as(o,a))return o;var r=e();return r.memo=a.slice(),t[n]=r},Re.withModifiers=function(s,e){return function(t){for(var n,a=0;a<e.length;a++)if(n=yi[e[a]],n&&n(t,e))return;for(var r=arguments.length,i=Array(1<r?r-1:0),o=1;o<r;o++)i[o-1]=arguments[o];return s.apply(void 0,[t].concat(i))}},Re.withScopeId=function(){return Bt},Object.defineProperty(Re,"__esModule",{value:!0}),Re}({}); +window.module&&(module.exports=Vue); diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/package.json" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/package.json" new file mode 100644 index 0000000000000000000000000000000000000000..61e5221b76f154c4c28a79646d0524966c195275 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/package.json" @@ -0,0 +1,44 @@ +{ + "name": "ccc-references-finder", + "version": "1.3.0.20210929", + "description": "一键查找资æºçš„æ‰€æœ‰å¼•用,å¯ç²¾ç¡®åˆ°é¢„制体或场景ä¸çš„节点ã€ç»„件和属性(ä¸åŒ…括代ç ä¸çš„动æ€å¼•用)。", + "author": { + "name": "陈皮皮 (ifaswind)", + "email": "952157129@qq.com", + "url": "https://chenpipi.cn", + "wechat": "im_chenpipi", + "git-home": "https://gitee.com/ifaswind", + "official-account": "公众å·ã€Œèœé¸Ÿå°æ ˆã€" + }, + "repository": "https://gitee.com/ifaswind/ccc-references-finder", + "license": "MIT", + "main": "src/main/index.js", + "main-menu": { + "i18n:MAIN_MENU.package.title/i18n:ccc-references-finder.name/i18n:ccc-references-finder.find": { + "message": "ccc-references-finder:find-current-selection", + "icon": "/images/search.png", + "accelerator": "F6" + }, + "i18n:MAIN_MENU.package.title/i18n:ccc-references-finder.name/i18n:ccc-references-finder.settings": { + "message": "ccc-references-finder:open-settings-panel", + "icon": "/images/settings.png" + }, + "i18n:MAIN_MENU.package.title/i18n:ccc-references-finder.name/i18n:ccc-references-finder.check-update": { + "message": "ccc-references-finder:menu-check-update", + "icon": "/images/update.png" + }, + "i18n:MAIN_MENU.package.title/i18n:ccc-references-finder.name/v1.3.0.20210929": { + "message": "ccc-references-finder:menu-version", + "icon": "/images/version.png" + } + }, + "reload": { + "renderer": [], + "ignore": [ + "config.json", + "CHANGELOG.md", + "README.md", + "README.en.md" + ] + } +} \ No newline at end of file diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/common/config-manager.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/common/config-manager.js" new file mode 100644 index 0000000000000000000000000000000000000000..bd31314c6453d4cce66d61c424119920a13f0c25 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/common/config-manager.js" @@ -0,0 +1,104 @@ +const Path = require('path'); +const Fs = require('fs'); +const PackageUtil = require('../eazax/package-util'); + +/** é…置文件路径 */ +const CONFIG_PATH = Path.join(__dirname, '../../config.json'); + +/** package.json 的路径 */ +const PACKAGE_PATH = Path.join(__dirname, '../../package.json'); + +/** 包å */ +const PACKAGE_NAME = PackageUtil.name; + +/** å¿«æ·é”®è¡Œä¸º */ +const ACTION_NAME = 'find'; + +/** package.json ä¸çš„èœå•项 key */ +const MENU_ITEM_KEY = `i18n:MAIN_MENU.package.title/i18n:${PACKAGE_NAME}.name/i18n:${PACKAGE_NAME}.${ACTION_NAME}`; + +/** + * é…置管ç†å™¨ + */ +const ConfigManager = { + + /** + * 默认é…ç½® + */ + get defaultConfig() { + return { + version: '1.1', + printDetails: true, + printFolding: true, + autoCheckUpdate: true, + }; + }, + + /** + * 读å–é…ç½® + */ + get() { + // é…ç½® + const config = ConfigManager.defaultConfig; + if (Fs.existsSync(CONFIG_PATH)) { + const localConfig = JSON.parse(Fs.readFileSync(CONFIG_PATH)); + for (const key in config) { + if (localConfig[key] !== undefined) { + config[key] = localConfig[key]; + } + } + } + + // å¿«æ·é”® + config.hotkey = ConfigManager.getAccelerator(); + + // Done + return config; + }, + + /** + * ä¿å˜é…ç½® + * @param {*} value é…ç½® + */ + set(value) { + // é…ç½® + const config = ConfigManager.defaultConfig; + for (const key in config) { + if (value[key] !== undefined) { + config[key] = value[key]; + } + } + Fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2)); + + // å¿«æ·é”® + ConfigManager.setAccelerator(value.hotkey); + }, + + /** + * 获å–å¿«æ·é”® + * @returns {string} + */ + getAccelerator() { + const package = JSON.parse(Fs.readFileSync(PACKAGE_PATH)), + item = package['main-menu'][MENU_ITEM_KEY]; + return item['accelerator'] || ''; + }, + + /** + * 设置快æ·é”® + * @param {string} value + */ + setAccelerator(value) { + const package = JSON.parse(Fs.readFileSync(PACKAGE_PATH)), + item = package['main-menu'][MENU_ITEM_KEY]; + if (value != undefined && value !== '') { + item['accelerator'] = value; + } else { + delete item['accelerator']; + } + Fs.writeFileSync(PACKAGE_PATH, JSON.stringify(package, null, 2)); + }, + +}; + +module.exports = ConfigManager; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/browser-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/browser-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..f3af1a0876e39046cfb2528a8d2709082412a71d --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/browser-util.js" @@ -0,0 +1,61 @@ +/** + * æµè§ˆå™¨å·¥å…· + * @author 陈皮皮 (ifaswind) + * @version 20210729 + */ +const BrowserUtil = { + + /** + * 获å–å½“å‰ Url ä¸çš„傿•° + * @param {string} key é”® + * @returns {string} + */ + getUrlParam(key) { + if (!window || !window.location) { + return null; + } + const query = window.location.search.replace('?', ''); + if (query === '') { + return null; + } + const substrings = query.split('&'); + for (let i = 0; i < substrings.length; i++) { + const keyValue = substrings[i].split('='); + if (decodeURIComponent(keyValue[0]) === key) { + return decodeURIComponent(keyValue[1]); + } + } + return null; + }, + + /** + * èŽ·å– Cookie 值 + * @param {string} key é”® + * @returns {string} + */ + getCookie(key) { + const regExp = new RegExp(`(^| )${key}=([^;]*)(;|$)`), + values = document.cookie.match(regExp); + if (values !== null) { + return values[2]; + } + return null; + }, + + /** + * 设置 Cookie + * @param {string} key é”® + * @param {string | number | boolean} value 值 + * @param {string} expires 过期时间(GMT) + */ + setCookie(key, value, expires) { + let keyValues = `${key}=${encodeURIComponent(value)};`; + if (expires) { + keyValues += `expires=${expires};`; + } + document.cookie = keyValues; + }, + +}; + +module.exports = BrowserUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/color-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/color-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..ddd4f98f4e43a5576fde2a7e3d8bd3af917925cd --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/color-util.js" @@ -0,0 +1,37 @@ +/** + * 颜色工具 + * @author 陈皮皮 (ifaswind) + * @version 20210725 + */ +const ColorUtil = { + + /** + * å°†åå…进制颜色值转为 RGB æ ¼å¼ + * @param {string} hex + * @returns {{ r: number, g: number, b: number }} + */ + hexToRGB(hex) { + // 是å¦ä¸º HEX æ ¼å¼ + const regExp = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; + if (!regExp.test(hex)) { + return null; + } + // å››ä½ + if (hex.length === 4) { + const r = hex.slice(1, 2), + g = hex.slice(2, 3), + b = hex.slice(3, 4); + hex = `#${r}${r}${g}${g}${b}${b}`; + } + // 转æ¢è¿›åˆ¶ + const rgb = { + r: parseInt(`0x${hex.slice(1, 3)}`), + g: parseInt(`0x${hex.slice(3, 5)}`), + b: parseInt(`0x${hex.slice(5, 7)}`), + } + return rgb; + }, + +}; + +module.exports = ColorUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/cocos-class.css" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/cocos-class.css" new file mode 100644 index 0000000000000000000000000000000000000000..4ea03b1d64c4c1128aab71fd825da0f36bfe1eb7 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/cocos-class.css" @@ -0,0 +1,201 @@ +/* + Cocos Creator é£Žæ ¼æ ·å¼ + 版本: 20210911 + 作者: 陈皮皮 (ifaswind) + 主页: https://gitee.com/ifaswind + 公众å·: èœé¸Ÿå°æ ˆ +*/ + +/* 属性容器 */ +.properties { + width: 100%; + border: 1px solid #666; + border-radius: 3px; + padding: 5px; + box-sizing: border-box; + outline: 0; + display: flex; + flex-direction: column; + overflow: auto; +} + +.properties > * { + margin: 2px 0; +} + +.properties:first-child { + margin-top: 0; +} + +.properties:last-child { + margin-bottom: 0; +} + +/* 属性 */ +.property { + width: 100%; + min-height: 23px; + box-sizing: border-box; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-start; +} + +/* å±žæ€§æ ‡ç¾ */ +.property > .label { + width: 38%; + min-width: 70px; + position: relative; + margin-left: 5px; + line-height: 23px; + font-size: 12px; + white-space: nowrap; + display: flex; + flex-direction: row; + flex-wrap: nowrap; + flex-shrink: 0; + align-items: baseline; + justify-content: flex-start; +} + +/* å±žæ€§æ ‡ç¾æ–‡æœ¬:虚指 */ +.property:hover > .label > .text { + color: #09f; +} + +/* å±žæ€§æ ‡ç¾æ–‡æœ¬:èšç„¦å†…部 */ +.property:focus-within > .label > .text { + color: #fd942b; +} + +/* å±žæ€§æ ‡ç¾å†…容:èšç„¦å†…部 */ +.property:focus-within > .content > * { + border-color: #fd942b; +} + +/* tooltip */ +.tooltip { + background-color: #333333; + padding: 5px 8px; + border: 1px solid #646464; + border-radius: 4px; + position: absolute; + top: -38px; + left: -5px; + visibility: hidden; + text-align: center; + z-index: 2; +} + +/* tooltip 三角形 */ +.tooltip::before, +.tooltip::after { + content: ''; + display: block; + width: 0; + height: 0; + border: 6px solid transparent; + position: absolute; + left: 10px; + transform: rotate(-90deg); +} + +/* tooltip 三角形 */ +.tooltip::before { + border-right: 6px solid #333333; + top: 100%; +} + +/* tooltip 三角形边框 */ +.tooltip::after { + border-right: 6px solid #646464; + top: calc(100% + 1px); + z-index: -1; +} + +/* å‰ä¸€ä¸ªå…ƒç´ 虚指时的 tooltip */ +*:hover + .tooltip { + visibility: visible; +} + +/* 属性内容 */ +.property > .content { + display: flex; + flex: 1; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-start; +} + +.property > .content > * { + width: auto; + min-width: 20px; + height: 21px; + flex: 1; +} + +.property > .content > *:focus { + border-color: #fd942b; +} + +/* æç¤º */ +.tip { + width: 100%; + min-height: 45px; + background: #333; + border: 1px solid #666; + border-radius: 3px; + padding: 12px 8px; + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: left; + color: #bdbdbd; + line-height: 17px; + font-size: 13px; + white-space: pre-line; +} + +.tip > * { + display: inline-block; +} + +/* *::æ»šåŠ¨æ¡ */ +*::-webkit-scrollbar { + width: 11px; +} + +/* *::滚动æ¡-按钮 */ +*::-webkit-scrollbar-button { + display: none; +} + +/* *::滚动æ¡-横竖交汇处 */ +*::-webkit-scrollbar-corner { + display: none; +} + +/* *::滚动æ¡-è½¨é“ */ +*::-webkit-scrollbar-track { + /* background: rgba(0, 0, 0, 0.5); */ + background: none !important; + background-clip: content-box; + border: 5px solid transparent; +} + +/* *::滚动æ¡-æ»‘å— */ +*::-webkit-scrollbar-thumb { + background: #7d7d7d; + background-clip: content-box; + border: 4px solid transparent; + border-radius: 6px; +} + +/* *::滚动æ¡-滑å—:虚指 */ +*::-webkit-scrollbar-thumb:hover { + background-color: #fd942b; + border: 3px solid transparent; +} diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/cocos-tag.css" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/cocos-tag.css" new file mode 100644 index 0000000000000000000000000000000000000000..ed85581e79ec4c2415d58945afd440b047d29ca1 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/cocos-tag.css" @@ -0,0 +1,197 @@ +/* + Cocos Creator é£Žæ ¼æ ‡ç¾ (橙黑) + 版本: 20210725 + 作者: 陈皮皮 (ifaswind) + 主页: https://gitee.com/ifaswind + 公众å·: èœé¸Ÿå°æ ˆ +*/ + +/* 下拉选择器 */ +select { + background-color: #262626; + outline: none; + box-sizing: border-box; + border: 1px solid #171717; + border-radius: 100px; + padding: 0 8px; + font-size: 12px; + color: #bdbdbd; + cursor: pointer; + /* 替æ¢é»˜è®¤çš„ç®å¤´ */ + appearance: none; + -webkit-appearance: none; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAA+ElEQVRYR+2VXw6CMAzGV3YUjSZ6CsI4l3gutnALH/xzEB8spokSQphbiwkv5RHafb9+awuYlR9YWd8ogDqgDqgDPx3w3h8A4FlV1UOysLz3O2stlmV5j+VHAbqu2yLijRIR8VzXdcOBaNu2KYriRDl93x+dc5e5/ChACGFjjBnIORBj8Q/A3jl3ZQFQcAiBKhgqz4GYiqdyklPAgeCKU5FJgFwnJOLZACkIqTgLgILnhOj9t9slE5N1BePunUKMv6Uajj0Fsbmfg5CIs68g5oRUfBEAJdOqBYCXdFUvBuCsZva/4B+H55zBnoKcQzkxCqAOqAOrO/AGwnWWIa30xvoAAAAASUVORK5CYII=); + background-size: 16px; + background-repeat: no-repeat; + background-position: right 3px center; +} + +/* 下拉选择器:虚指 */ +select:hover { + border-color: #888888; +} + +/* 输入框,文本区域 */ +input, +textarea { + background-color: #262626; + box-sizing: border-box; + padding: 0 5px; + border: 1px solid #171717; + border-radius: 3px; + color: #fd942b; + font-size: 12px; + outline: none; +} + +/* 文本区域 */ +textarea { + min-height: 40px; + resize: vertical; +} + +/* 输入框,文本区域::å ä½ç¬¦ */ +input::placeholder, +textarea::placeholder { + font-size: 12px; + font-style: normal; +} + +/* æ•°å—输入框 */ +input[type='number'] { + width: 50px !important; +} + +/* æ•°å—输入框::å¢žå‡æŒ‰é’® */ +input[type='number']::-webkit-outer-spin-button, +input[type='number']::-webkit-inner-spin-button { + /* appearance: none; */ + /* -webkit-appearance: none; */ + /* margin: 0; */ + margin-right: -2px; +} + +/* å¤é€‰æ¡† */ +input[type='checkbox'] { + appearance: none; + -webkit-appearance: none; + width: 16px !important; + height: 16px !important; + min-width: 16px !important; + background-image: none; + background-color: #262626; + border: 1px solid #171717; + border-radius: 3px; + padding-left: 0; + position: relative !important; + flex: 0 !important; + margin: 0; + color: #fd942b; + outline: none; + cursor: pointer; +} + +/* å¤é€‰æ¡†:勾选 */ +input[type='checkbox']:checked::after { + width: 12px; + height: 12px; + display: inline-block; + content: ''; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABKUlEQVRYR+2W2w2DMAxF41ZdBnWzqjMQZkBdjWUqkiqUgCHOO4Ef+EECwTlO7AvATj7gZD67BA5bgW/fcLXdj/cwnfVxiMD4aVomYQILKTssUV0Aw3XVWKKqgFr2G0BLTZqWqCbggq8NIHkVgSD43A/FBag9J8MOJL+/hq6oQGjlbIYrMUNAVSAEg/28+iI7BW4IuObVJZAK3wj45tUmkANfBFyNs08uLBIKd70DgroWNY0WKAGfVmBUHwlLWuFqcRWl4OsWREioh2zxuukTYtWoPlrGcOyfnIEkc9s3gsb9QLg5hiUkIuB0EOVIRMJJAXUxaTsS4FaBaIlEuFMgWCID7hXwSmTCgwSsEgXgwQJ/CZSYheBRAlpCEP/20UGFHij6R5Qicgn8AIQ23JRIyuB1AAAAAElFTkSuQmCC); + background-size: 12px; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +/* 输入框:虚指 */ +input:hover { + border-color: #888888; +} + +/* æ»‘åŠ¨æ¡ */ +input[type='range'] { + appearance: none; + -webkit-appearance: none; + height: 4px !important; + background-color: #262626; + border: 1px solid #171717; + padding-left: 0; + padding-right: 0; +} + +/* 滑动æ¡:虚指|èšç„¦ */ +input[type='range']:hover, +input[type='range']:focus, +*:focus-within input[type='range'] { + border-color: #171717 !important; +} + +/* 滑动æ¡::把手 */ +input[type='range']::-webkit-slider-thumb { + appearance: none; + -webkit-appearance: none; + width: 12px; + height: 12px; + top: 2px; + background: #333; + box-sizing: border-box; + border: 2px solid #949494; + box-shadow: 0 1px 3px 1px #000 inset, 0 1px 1px 0 rgba(0, 0, 0, 0.9); + border-radius: 100%; +} + +/* 滑动æ¡::把手:虚指 */ +input[type='range']::-webkit-slider-thumb:hover { + border-color: #bcbcbc; + cursor: pointer; +} + +/* 滑动æ¡::把手:激活 */ +input[type='range']::-webkit-slider-thumb:active, +*:focus-within > input[type='range']::-webkit-slider-thumb { + color: #bdbdbd; + border-color: #fd942b !important; + cursor: ew-resize; +} + +/* å–色器 */ +input[type='color'] { + width: 16px; + height: 16px; + box-sizing: border-box; + border-radius: 1px; + padding: 0; + cursor: pointer; +} + +/* å–色器::色æ¿å®¹å™¨ */ +input[type='color']::-webkit-color-swatch-wrapper { + padding: 0; +} + +/* å–色器::è‰²æ¿ */ +input[type='color']::-webkit-color-swatch { + border: none; +} + +/* 超链接 */ +a { + color: #fd942b; + text-decoration: none; +} + +/* 超链接:虚指 */ +a:hover { + text-decoration: underline; +} + +/* 分割线 */ +hr { + width: 100%; + height: 1px; + background-color: #666; + border: none; + margin: 10px 0 !important; +} diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/eazax-colors.css" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/eazax-colors.css" new file mode 100644 index 0000000000000000000000000000000000000000..2e1a17e9a7888b2cb11f177c4b2968fed06d185b --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/css/eazax-colors.css" @@ -0,0 +1,18 @@ +:root { + /* 背景颜色 */ + --eazax-bg-color: #454545; + /* 主颜色 */ + --eazax-main-color: #262626; + /* 强调色 */ + --eazax-accent-color: #2e88fb; + /* èšç„¦è‰² */ + --eazax-focus-color: #fd942b; + /* 边框调色 */ + --eazax-border-color: #171717; + /* 边框虚指调色 */ + --eazax-border-hover-color: #888888; + /* 文本颜色 */ + --eazax-font-color: #bdbdbd; + /* 内容颜色 */ + --eazax-content-color: #fd942b; +} diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-main-kit.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-main-kit.js" new file mode 100644 index 0000000000000000000000000000000000000000..5c09c9dc577f4b39483e25384b44f2d2cb4b3b1d --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-main-kit.js" @@ -0,0 +1,53 @@ +const MainEvent = require('./main-event'); +const { print, checkUpdate } = require('./editor-main-util'); + +/** + * (渲染进程)检查更新回调 + * @param {Electron.IpcMainEvent} event + * @param {boolean} logWhatever æ— è®ºæœ‰æ— æ›´æ–°éƒ½æ‰“å°æç¤º + */ +function onCheckUpdateEvent(event, logWhatever) { + checkUpdate(logWhatever); +} + +/** + * (渲染进程)打å°äº‹ä»¶å›žè°ƒ + * @param {Electron.IpcMainEvent} event + * @param {'log' | 'info' | 'warn' | 'error' | any} type + * @param {any[]?} args + */ +function onPrintEvent(event, type) { + // print(type, ...args); + const args = [type]; + for (let i = 2, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + print.apply(null, args); +} + +/** + * 编辑器主进程套件 (ä¾èµ– Cocos Creator 编辑器) + * @author 陈皮皮 (ifaswind) + * @version 20210818 + */ +const EditorMainKit = { + + /** + * 注册 + */ + register() { + MainEvent.on('check-update', onCheckUpdateEvent); + MainEvent.on('print', onPrintEvent); + }, + + /** + * å–æ¶ˆæ³¨å†Œ + */ + unregister() { + MainEvent.removeListener('check-update', onCheckUpdateEvent); + MainEvent.removeListener('print', onPrintEvent); + }, + +}; + +module.exports = EditorMainKit; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-main-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-main-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..f90dbd8df874fbbacc26241339f3fcfe40deec2d --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-main-util.js" @@ -0,0 +1,147 @@ +const I18n = require('./i18n'); +const PackageUtil = require('./package-util'); +const Updater = require('./updater'); + +/** 编辑器è¯è¨€ */ +const LANG = Editor.lang || Editor.I18n.getLanguage(); + +/** 包å */ +const PACKAGE_NAME = PackageUtil.name; + +/** 扩展åç§° */ +const EXTENSION_NAME = I18n.get(LANG, 'name'); + +/** + * 编辑器主进程工具 (ä¾èµ– Cocos Creator 编辑器) + * @author 陈皮皮 (ifaswind) + * @version 20210929 + */ +const EditorMainUtil = { + + /** + * è¯è¨€ + */ + get language() { + return LANG; + }, + + /** + * i18n + * @param {string} key å…³é”®è¯ + * @returns {string} + */ + translate(key) { + return I18n.get(LANG, key); + }, + + /** + * 打å°ä¿¡æ¯åˆ°æŽ§åˆ¶å°ï¼ˆå¸¦æ ‡é¢˜ï¼‰ + * @param {'log' | 'info' | 'warn' | 'error' | any} type + * @param {any[]?} args + */ + print(type) { + const args = [`[${EXTENSION_NAME}]`]; + for (let i = 1, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + const object = Editor.log ? Editor : console; + switch (type) { + case 'log': { + object.log.apply(object, args); + break; + } + case 'info': { + object.info.apply(object, args); + break; + } + case 'warn': { + object.warn.apply(object, args); + break; + } + case 'error': { + object.error.apply(object, args); + break; + } + default: { + args.splice(1, 0, type); + object.log.apply(object, args); + } + } + }, + + /** + * 打å°ä¿¡æ¯åˆ°æŽ§åˆ¶å°ï¼ˆä¸å¸¦æ ‡é¢˜ï¼‰ + * @param {'log' | 'info' | 'warn' | 'error' | any} type + * @param {any[]?} args + */ + pureWithoutTitle(type) { + const args = []; + for (let i = 1, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + const object = Editor.log ? Editor : console; + switch (type) { + case 'log': { + object.log.apply(object, args); + break; + } + case 'info': { + object.info.apply(object, args); + break; + } + case 'warn': { + object.warn.apply(object, args); + break; + } + case 'error': { + object.error.apply(object, args); + break; + } + default: { + args.splice(1, 0, type); + object.log.apply(object, args); + } + } + }, + + /** + * 检查更新 + * @param {boolean} logWhatever æ— è®ºæœ‰æ— æ›´æ–°éƒ½æ‰“å°æç¤º + */ + async checkUpdate(logWhatever) { + // 编辑器本次å¯åŠ¨æ˜¯å¦å·²ç»æ£€æŸ¥è¿‡äº† + if (!logWhatever && (Editor[PACKAGE_NAME] && Editor[PACKAGE_NAME].hasCheckUpdate)) { + return; + } + Editor[PACKAGE_NAME] = { hasCheckUpdate: true }; + // æ˜¯å¦æœ‰æ–°ç‰ˆæœ¬ + const hasNewVersion = await Updater.check(); + // 打å°åˆ°æŽ§åˆ¶å° + const { print, translate } = EditorMainUtil; + const localVersion = Updater.getLocalVersion(); + if (hasNewVersion) { + const remoteVersion = await Updater.getRemoteVersion(); + print('info', translate('has-new-version')); + print('info', `${translate('local-version')}${localVersion}`); + print('info', `${translate('latest-version')}${remoteVersion}`); + print('info', translate('git-releases')); + print('info', translate('cocos-store')); + } else if (logWhatever) { + print('info', translate('current-latest')); + print('info', `${translate('local-version')}${localVersion}`); + } + }, + + /** + * (3.xï¼‰é‡æ–°åŠ è½½æ‰©å±• + */ + async reload() { + const path = await Editor.Package.getPath(PACKAGE_NAME); + await Editor.Package.unregister(path); + await Editor.Package.register(path); + await Editor.Package.enable(path); + }, + +}; + +module.exports = EditorMainUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-renderer-kit.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-renderer-kit.js" new file mode 100644 index 0000000000000000000000000000000000000000..238bfaef3d92f5fe2adaa861c0cb3819096a4ef7 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/editor-renderer-kit.js" @@ -0,0 +1,26 @@ +const RendererEvent = require("./renderer-event"); + +/** + * 编辑器渲染进程套件 (ä¾èµ– Cocos Creator 编辑器) + * @author 陈皮皮 (ifaswind) + * @version 20210818 + */ +const EditorRendererKit = { + + /** + * 打å°ä¿¡æ¯åˆ° Creator ç¼–è¾‘å™¨æŽ§åˆ¶å° + * @param {'log' | 'info' | 'warn' | 'error' | any} type + * @param {any[]?} args + */ + print(type) { + // return RendererEvent.send('print', type, ...args); + const args = ['print', type]; + for (let i = 1, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + return RendererEvent.send.apply(RendererEvent, args); + }, + +}; + +module.exports = EditorRendererKit; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/file-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/file-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..99ab69661fe8e3a9deaf5e85d132bbb8028f6179 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/file-util.js" @@ -0,0 +1,158 @@ +const Fs = require('fs'); +const Path = require('path'); +const { promisify } = require('util'); + +/** + * 文件工具 (Promise 化) + * @author 陈皮皮 (ifaswind) + * @version 20210818 + */ +const FileUtil = { + + /** + * èŽ·å–æ–‡ä»¶çŠ¶æ€ + * @param {Fs.PathLike} path 路径 + * @returns {Promise<Fs.stats>} + */ + stat: promisify(Fs.stat), + + /** + * 创建文件夹 + * @param {Fs.PathLike} path 路径 + * @param {Fs.MakeDirectoryOptions?} options 选项 + * @returns {Promise<void>} + */ + mkdir: promisify(Fs.mkdir), + + /** + * è¯»å–æ–‡ä»¶å¤¹ + * @param {Fs.PathLike} path 路径 + * @param {any} options 选项 + * @returns {Promise<string[]>} + */ + readdir: promisify(Fs.readdir), + + /** + * 移除文件夹 + * @param {Fs.PathLike} path 路径 + * @param {Fs.RmDirOptions?} options 选项 + * @returns {Promise<void>} + */ + rmdir: promisify(Fs.rmdir), + + /** + * è¯»å–æ–‡ä»¶ + * @param {Fs.PathLike} path 路径 + * @param {any} options 选项 + * @returns {Promise<Buffer>} + */ + readFile: promisify(Fs.readFile), + + /** + * 创建文件 + * @param {Fs.PathLike} path 路径 + * @param {string | NodeJS.ArrayBufferView} data æ•°æ® + * @param {Fs.WriteFileOptions?} options 选项 + * @returns {Promise<void>} + */ + writeFile: promisify(Fs.writeFile), + + /** + * 移除文件 + * @param {Fs.PathLike} path 路径 + * @returns {Promise<void>} + */ + unlink: promisify(Fs.unlink), + + /** + * 测试路径是å¦å˜åœ¨ (åŒæ¥) + * @param {Fs.PathLike} path 路径 + */ + existsSync: Fs.existsSync, + + /** + * å¤åˆ¶æ–‡ä»¶/文件夹 + * @param {Fs.PathLike} srcPath æºè·¯å¾„ + * @param {Fs.PathLike} destPath ç›®æ ‡è·¯å¾„ + * @returns {Promise<boolean>} + */ + async copy(srcPath, destPath) { + if (!FileUtil.existsSync(srcPath)) { + return false; + } + const stats = await FileUtil.stat(srcPath); + if (stats.isDirectory()) { + if (!FileUtil.existsSync(destPath)) { + await FileUtil.createDir(destPath); + } + const names = await FileUtil.readdir(srcPath); + for (const name of names) { + await FileUtil.copy(Path.join(srcPath, name), Path.join(destPath, name)); + } + } else { + await FileUtil.writeFile(destPath, await FileUtil.readFile(srcPath)); + } + return true; + }, + + /** + * 创建文件夹 (递归) + * @param {Fs.PathLike} path 路径 + * @returns {Promise<boolean>} + */ + async createDir(path) { + if (FileUtil.existsSync(path)) { + return true; + } else { + const dir = Path.dirname(path); + if (await FileUtil.createDir(dir)) { + await FileUtil.mkdir(path); + return true; + } + } + return false; + }, + + /** + * 移除文件/文件夹 (递归) + * @param {Fs.PathLike} path 路径 + */ + async remove(path) { + if (!FileUtil.existsSync(path)) { + return; + } + const stats = await FileUtil.stat(path); + if (stats.isDirectory()) { + const names = await FileUtil.readdir(path); + for (const name of names) { + await FileUtil.remove(Path.join(path, name)); + } + await FileUtil.rmdir(path); + } else { + await FileUtil.unlink(path); + } + }, + + /** + * é历文件/文件夹并执行函数 + * @param {Fs.PathLike} path 路径 + * @param {(filePath: Fs.PathLike, stat: Fs.Stats) => void | Promise<void>} handler 处ç†å‡½æ•° + */ + async map(path, handler) { + if (!FileUtil.existsSync(path)) { + return; + } + const stats = await FileUtil.stat(path); + if (stats.isDirectory()) { + const names = await FileUtil.readdir(path); + for (const name of names) { + await FileUtil.map(Path.join(path, name), handler); + } + } else { + await handler(path, stats); + } + }, + +}; + +module.exports = FileUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/i18n.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/i18n.js" new file mode 100644 index 0000000000000000000000000000000000000000..d5186ee8259a3e4bc16b7677305472f7fcebc378 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/i18n.js" @@ -0,0 +1,36 @@ +const zh = require('../../i18n/zh'); +const en = require('../../i18n/en'); + +/** + * 多è¯è¨€ + * @author 陈皮皮 (ifaswind) + * @version 20210929 + */ +const I18n = { + + /** + * 䏿–‡ + */ + zh, + + /** + * 英文 + */ + en, + + /** + * 获å–多è¯è¨€æ–‡æœ¬ + * @param {string} lang è¯è¨€ + * @param {string} key å…³é”®å— + * @returns {string} + */ + get(lang, key) { + if (I18n[lang] && I18n[lang][key]) { + return I18n[lang][key]; + } + return key; + }, + +}; + +module.exports = I18n; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/main-event.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/main-event.js" new file mode 100644 index 0000000000000000000000000000000000000000..d74904ad5aa04bffdca63ee33f5664b7e78fbeb1 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/main-event.js" @@ -0,0 +1,81 @@ +const { ipcMain } = require('electron'); +const PackageUtil = require('./package-util'); + +/** 包å */ +const PACKAGE_NAME = PackageUtil.name; + +/** + * 主进程 IPC 事件 + * @author 陈皮皮 (ifaswind) + * @version 20210818 + */ +const MainEvent = { + + /** + * 监å¬äº‹ä»¶ï¼ˆä¸€æ¬¡æ€§ï¼‰ + * @param {string} channel é¢‘é“ + * @param {Function} callback 回调 + */ + once(channel, callback) { + return ipcMain.once(`${PACKAGE_NAME}:${channel}`, callback); + }, + + /** + * 监å¬äº‹ä»¶ + * @param {string} channel é¢‘é“ + * @param {Function} callback 回调 + */ + on(channel, callback) { + return ipcMain.on(`${PACKAGE_NAME}:${channel}`, callback); + }, + + /** + * å–æ¶ˆäº‹ä»¶ç›‘å¬ + * @param {string} channel é¢‘é“ + * @param {Function} callback 回调 + */ + removeListener(channel, callback) { + return ipcMain.removeListener(`${PACKAGE_NAME}:${channel}`, callback); + }, + + /** + * å–æ¶ˆäº‹ä»¶çš„æ‰€æœ‰ç›‘å¬ + * @param {string} channel é¢‘é“ + */ + removeAllListeners(channel) { + return ipcMain.removeAllListeners(`${PACKAGE_NAME}:${channel}`); + }, + + /** + * å‘é€äº‹ä»¶åˆ°æŒ‡å®šæ¸²æŸ“进程 + * @param {Electron.WebContents} webContents 渲染进程事件对象 + * @param {string} channel é¢‘é“ + * @param {any[]?} args 傿•° + */ + send(webContents, channel) { + // return webContents.send(`${PACKAGE_NAME}:${channel}`, ...args); + const args = [`${PACKAGE_NAME}:${channel}`]; + for (let i = 2, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + return webContents.send.apply(webContents, args); + }, + + /** + * 回å¤äº‹ä»¶ç»™æ¸²æŸ“进程 + * @param {Electron.IpcMainEvent} ipcMainEvent 事件对象 + * @param {string} channel é¢‘é“ + * @param {any[]?} args 傿•° + */ + reply(ipcMainEvent, channel) { + // return ipcMainEvent.reply(`${PACKAGE_NAME}:${channel}`, ...args); + const args = [`${PACKAGE_NAME}:${channel}`]; + for (let i = 2, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + return ipcMainEvent.reply.apply(ipcMainEvent, args); + }, + +}; + +module.exports = MainEvent; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/package-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/package-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..3675f885b7c4aeedf746e023a9c89beed1237b8c --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/package-util.js" @@ -0,0 +1,47 @@ +const { shell } = require('electron'); + +/** åŒ…ä¿¡æ¯ */ +const PACKAGE_JSON = require('../../package.json'); + +/** + * 包工具 + * @author 陈皮皮 (ifaswind) + * @version 20210908 + */ +const PackageUtil = { + + /** + * 包å + * @type {string} + */ + get name() { + return PACKAGE_JSON.name; + }, + + /** + * 版本 + * @type {string} + */ + get version() { + return PACKAGE_JSON.version; + }, + + /** + * ä»“åº“åœ°å€ + * @type {string} + */ + get repository() { + return PACKAGE_JSON.repository; + }, + + /** + * æ‰“å¼€ä»“åº“é¡µé¢ + */ + openRepository() { + const url = PackageUtil.repository; + shell.openExternal(url); + }, + +}; + +module.exports = PackageUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/renderer-event.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/renderer-event.js" new file mode 100644 index 0000000000000000000000000000000000000000..82d84f0c92d3183ef55c2c63a8f1d83d542a079f --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/renderer-event.js" @@ -0,0 +1,80 @@ +const { ipcRenderer } = require('electron'); +const PackageUtil = require('./package-util'); + +/** 包å */ +const PACKAGE_NAME = PackageUtil.name; + +/** + * 渲染进程 IPC 事件 + * @author 陈皮皮 (ifaswind) + * @version 20210818 + */ +const RendererEvent = { + + /** + * 监å¬äº‹ä»¶ï¼ˆä¸€æ¬¡æ€§ï¼‰ + * @param {string} channel é¢‘é“ + * @param {Function} callback 回调 + */ + once(channel, callback) { + return ipcRenderer.once(`${PACKAGE_NAME}:${channel}`, callback); + }, + + /** + * 监å¬äº‹ä»¶ + * @param {string} channel é¢‘é“ + * @param {Function} callback 回调 + */ + on(channel, callback) { + return ipcRenderer.on(`${PACKAGE_NAME}:${channel}`, callback); + }, + + /** + * å–æ¶ˆäº‹ä»¶ç›‘å¬ + * @param {string} channel é¢‘é“ + * @param {Function} callback 回调 + */ + removeListener(channel, callback) { + return ipcRenderer.removeListener(`${PACKAGE_NAME}:${channel}`, callback); + }, + + /** + * å–æ¶ˆäº‹ä»¶çš„æ‰€æœ‰ç›‘å¬ + * @param {string} channel é¢‘é“ + */ + removeAllListeners(channel) { + return ipcRenderer.removeAllListeners(`${PACKAGE_NAME}:${channel}`); + }, + + /** + * å‘é€äº‹ä»¶åˆ°ä¸»è¿›ç¨‹ + * @param {string} channel é¢‘é“ + * @param {...any} args 傿•° + */ + send(channel) { + // return ipcRenderer.send(`${PACKAGE_NAME}:${channel}`, ...args); + const args = [`${PACKAGE_NAME}:${channel}`]; + for (let i = 1, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + return ipcRenderer.send.apply(ipcRenderer, args); + }, + + /** + * å‘é€äº‹ä»¶åˆ°ä¸»è¿›ç¨‹ï¼ˆåŒæ¥ï¼‰ + * @param {string} channel é¢‘é“ + * @param {...any} args 傿•° + * @returns {Promise<any>} + */ + sendSync(channel) { + // return ipcRenderer.sendSync(`${PACKAGE_NAME}:${channel}`, ...args); + const args = [`${PACKAGE_NAME}:${channel}`]; + for (let i = 1, l = arguments.length; i < l; i++) { + args.push(arguments[i]); + } + return ipcRenderer.sendSync.apply(ipcRenderer, args); + }, + +}; + +module.exports = RendererEvent; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/updater.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/updater.js" new file mode 100644 index 0000000000000000000000000000000000000000..67ee24a39865a1665a2f326fb302c0f8aa3d93b9 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/updater.js" @@ -0,0 +1,92 @@ +const fetch = require('../../lib/node-fetch'); +const PackageUtil = require('./package-util'); +const { compareVersion } = require('./version-util'); + +/** 本地版本 */ +const LOCAL_VERSION = PackageUtil.version; + +/** è¿œç¨‹ä»“åº“åœ°å€ */ +const REMOTE_URL = PackageUtil.repository; + +/** + * 更新器 + * @author 陈皮皮 (ifaswind) + * @version 20210804 + */ +const Updater = { + + /** + * è¿œç¨‹ä»“åº“åœ°å€ + * @type {string} + */ + get remote() { + return REMOTE_URL; + }, + + /** + * 分支 + * @type {string} + */ + branch: 'master', + + /** + * 获å–远端的 package.json + * @returns {Promise<object>} + */ + async getRemotePackageJson() { + const packageJsonUrl = `${Updater.remote}/raw/${Updater.branch}/package.json`; + // å‘起网络请求 + const response = await fetch(packageJsonUrl, { + method: 'GET', + cache: 'no-cache', + mode: 'no-cors', + }); + // 请求结果 + if (response.status !== 200) { + return null; + } + // è¯»å– json + const json = response.json(); + return json; + }, + + /** + * 获å–è¿œç«¯ç‰ˆæœ¬å· + * @returns {Promise<string>} + */ + async getRemoteVersion() { + const package = await Updater.getRemotePackageJson(); + if (package && package.version) { + return package.version; + } + return null; + }, + + /** + * èŽ·å–æœ¬åœ°ç‰ˆæœ¬å· + * @returns {string} + */ + getLocalVersion() { + return LOCAL_VERSION; + }, + + /** + * æ£€æŸ¥è¿œç«¯æ˜¯å¦æœ‰æ–°ç‰ˆæœ¬ + * @returns {Promise<boolean>} + */ + async check() { + // è¿œç«¯ç‰ˆæœ¬å· + const remoteVersion = await Updater.getRemoteVersion(); + if (!remoteVersion) { + return false; + } + // æœ¬åœ°ç‰ˆæœ¬å· + const localVersion = Updater.getLocalVersion(); + // å¯¹æ¯”ç‰ˆæœ¬å· + const result = compareVersion(localVersion, remoteVersion); + return (result < 0); + }, + +}; + +module.exports = Updater; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/version-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/version-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..30bd3034634ec916edfa5fa850a84a4abe69fac7 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/version-util.js" @@ -0,0 +1,61 @@ +/** + * 版本工具 + * @author 陈皮皮 (ifaswind) + * @version 20210814 + */ +const VersionUtil = { + + /** + * æ‹†åˆ†ç‰ˆæœ¬å· + * @param {string | number} version ç‰ˆæœ¬å·æ–‡æœ¬ + * @returns {number[]} + * @example + * splitVersionString('1.2.0'); // [1, 2, 0] + */ + splitVersionString(version) { + if (typeof version === 'number') { + return [version]; + } + if (typeof version === 'string') { + return ( + version.replace(/-/g, '.') + .split('.') + .map(v => (parseInt(v) || 0)) + ); + } + return [0]; + }, + + /** + * å¯¹æ¯”ç‰ˆæœ¬å· + * @param {string | number} a 版本 a + * @param {string | number} b 版本 b + * @returns {-1 | 0 | 1} + * @example + * compareVersion('1.0.0', '1.0.1'); // -1 + * compareVersion('1.1.0', '1.1.0'); // 0 + * compareVersion('1.2.1', '1.2.0'); // 1 + * compareVersion('1.2.0.1', '1.2.0'); // 1 + */ + compareVersion(a, b) { + const acs = VersionUtil.splitVersionString(a), + bcs = VersionUtil.splitVersionString(b); + const count = Math.max(acs.length, bcs.length); + for (let i = 0; i < count; i++) { + const ac = acs[i], + bc = bcs[i]; + // å‰è€…ç¼ºå°‘åˆ†é‡æˆ–å‰è€…å°äºŽåŽè€… + if (ac == undefined || ac < bc) { + return -1; + } + // åŽè€…ç¼ºå°‘åˆ†é‡æˆ–å‰è€…大于åŽè€… + if (bc == undefined || ac > bc) { + return 1; + } + } + return 0; + }, + +}; + +module.exports = VersionUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/window-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/window-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..b6abd03f96f6752058532e3306a04b2394ba5f05 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/eazax/window-util.js" @@ -0,0 +1,80 @@ +const { BrowserWindow } = require('electron'); + +/** + * 窗å£å·¥å…·ï¼ˆä¸»è¿›ç¨‹ï¼‰ + * @author 陈皮皮 (ifaswind) + * @version 20210825 + */ +const WindowUtil = { + + /** + * æœ€å…ˆæ‰“å¼€çš„çª—å£ + * @returns {BrowserWindow} + */ + getFirstWindow() { + const wins = BrowserWindow.getAllWindows(); + return wins[wins.length - 1]; + }, + + /** + * 获å–当å‰èšç„¦çš„çª—å£ + * @returns {BrowserWindow} + */ + getFocusedWindow() { + return BrowserWindow.getFocusedWindow(); + }, + + /** + * 计算窗å£ä½ç½®ï¼ˆç›¸å¯¹äºŽæœ€å…ˆæ‰“开的窗å£ï¼‰ + * @param {[number, number]} size 窗å£å°ºå¯¸ + * @param {'top' | 'center'} anchor 锚点 + * @returns {[number, number]} + */ + calcWindowPosition(size, anchor) { + const win = WindowUtil.getFirstWindow(); + return WindowUtil.calcWindowPositionByTarget(size, anchor, win); + }, + + /** + * 计算窗å£ä½ç½®ï¼ˆç›¸å¯¹äºŽå½“å‰èšç„¦çš„窗å£ï¼‰ + * @param {[number, number]} size 窗å£å°ºå¯¸ + * @param {'top' | 'center'} anchor 锚点 + * @returns {[number, number]} + */ + calcWindowPositionByFocused(size, anchor) { + const win = WindowUtil.getFocusedWindow(); + return WindowUtil.calcWindowPositionByTarget(size, anchor, win); + }, + + /** + * 计算窗å£ä½ç½®ï¼ˆç›¸å¯¹äºŽå½“å‰èšç„¦çš„窗å£ï¼‰ + * @param {[number, number]} size 窗å£å°ºå¯¸ + * @param {'top' | 'center'} anchor 锚点 + * @param {BrowserWindow} win ç›®æ ‡çª—å£ + * @returns {[number, number]} + */ + calcWindowPositionByTarget(size, anchor, win) { + // æ ¹æ®ç›®æ ‡çª—å£çš„ä½ç½®å’Œå°ºå¯¸æ¥è®¡ç®— + const winSize = win.getSize(), + winPos = win.getPosition(); + // 注æ„:原点 (0, 0) 在å±å¹•左上角 + // å¦å¤–,窗å£çš„ä½ç½®å€¼å¿…须是整数,å¦åˆ™ä¿®æ”¹æ— 效(åƒç´ 的最å°ç²’度为 1) + const x = Math.floor(winPos[0] + (winSize[0] / 2) - (size[0] / 2)); + let y; + switch (anchor) { + case 'top': { + y = Math.floor(winPos[1]); + break; + } + default: + case 'center': { + y = Math.floor(winPos[1] + (winSize[1] / 2) - (size[1] / 2)); + break; + } + } + return [x, y]; + }, + +}; + +module.exports = WindowUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/editor-api.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/editor-api.js" new file mode 100644 index 0000000000000000000000000000000000000000..cb768e5261252c5bcd3b527b680d9b6076117d10 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/editor-api.js" @@ -0,0 +1,90 @@ +/** + * 编辑器 API(用于抹平ä¸åŒç‰ˆæœ¬ç¼–辑器之间的差异) + * @author 陈皮皮 (ifaswind) + * @version 20210830 + */ +const EditorAPI = { + + /** + * 当å‰è¯è¨€ + * @returns {string} + */ + getLanguage() { + return Editor.lang || Editor.I18n.getLanguage(); + }, + + /** + * ç»å¯¹è·¯å¾„转为编辑器资æºè·¯å¾„ + * @param {string} fspath + */ + fspathToUrl(fspath) { + return Editor.assetdb.fspathToUrl(fspath); + }, + + /** + * 编辑器资æºè·¯å¾„转为ç»å¯¹è·¯å¾„ + * @param {string} url + */ + urlToFspath(url) { + return Editor.assetdb.urlToFspath(url); + }, + + /** + * 通过 uuid 获å–资æºä¿¡æ¯ + * @param {string} uuid + */ + assetInfoByUuid(uuid) { + return Editor.assetdb.assetInfoByUuid(uuid); + }, + + /** + * 通过 uuid 获å–å资æºä¿¡æ¯ + * @param {string} uuid + */ + subAssetInfosByUuid(uuid) { + return Editor.assetdb.subAssetInfosByUuid(uuid); + }, + + /** + * 获å–当å‰é€‰ä¸çš„èµ„æº uuid + * @returns {string[]} + */ + getCurrentSelectedAssets() { + return Editor.Selection.curSelection('asset'); + }, + + /** + * 获å–当å‰é€‰ä¸çš„节点 uuid + * @returns {string[]} + */ + getCurrentSelectedNodes() { + return Editor.Selection.curSelection('node'); + }, + + /** + * 是å¦ä¸º uuid + * @param {string} uuid + */ + isUuid(uuid) { + return Editor.Utils.UuidUtils.isUuid(uuid); + }, + + /** + * 压缩 uuid + * @param {string} uuid + */ + compressUuid(uuid) { + return Editor.Utils.UuidUtils.compressUuid(uuid); + }, + + /** + * å压缩 uuid + * @param {string} uuid + */ + decompressUuid(uuid) { + return Editor.Utils.UuidUtils.decompressUuid(uuid); + }, + +}; + +module.exports = EditorAPI; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/finder.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/finder.js" new file mode 100644 index 0000000000000000000000000000000000000000..fbcd555664504d1242a6f9bc9cb0a6dfded4bb40 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/finder.js" @@ -0,0 +1,269 @@ +const { extname, basename } = require("path"); +const EditorAPI = require("./editor-api"); +const { print, translate } = require("../eazax/editor-main-util"); +const FileUtil = require("../eazax/file-util"); +const { containsValue } = require("./object-util"); +const Parser = require("./parser"); +const { DefaultDeserializer } = require("v8"); + +/** 扩展å对应文件类型 */ +const ASSET_TYPE_MAP = { + // 场景 + '.fire': 'scene', + '.scene': 'scene', + // 预制体 + '.prefab': 'prefab', + // 动画 + '.anim': 'animation', + // æè´¨ + '.mtl': 'material', + // å—体 + '.fnt.meta': 'font', +}; + +/** + * 查找器 + */ +const Finder = { + + /** + * 使用 uuid 进行查找 + * @param {string} uuid + */ + async findByUuid(uuid) { + // 是å¦ä¸ºæœ‰æ•ˆ uuid + if (!EditorAPI.isUuid(uuid)) { + print('log', translate('invalid-uuid'), uuid); + return []; + } + // 获å–资æºä¿¡æ¯ + const assetInfo = EditorAPI.assetInfoByUuid(uuid); + let sIndex = assetInfo.path.lastIndexOf("/"); + let eIndex = assetInfo.path.lastIndexOf("."); + if(sIndex == -1) { + sIndex = 0; + } + if(eIndex == -1) { + sIndex = assetInfo.path.length-1; + } + const fileName = assetInfo.path.substring(sIndex+1, eIndex); + + if (assetInfo) { + // 记录åèµ„æº uuid + const subAssetUuids = []; + // 资æºç±»åž‹æ£€æŸ¥ + if (assetInfo.type === 'texture') { + // 纹ç†åèµ„æº + const subAssetInfos = EditorAPI.subAssetInfosByUuid(uuid); + if (subAssetInfos && subAssetInfos.length > 0) { + for (let i = 0; i < subAssetInfos.length; i++) { + subAssetUuids.push(subAssetInfos[i].uuid); + } + } + } else if (assetInfo.type === 'typescript' || assetInfo.type === 'javascript') { + // è„šæœ¬èµ„æº + uuid = EditorAPI.compressUuid(uuid); + } + // 查找资æºå¼•用 + const results = [], + selfResults = await Finder.findRefs(uuid, fileName); + for (let i = 0, l = selfResults.length; i < l; i++) { + results.push(selfResults[i]); + } + // 查找å资æºçš„引用 + if (subAssetUuids.length > 0) { + for (let i = 0, l = subAssetUuids.length; i < l; i++) { + const subResults = await Finder.findRefs(subAssetUuids[i]); + for (let j = 0, l = subResults.length; j < l; j++) { + results.push(subResults[j]); + } + } + } + return results; + } else { + // ä¸å˜åœ¨çš„资æºï¼Œç›´æŽ¥æŸ¥æ‰¾ uuid + print('log', translate('find-asset-refs'), uuid); + return (await Finder.findRefs(uuid)); + } + }, + + /** + * 查找引用 + * @param {string} uuid + * @returns {Promise<{ type: string, url: string, refs?: object[]}[]>} + */ + async findRefs(uuid, fileName="") { + const result = []; + // 文件处ç†å‡½æ•° + const handler = async (path, stats) => { + const ext = extname(path); + if (ext === '.fire' || ext === '.scene' || ext === '.prefab') { + // 场景和预制体资æºï¼ˆè½¬ä¸ºèŠ‚ç‚¹æ ‘ï¼‰ + const tree = await Parser.getNodeTree(path); + if (!tree) { + return; + } + // é历第一层节点查找引用 + const refs = []; + for (let children = tree.children, i = 0, l = children.length; i < l; i++) { + Finder.findRefsInNode(tree, children[i], uuid, refs); + } + // ä¿å˜å½“剿–‡ä»¶å¼•用结果 + if (refs.length > 0) { + result.push({ + type: ASSET_TYPE_MAP[ext], + url: EditorAPI.fspathToUrl(path), + refs: refs, + }); + } + } else if (ext === '.anim') { + // åŠ¨ç”»èµ„æº + const data = JSON.parse(await FileUtil.readFile(path)), + curveData = data['curveData'], + contains = containsValue(curveData, uuid); + if (contains) { + result.push({ + type: ASSET_TYPE_MAP[ext], + url: EditorAPI.fspathToUrl(path), + }); + } + } else if (ext === '.mtl' || path.endsWith('.fnt.meta')) { + // æè´¨å’Œå—ä½“èµ„æº + const data = JSON.parse(await FileUtil.readFile(path)); + // 需排除自己 + if ((data['uuid'] === uuid)) { + return; + } + // 是å¦å¼•用 + const contains = containsValue(data, uuid); + if (contains) { + const _ext = (ext === '.mtl') ? '.mtl' : '.fnt.meta'; + result.push({ + type: ASSET_TYPE_MAP[_ext], + url: EditorAPI.fspathToUrl(path), + }); + } + } else if (ext === '.ts' || ext === '.js') { + // 脚本代ç + const data = await FileUtil.readFile(path); + const regCheckImport = new RegExp(fileName); + if(regCheckImport.test(data.toString())) { + result.push({ + type: "Script", + url: EditorAPI.fspathToUrl(path), + }); + } + } + }; + // é历资æºç›®å½•下的文件 + const assetsPath = EditorAPI.urlToFspath('db://assets'); + await FileUtil.map(assetsPath, handler); + return result; + }, + + /** + * 查找节点ä¸çš„引用 + * @param {object} tree èŠ‚ç‚¹æ ‘ + * @param {object} node ç›®æ ‡èŠ‚ç‚¹ + * @param {string} uuid 查找的 uuid + * @param {object[]} result 结果 + */ + findRefsInNode(tree, node, uuid, result) { + // æ£€æŸ¥èŠ‚ç‚¹ä¸Šçš„ç»„ä»¶æ˜¯å¦æœ‰å¼•用 + const components = node.components; + if (components && components.length > 0) { + for (let i = 0, l = components.length; i < l; i++) { + const properties = Finder.getContainsUuidProperties(components[i], uuid); + if (properties.length === 0) { + continue; + } + // 资æºç±»åž‹ + let type = components[i]['__type__']; + // 是å¦ä¸ºè„šæœ¬èµ„æº + if (EditorAPI.isUuid(type)) { + const scriptUuid = EditorAPI.decompressUuid(type), + assetInfo = EditorAPI.assetInfoByUuid(scriptUuid); + type = basename(assetInfo.url); + } + // é历相关属性å + for (let i = 0; i < properties.length; i++) { + let property = properties[i]; + if (property === '__type__') { + property = null; + } else { + // 处ç†å±žæ€§å称(Label 组件需è¦ç‰¹æ®Šå¤„ç†ï¼‰ + if (type === 'cc.Label' && property === '_N$file') { + property = 'font'; + } + // 去除属性åçš„å‰ç¼€ + if (property.startsWith('_N$')) { + property = property.replace('_N$', ''); + } else if (property[0] === '_') { + property = property.substring(1); + } + } + // ä¿å˜ç»“æžœ + result.push({ + node: node.path, + component: type, + property: property, + }); + } + } + } + // æ£€æŸ¥é¢„åˆ¶ä½“æ˜¯å¦æœ‰å¼•用 + const prefab = node.prefab; + if (prefab) { + // 排除预制体自己 + if (uuid !== tree.uuid) { + const contains = containsValue(prefab, uuid); + if (contains) { + result.push({ + node: node.path, + }); + } + } + } + // é历å节点 + const children = node.children; + if (children && children.length > 0) { + for (let i = 0, l = children.length; i < l; i++) { + Finder.findRefsInNode(tree, children[i], uuid, result); + } + } + }, + + /** + * 获å–å¯¹è±¡åŒ…å«æŒ‡å®š uuid 的属性 + * @param {object} object 对象 + * @param {string} uuid 值 + * @returns {string[]} + */ + getContainsUuidProperties(object, uuid) { + const properties = []; + const search = (target, path) => { + if (Object.prototype.toString.call(target) === '[object Object]') { + for (const key in target) { + const curPath = (path != null) ? `${path}.${key}` : key; + if (target[key] === uuid) { + properties.push(path || key); + } + search(target[key], curPath); + } + } else if (Array.isArray(target)) { + for (let i = 0, l = target.length; i < l; i++) { + const curPath = (path != null) ? `${path}[${i}]` : `[${i}]`; + if (target[i] === uuid) { + properties.push(path || `[${i}]`); + } + search(target[i], curPath); + } + } + } + search(object, null); + return properties; + }, + +}; + +module.exports = Finder; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/index.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/index.js" new file mode 100644 index 0000000000000000000000000000000000000000..48319c9b20a23d7f6ffa47624ba266fb6189e010 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/index.js" @@ -0,0 +1,155 @@ +const PanelManager = require('./panel-manager'); +const ConfigManager = require('../common/config-manager'); +const EditorMainKit = require('../eazax/editor-main-kit'); +const { checkUpdate, print, translate } = require('../eazax/editor-main-util'); +const { openRepository } = require('../eazax/package-util'); +const EditorAPI = require('./editor-api'); +const Parser = require('./parser'); +const Finder = require('./finder'); +const Printer = require('./printer'); + +/** + * ç”Ÿå‘½å‘¨æœŸï¼šåŠ è½½ + */ +function load() { + // 监å¬äº‹ä»¶ + EditorMainKit.register(); +} + +/** + * 生命周期:å¸è½½ + */ +function unload() { + // å–æ¶ˆäº‹ä»¶ç›‘å¬ + EditorMainKit.unregister(); +} + +/** + * 查找当å‰é€‰ä¸èµ„æº + */ +async function findCurrentSelection() { + // 过滤选ä¸çš„èµ„æº uuid + const uuids = EditorAPI.getCurrentSelectedAssets(); + for (let i = 0; i < uuids.length; i++) { + const assetInfo = EditorAPI.assetInfoByUuid(uuids[i]); + if (assetInfo.type === 'folder') { + uuids.splice(i--); + } + } + // æœªé€‰æ‹©èµ„æº + if (uuids.length === 0) { + print('log', translate('please-select-assets')); + return; + } + // é历查找 + for (let i = 0; i < uuids.length; i++) { + const uuid = uuids[i], + assetInfo = EditorAPI.assetInfoByUuid(uuid), + shortUrl = assetInfo.url.replace('db://', ''); + // 查找引用 + print('log', 'ðŸ”', `${translate('find-asset-refs')} ${shortUrl}`); + const refs = await Finder.findByUuid(uuid); + if (refs.length === 0) { + print('log', '📂', `${translate('no-refs')} ${shortUrl}`); + continue; + } + // 打å°ç»“æžœ + Printer.printResult({ + type: assetInfo.type, + uuid: uuid, + url: assetInfo.url, + path: assetInfo.path, + refs: refs, + }); + } +} + +function getSelection() { + +} + +/** + * 资æºå˜åŒ–回调 + * @param {{ type: string, uuid: string }} info + */ +function onAssetChanged(info) { + const { type, uuid } = info; + // 场景和预制体 + if (type === 'scene' || type === 'prefab') { + const { url, path } = EditorAPI.assetInfoByUuid(uuid); + // æŽ’é™¤å†…ç½®èµ„æº + if (url.indexOf('db://internal') !== -1) { + return; + } + // æ›´æ–°èŠ‚ç‚¹æ ‘ + Parser.updateCache(path); + } +} + +module.exports = { + + /** + * æ‰©å±•æ¶ˆæ¯ + */ + messages: { + + /** + * 查找当å‰é€‰ä¸èµ„æº + * @param {*} event + */ + 'find-current-selection'(event) { + findCurrentSelection(); + }, + + /** + * æ‰“å¼€è®¾ç½®é¢æ¿ + * @param {*} event + */ + 'open-settings-panel'(event) { + PanelManager.openSettingsPanel(); + }, + + /** + * 检查更新 + * @param {*} event + */ + 'menu-check-update'(event) { + checkUpdate(true); + }, + + /** + * 版本 + * @param {*} event + */ + 'menu-version'(event) { + openRepository(); + }, + + /** + * åœºæ™¯é¢æ¿åŠ è½½å®ŒæˆåŽ + * @param {*} event + */ + 'scene:ready'(event) { + // 自动检查更新 + const config = ConfigManager.get(); + if (config.autoCheckUpdate) { + checkUpdate(false); + } + }, + + /** + * 资æºå˜åŒ– + * @param {*} event + * @param {{ type: string, uuid: string }} info + */ + 'asset-db:asset-changed'(event, info) { + onAssetChanged(info); + }, + + }, + + load, + + unload, + +}; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/object-util.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/object-util.js" new file mode 100644 index 0000000000000000000000000000000000000000..ee2ef48397321828d5d429215103cd805b5c1e87 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/object-util.js" @@ -0,0 +1,70 @@ +/** + * 对象工具 + * @author 陈皮皮 (ifaswind) + * @version 20210929 + */ +const ObjectUtil = { + + /** + * åˆ¤æ–æŒ‡å®šå€¼æ˜¯å¦æ˜¯ä¸€ä¸ªå¯¹è±¡ + * @param {any} arg 傿•° + */ + isObject(arg) { + return Object.prototype.toString.call(arg) === '[object Object]'; + }, + + /** + * å¯¹è±¡ä¸æ˜¯å¦åŒ…嫿Œ‡å®šçš„属性 + * @param {object} object 对象 + * @param {string} name 属性å + */ + containsProperty(object, name) { + let result = false; + const search = (_object) => { + if (ObjectUtil.isObject(_object)) { + for (const key in _object) { + if (key == name) { + result = true; + return; + } + search(_object[key]); + } + } else if (Array.isArray(_object)) { + for (let i = 0, l = _object.length; i < l; i++) { + search(_object[i]); + } + } + } + search(object); + return result; + }, + + /** + * å¯¹è±¡ä¸æ˜¯å¦åŒ…嫿Œ‡å®šçš„值 + * @param {object} object 对象 + * @param {any} value 值 + */ + containsValue(object, value) { + let result = false; + const search = (_object) => { + if (ObjectUtil.isObject(_object)) { + for (const key in _object) { + if (_object[key] === value) { + result = true; + return; + } + search(_object[key]); + } + } else if (Array.isArray(_object)) { + for (let i = 0, l = _object.length; i < l; i++) { + search(_object[i]); + } + } + } + search(object); + return result; + }, + +}; + +module.exports = ObjectUtil; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/panel-manager.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/panel-manager.js" new file mode 100644 index 0000000000000000000000000000000000000000..6374b02b2ee806e509b2f0d21670e262fa2d7bf0 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/panel-manager.js" @@ -0,0 +1,86 @@ +const { BrowserWindow } = require('electron'); +const { join } = require('path'); +const { language, translate } = require('../eazax/editor-main-util'); +const { calcWindowPosition } = require('../eazax/window-util'); + +/** 扩展åç§° */ +const EXTENSION_NAME = translate('name'); + +/** + * 颿¿ç®¡ç†å™¨ (主进程) + */ +const PanelManager = { + + /** + * 颿¿å®žä¾‹ + * @type {BrowserWindow} + */ + settings: null, + + /** + * æ‰“å¼€è®¾ç½®é¢æ¿ + */ + openSettingsPanel() { + // 已打开则直接展示 + if (PanelManager.settings) { + PanelManager.settings.show(); + return; + } + // 窗å£å°ºå¯¸å’Œä½ç½® + const winSize = [500, 346], + winPos = calcWindowPosition(winSize, 'center'); + // åˆ›å»ºçª—å£ + const win = PanelManager.settings = new BrowserWindow({ + width: winSize[0], + height: winSize[1], + minWidth: winSize[0], + minHeight: winSize[1], + x: winPos[0], + y: winPos[1] - 100, + useContentSize: true, + frame: true, + title: `${EXTENSION_NAME} | Cocos Creator`, + autoHideMenuBar: true, + resizable: true, + minimizable: false, + maximizable: false, + fullscreenable: false, + skipTaskbar: false, + alwaysOnTop: true, + hasShadow: true, + show: false, + webPreferences: { + nodeIntegration: true, + contextIsolation: false, + }, + }); + // 就绪åŽï¼ˆå±•示,é¿å…é—ªçƒï¼‰ + win.on('ready-to-show', () => win.show()); + // å…³é—åŽ + win.on('closed', () => (PanelManager.settings = null)); + // ç›‘å¬æŒ‰é”® + win.webContents.on('before-input-event', (event, input) => { + if (input.key === 'Escape') PanelManager.closeSettingsPanel(); + }); + // 调试用的 devtools + // win.webContents.openDevTools({ mode: 'detach' }); + // åŠ è½½é¡µé¢ + const path = join(__dirname, '../renderer/settings/index.html'); + win.loadURL(`file://${path}?lang=${language}`); + }, + + /** + * å…³é—颿¿ + */ + closeSettingsPanel() { + if (!PanelManager.settings) { + return; + } + PanelManager.settings.hide(); + PanelManager.settings.close(); + PanelManager.settings = null; + }, + +}; + +module.exports = PanelManager; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/parser.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/parser.js" new file mode 100644 index 0000000000000000000000000000000000000000..fd582b2b7b578dd5a87abe9f6c5536a885ce3230 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/parser.js" @@ -0,0 +1,161 @@ +const { print } = require("../eazax/editor-main-util"); +const FileUtil = require("../eazax/file-util"); +const { containsProperty } = require("./object-util"); + +/** + * è§£æžå™¨ + */ +const Parser = { + + /** + * èŠ‚ç‚¹æ ‘ç¼“å˜ + * @type {{ [key: string]: object }} + */ + caches: Object.create(null), + + /** + * 获å–èŠ‚ç‚¹æ ‘ + * @param {string} path 路径 + * @returns {Promise<object>} + */ + async getNodeTree(path) { + if (!Parser.caches[path]) { + const file = await FileUtil.readFile(path); + let data = null; + try { + data = JSON.parse(file); + } catch (error) { + print('warn', '文件解æžå¤±è´¥', path); + print('warn', error); + } + if (!data) { + return null; + } + Parser.caches[path] = Parser.convert(data); + } + return Parser.caches[path]; + }, + + /** + * æ›´æ–°ç¼“å˜ + * @param {string} path 路径 + */ + async updateCache(path) { + Parser.caches[path] = null; + await Parser.getNodeTree(path); + }, + + /** + * 将资æºè§£æžä¸ºèŠ‚ç‚¹æ ‘ + * @param {object} source æºæ•°æ® + * @returns {object} + */ + convert(source) { + const tree = Object.create(null), + type = source[0]['__type__']; + if (type === 'cc.SceneAsset') { + // åœºæ™¯èµ„æº + const sceneId = source[0]['scene']['__id__'], + children = source[sceneId]['_children']; + tree.type = 'cc.Scene'; // 类型 + tree.id = sceneId; // ID + // 场景下å¯ä»¥æœ‰å¤šä¸ªä¸€çº§èŠ‚ç‚¹ + tree.children = []; + for (let i = 0, l = children.length; i < l; i++) { + const nodeId = children[i]['__id__']; + Parser.convertNode(source, nodeId, tree); + } + } else if (type === 'cc.Prefab') { + // é¢„åˆ¶ä½“èµ„æº + const uuid = source[source.length - 1]['asset']['__uuid__']; + tree.type = 'cc.Prefab'; // 类型 + tree.uuid = uuid; // uuid + // 预制体本身就是一个节点 + tree.children = []; + const nodeId = source[0]['data']['__id__']; + Parser.convertNode(source, nodeId, tree); + } + return tree; + }, + + /** + * è§£æžèŠ‚ç‚¹ + * @param {object} source æºæ•°æ® + * @param {number} nodeId 节点 ID + * @param {object} parent 父节点 + */ + convertNode(source, nodeId, parent) { + const srcNode = source[nodeId], + node = Object.create(null); + // åŸºæœ¬ä¿¡æ¯ + node.name = srcNode['_name']; + node.id = nodeId; + node.type = srcNode['__type__']; + + // 路径 + const parentPath = parent.path || null; + node.path = parentPath ? `${parentPath}/${node.name}` : node.name; + + // 预制体引用 + const srcPrefab = srcNode['_prefab']; + if (srcPrefab) { + const id = srcPrefab['__id__']; + node.prefab = Parser.extractValidInfo(source[id]); + } + + // 组件 + node.components = []; + const srcComponents = srcNode['_components']; + if (srcComponents && srcComponents.length > 0) { + for (let i = 0, l = srcComponents.length; i < l; i++) { + const compId = srcComponents[i]['__id__'], + component = Parser.extractValidInfo(source[compId]); + node.components.push(component); + } + } + + // å节点 + node.children = []; + const srcChildren = srcNode['_children']; + if (srcChildren && srcChildren.length > 0) { + for (let i = 0, l = srcChildren.length; i < l; i++) { + const nodeId = srcChildren[i]['__id__']; + Parser.convertNode(source, nodeId, node); + } + } + + // ä¿å˜åˆ°çˆ¶èŠ‚ç‚¹ + parent.children.push(node); + }, + + /** + * æå–有效信æ¯ï¼ˆå«æœ‰ uuid) + * @param {object} source æºæ•°æ® + * @returns {{ __type__: string, _name: string, fileId?: string }} + */ + extractValidInfo(source) { + const result = Object.create(null); + + // 记录有用的属性 + const keys = ['__type__', '_name', 'fileId']; + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + if (source[key] !== undefined) { + result[key] = source[key]; + } + } + + // è®°å½•åŒ…å« uuid 的属性 + for (const key in source) { + const contains = containsProperty(source[key], '__uuid__'); + if (contains) { + result[key] = source[key]; + } + } + + return result; + }, + +}; + +module.exports = Parser; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/printer.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/printer.js" new file mode 100644 index 0000000000000000000000000000000000000000..ef993ae4f79e38efb34d9587c3b8a85fd72d6ab6 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/main/printer.js" @@ -0,0 +1,108 @@ +const { translate, print, pureWithoutTitle } = require('../eazax/editor-main-util'); +const ConfigManager = require('../common/config-manager'); + +/** å›¾æ ‡è¡¨ */ +const ICON_MAP = { + 'scene': '🔥', + 'prefab': '💠', + 'node': '🎲', + 'component': '🧩', + 'property': '📄', + 'asset': '📦', + 'asset-info': '📋', + 'node-refs': '📙', + 'asset-refs': '📗', +}; + +/** + * æ‰“å°æœº + */ +const Printer = { + + /** + * 打å°ç»“æžœè‡³æŽ§åˆ¶å° + * @param {object} result + */ + printResult(result) { + if (!result) { + return; + } + const { printDetails, printFolding } = ConfigManager.get(); + // æ ‡å¿—ä½ + const nodeRefs = [], assetRefs = []; + let nodeRefsCount = 0, assetRefsCount = 0; + // éåŽ†å¼•ç”¨ä¿¡æ¯ + for (let refs = result.refs, i = 0, l = refs.length; i < l; i++) { + const ref = refs[i], + type = ref.type, + url = ref.url.replace('db://', '').replace('.meta', ''); + if (type === 'scene' || type === 'prefab') { + // 场景或预制体 + nodeRefs.push(`  ${ICON_MAP[type]} [${translate(type)}] ${url}`); + // 节点引用 + for (let details = ref.refs, j = 0, l = details.length; j < l; j++) { + nodeRefsCount++; + // 详情 + if (printDetails) { + const detail = details[j]; + let item = `    ${ICON_MAP['node']} [${translate('node')}] ${detail.node}`; + if (detail.component) { + item += `  →  ${ICON_MAP['component']} [${translate('component')}] ${detail.component}`; + } + if (detail.property) { + item += `  →  ${ICON_MAP['property']} [${translate('property')}] ${detail.property}`; + } + nodeRefs.push(item); + } + } + } else { + // 资æºå¼•用 + assetRefsCount++; + assetRefs.push(`  ${ICON_MAP['asset']} [${translate(type)}] ${url}`); + } + } + // 组装文本 + const texts = []; + // 分割线 + texts.push(`${'- - '.repeat(36)}`); + // åŸºç¡€ä¿¡æ¯ + texts.push(`${ICON_MAP['asset-info']} ${translate('asset-info')}`); + texts.push(`  - ${translate('asset-type')}${result.type}`); + texts.push(`  - ${translate('asset-uuid')}${result.uuid}`); + texts.push(`  - ${translate('asset-url')}${result.url}`); + texts.push(`  - ${translate('asset-path')}${result.path}`); + // 分割线 + texts.push(`${'- - '.repeat(36)}`); + // 节点引用 + if (nodeRefs.length > 0) { + texts.push(`${ICON_MAP['node-refs']} ${translate('node-refs')} x ${nodeRefsCount}`); + for (let i = 0, l = nodeRefs.length; i < l; i++) { + texts.push(nodeRefs[i]); + } + } + // 资æºå¼•用 + if (assetRefs.length > 0) { + texts.push(`${ICON_MAP['asset-refs']} ${translate('asset-refs')} x ${assetRefsCount}`); + for (let i = 0, l = assetRefs.length; i < l; i++) { + texts.push(assetRefs[i]); + } + } + // 结尾分割线 + texts.push(`${'- - '.repeat(36)}`); + // 打å°åˆ°æŽ§åˆ¶å° + if (printFolding) { + // å•è¡Œæ‰“å° + texts.unshift(`🗂 ${translate('result')} >>>`); + print('log', texts.join('\n')); + } else { + // é€è¡Œæ‰“å° + print('log', translate('result')); + for (let i = 0, l = texts.length; i < l; i++) { + pureWithoutTitle(`  ${texts[i]}`); + } + } + }, + +}; + +module.exports = Printer; diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.css" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.css" new file mode 100644 index 0000000000000000000000000000000000000000..f4e3cd751f670cfc90398fe56516febed96ad952 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.css" @@ -0,0 +1,61 @@ +* { + box-sizing: border-box; +} + +body { + margin: 0; + padding: 0 12px; + background-color: #454545; + color: #bdbdbd; + user-select: none; +} + +#app { + width: 100%; + height: 100%; +} + +/* æ ‡é¢˜ */ +.title { + font-size: 20px; + font-weight: 800; + padding: 10px 0; +} + +/* 属性容器 */ +.properties { + overflow: visible; +} + +/* 应用按钮 */ +.apply-btn { + min-width: 20px; + height: 33px; + background-image: linear-gradient(#4281b6, #4281b6); + border: 1px solid #171717; + border-radius: 3px; + color: #fff; + font-size: 16px; + font-weight: 800; + text-align: center; + outline: none; + overflow: hidden; + cursor: pointer; +} + +.apply-btn:hover { + background-image: none; + background-color: #4c87b6; +} + +.apply-btn:active { + background-image: none; + background-color: #2e6da2; + border-color: #fd942b; + color: #cdcdcd; + box-shadow: 1px 1px 10px #262626 inset; +} + +[v-cloak] { + display: none; +} diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.html" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.html" new file mode 100644 index 0000000000000000000000000000000000000000..46b0e32debc72d210fec0bc908cbc868705fab87 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.html" @@ -0,0 +1,90 @@ +<!DOCTYPE html> +<html> + +<head> + <meta charset="utf-8"> + <!-- æ ·å¼ --> + <link rel="stylesheet" type="text/css" href="../../eazax/css/cocos-tag.css"> + <link rel="stylesheet" type="text/css" href="../../eazax/css/cocos-class.css"> + <link rel="stylesheet" type="text/css" href="index.css"> + <!-- 脚本 --> + <script type="text/javascript" src="../../../lib/vue.global.prod.js" defer></script> + <script type="text/javascript" src="index.js" defer></script> +</head> + +<body> + <div id="app" v-cloak> + <!-- æ ‡é¢˜ --> + <div class="title">{{ t('settings') }}</div> + <!-- é…ç½® --> + <div class="properties"> + <!-- 选择快æ·é”® --> + <div class="property"> + <div class="label"> + <span class="text">{{ t('select-key') }}</span> + <span class="tooltip">{{ t('select-key-tooltip') }}</span> + </div> + <div class="content"> + <select v-model="selectKey"> + <option v-for="item in presets" :key="item.key" :value="item.key">{{ item.name }}</option> + </select> + </div> + </div> + <!-- 自定义快æ·é”® --> + <div class="property"> + <div class="label"> + <span class="text">{{ t('custom-key') }}</span> + <span class="tooltip">{{ t('custom-key-tooltip') }}</span> + </div> + <div class="content"> + <input v-model="customKey" :placeholder="t('custom-key-placeholder')" /> + </div> + </div> + <!-- 展示详情 --> + <div class="property"> + <div class="label"> + <span class="text">{{ t('print-details') }}</span> + <span class="tooltip">{{ t('print-details-tooltip') }}</span> + </div> + <div class="content"> + <input type="checkbox" v-model="printDetails" /> + </div> + </div> + <!-- 折å 结果 --> + <div class="property"> + <div class="label"> + <span class="text">{{ t('print-folding') }}</span> + <span class="tooltip">{{ t('print-folding-tooltip') }}</span> + </div> + <div class="content"> + <input type="checkbox" v-model="printFolding" /> + </div> + </div> + <!-- 自动检查更新 --> + <div class="property"> + <div class="label"> + <span class="text">{{ t('auto-check-update') }}</span> + <span class="tooltip">{{ t('auto-check-update-tooltip') }}</span> + </div> + <div class="content"> + <input type="checkbox" v-model="autoCheckUpdate" /> + </div> + </div> + <!-- å¿«æ·é”®å‚考 --> + <div class="tip"> + <span>{{ t('reference') }}</span> + <a href="https://www.electronjs.org/docs/api/accelerator" target="_blank">{{ t('accelerator') }}</a> + </div> + <!-- Git 仓库 --> + <div class="tip"> + <span>{{ t('repository') }}</span> + <a :href="repositoryUrl" target="_blank">{{ packageName }}</a> + </div> + <div class="line"></div> + <!-- 应用按钮 --> + <button class="apply-btn" @click="onApplyBtnClick">{{ t('apply') }}</button> + </div> + </div> +</body> + +</html> \ No newline at end of file diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.js" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.js" new file mode 100644 index 0000000000000000000000000000000000000000..a508ebec05a91497cf57cfb55c7bbc9d9c20bc39 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/src/renderer/settings/index.js" @@ -0,0 +1,191 @@ +const { shell } = require('electron'); +const { getUrlParam } = require('../../eazax/browser-util'); +const I18n = require('../../eazax/i18n'); +const RendererEvent = require('../../eazax/renderer-event'); +const PackageUtil = require('../../eazax/package-util'); +const EditorRendererKit = require('../../eazax/editor-renderer-kit'); +const ConfigManager = require('../../common/config-manager'); + +// 导入 Vue 工具函数 +const { ref, watch, onMounted, onBeforeUnmount, createApp } = Vue; + +/** 当å‰è¯è¨€ */ +const LANG = getUrlParam('lang'); + +// 构建 Vue 应用 +const App = { + + /** + * 设置 + * @param {*} props + * @param {*} context + */ + setup(props, context) { + + // 预设快æ·é”® + const presets = ref([ + { key: '', name: t('none') }, + { key: 'custom', name: t('custom-key') }, + { key: 'F1', name: 'F1' }, + { key: 'F3', name: 'F3' }, + { key: 'F4', name: 'F4' }, + { key: 'F5', name: 'F5' }, + { key: 'F6', name: 'F6' }, + { key: 'CmdOrCtrl+F', name: 'Cmd/Ctrl + F' }, + { key: 'CmdOrCtrl+B', name: 'Cmd/Ctrl + B' }, + { key: 'CmdOrCtrl+Shift+F', name: 'Cmd/Ctrl + Shift + F' }, + ]); + // 选择 + const selectKey = ref(''); + // 自定义 + const customKey = ref(''); + // 打å°è¯¦æƒ… + const printDetails = ref(true); + // å•è¡Œæ‰“å° + const printFolding = ref(true); + // 自动检查更新 + const autoCheckUpdate = ref(false); + + // ä»“åº“åœ°å€ + const repositoryUrl = PackageUtil.repository; + // 包å + const packageName = PackageUtil.name; + + // 监å¬é€‰æ‹©å¿«æ·é”® + watch(selectKey, (value) => { + if (value !== 'custom') { + customKey.value = ''; + } + }); + + // 监å¬è‡ªå®šä¹‰ + watch(customKey, (value) => { + if (value !== '' && selectKey.value !== 'custom') { + selectKey.value = 'custom'; + } + }); + + /** + * 获å–é…ç½® + */ + function getConfig() { + const config = ConfigManager.get(); + if (!config) return; + // é…ç½® + printDetails.value = config.printDetails; + printFolding.value = config.printFolding; + autoCheckUpdate.value = config.autoCheckUpdate; + // å¿«æ·é”® + const hotkey = config.hotkey; + if (!hotkey || hotkey === '') { + selectKey.value = ''; + customKey.value = ''; + return; + } + // 预设快æ·é”® + for (let i = 0, l = presets.value.length; i < l; i++) { + if (presets.value[i].key === hotkey) { + selectKey.value = hotkey; + customKey.value = ''; + return; + } + } + // 自定义快æ·é”® + selectKey.value = 'custom'; + customKey.value = hotkey; + } + + /** + * ä¿å˜é…ç½® + */ + function setConfig() { + const config = { + hotkey: null, + printDetails: printDetails.value, + printFolding: printFolding.value, + autoCheckUpdate: autoCheckUpdate.value, + }; + if (selectKey.value === 'custom') { + // è‡ªå®šä¹‰è¾“å…¥æ˜¯å¦æœ‰æ•ˆ + if (customKey.value === '') { + EditorRendererKit.print('warn', t('custom-key-error')); + return; + } + // ä¸å¯ä»¥ä½¿ç”¨åŒå¼•å·ï¼ˆé¿å… json 值ä¸å‡ºçްåŒå¼•å·è€Œè§£æžé”™è¯¯ï¼Œå¯¼è‡´æ’ä»¶åŠ è½½å¤±è´¥ï¼‰ + if (customKey.value.includes('"')) { + customKey.value = customKey.value.replace(/\"/g, ''); + EditorRendererKit.print('warn', t('quote-error')); + return; + } + config.hotkey = customKey.value; + } else { + config.hotkey = selectKey.value; + } + // ä¿å˜åˆ°æœ¬åœ° + ConfigManager.set(config); + } + + /** + * 应用按钮点击回调 + * @param {*} event + */ + function onApplyBtnClick(event) { + // ä¿å˜é…ç½® + setConfig(); + } + + /** + * 翻译 + * @param {string} key + */ + function t(key) { + return I18n.get(LANG, key); + } + + /** + * ç”Ÿå‘½å‘¨æœŸï¼šæŒ‚è½½åŽ + */ + onMounted(() => { + // 获å–é…ç½® + getConfig(); + // 覆盖 a æ ‡ç¾ç‚¹å‡»å›žè°ƒï¼ˆä½¿ç”¨é»˜è®¤æµè§ˆå™¨æ‰“开网页) + const links = document.querySelectorAll('a[href]'); + links.forEach((link) => { + link.addEventListener('click', (event) => { + event.preventDefault(); + const url = link.getAttribute('href'); + shell.openExternal(url); + }); + }); + // (主进程)检查更新 + RendererEvent.send('check-update', false); + }); + + /** + * 生命周期:å¸è½½å‰ + */ + onBeforeUnmount(() => { + + }); + + return { + presets, + selectKey, + customKey, + printDetails, + printFolding, + autoCheckUpdate, + repositoryUrl, + packageName, + onApplyBtnClick, + t, + }; + + }, + +}; + +// 创建实例 +const app = createApp(App); +// 挂载 +app.mount('#app'); diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/typings/cocos/editor.d.ts" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/typings/cocos/editor.d.ts" new file mode 100644 index 0000000000000000000000000000000000000000..93278dfbe8bd7da080b9751a30102cc10223b7f9 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/typings/cocos/editor.d.ts" @@ -0,0 +1,1053 @@ +/** + * Cocos Creator ç¼–è¾‘å™¨æ¨¡å— + * @author 陈皮皮(ifaswind) + * @version 20210312 + * @see https://gitee.com/ifaswind/eazax-ccc/blob/master/declarations/editor.d.ts + */ +declare module Editor { + + /** + * Log the normal message and show on the console. The method will send ipc message editor:console-log to all windows. + * @param args Whatever arguments the message needs + */ + function log(...args: any): void; + + /** + * Log the normal message and show on the console. The method will send ipc message editor:console-log to all windows. + * @param args Whatever arguments the message needs + */ + function info(...args: any): void; + + /** + * Log the warnning message and show on the console, it also shows the call stack start from the function call it. The method will send ipc message editor:console-warn to all windows. + * @param args Whatever arguments the message needs + */ + function warn(...args: any): void; + + /** + * Log the error message and show on the console, it also shows the call stack start from the function call it. The method will sends ipc message editor:console-error to all windows. + * @param args Whatever arguments the message needs + */ + function error(...args: any): void; + + /** + * Log the success message and show on the console The method will send ipc message editor:console-success to all windows. + * @param args Whatever arguments the message needs + */ + function success(...args: any): void; + + /** + * Require the module by Editor.url. This is good for module exists in package, since the absolute path of package may be variant in different machine. + * @param url + */ + function require(url: string): any; + + /** + * Returns the file path (if it is registered in custom protocol) or url (if it is a known public protocol). + * @param url + * @param encode + */ + function url(url: string, encode?: string): string; + + function T(key: string): string; + +} + +declare module Editor { + readonly let appPath: string; + readonly let frameworkPath: string; + readonly let importPath: string; + readonly let isWin32: boolean; + readonly let isDarwin: boolean; + readonly let lang: string; + readonly let libraryPath: string; + readonly let sceneScripts: { [packageName: string]: string }; +} + +declare module Editor { + + /** + * 渲染进程 + */ + module RendererProcess { + + /** + * AssetDB singleton class in renderer process, you can access the instance with `Editor.assetdb`. + */ + class AssetDB { + + /** + * The remote AssetDB instance of main process, same as `Editor.remote.assetdb`. + */ + readonly remote: Remote; + + /** + * The library path. + */ + readonly library: string; + + /** + * Reveal given url in native file system. + * @param url + */ + explore(url: string): string; + + /** + * Reveal given url's library file in native file system. + * @param url + */ + exploreLib(url: string): string; + + /** + * Get native file path by url. + * @param url + * @param cb The callback function. + */ + queryPathByUrl(url: string, cb?: (err: any, path: any) => void): void; + + /** + * Get uuid by url. + * @param url + * @param cb The callback function. + */ + queryUuidByUrl(url: string, cb?: (err: any, uuid: any) => void): void; + + /** + * Get native file path by uuid. + * @param uuid + * @param cb The callback function. + */ + queryPathByUuid(uuid: string, cb?: (err: any, path: any) => void): void; + + /** + * Get asset url by uuid. + * @param uuid + * @param cb The callback function. + */ + queryUrlByUuid(uuid: string, cb?: (err: any, url: any) => void): void; + + /** + * Get asset info by uuid. + * @param uuid + * @param cb The callback function. + */ + queryInfoByUuid(uuid: string, cb?: (err: any, info: any) => void): void; + + /** + * Get meta info by uuid. + * @param uuid + * @param cb The callback function. + */ + queryMetaInfoByUuid(uuid: string, cb?: (err: any, info: any) => void): void; + + /** + * Query all assets from asset-db. + * @param cb The callback function. + */ + deepQuery(cb?: (err: any, results: any[]) => void): void; + + /** + * Query assets by url pattern and asset-type. + * @param pattern The url pattern. + * @param assetTypes The asset type(s). + * @param cb The callback function. + */ + queryAssets(pattern: string, assetTypes: string | string[], cb?: (err: any, results: any[]) => void): void; + + /** + * Import files outside asset-db to specific url folder. + * @param rawfiles Rawfile path list. + * @param destUrl The url of dest folder. + * @param showProgress Show progress or not. + * @param cb The callbak function. + */ + import(rawfiles: string[], destUrl: string, showProgress?: boolean, cb?: (err: any, result: any) => void): void; + + /** + * Create asset in specific url by sending string data to it. + * @param uuid + * @param metaJson + * @param cb the callback function. + */ + create(url: string, data: string, cb?: (err: any, result: any) => void): void; + + /** + * Move asset from src to dest. + * @param srcUrl + * @param destUrl + * @param showMessageBox + */ + move(srcUrl: string, destUrl: string, showMessageBox?: boolean): void; + + /** + * Delete assets by url list. + * @param urls + */ + delete(urls: string[]): void; + + /** + * Save specific asset by sending string data. + * @param url + * @param data + * @param cb the callback function. + */ + saveExists(url: string, data: string, cb?: (err: any, result: any) => void): void; + + /** + * Create or save assets by sending string data. If the url is already existed, it will be changed with new data. The behavior is same with method saveExists. Otherwise, a new asset will be created. The behavior is same with method create. + * @param url + * @param data + * @param cb the callback function. + */ + createOrSave(url: string, data: string, cb?: (err: any, result: any) => void): void; + + /** + * Save specific meta by sending meta's json string. + * @param uuid + * @param metaJson + * @param cb the callback function. + */ + saveMeta(uuid: string, metaJson: string, cb?: (err: any, result: any) => void): void; + + /** + * Refresh the assets in url, and return the results. + * @param url + * @param cb + */ + refresh(url: string, cb?: (err: any, results: any[]) => void): void; + + } + + } + + /** + * 主进程 + */ + module MainProcess { + + /** + * AssetDB singleton class in main process, you can access the instance with `Editor.assetdb`. + */ + class AssetDB { + + /** + * Return uuid by url. If uuid not found, it will return null. + * @param url + */ + urlToUuid(url: string): string; + + /** + * Return uuid by file path. If uuid not found, it will return null. + * @param fspath + */ + fspathToUuid(fspath: string): string; + + /** + * Return file path by uuid. If file path not found, it will return null. + * @param url + */ + uuidToFspath(url: string): string; + + /** + * Return url by uuid. If url not found, it will return null. + * @param uuid + */ + uuidToUrl(uuid: string): string; + + /** + * Return url by file path. If file path not found, it will return null. + * @param fspath + */ + fspathToUrl(fspath: string): string; + + /** + * Return file path by url. If url not found, it will return null. + * @param url + */ + urlToFspath(url: string): string; + + /** + * Check existance by url. + * @param url + */ + exists(url: string): string; + + /** + * Check existance by uuid. + * @param uuid + */ + existsByUuid(uuid: string): string; + + /** + * Check existance by path. + * @param fspath + */ + existsByPath(fspath: string): string; + + /** + * Check whether asset for a given url is a sub asset. + * @param url + */ + isSubAsset(url: string): boolean; + + /** + * Check whether asset for a given uuid is a sub asset. + * @param uuid + */ + isSubAssetByUuid(uuid: string): boolean; + + /** + * Check whether asset for a given path is a sub asset. + * @param fspath + */ + isSubAssetByPath(fspath: string): boolean; + + /** + * Check whether asset contains sub assets for a given url. + * @param url + */ + containsSubAssets(url: string): boolean; + + /** + * Check whether asset contains sub assets for a given uuid. + * @param uuid + */ + containsSubAssetsByUuid(uuid: string): boolean; + + /** + * Check whether asset contains sub assets for a given path. + * @param fspath + */ + containsSubAssetsByPath(fspath: string): boolean; + + /** + * Return asset info by a given url. + * @param url + */ + assetInfo(url: string): AssetInfo; + + /** + * Return asset info by a given uuid. + * @param uuid + */ + assetInfoByUuid(uuid: string): AssetInfo; + + /** + * Return asset info by a given file path. + * @param fspath + */ + assetInfoByPath(fspath: string): AssetInfo; + + /** + * Return all sub assets info by url if the url contains sub assets. + * @param url + */ + subAssetInfos(url: string): AssetInfo[]; + + /** + * Return all sub assets info by uuid if the uuid contains sub assets. + * @param uuid + */ + subAssetInfosByUuid(uuid: string): AssetInfo[]; + + /** + * Return all sub assets info by path if the path contains sub assets. + * @param fspath + */ + subAssetInfosByPath(fspath: string): AssetInfo[]; + + /** + * Return meta instance by a given url. + * @param url + */ + loadMeta(url: string): MetaBase; + + /** + * Return meta instance by a given uuid. + * @param uuid + */ + loadMetaByUuid(uuid: string): MetaBase; + + /** + * Return meta instance by a given path. + * @param fspath + */ + loadMetaByPath(fspath: string): MetaBase; + + /** + * Return whether a given url is reference to a mount. + * @param url + */ + isMount(url: string): boolean; + + /** + * Return whether a given path is reference to a mount. + * @param fspath + */ + isMountByPath(fspath: string): boolean; + + /** + * Return whether a given uuid is reference to a mount. + * @param uuid + */ + isMountByUuid(uuid: string): boolean; + + /** + * Return mount info by url. + * @param url + */ + mountInfo(url: string): MountInfo; + + /** + * Return mount info by uuid. + * @param uuid + */ + mountInfoByUuid(uuid: string): MountInfo; + + /** + * Return mount info by path. + * @param fspath + */ + mountInfoByPath(fspath: string): MountInfo; + + /** + * Mount a directory to assetdb, and give it a name. If you don't provide a name, it will mount to root. + * @param path file system path. + * @param mountPath the mount path (relative path). + * @param opts options. + * @param opts.hide if the mount hide in assets browser. + * @param opts.virtual if this is a virtual mount point. + * @param opts.icon icon for the mount. + * @param cb a callback function. + * @example Editor.assetdb.mount('path/to/mount', 'assets', function (err) { + // mounted, do something ... + }); + */ + mount(path: string, mountPath: string, opts: { hide: object, vitural: object, icon: object }, cb?: (err: any) => void): void; + + /** + * Attach the specified mount path. + * @param mountPath the mount path (relative path). + * @param cb a callback function. + * @example Editor.assetdb.attachMountPath('assets', function (err, results) { + // mount path attached, do something ... + // results are the assets created + }); + */ + attachMountPath(mountPath: string, cb?: (err: any, results: any[]) => void): void; + + /** + * Unattach the specified mount path. + * @param mountPath the mount path (relative path). + * @param cb a callback function. + * @example Editor.assetdb.unattachMountPath('assets', function (err, results) { + // mount path unattached, do something ... + // results are the assets deleted + }); + */ + unattachMountPath(mountPath: string, cb?: (err: any, results: any[]) => void): void; + + /** + * Unmount by name. + * @param mountPath the mount path. + * @param cb a callback function. + * @example Editor.assetdb.unmount('assets', function (err) { + // unmounted, do something ... + }); + */ + unmount(mountPath: string, cb?: (err: any) => void): void; + + /** + * Init assetdb, it will scan the mounted directories, and import unimported assets. + * @param cb a callback function. + * @example Editor.assetdb.init(function (err, results) { + // assets that imported during init + results.forEach(function (result) { + // result.uuid + // result.parentUuid + // result.url + // result.path + // result.type + }); + }); + */ + init(cb?: (err: any, results: any[]) => void): void; + + /** + * Refresh the assets in url, and return the results. + * @param url + * @param cb + */ + refresh(url: string, cb?: Function): void; + + /** + * deepQuery + * @param cb + * @example Editor.assetdb.deepQuery(function (err, results) { + results.forEach(function (result) { + // result.name + // result.extname + // result.uuid + // result.type + // result.isSubAsset + // result.children - the array of children result + }); + }); + */ + deepQuery(cb?: Function): void; + + /** + * queryAssets + * @param pattern The url pattern. + * @param assetTypes The asset type(s). + * @param cb The callback function. + */ + queryAssets(pattern: string, assetTypes: string | string[], cb?: (err: Error, results: any[]) => void): void; + + /** + * queryMetas + * @param pattern The url pattern. + * @param type The asset type. + * @param cb The callback function. + */ + queryMetas(pattern: string, type: string, cb?: (err: Error, results: any[]) => void): void; + + /** + * move + * @param srcUrl The url pattern. + * @param destUrl The asset type. + * @param cb The callback function. + */ + move(srcUrl: string, destUrl: string, cb?: (err: Error, results: any[]) => void): void; + + /** + * delete + * @param urls + * @param cb + */ + delete(urls: string[], cb?: (err: Error, results: any[]) => void): void; + + /** + * Create asset at url with data. + * @param url + * @param data + * @param cb + */ + create(url: string, data: string, cb?: (err: Error, results: any[]) => void): void; + + /** + * Save data to the exists asset at url. + * @param url + * @param data + * @param cb + */ + saveExists(url: string, data: string, cb?: (err: Error, meta: any) => void): void; + + /** + * Import raw files to url + * @param rawfiles + * @param url + * @param cb + */ + import(rawfiles: string[], url: string, cb?: (err: Error, results: any[]) => void): void; + + /** + * Overwrite the meta by loading it through uuid. + * @param uuid + * @param jsonString + * @param cb + */ + saveMeta(uuid: string, jsonString: string, cb?: (err: Error, meta: any) => void): void; + + /** + * Exchange uuid for two assets. + * @param urlA + * @param urlB + * @param cb + */ + exchangeUuid(urlA: string, urlB: string, cb?: (err: Error, results: any[]) => void): void; + + /** + * Clear imports. + * @param url + * @param cb + */ + clearImports(url: string, cb?: (err: Error, results: any[]) => void): void; + + /** + * Register meta type. + * @param extname + * @param folder Whether it's a folder type. + * @param metaCtor + */ + register(extname: string, folder: boolean, metaCtor: object): void; + + /** + * Unregister meta type. + * @param metaCtor + */ + unregister(metaCtor: object): void; + + /** + * Get the relative path from mount path to the asset by fspath. + * @param fspath + */ + getRelativePath(fspath: string): string; + + /** + * Get the backup file path of asset file. + * @param filePath + */ + getAssetBackupPath(filePath: string): string; + + } + + } + + interface MetaBase { + ver: string; + uuid: string; + } + + interface MountInfo { + path: string; + name: string; + type: string; + } + + interface Metas { + asset: string[]; + folder: string[]; + mount: string[]; + 'custom-asset': string[]; + 'native-asset': string[]; + 'animation-clip': string[]; + 'audio-clip': string[]; + 'bitmap-font': string[]; + } + + interface App { + readonly home: string; + readonly name: string; + readonly path: string; + readonly version: string; + } + + class Remote { + readonly App: App; + readonly isClosing: boolean; + readonly lang: string; + readonly isNode: boolean; + readonly isElectron: boolean; + readonly isNative: boolean; + readonly isPureWeb: boolean; + readonly isRendererProcess: boolean; + readonly isMainProcess: boolean; + readonly isDarwin: boolean; + readonly isWin32: boolean; + readonly isRetina: boolean; + readonly frameworkPath: string; + readonly dev: boolean; + readonly logfile: string; + readonly themePaths: string[]; + readonly theme: string; + readonly showInternalMount: boolean; + readonly metas: Metas; + readonly metaBackupPath: string; + readonly assetBackupPath: string; + readonly libraryPath: string; + readonly importPath: string; + readonly externalMounts: any; + readonly mountsWritable: string; + readonly assetdb: MainProcess.AssetDB; + readonly assetdbInited: boolean; + readonly sceneList: string[]; + readonly versions: { + 'asset-db': string; + CocosCreator: string; + cocos2d: string; + 'editor-framework': string; + } + } + + /** Remote 实例 */ + const remote: Remote; + + /** AssetDB 实例 */ + const assetdb: MainProcess.AssetDB; + +} + +interface AssetInfo { + uuid?: string; + path?: string; + url?: string; + type?: string; + isSubAsset?: boolean; + assetType?: string; + id?: string; + name?: string; + subAssetTypes?: string; +} + +declare module Editor.Project { + readonly let id: string; + readonly let name: string; + /** Absolute path for current open project. */ + readonly let path: string; +} + +declare module Editor.Builder { + + /** + * + * @param eventName The name of the event + * @param callback The event callback + */ + function on(eventName: string, callback: (options: BuildOptions, cb: Function) => void): void; + + /** + * + * @param eventName The name of the event + * @param callback The event callback + */ + function once(eventName: string, callback: (options: BuildOptions, cb: Function) => void): void; + + /** + * + * @param eventName The name of the event + * @param callback The event callback + */ + function removeListener(eventName: string, callback: Function): void; + +} + +declare module Editor.Scene { + + /** + * + * @param packageName + * @param method + * @param cb + */ + function callSceneScript(packageName: string, method: string, cb: (err: Error, msg: any) => void): void; + +} + +declare module Editor.Panel { + + /** + * Open a panel via panelID. + * @param panelID The panel ID + * @param argv + */ + function open(panelID: string, argv?: object): void; + + /** + * Close a panel via panelID. + * @param panelID The panel ID + */ + function close(panelID: string): void; + + /** + * Find panel frame via panelID. + * @param panelID The panel ID + */ + function find(panelID: string): void; + + /** + * Extends a panel. + * @param proto + */ + function extend(proto: object): void; + +} + +declare module Editor.Selection { + + /** + * Select item with its id. + * @param type + * @param id + * @param unselectOthers + * @param confirm + */ + function select(type: string, id: string, unselectOthers?: boolean, confirm?: boolean): void; + + /** + * Unselect item with its id. + * @param type + * @param id + * @param confirm + */ + function unselect(type: string, id: string, confirm?: boolean): void; + + /** + * Hover item with its id. If id is null, it means hover out. + * @param type + * @param id + */ + function hover(type: string, id: string): string; + + /** + * + * @param type + */ + function clear(type: string): void; + + /** + * + * @param type + */ + function curActivate(type: string): string[]; + + /** + * + * @param type + */ + function curGlobalActivate(type: string): string[]; + + /** + * + * @param type + */ + function curSelection(type: string): string[]; + + /** + * + * @param items + * @param mode 'top-level', 'deep' and 'name' + * @param func + */ + function filter(items: string[], mode: string, func: Function): string[]; + +} + +declare module Editor.Ipc { + + /** + * Send message with ...args to main process asynchronously. It is possible to add a callback as the last or the 2nd last argument to receive replies from the IPC receiver. + * @param message Ipc message. + * @param args Whatever arguments the message needs. + * @param callback You can specify a callback function to receive IPC reply at the last or the 2nd last argument. + * @param timeout You can specify a timeout for the callback at the last argument. If no timeout specified, it will be 5000ms. + */ + function sendToMain(message: string, ...args?: any, callback?: Function, timeout?: number): void; + + /** + * Send message with ...args to panel defined in renderer process asynchronously. It is possible to add a callback as the last or the 2nd last argument to receive replies from the IPC receiver. + * @param panelID Panel ID. + * @param message Ipc message. + * @param args Whatever arguments the message needs. + * @param callback You can specify a callback function to receive IPC reply at the last or the 2nd last argument. + * @param timeout You can specify a timeout for the callback at the last argument. If no timeout specified, it will be 5000ms. + */ + function sendToPanel(panelID: string, message: string, ...args?: any, callback?: Function, timeout?: number): void; + + /** + * Send message with ...args to all opened window and to main process asynchronously. + * @param message Ipc message. + * @param args Whatever arguments the message needs. + * @param option You can indicate the last argument as an IPC option by Editor.Ipc.option({...}). + */ + function sendToAll(message: string, ...args?: any, option?: object): void; + + /** + * Send message with ...args to main process synchronized and return a result which is responded from main process. + * @param message Ipc message. + * @param args Whatever arguments the message needs. + */ + function sendToMainSync(message: string, ...args?: any): void; + + /** + * Send message with ...args to main process by package name and the short name of the message. + * @param pkgName Package name. + * @param message Ipc message. + * @param args Whatever arguments the message needs. + */ + function sendToPackage(pkgName: string, message: string, ...args?: any): void; + +} + +declare module Editor.UI { + + module Setting { + + /** + * Control the default step for float point input element. Default is 0.1. + * @param value + */ + function stepFloat(value: number): void; + + /** + * Control the default step for integer input element. Default is 1. + * @param value + */ + function stepInt(value: number): void; + + /** + * Control the step when shift key press down. Default is 10. + * @param value + */ + function shiftStep(value: number): void; + + } + + module DragDrop { + + readonly let dragging: boolean; + + function start(e: any, t: any): void; + + function end(): void; + + function updateDropEffect(e: any, t: any); + + function type(e: any); + + function filterFiles(e: any); + + function items(dataTransfer: DataTransfer): AssetInfo[]; + + function getDragIcon(e: any); + + function options(e: any); + + function getLength(e: any): number; + + } + +} + +declare module Editor.GizmosUtils { + + function addMoveHandles(e, n, t); + + function getCenter(e); + + function getCenterWorldPos(n); + + function getCenterWorldPos3D(e); + + function getRecursiveNodes(e, t); + + function getRecursiveWorldBounds3D(e); + + function getWorldBounds3D(n); + + function snapPixel(e); + + function snapPixelWihVec2(e); + +} + +declare module Editor.Utils { + + /** + * Uuid 工具 + */ + module UuidUtils { + + /** + * 压缩åŽçš„ uuid å¯ä»¥å‡å°ä¿å˜æ—¶çš„尺寸,但ä¸èƒ½åšä¸ºæ–‡ä»¶åï¼ˆå› ä¸ºæ— æ³•åŒºåˆ†å¤§å°å†™å¹¶ä¸”包å«éžæ³•å—符)。 + * 默认将 uuid çš„åŽé¢ 27 ä½åŽ‹ç¼©æˆ 18 ä½ï¼Œå‰ 5 ä½ä¿ç•™ä¸‹æ¥ï¼Œæ–¹ä¾¿è°ƒè¯•。 + * 如果å¯ç”¨ min 则将 uuid çš„åŽé¢ 30 ä½åŽ‹ç¼©æˆ 20 ä½ï¼Œå‰ 2 ä½ä¿ç•™ä¸å˜ã€‚ + * @param uuid + * @param min + */ + function compressUuid(uuid: string, min?: boolean): string; + + function compressHex(hexString: string, reservedHeadLength?: number): string; + + function decompressUuid(str: string): string; + + function isUuid(str: string): boolean; + + function uuid(): string; + + } + +} + +declare interface BuildOptions { + actualPlatform: string; + android: { packageName: string }; + 'android-instant': { + REMOTE_SERVER_ROOT: string; + host: string; + packageName: string; + pathPattern: string; + recordPath: string; + scheme: string; + skipRecord: boolean; + } + apiLevel: string; + appABIs: string[]; + appBundle: boolean; + buildPath: string; + buildScriptsOnly: boolean; + debug: string; + dest: string; + embedWebDebugger: boolean; + encryptJs: boolean; + excludeScenes: string[]; + excludedModules: string[]; + 'fb-instant-games': object; + inlineSpriteFrames: boolean; + inlineSpriteFrames_native: boolean; + ios: { packageName: string }; + mac: { packageName: string }; + md5Cache: boolean; + mergeStartScene: boolean; + optimizeHotUpdate: boolean; + orientation: { + landscapeLeft: boolean; + landscapeRight: boolean; + portrait: boolean; + upsideDown: boolean; + }; + packageName: string; + platform: string; + previewHeight: number; + previewWidth: number; + scenes: string[]; + sourceMaps: boolean; + startScene: string; + template: string; + title: string; + useDebugKeystore: boolean; + vsVersion: string; + webOrientation: boolean; + win32: object; + xxteaKey: string; + zipCompressJs: string; + project: string; + projectName: string; + debugBuildWorker: boolean; + bundles: bundle[]; +} + +interface bundle { + /** bundle çš„æ ¹ç›®å½• */ + root: string; + /** bundle 的输出目录 */ + dest: string; + /** 脚本的输出目录 */ + scriptDest: string; + /** bundle çš„åç§° */ + name: string; + /** bundle 的优先级 */ + priority: number; + /** bundle ä¸åŒ…å«çš„场景 */ + scenes: string[]; + /** bundle 的压缩类型 */ + compressionType: 'subpackage' | 'normal' | 'none' | 'merge_all_json' | 'zip'; + /** bundle 所构建出æ¥çš„æ‰€æœ‰èµ„æº */ + buildResults: BuildResults; + /** bundle 的版本信æ¯ï¼Œç”± config ç”Ÿæˆ */ + version: string; + /** bundle çš„ config.json 文件 */ + config: any; + /** bundle æ˜¯å¦æ˜¯è¿œç¨‹åŒ… */ + isRemote: boolean; +} diff --git "a/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/typings/vue.d.ts" "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/typings/vue.d.ts" new file mode 100644 index 0000000000000000000000000000000000000000..fdf3a7b4d6cb0552b6b1af55230b6f0e4f86b481 --- /dev/null +++ "b/packages/\345\274\225\347\224\250\346\237\245\346\211\276\345\231\250/typings/vue.d.ts" @@ -0,0 +1 @@ +declare var Vue: any;