From d3d00a83fbb322fb560c072fc387bca9eeea23ba Mon Sep 17 00:00:00 2001
From: weipengfei <2187978347@qq.com>
Date: Tue, 23 Apr 2024 18:03:59 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.eslintrc.cjs | 42 +
.gitignore | 35 +
README.md | 46 +
global.d.ts | 1 +
index.html | 66 +
package-lock.json | 8743 +++++++++++++++++
package.json | 65 +
postcss.config.js | 6 +
scripts/release.mjs | 35 +
src/App.vue | 70 +
src/api/app.ts | 16 +
src/api/app/recharge.ts | 10 +
src/api/brand.ts | 26 +
src/api/category.ts | 26 +
src/api/code.ts | 26 +
src/api/consumer.ts | 21 +
src/api/customer.ts | 26 +
src/api/file.ts | 39 +
src/api/goods.ts | 26 +
src/api/goodsclass.ts | 26 +
src/api/label.ts | 26 +
src/api/merchant.ts | 26 +
src/api/org/department.ts | 31 +
src/api/org/post.ts | 31 +
src/api/perms/admin.ts | 29 +
src/api/perms/menu.ts | 30 +
src/api/perms/role.ts | 27 +
src/api/setting/dict.ts | 61 +
src/api/setting/storage.ts | 21 +
src/api/setting/system.ts | 51 +
src/api/setting/website.ts | 27 +
src/api/shop.ts | 64 +
src/api/supplier.ts | 26 +
src/api/tools/code.ts | 51 +
src/api/unit.ts | 26 +
src/api/user.ts | 22 +
src/api/warehouse.ts | 26 +
src/assets/icons/Androidfanhui.svg | 1 +
src/assets/icons/KMSguanli.svg | 1 +
src/assets/icons/KTVyuding.svg | 1 +
src/assets/icons/a-tixingdengpao.svg | 1 +
src/assets/icons/anquan.svg | 1 +
src/assets/icons/anquan_mian.svg | 1 +
src/assets/icons/anquan_mian1.svg | 1 +
src/assets/icons/banxing_mian.svg | 1 +
src/assets/icons/baoxian.svg | 1 +
src/assets/icons/bendishenghuodaxue.svg | 1 +
src/assets/icons/bianji.svg | 1 +
src/assets/icons/biaoqing.svg | 1 +
src/assets/icons/bukejian.svg | 1 +
src/assets/icons/caipinguanli.svg | 1 +
src/assets/icons/caiwu.svg | 1 +
src/assets/icons/caiwu_jifen.svg | 1 +
src/assets/icons/caiwu_tixian.svg | 1 +
src/assets/icons/canyinfuwu.svg | 1 +
src/assets/icons/carryout.svg | 1 +
src/assets/icons/chexiao.svg | 1 +
src/assets/icons/chihuohongbao.svg | 1 +
src/assets/icons/chuangyiwuliao.svg | 1 +
src/assets/icons/close.svg | 1 +
src/assets/icons/daiyunying.svg | 1 +
src/assets/icons/danwei.svg | 1 +
src/assets/icons/danxuankuang.svg | 1 +
src/assets/icons/danxuanxuanzhong.svg | 1 +
src/assets/icons/dayin.svg | 1 +
src/assets/icons/dayin_mian.svg | 1 +
src/assets/icons/del.svg | 1 +
src/assets/icons/diancanshezhi.svg | 1 +
src/assets/icons/dianhua.svg | 1 +
src/assets/icons/dianhua_mian.svg | 1 +
src/assets/icons/dianpu_fengge.svg | 1 +
src/assets/icons/dianputuijian.svg | 1 +
src/assets/icons/dianzifapiao.svg | 1 +
src/assets/icons/dingcan.svg | 1 +
src/assets/icons/dingdan.svg | 1 +
src/assets/icons/dingdan1.svg | 1 +
src/assets/icons/dingdan_mian.svg | 1 +
src/assets/icons/dingwei.svg | 1 +
src/assets/icons/dingwei_mian.svg | 1 +
src/assets/icons/ditu.svg | 1 +
src/assets/icons/ditu_mian.svg | 1 +
src/assets/icons/duizhang.svg | 1 +
src/assets/icons/elemo.svg | 1 +
src/assets/icons/ezhanggui.svg | 1 +
src/assets/icons/falvfuwubaoxiaohei.svg | 1 +
src/assets/icons/fengniaopaotui.svg | 1 +
src/assets/icons/fenxiang.svg | 1 +
src/assets/icons/fukuan.svg | 1 +
src/assets/icons/fukuan_mian.svg | 1 +
src/assets/icons/fullscreen-exit.svg | 1 +
src/assets/icons/fullscreen.svg | 1 +
src/assets/icons/fuwushichang.svg | 1 +
src/assets/icons/fuzhi.svg | 1 +
src/assets/icons/gaode.svg | 1 +
src/assets/icons/gengduo.svg | 1 +
src/assets/icons/gengduoandroid.svg | 1 +
src/assets/icons/gift.svg | 1 +
src/assets/icons/gongyingshang.svg | 1 +
src/assets/icons/goods.svg | 1 +
src/assets/icons/gou.svg | 1 +
src/assets/icons/gouwuche.svg | 1 +
src/assets/icons/gouxuan.svg | 1 +
src/assets/icons/gouxuan_mian.svg | 1 +
src/assets/icons/guanbi.svg | 1 +
src/assets/icons/guanli.svg | 1 +
src/assets/icons/guanli_mian.svg | 1 +
src/assets/icons/gukefapiao.svg | 1 +
src/assets/icons/haibaosheji.svg | 1 +
src/assets/icons/heshoujilu.svg | 1 +
src/assets/icons/heshoujilu1.svg | 1 +
src/assets/icons/hexiao_order.svg | 1 +
src/assets/icons/hide-2.svg | 1 +
src/assets/icons/hide.svg | 1 +
src/assets/icons/hongbao.svg | 1 +
src/assets/icons/huiche.svg | 1 +
src/assets/icons/huiyuanyingxiao.svg | 1 +
src/assets/icons/huodongbaoming.svg | 1 +
src/assets/icons/huodongguanli.svg | 1 +
src/assets/icons/huodongzhongxin.svg | 1 +
src/assets/icons/huojian.svg | 1 +
src/assets/icons/huojian_mian.svg | 1 +
src/assets/icons/huolala.svg | 1 +
src/assets/icons/iOSfanhui.svg | 1 +
src/assets/icons/jia.svg | 1 +
src/assets/icons/jia_mian.svg | 1 +
src/assets/icons/jian.svg | 1 +
src/assets/icons/jian_mian.svg | 1 +
src/assets/icons/jianpan.svg | 1 +
src/assets/icons/jianpanshanchu.svg | 1 +
src/assets/icons/jianshao.svg | 1 +
src/assets/icons/jiaopeiwangputong.svg | 1 +
src/assets/icons/jiaoyi.svg | 1 +
src/assets/icons/jiedan.svg | 1 +
src/assets/icons/jiekuan.svg | 1 +
src/assets/icons/jingshi.svg | 1 +
src/assets/icons/jingshi_mian.svg | 1 +
src/assets/icons/jingshi_mian1.svg | 1 +
src/assets/icons/jingyin.svg | 1 +
src/assets/icons/jingyin_mian.svg | 1 +
src/assets/icons/jingying.svg | 1 +
src/assets/icons/jingying_mian.svg | 1 +
src/assets/icons/jingyinggonglve.svg | 1 +
src/assets/icons/jingzhunyingxiao.svg | 1 +
src/assets/icons/jinhuo.svg | 1 +
src/assets/icons/kaitongwaimai.svg | 1 +
src/assets/icons/kanjia.svg | 1 +
src/assets/icons/kefu.svg | 1 +
src/assets/icons/kejian.svg | 1 +
src/assets/icons/kejian_mian.svg | 1 +
src/assets/icons/keziyuyue.svg | 1 +
src/assets/icons/kezizhongxin.svg | 1 +
src/assets/icons/koubei.svg | 1 +
src/assets/icons/kuaijiehuifu.svg | 1 +
src/assets/icons/ladu_mian.svg | 1 +
src/assets/icons/lanyadingwei.svg | 1 +
src/assets/icons/list-2.svg | 1 +
src/assets/icons/mendiandongtai.svg | 1 +
src/assets/icons/mishiyuding.svg | 1 +
src/assets/icons/mishiyuding1.svg | 1 +
src/assets/icons/notice_buyer.svg | 1 +
src/assets/icons/open.svg | 1 +
src/assets/icons/paiduiquhao.svg | 1 +
src/assets/icons/paimai.svg | 1 +
src/assets/icons/pingjia.svg | 1 +
src/assets/icons/pingtaifapiao.svg | 1 +
src/assets/icons/pinpai.svg | 1 +
src/assets/icons/qianbao.svg | 1 +
src/assets/icons/qianbao_mian.svg | 1 +
src/assets/icons/qiehuan.svg | 1 +
src/assets/icons/qingchu.svg | 1 +
src/assets/icons/qingchu_mian.svg | 1 +
src/assets/icons/qishoupeisong.svg | 1 +
src/assets/icons/qiyedingcan.svg | 1 +
src/assets/icons/qiyedingcan1.svg | 1 +
src/assets/icons/quanbu.svg | 1 +
src/assets/icons/quanping.svg | 1 +
src/assets/icons/qudao.svg | 1 +
src/assets/icons/qudao_xiaochengxu.svg | 1 +
src/assets/icons/rencaizhaopin.svg | 1 +
src/assets/icons/rili.svg | 1 +
src/assets/icons/rili2.svg | 1 +
src/assets/icons/rizhi.svg | 1 +
src/assets/icons/saoma.svg | 1 +
src/assets/icons/set_pay.svg | 1 +
src/assets/icons/set_peisong.svg | 1 +
src/assets/icons/set_user.svg | 1 +
src/assets/icons/set_weihu.svg | 1 +
src/assets/icons/shanchu.svg | 1 +
src/assets/icons/shanchu_mian.svg | 1 +
src/assets/icons/shangchuan.svg | 1 +
src/assets/icons/shangchuanzhaopian.svg | 1 +
src/assets/icons/shangpinguanli.svg | 1 +
src/assets/icons/shangpinzhushou.svg | 1 +
src/assets/icons/shangpuyuding.svg | 1 +
src/assets/icons/shebeiguanli.svg | 1 +
src/assets/icons/shengfuwangputong.svg | 1 +
src/assets/icons/shengyin.svg | 1 +
src/assets/icons/shengyin_mian.svg | 1 +
src/assets/icons/shezhi.svg | 1 +
src/assets/icons/shezhi_mian.svg | 1 +
src/assets/icons/shichang.svg | 1 +
src/assets/icons/shichang_mian.svg | 1 +
src/assets/icons/shijian.svg | 1 +
src/assets/icons/shijian_mian.svg | 1 +
src/assets/icons/shoudan.svg | 1 +
src/assets/icons/shouqi.svg | 1 +
src/assets/icons/shouqi_mian.svg | 1 +
src/assets/icons/shouye.svg | 1 +
src/assets/icons/shouye_mian.svg | 1 +
src/assets/icons/shouyiren.svg | 1 +
src/assets/icons/show.svg | 1 +
src/assets/icons/shuangjiantouxiangyou.svg | 1 +
src/assets/icons/shuangjiantouxiangzuo.svg | 1 +
src/assets/icons/shuaxin.svg | 1 +
src/assets/icons/shuju.svg | 1 +
src/assets/icons/shuju2.svg | 1 +
src/assets/icons/shuju_liuliang.svg | 1 +
src/assets/icons/shuju_mian.svg | 1 +
src/assets/icons/sort.svg | 1 +
src/assets/icons/sousuo.svg | 1 +
src/assets/icons/sucai.svg | 1 +
src/assets/icons/tianjia.svg | 1 +
src/assets/icons/tishi.svg | 1 +
src/assets/icons/tishi_mian.svg | 1 +
src/assets/icons/tongxunlu_mian.svg | 1 +
src/assets/icons/tongzhi.svg | 1 +
src/assets/icons/tongzhi_mian.svg | 1 +
src/assets/icons/tuichuquanping.svg | 1 +
src/assets/icons/tuiguang.svg | 1 +
src/assets/icons/tuiguang_mian.svg | 1 +
src/assets/icons/tupian.svg | 1 +
src/assets/icons/tupian_mian.svg | 1 +
src/assets/icons/user_biaoqian.svg | 1 +
src/assets/icons/user_gaikuang.svg | 1 +
src/assets/icons/user_guanli.svg | 1 +
src/assets/icons/wangpudiandan.svg | 1 +
src/assets/icons/weixin.svg | 1 +
src/assets/icons/weixin_mian.svg | 1 +
src/assets/icons/wode.svg | 1 +
src/assets/icons/wode_mian.svg | 1 +
src/assets/icons/xiangji.svg | 1 +
src/assets/icons/xiaoxi.svg | 1 +
src/assets/icons/xiazai.svg | 1 +
src/assets/icons/xitongquanxian.svg | 1 +
src/assets/icons/yingxiao_qipao.svg | 1 +
src/assets/icons/yingyezizhi.svg | 1 +
src/assets/icons/yinhangka.svg | 1 +
src/assets/icons/yiwen.svg | 1 +
src/assets/icons/youhui.svg | 1 +
src/assets/icons/youjian.svg | 1 +
src/assets/icons/youjiantou.svg | 1 +
src/assets/icons/yulibao.svg | 1 +
src/assets/icons/yuyin.svg | 1 +
src/assets/icons/yuyueguanli.svg | 1 +
src/assets/icons/yuyueguanlishezhi.svg | 1 +
src/assets/icons/zhankai.svg | 1 +
src/assets/icons/zhankai_mian.svg | 1 +
src/assets/icons/zhibo.svg | 1 +
src/assets/icons/zhibo_mian.svg | 1 +
src/assets/icons/zhuangxiu.svg | 1 +
src/assets/icons/zhuangxiu_mian.svg | 1 +
src/assets/icons/zhuoweiguanli.svg | 1 +
src/assets/icons/zichanzhuanrang.svg | 1 +
src/assets/icons/zuliao.svg | 1 +
src/assets/icons/zuliaoyuding.svg | 1 +
src/assets/images/icon_folder.png | Bin 0 -> 605 bytes
src/assets/images/no_perms.png | Bin 0 -> 14619 bytes
src/assets/images/theme_black.png | Bin 0 -> 2564 bytes
src/assets/images/theme_white.png | Bin 0 -> 2559 bytes
src/components/app-link/index.vue | 38 +
src/components/color-picker/index.vue | 33 +
src/components/daterange-picker/index.vue | 43 +
src/components/del-wrap/index.vue | 51 +
src/components/dict-value/index.vue | 35 +
src/components/editor/index.vue | 143 +
src/components/export-data/index.vue | 149 +
src/components/footer-btns/index.vue | 30 +
src/components/icon/index.ts | 19 +
src/components/icon/index.vue | 48 +
src/components/icon/picker.vue | 185 +
src/components/icon/svg-icon.vue | 38 +
src/components/image-contain/index.vue | 42 +
src/components/material/file.vue | 55 +
src/components/material/hook.ts | 209 +
src/components/material/index.vue | 566 ++
src/components/material/picker.vue | 303 +
src/components/material/preview.vue | 72 +
src/components/overflow-tooltip/index.vue | 47 +
src/components/pagination/index.vue | 50 +
src/components/popover-input/index.vue | 130 +
src/components/popup/index.vue | 132 +
src/components/upload/index.vue | 151 +
src/components/vditor/index.vue | 50 +
src/components/video-player/index.vue | 72 +
src/config/index.ts | 10 +
src/config/setting.ts | 16 +
src/enums/appEnums.ts | 40 +
src/enums/cacheEnums.ts | 8 +
src/enums/pageEnum.ts | 7 +
src/enums/requestEnums.ts | 18 +
src/hooks/useDictOptions.ts | 67 +
src/hooks/useLockFn.ts | 21 +
src/hooks/useMultipleTabs.ts | 47 +
src/hooks/usePaging.ts | 62 +
src/hooks/useWatchRoute.ts | 17 +
src/install/directives/copy.ts | 28 +
src/install/directives/perms.ts | 29 +
src/install/index.ts | 27 +
src/install/plugins/echart.ts | 63 +
src/install/plugins/element.ts | 11 +
src/install/plugins/hljs.ts | 8 +
src/install/plugins/pinia.ts | 6 +
src/install/plugins/router.ts | 6 +
src/layout/components/footer.vue | 22 +
.../default/components/header/breadcrumb.vue | 20 +
.../default/components/header/cache.vue | 21 +
src/layout/default/components/header/fold.vue | 15 +
.../default/components/header/full-screen.vue | 10 +
.../default/components/header/index.vue | 59 +
.../components/header/multiple-tabs.vue | 122 +
.../default/components/header/refresh.vue | 14 +
.../components/header/user-drop-down.vue | 34 +
src/layout/default/components/main.vue | 26 +
.../default/components/setting/drawer.vue | 220 +
.../default/components/setting/index.vue | 19 +
.../default/components/sidebar/index.vue | 44 +
.../default/components/sidebar/logo.vue | 61 +
.../default/components/sidebar/menu-item.vue | 87 +
.../default/components/sidebar/menu.vue | 101 +
.../default/components/sidebar/side.vue | 66 +
src/layout/default/index.vue | 22 +
src/main.ts | 10 +
src/permission.ts | 83 +
src/router/index.ts | 110 +
src/router/routes.ts | 85 +
src/stores/index.ts | 3 +
src/stores/modules/app.ts | 51 +
src/stores/modules/multipleTabs.ts | 169 +
src/stores/modules/setting.ts | 55 +
src/stores/modules/user.ts | 82 +
src/styles/dark.css | 49 +
src/styles/element.scss | 151 +
src/styles/index.css | 168 +
src/styles/index.min.css | 1 +
src/styles/index.scss | 6 +
src/styles/public.scss | 18 +
src/styles/tailwind.css | 3 +
src/styles/var.css | 48 +
src/test.vue | 107 +
src/utils/auth.ts | 18 +
src/utils/cache.ts | 53 +
src/utils/env.ts | 13 +
src/utils/feedback.ts | 95 +
src/utils/request/axios.ts | 165 +
src/utils/request/cancel.ts | 31 +
src/utils/request/index.ts | 123 +
src/utils/request/type.d.ts | 38 +
src/utils/theme.ts | 74 +
src/utils/util.ts | 162 +
src/utils/validate.ts | 7 +
src/views/account/images/login_bg.png | Bin 0 -> 59273 bytes
src/views/account/login.vue | 130 +
src/views/category/edit.vue | 157 +
src/views/category/index.vue | 134 +
src/views/data/customer/customer/edit.vue | 188 +
src/views/data/customer/customer/index.vue | 173 +
src/views/data/merchant/merchant/edit.vue | 289 +
src/views/data/merchant/merchant/index.vue | 232 +
src/views/data/supplier/supplier/edit.vue | 195 +
src/views/data/supplier/supplier/index.vue | 174 +
src/views/dev_tools/code/edit.vue | 528 +
src/views/dev_tools/code/index.vue | 232 +
.../dev_tools/components/code-preview.vue | 63 +
src/views/dev_tools/components/data-table.vue | 104 +
.../dev_tools/components/relations-add.vue | 160 +
src/views/error/403.vue | 15 +
src/views/error/404.vue | 9 +
src/views/error/components/error.vue | 57 +
src/views/goods/brand/edit.vue | 133 +
src/views/goods/brand/index.vue | 157 +
src/views/goods/code/edit.vue | 155 +
src/views/goods/code/index.vue | 168 +
src/views/goods/goods/edit.vue | 405 +
src/views/goods/goods/index.vue | 175 +
src/views/goods/goodsclass/edit.vue | 130 +
src/views/goods/goodsclass/index.vue | 147 +
src/views/goods/unit/edit.vue | 125 +
src/views/goods/unit/index.vue | 146 +
src/views/label/edit.vue | 109 +
src/views/label/index.vue | 131 +
src/views/material/index.vue | 63 +
src/views/organization/department/edit.vue | 161 +
src/views/organization/department/index.vue | 166 +
src/views/organization/post/edit.vue | 120 +
src/views/organization/post/index.vue | 128 +
src/views/permission/admin/edit.vue | 274 +
src/views/permission/admin/index.vue | 183 +
src/views/permission/menu/edit.vue | 299 +
src/views/permission/menu/index.vue | 151 +
src/views/permission/role/auth.vue | 154 +
src/views/permission/role/edit.vue | 101 +
src/views/permission/role/index.vue | 107 +
src/views/setting/dict/data/edit.vue | 126 +
src/views/setting/dict/data/index.vue | 181 +
src/views/setting/dict/type/edit.vue | 109 +
src/views/setting/dict/type/index.vue | 170 +
src/views/setting/storage/edit.vue | 194 +
src/views/setting/storage/index.vue | 65 +
src/views/setting/system/cache.vue | 45 +
src/views/setting/system/environment.vue | 79 +
src/views/setting/system/journal.vue | 149 +
src/views/setting/website/filing.vue | 89 +
src/views/setting/website/information.vue | 219 +
src/views/setting/website/protocol.vue | 57 +
src/views/shop/component/add.vue | 290 +
src/views/shop/index.vue | 284 +
src/views/user/setting.vue | 156 +
src/views/warehouse/warehouse/edit.vue | 150 +
src/views/warehouse/warehouse/index.vue | 171 +
src/views/workbench/index.vue | 193 +
tailwind.config.js | 119 +
tsconfig.config.json | 8 +
tsconfig.json | 23 +
typings/index.d.ts | 5 +
typings/router.d.ts | 14 +
vite.config.ts | 60 +
yarn.lock | 5251 ++++++++++
427 files changed, 31212 insertions(+)
create mode 100644 .eslintrc.cjs
create mode 100644 .gitignore
create mode 100644 README.md
create mode 100644 global.d.ts
create mode 100644 index.html
create mode 100644 package-lock.json
create mode 100644 package.json
create mode 100644 postcss.config.js
create mode 100644 scripts/release.mjs
create mode 100644 src/App.vue
create mode 100644 src/api/app.ts
create mode 100644 src/api/app/recharge.ts
create mode 100644 src/api/brand.ts
create mode 100644 src/api/category.ts
create mode 100644 src/api/code.ts
create mode 100644 src/api/consumer.ts
create mode 100644 src/api/customer.ts
create mode 100644 src/api/file.ts
create mode 100644 src/api/goods.ts
create mode 100644 src/api/goodsclass.ts
create mode 100644 src/api/label.ts
create mode 100644 src/api/merchant.ts
create mode 100644 src/api/org/department.ts
create mode 100644 src/api/org/post.ts
create mode 100644 src/api/perms/admin.ts
create mode 100644 src/api/perms/menu.ts
create mode 100644 src/api/perms/role.ts
create mode 100644 src/api/setting/dict.ts
create mode 100644 src/api/setting/storage.ts
create mode 100644 src/api/setting/system.ts
create mode 100644 src/api/setting/website.ts
create mode 100644 src/api/shop.ts
create mode 100644 src/api/supplier.ts
create mode 100644 src/api/tools/code.ts
create mode 100644 src/api/unit.ts
create mode 100644 src/api/user.ts
create mode 100644 src/api/warehouse.ts
create mode 100644 src/assets/icons/Androidfanhui.svg
create mode 100644 src/assets/icons/KMSguanli.svg
create mode 100644 src/assets/icons/KTVyuding.svg
create mode 100644 src/assets/icons/a-tixingdengpao.svg
create mode 100644 src/assets/icons/anquan.svg
create mode 100644 src/assets/icons/anquan_mian.svg
create mode 100644 src/assets/icons/anquan_mian1.svg
create mode 100644 src/assets/icons/banxing_mian.svg
create mode 100644 src/assets/icons/baoxian.svg
create mode 100644 src/assets/icons/bendishenghuodaxue.svg
create mode 100644 src/assets/icons/bianji.svg
create mode 100644 src/assets/icons/biaoqing.svg
create mode 100644 src/assets/icons/bukejian.svg
create mode 100644 src/assets/icons/caipinguanli.svg
create mode 100644 src/assets/icons/caiwu.svg
create mode 100644 src/assets/icons/caiwu_jifen.svg
create mode 100644 src/assets/icons/caiwu_tixian.svg
create mode 100644 src/assets/icons/canyinfuwu.svg
create mode 100644 src/assets/icons/carryout.svg
create mode 100644 src/assets/icons/chexiao.svg
create mode 100644 src/assets/icons/chihuohongbao.svg
create mode 100644 src/assets/icons/chuangyiwuliao.svg
create mode 100644 src/assets/icons/close.svg
create mode 100644 src/assets/icons/daiyunying.svg
create mode 100644 src/assets/icons/danwei.svg
create mode 100644 src/assets/icons/danxuankuang.svg
create mode 100644 src/assets/icons/danxuanxuanzhong.svg
create mode 100644 src/assets/icons/dayin.svg
create mode 100644 src/assets/icons/dayin_mian.svg
create mode 100644 src/assets/icons/del.svg
create mode 100644 src/assets/icons/diancanshezhi.svg
create mode 100644 src/assets/icons/dianhua.svg
create mode 100644 src/assets/icons/dianhua_mian.svg
create mode 100644 src/assets/icons/dianpu_fengge.svg
create mode 100644 src/assets/icons/dianputuijian.svg
create mode 100644 src/assets/icons/dianzifapiao.svg
create mode 100644 src/assets/icons/dingcan.svg
create mode 100644 src/assets/icons/dingdan.svg
create mode 100644 src/assets/icons/dingdan1.svg
create mode 100644 src/assets/icons/dingdan_mian.svg
create mode 100644 src/assets/icons/dingwei.svg
create mode 100644 src/assets/icons/dingwei_mian.svg
create mode 100644 src/assets/icons/ditu.svg
create mode 100644 src/assets/icons/ditu_mian.svg
create mode 100644 src/assets/icons/duizhang.svg
create mode 100644 src/assets/icons/elemo.svg
create mode 100644 src/assets/icons/ezhanggui.svg
create mode 100644 src/assets/icons/falvfuwubaoxiaohei.svg
create mode 100644 src/assets/icons/fengniaopaotui.svg
create mode 100644 src/assets/icons/fenxiang.svg
create mode 100644 src/assets/icons/fukuan.svg
create mode 100644 src/assets/icons/fukuan_mian.svg
create mode 100644 src/assets/icons/fullscreen-exit.svg
create mode 100644 src/assets/icons/fullscreen.svg
create mode 100644 src/assets/icons/fuwushichang.svg
create mode 100644 src/assets/icons/fuzhi.svg
create mode 100644 src/assets/icons/gaode.svg
create mode 100644 src/assets/icons/gengduo.svg
create mode 100644 src/assets/icons/gengduoandroid.svg
create mode 100644 src/assets/icons/gift.svg
create mode 100644 src/assets/icons/gongyingshang.svg
create mode 100644 src/assets/icons/goods.svg
create mode 100644 src/assets/icons/gou.svg
create mode 100644 src/assets/icons/gouwuche.svg
create mode 100644 src/assets/icons/gouxuan.svg
create mode 100644 src/assets/icons/gouxuan_mian.svg
create mode 100644 src/assets/icons/guanbi.svg
create mode 100644 src/assets/icons/guanli.svg
create mode 100644 src/assets/icons/guanli_mian.svg
create mode 100644 src/assets/icons/gukefapiao.svg
create mode 100644 src/assets/icons/haibaosheji.svg
create mode 100644 src/assets/icons/heshoujilu.svg
create mode 100644 src/assets/icons/heshoujilu1.svg
create mode 100644 src/assets/icons/hexiao_order.svg
create mode 100644 src/assets/icons/hide-2.svg
create mode 100644 src/assets/icons/hide.svg
create mode 100644 src/assets/icons/hongbao.svg
create mode 100644 src/assets/icons/huiche.svg
create mode 100644 src/assets/icons/huiyuanyingxiao.svg
create mode 100644 src/assets/icons/huodongbaoming.svg
create mode 100644 src/assets/icons/huodongguanli.svg
create mode 100644 src/assets/icons/huodongzhongxin.svg
create mode 100644 src/assets/icons/huojian.svg
create mode 100644 src/assets/icons/huojian_mian.svg
create mode 100644 src/assets/icons/huolala.svg
create mode 100644 src/assets/icons/iOSfanhui.svg
create mode 100644 src/assets/icons/jia.svg
create mode 100644 src/assets/icons/jia_mian.svg
create mode 100644 src/assets/icons/jian.svg
create mode 100644 src/assets/icons/jian_mian.svg
create mode 100644 src/assets/icons/jianpan.svg
create mode 100644 src/assets/icons/jianpanshanchu.svg
create mode 100644 src/assets/icons/jianshao.svg
create mode 100644 src/assets/icons/jiaopeiwangputong.svg
create mode 100644 src/assets/icons/jiaoyi.svg
create mode 100644 src/assets/icons/jiedan.svg
create mode 100644 src/assets/icons/jiekuan.svg
create mode 100644 src/assets/icons/jingshi.svg
create mode 100644 src/assets/icons/jingshi_mian.svg
create mode 100644 src/assets/icons/jingshi_mian1.svg
create mode 100644 src/assets/icons/jingyin.svg
create mode 100644 src/assets/icons/jingyin_mian.svg
create mode 100644 src/assets/icons/jingying.svg
create mode 100644 src/assets/icons/jingying_mian.svg
create mode 100644 src/assets/icons/jingyinggonglve.svg
create mode 100644 src/assets/icons/jingzhunyingxiao.svg
create mode 100644 src/assets/icons/jinhuo.svg
create mode 100644 src/assets/icons/kaitongwaimai.svg
create mode 100644 src/assets/icons/kanjia.svg
create mode 100644 src/assets/icons/kefu.svg
create mode 100644 src/assets/icons/kejian.svg
create mode 100644 src/assets/icons/kejian_mian.svg
create mode 100644 src/assets/icons/keziyuyue.svg
create mode 100644 src/assets/icons/kezizhongxin.svg
create mode 100644 src/assets/icons/koubei.svg
create mode 100644 src/assets/icons/kuaijiehuifu.svg
create mode 100644 src/assets/icons/ladu_mian.svg
create mode 100644 src/assets/icons/lanyadingwei.svg
create mode 100644 src/assets/icons/list-2.svg
create mode 100644 src/assets/icons/mendiandongtai.svg
create mode 100644 src/assets/icons/mishiyuding.svg
create mode 100644 src/assets/icons/mishiyuding1.svg
create mode 100644 src/assets/icons/notice_buyer.svg
create mode 100644 src/assets/icons/open.svg
create mode 100644 src/assets/icons/paiduiquhao.svg
create mode 100644 src/assets/icons/paimai.svg
create mode 100644 src/assets/icons/pingjia.svg
create mode 100644 src/assets/icons/pingtaifapiao.svg
create mode 100644 src/assets/icons/pinpai.svg
create mode 100644 src/assets/icons/qianbao.svg
create mode 100644 src/assets/icons/qianbao_mian.svg
create mode 100644 src/assets/icons/qiehuan.svg
create mode 100644 src/assets/icons/qingchu.svg
create mode 100644 src/assets/icons/qingchu_mian.svg
create mode 100644 src/assets/icons/qishoupeisong.svg
create mode 100644 src/assets/icons/qiyedingcan.svg
create mode 100644 src/assets/icons/qiyedingcan1.svg
create mode 100644 src/assets/icons/quanbu.svg
create mode 100644 src/assets/icons/quanping.svg
create mode 100644 src/assets/icons/qudao.svg
create mode 100644 src/assets/icons/qudao_xiaochengxu.svg
create mode 100644 src/assets/icons/rencaizhaopin.svg
create mode 100644 src/assets/icons/rili.svg
create mode 100644 src/assets/icons/rili2.svg
create mode 100644 src/assets/icons/rizhi.svg
create mode 100644 src/assets/icons/saoma.svg
create mode 100644 src/assets/icons/set_pay.svg
create mode 100644 src/assets/icons/set_peisong.svg
create mode 100644 src/assets/icons/set_user.svg
create mode 100644 src/assets/icons/set_weihu.svg
create mode 100644 src/assets/icons/shanchu.svg
create mode 100644 src/assets/icons/shanchu_mian.svg
create mode 100644 src/assets/icons/shangchuan.svg
create mode 100644 src/assets/icons/shangchuanzhaopian.svg
create mode 100644 src/assets/icons/shangpinguanli.svg
create mode 100644 src/assets/icons/shangpinzhushou.svg
create mode 100644 src/assets/icons/shangpuyuding.svg
create mode 100644 src/assets/icons/shebeiguanli.svg
create mode 100644 src/assets/icons/shengfuwangputong.svg
create mode 100644 src/assets/icons/shengyin.svg
create mode 100644 src/assets/icons/shengyin_mian.svg
create mode 100644 src/assets/icons/shezhi.svg
create mode 100644 src/assets/icons/shezhi_mian.svg
create mode 100644 src/assets/icons/shichang.svg
create mode 100644 src/assets/icons/shichang_mian.svg
create mode 100644 src/assets/icons/shijian.svg
create mode 100644 src/assets/icons/shijian_mian.svg
create mode 100644 src/assets/icons/shoudan.svg
create mode 100644 src/assets/icons/shouqi.svg
create mode 100644 src/assets/icons/shouqi_mian.svg
create mode 100644 src/assets/icons/shouye.svg
create mode 100644 src/assets/icons/shouye_mian.svg
create mode 100644 src/assets/icons/shouyiren.svg
create mode 100644 src/assets/icons/show.svg
create mode 100644 src/assets/icons/shuangjiantouxiangyou.svg
create mode 100644 src/assets/icons/shuangjiantouxiangzuo.svg
create mode 100644 src/assets/icons/shuaxin.svg
create mode 100644 src/assets/icons/shuju.svg
create mode 100644 src/assets/icons/shuju2.svg
create mode 100644 src/assets/icons/shuju_liuliang.svg
create mode 100644 src/assets/icons/shuju_mian.svg
create mode 100644 src/assets/icons/sort.svg
create mode 100644 src/assets/icons/sousuo.svg
create mode 100644 src/assets/icons/sucai.svg
create mode 100644 src/assets/icons/tianjia.svg
create mode 100644 src/assets/icons/tishi.svg
create mode 100644 src/assets/icons/tishi_mian.svg
create mode 100644 src/assets/icons/tongxunlu_mian.svg
create mode 100644 src/assets/icons/tongzhi.svg
create mode 100644 src/assets/icons/tongzhi_mian.svg
create mode 100644 src/assets/icons/tuichuquanping.svg
create mode 100644 src/assets/icons/tuiguang.svg
create mode 100644 src/assets/icons/tuiguang_mian.svg
create mode 100644 src/assets/icons/tupian.svg
create mode 100644 src/assets/icons/tupian_mian.svg
create mode 100644 src/assets/icons/user_biaoqian.svg
create mode 100644 src/assets/icons/user_gaikuang.svg
create mode 100644 src/assets/icons/user_guanli.svg
create mode 100644 src/assets/icons/wangpudiandan.svg
create mode 100644 src/assets/icons/weixin.svg
create mode 100644 src/assets/icons/weixin_mian.svg
create mode 100644 src/assets/icons/wode.svg
create mode 100644 src/assets/icons/wode_mian.svg
create mode 100644 src/assets/icons/xiangji.svg
create mode 100644 src/assets/icons/xiaoxi.svg
create mode 100644 src/assets/icons/xiazai.svg
create mode 100644 src/assets/icons/xitongquanxian.svg
create mode 100644 src/assets/icons/yingxiao_qipao.svg
create mode 100644 src/assets/icons/yingyezizhi.svg
create mode 100644 src/assets/icons/yinhangka.svg
create mode 100644 src/assets/icons/yiwen.svg
create mode 100644 src/assets/icons/youhui.svg
create mode 100644 src/assets/icons/youjian.svg
create mode 100644 src/assets/icons/youjiantou.svg
create mode 100644 src/assets/icons/yulibao.svg
create mode 100644 src/assets/icons/yuyin.svg
create mode 100644 src/assets/icons/yuyueguanli.svg
create mode 100644 src/assets/icons/yuyueguanlishezhi.svg
create mode 100644 src/assets/icons/zhankai.svg
create mode 100644 src/assets/icons/zhankai_mian.svg
create mode 100644 src/assets/icons/zhibo.svg
create mode 100644 src/assets/icons/zhibo_mian.svg
create mode 100644 src/assets/icons/zhuangxiu.svg
create mode 100644 src/assets/icons/zhuangxiu_mian.svg
create mode 100644 src/assets/icons/zhuoweiguanli.svg
create mode 100644 src/assets/icons/zichanzhuanrang.svg
create mode 100644 src/assets/icons/zuliao.svg
create mode 100644 src/assets/icons/zuliaoyuding.svg
create mode 100644 src/assets/images/icon_folder.png
create mode 100644 src/assets/images/no_perms.png
create mode 100644 src/assets/images/theme_black.png
create mode 100644 src/assets/images/theme_white.png
create mode 100644 src/components/app-link/index.vue
create mode 100644 src/components/color-picker/index.vue
create mode 100644 src/components/daterange-picker/index.vue
create mode 100644 src/components/del-wrap/index.vue
create mode 100644 src/components/dict-value/index.vue
create mode 100644 src/components/editor/index.vue
create mode 100644 src/components/export-data/index.vue
create mode 100644 src/components/footer-btns/index.vue
create mode 100644 src/components/icon/index.ts
create mode 100644 src/components/icon/index.vue
create mode 100644 src/components/icon/picker.vue
create mode 100644 src/components/icon/svg-icon.vue
create mode 100644 src/components/image-contain/index.vue
create mode 100644 src/components/material/file.vue
create mode 100644 src/components/material/hook.ts
create mode 100644 src/components/material/index.vue
create mode 100644 src/components/material/picker.vue
create mode 100644 src/components/material/preview.vue
create mode 100644 src/components/overflow-tooltip/index.vue
create mode 100644 src/components/pagination/index.vue
create mode 100644 src/components/popover-input/index.vue
create mode 100644 src/components/popup/index.vue
create mode 100644 src/components/upload/index.vue
create mode 100644 src/components/vditor/index.vue
create mode 100644 src/components/video-player/index.vue
create mode 100644 src/config/index.ts
create mode 100644 src/config/setting.ts
create mode 100644 src/enums/appEnums.ts
create mode 100644 src/enums/cacheEnums.ts
create mode 100644 src/enums/pageEnum.ts
create mode 100644 src/enums/requestEnums.ts
create mode 100644 src/hooks/useDictOptions.ts
create mode 100644 src/hooks/useLockFn.ts
create mode 100644 src/hooks/useMultipleTabs.ts
create mode 100644 src/hooks/usePaging.ts
create mode 100644 src/hooks/useWatchRoute.ts
create mode 100644 src/install/directives/copy.ts
create mode 100644 src/install/directives/perms.ts
create mode 100644 src/install/index.ts
create mode 100644 src/install/plugins/echart.ts
create mode 100644 src/install/plugins/element.ts
create mode 100644 src/install/plugins/hljs.ts
create mode 100644 src/install/plugins/pinia.ts
create mode 100644 src/install/plugins/router.ts
create mode 100644 src/layout/components/footer.vue
create mode 100644 src/layout/default/components/header/breadcrumb.vue
create mode 100644 src/layout/default/components/header/cache.vue
create mode 100644 src/layout/default/components/header/fold.vue
create mode 100644 src/layout/default/components/header/full-screen.vue
create mode 100644 src/layout/default/components/header/index.vue
create mode 100644 src/layout/default/components/header/multiple-tabs.vue
create mode 100644 src/layout/default/components/header/refresh.vue
create mode 100644 src/layout/default/components/header/user-drop-down.vue
create mode 100644 src/layout/default/components/main.vue
create mode 100644 src/layout/default/components/setting/drawer.vue
create mode 100644 src/layout/default/components/setting/index.vue
create mode 100644 src/layout/default/components/sidebar/index.vue
create mode 100644 src/layout/default/components/sidebar/logo.vue
create mode 100644 src/layout/default/components/sidebar/menu-item.vue
create mode 100644 src/layout/default/components/sidebar/menu.vue
create mode 100644 src/layout/default/components/sidebar/side.vue
create mode 100644 src/layout/default/index.vue
create mode 100644 src/main.ts
create mode 100644 src/permission.ts
create mode 100644 src/router/index.ts
create mode 100644 src/router/routes.ts
create mode 100644 src/stores/index.ts
create mode 100644 src/stores/modules/app.ts
create mode 100644 src/stores/modules/multipleTabs.ts
create mode 100644 src/stores/modules/setting.ts
create mode 100644 src/stores/modules/user.ts
create mode 100644 src/styles/dark.css
create mode 100644 src/styles/element.scss
create mode 100644 src/styles/index.css
create mode 100644 src/styles/index.min.css
create mode 100644 src/styles/index.scss
create mode 100644 src/styles/public.scss
create mode 100644 src/styles/tailwind.css
create mode 100644 src/styles/var.css
create mode 100644 src/test.vue
create mode 100644 src/utils/auth.ts
create mode 100644 src/utils/cache.ts
create mode 100644 src/utils/env.ts
create mode 100644 src/utils/feedback.ts
create mode 100644 src/utils/request/axios.ts
create mode 100644 src/utils/request/cancel.ts
create mode 100644 src/utils/request/index.ts
create mode 100644 src/utils/request/type.d.ts
create mode 100644 src/utils/theme.ts
create mode 100644 src/utils/util.ts
create mode 100644 src/utils/validate.ts
create mode 100644 src/views/account/images/login_bg.png
create mode 100644 src/views/account/login.vue
create mode 100644 src/views/category/edit.vue
create mode 100644 src/views/category/index.vue
create mode 100644 src/views/data/customer/customer/edit.vue
create mode 100644 src/views/data/customer/customer/index.vue
create mode 100644 src/views/data/merchant/merchant/edit.vue
create mode 100644 src/views/data/merchant/merchant/index.vue
create mode 100644 src/views/data/supplier/supplier/edit.vue
create mode 100644 src/views/data/supplier/supplier/index.vue
create mode 100644 src/views/dev_tools/code/edit.vue
create mode 100644 src/views/dev_tools/code/index.vue
create mode 100644 src/views/dev_tools/components/code-preview.vue
create mode 100644 src/views/dev_tools/components/data-table.vue
create mode 100644 src/views/dev_tools/components/relations-add.vue
create mode 100644 src/views/error/403.vue
create mode 100644 src/views/error/404.vue
create mode 100644 src/views/error/components/error.vue
create mode 100644 src/views/goods/brand/edit.vue
create mode 100644 src/views/goods/brand/index.vue
create mode 100644 src/views/goods/code/edit.vue
create mode 100644 src/views/goods/code/index.vue
create mode 100644 src/views/goods/goods/edit.vue
create mode 100644 src/views/goods/goods/index.vue
create mode 100644 src/views/goods/goodsclass/edit.vue
create mode 100644 src/views/goods/goodsclass/index.vue
create mode 100644 src/views/goods/unit/edit.vue
create mode 100644 src/views/goods/unit/index.vue
create mode 100644 src/views/label/edit.vue
create mode 100644 src/views/label/index.vue
create mode 100644 src/views/material/index.vue
create mode 100644 src/views/organization/department/edit.vue
create mode 100644 src/views/organization/department/index.vue
create mode 100644 src/views/organization/post/edit.vue
create mode 100644 src/views/organization/post/index.vue
create mode 100644 src/views/permission/admin/edit.vue
create mode 100644 src/views/permission/admin/index.vue
create mode 100644 src/views/permission/menu/edit.vue
create mode 100644 src/views/permission/menu/index.vue
create mode 100644 src/views/permission/role/auth.vue
create mode 100644 src/views/permission/role/edit.vue
create mode 100644 src/views/permission/role/index.vue
create mode 100644 src/views/setting/dict/data/edit.vue
create mode 100644 src/views/setting/dict/data/index.vue
create mode 100644 src/views/setting/dict/type/edit.vue
create mode 100644 src/views/setting/dict/type/index.vue
create mode 100644 src/views/setting/storage/edit.vue
create mode 100644 src/views/setting/storage/index.vue
create mode 100644 src/views/setting/system/cache.vue
create mode 100644 src/views/setting/system/environment.vue
create mode 100644 src/views/setting/system/journal.vue
create mode 100644 src/views/setting/website/filing.vue
create mode 100644 src/views/setting/website/information.vue
create mode 100644 src/views/setting/website/protocol.vue
create mode 100644 src/views/shop/component/add.vue
create mode 100644 src/views/shop/index.vue
create mode 100644 src/views/user/setting.vue
create mode 100644 src/views/warehouse/warehouse/edit.vue
create mode 100644 src/views/warehouse/warehouse/index.vue
create mode 100644 src/views/workbench/index.vue
create mode 100644 tailwind.config.js
create mode 100644 tsconfig.config.json
create mode 100644 tsconfig.json
create mode 100644 typings/index.d.ts
create mode 100644 typings/router.d.ts
create mode 100644 vite.config.ts
create mode 100644 yarn.lock
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..44a42f0
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,42 @@
+/* eslint-env node */
+require('@rushstack/eslint-patch/modern-module-resolution')
+
+module.exports = {
+ root: true,
+ ignorePatterns: ['/auto-imports.d.ts', '/components.d.ts'],
+ extends: [
+ 'plugin:vue/vue3-essential',
+ 'eslint:recommended',
+ '@vue/eslint-config-typescript/recommended',
+ '@vue/eslint-config-prettier',
+ './.eslintrc-auto-import.json'
+ ],
+ rules: {
+ 'prettier/prettier': [
+ 'warn',
+ {
+ semi: false,
+ singleQuote: true,
+ printWidth: 100,
+ proseWrap: 'preserve',
+ bracketSameLine: false,
+ endOfLine: 'lf',
+ tabWidth: 4,
+ useTabs: false,
+ trailingComma: 'none'
+ }
+ ],
+ 'vue/multi-word-component-names': 'off',
+ '@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/ban-ts-comment': 'off',
+ 'no-undef': 'off',
+ 'vue/prefer-import-from-vue': 'off',
+ 'no-prototype-builtins': 'off',
+ 'prefer-spread': 'off',
+ '@typescript-eslint/no-non-null-assertion': 'off',
+ '@typescript-eslint/no-non-null-asserted-optional-chain': 'off'
+ },
+ globals: {
+ module: 'readonly'
+ }
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4694735
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,35 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+# unplugin-auto-import
+auto-imports.d.ts
+components.d.ts
+.eslintrc-auto-import.json
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+# .env
+.env.development
+.env.production
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..077a568
--- /dev/null
+++ b/README.md
@@ -0,0 +1,46 @@
+# vue-project
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Type Support for `.vue` Imports in TS
+
+TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
+
+If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
+
+1. Disable the built-in TypeScript Extension
+ 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
+ 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
+2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Type-Check, Compile and Minify for Production
+
+```sh
+npm run build
+```
+
+### Lint with [ESLint](https://eslint.org/)
+
+```sh
+npm run lint
+```
diff --git a/global.d.ts b/global.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/global.d.ts
@@ -0,0 +1 @@
+///
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..71d3dbb
--- /dev/null
+++ b/index.html
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+ 后台管理系统
+
+
+
+
+
+
+
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..277d005
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,8743 @@
+{
+ "name": "vue-project",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "vue-project",
+ "version": "0.0.0",
+ "license": "MIT",
+ "dependencies": {
+ "@element-plus/icons-vue": "^2.0.6",
+ "@highlightjs/vue-plugin": "^2.1.0",
+ "@wangeditor/editor": "^5.1.12",
+ "@wangeditor/editor-for-vue": "^5.1.12",
+ "axios": "^0.27.2",
+ "css-color-function": "^1.3.3",
+ "echarts": "^5.3.3",
+ "element-plus": "^2.2.9",
+ "highlight.js": "^11.6.0",
+ "mavon-editor": "3.0.1",
+ "nprogress": "^0.2.0",
+ "pinia": "^2.0.14",
+ "vditor": "^3.9.9",
+ "vue": "^3.2.37",
+ "vue-clipboard3": "^2.0.0",
+ "vue-echarts": "^6.2.3",
+ "vue-router": "^4.0.16",
+ "vue3-video-play": "^1.3.2",
+ "vuedraggable": "^4.1.0"
+ },
+ "devDependencies": {
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@tailwindcss/line-clamp": "^0.4.2",
+ "@types/lodash-es": "^4.17.6",
+ "@types/node": "^16.11.41",
+ "@types/nprogress": "^0.2.0",
+ "@vitejs/plugin-legacy": "^2.3.1",
+ "@vitejs/plugin-vue": "^3.0.0",
+ "@vitejs/plugin-vue-jsx": "^2.0.0",
+ "@vue/eslint-config-prettier": "^7.0.0",
+ "@vue/eslint-config-typescript": "^11.0.0",
+ "@vue/tsconfig": "^0.1.3",
+ "autoprefixer": "^10.4.7",
+ "consola": "^2.15.3",
+ "eslint": "^8.5.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "execa": "^6.1.0",
+ "fs-extra": "^10.1.0",
+ "postcss": "^8.4.14",
+ "prettier": "^2.5.1",
+ "sass": "^1.53.0",
+ "tailwindcss": "^3.0.24",
+ "terser": "^5.15.1",
+ "typescript": "~4.7.4",
+ "unplugin-auto-import": "^0.9.2",
+ "unplugin-vue-components": "^0.19.9",
+ "vite": "^3.0.0",
+ "vite-plugin-style-import": "^2.0.0",
+ "vite-plugin-svg-icons": "^2.0.1",
+ "vite-plugin-vue-setup-extend": "^0.4.0",
+ "vue-tsc": "^0.38.1"
+ }
+ },
+ "node_modules/@aashutoshrathi/word-wrap": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
+ "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/@alloc/quick-lru": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@antfu/utils": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-0.5.2.tgz",
+ "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz",
+ "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/highlight": "^7.23.4",
+ "chalk": "^2.4.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz",
+ "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz",
+ "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==",
+ "dev": true,
+ "dependencies": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-compilation-targets": "^7.23.6",
+ "@babel/helper-module-transforms": "^7.23.3",
+ "@babel/helpers": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
+ "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.6",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz",
+ "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.23.5",
+ "@babel/helper-validator-option": "^7.23.5",
+ "browserslist": "^4.22.2",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.23.10",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
+ "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-member-expression-to-functions": "^7.23.0",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.20",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-environment-visitor": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
+ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-function-name": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
+ "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.23.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
+ "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.23.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.15"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz",
+ "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.20"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
+ "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "dependencies": {
+ "@babel/types": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
+ "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.22.20",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+ "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.23.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz",
+ "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz",
+ "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/template": "^7.23.9",
+ "@babel/traverse": "^7.23.9",
+ "@babel/types": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/highlight": {
+ "version": "7.23.4",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz",
+ "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
+ "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz",
+ "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.23.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz",
+ "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz",
+ "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.23.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-typescript": "^7.23.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/runtime": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
+ "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
+ "node_modules/@babel/standalone": {
+ "version": "7.23.10",
+ "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.23.10.tgz",
+ "integrity": "sha512-xqWviI/pt1Zb/d+6ilWa5IDL2mkDzsBnlHbreqnfyP3/QB/ofQ1bNVcHj8YQX154Rf/xZKR6y0s1ydVF3nAS8g==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
+ "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/parser": "^7.23.9",
+ "@babel/types": "^7.23.9"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
+ "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/generator": "^7.23.6",
+ "@babel/helper-environment-visitor": "^7.22.20",
+ "@babel/helper-function-name": "^7.23.0",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.23.9",
+ "@babel/types": "^7.23.9",
+ "debug": "^4.3.1",
+ "globals": "^11.1.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.23.9",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
+ "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.23.4",
+ "@babel/helper-validator-identifier": "^7.22.20",
+ "to-fast-properties": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@ctrl/tinycolor": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+ "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@element-plus/icons-vue": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz",
+ "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==",
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz",
+ "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz",
+ "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
+ "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "dev": true,
+ "dependencies": {
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz",
+ "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
+ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@floating-ui/core": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
+ "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
+ "dependencies": {
+ "@floating-ui/utils": "^0.2.1"
+ }
+ },
+ "node_modules/@floating-ui/dom": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz",
+ "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==",
+ "dependencies": {
+ "@floating-ui/core": "^1.6.0",
+ "@floating-ui/utils": "^0.2.1"
+ }
+ },
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
+ },
+ "node_modules/@highlightjs/vue-plugin": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz",
+ "integrity": "sha512-E+bmk4ncca+hBEYRV2a+1aIzIV0VSY/e5ArjpuSN9IO7wBJrzUE2u4ESCwrbQD7sAy+jWQjkV5qCCWgc+pu7CQ==",
+ "peerDependencies": {
+ "highlight.js": "^11.0.1",
+ "vue": "^3"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.11.14",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
+ "dev": true,
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==",
+ "dev": true
+ },
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "dev": true,
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/source-map": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz",
+ "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.22",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
+ "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/@popperjs/core": {
+ "name": "@sxzz/popperjs-es",
+ "version": "2.11.7",
+ "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+ "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz",
+ "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==",
+ "dev": true,
+ "dependencies": {
+ "estree-walker": "^2.0.1",
+ "picomatch": "^2.2.2"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
+ "node_modules/@rushstack/eslint-patch": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.7.2.tgz",
+ "integrity": "sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==",
+ "dev": true
+ },
+ "node_modules/@tailwindcss/line-clamp": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.4.4.tgz",
+ "integrity": "sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==",
+ "dev": true,
+ "peerDependencies": {
+ "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1"
+ }
+ },
+ "node_modules/@transloadit/prettier-bytes": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
+ "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA=="
+ },
+ "node_modules/@trysound/sax": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
+ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/@types/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@types/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ=="
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true
+ },
+ "node_modules/@types/lodash": {
+ "version": "4.14.202",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz",
+ "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ=="
+ },
+ "node_modules/@types/lodash-es": {
+ "version": "4.17.12",
+ "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz",
+ "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==",
+ "dependencies": {
+ "@types/lodash": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "16.18.79",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.79.tgz",
+ "integrity": "sha512-Qd7jdLR5zmnIyMhfDrfPqN5tUCvreVpP3Qrf2oSM+F7SNzlb/MwHISGUkdFHtevfkPJ3iAGyeQI/jsbh9EStgQ==",
+ "dev": true
+ },
+ "node_modules/@types/nprogress": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz",
+ "integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==",
+ "dev": true
+ },
+ "node_modules/@types/semver": {
+ "version": "7.5.6",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz",
+ "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==",
+ "dev": true
+ },
+ "node_modules/@types/svgo": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-2.6.4.tgz",
+ "integrity": "sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/web-bluetooth": {
+ "version": "0.0.16",
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+ "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz",
+ "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.4.0",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/type-utils": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "natural-compare-lite": "^1.4.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^5.0.0",
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz",
+ "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz",
+ "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz",
+ "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "@typescript-eslint/utils": "5.62.0",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz",
+ "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz",
+ "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/visitor-keys": "5.62.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz",
+ "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.62.0",
+ "@typescript-eslint/types": "5.62.0",
+ "@typescript-eslint/typescript-estree": "5.62.0",
+ "eslint-scope": "^5.1.1",
+ "semver": "^7.3.7"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "5.62.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz",
+ "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/types": "5.62.0",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
+ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
+ "dev": true
+ },
+ "node_modules/@uppy/companion-client": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-2.2.2.tgz",
+ "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
+ "dependencies": {
+ "@uppy/utils": "^4.1.2",
+ "namespace-emitter": "^2.0.1"
+ }
+ },
+ "node_modules/@uppy/core": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/@uppy/core/-/core-2.3.4.tgz",
+ "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
+ "dependencies": {
+ "@transloadit/prettier-bytes": "0.0.7",
+ "@uppy/store-default": "^2.1.1",
+ "@uppy/utils": "^4.1.3",
+ "lodash.throttle": "^4.1.1",
+ "mime-match": "^1.0.2",
+ "namespace-emitter": "^2.0.1",
+ "nanoid": "^3.1.25",
+ "preact": "^10.5.13"
+ }
+ },
+ "node_modules/@uppy/store-default": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-2.1.1.tgz",
+ "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ=="
+ },
+ "node_modules/@uppy/utils": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-4.1.3.tgz",
+ "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
+ "dependencies": {
+ "lodash.throttle": "^4.1.1"
+ }
+ },
+ "node_modules/@uppy/xhr-upload": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
+ "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
+ "dependencies": {
+ "@uppy/companion-client": "^2.2.2",
+ "@uppy/utils": "^4.1.2",
+ "nanoid": "^3.1.25"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.3.3"
+ }
+ },
+ "node_modules/@vitejs/plugin-legacy": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-2.3.1.tgz",
+ "integrity": "sha512-J5KaGBlSt2tEYPVjM/C8dA6DkRzkFkbPe+Xb4IX5G+XOV5OGbVAfkMjKywdrkO3gGynO8S98i71Lmsff4cWkCQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/standalone": "^7.20.0",
+ "core-js": "^3.26.0",
+ "magic-string": "^0.26.7",
+ "regenerator-runtime": "^0.13.10",
+ "systemjs": "^6.13.0"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "terser": "^5.4.0",
+ "vite": "^3.0.0"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz",
+ "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==",
+ "dev": true,
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0",
+ "vue": "^3.2.25"
+ }
+ },
+ "node_modules/@vitejs/plugin-vue-jsx": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-2.1.1.tgz",
+ "integrity": "sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==",
+ "dev": true,
+ "dependencies": {
+ "@babel/core": "^7.19.6",
+ "@babel/plugin-transform-typescript": "^7.20.0",
+ "@vue/babel-plugin-jsx": "^1.1.1"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "vite": "^3.0.0",
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/@volar/code-gen": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.38.9.tgz",
+ "integrity": "sha512-n6LClucfA+37rQeskvh9vDoZV1VvCVNy++MAPKj2dT4FT+Fbmty/SDQqnsEBtdEe6E3OQctFvA/IcKsx3Mns0A==",
+ "dev": true,
+ "dependencies": {
+ "@volar/source-map": "0.38.9"
+ }
+ },
+ "node_modules/@volar/source-map": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-0.38.9.tgz",
+ "integrity": "sha512-ba0UFoHDYry+vwKdgkWJ6xlQT+8TFtZg1zj9tSjj4PykW1JZDuM0xplMotLun4h3YOoYfY9K1huY5gvxmrNLIw==",
+ "dev": true
+ },
+ "node_modules/@volar/vue-code-gen": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-code-gen/-/vue-code-gen-0.38.9.tgz",
+ "integrity": "sha512-tzj7AoarFBKl7e41MR006ncrEmNPHALuk8aG4WdDIaG387X5//5KhWC5Ff3ZfB2InGSeNT+CVUd74M0gS20rjA==",
+ "deprecated": "WARNING: This project has been renamed to @vue/language-core. Install using @vue/language-core instead.",
+ "dev": true,
+ "dependencies": {
+ "@volar/code-gen": "0.38.9",
+ "@volar/source-map": "0.38.9",
+ "@vue/compiler-core": "^3.2.37",
+ "@vue/compiler-dom": "^3.2.37",
+ "@vue/shared": "^3.2.37"
+ }
+ },
+ "node_modules/@volar/vue-typescript": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.38.9.tgz",
+ "integrity": "sha512-iJMQGU91ADi98u8V1vXd2UBmELDAaeSP0ZJaFjwosClQdKlJQYc6MlxxKfXBZisHqfbhdtrGRyaryulnYtliZw==",
+ "deprecated": "WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.",
+ "dev": true,
+ "dependencies": {
+ "@volar/code-gen": "0.38.9",
+ "@volar/source-map": "0.38.9",
+ "@volar/vue-code-gen": "0.38.9",
+ "@vue/compiler-sfc": "^3.2.37",
+ "@vue/reactivity": "^3.2.37"
+ }
+ },
+ "node_modules/@vue/babel-helper-vue-transform-on": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.1.tgz",
+ "integrity": "sha512-jtEXim+pfyHWwvheYwUwSXm43KwQo8nhOBDyjrUITV6X2tB7lJm6n/+4sqR8137UVZZul5hBzWHdZ2uStYpyRQ==",
+ "dev": true
+ },
+ "node_modules/@vue/babel-plugin-jsx": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.1.tgz",
+ "integrity": "sha512-Yy9qGktktXhB39QE99So/BO2Uwm/ZG+gpL9vMg51ijRRbINvgbuhyJEi4WYmGRMx/MSTfK0xjgZ3/MyY+iLCEg==",
+ "dev": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.23.3",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.23.7",
+ "@babel/types": "^7.23.6",
+ "@vue/babel-helper-vue-transform-on": "1.2.1",
+ "@vue/babel-plugin-resolve-type": "1.2.1",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/babel-plugin-resolve-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.1.tgz",
+ "integrity": "sha512-IOtnI7pHunUzHS/y+EG/yPABIAp0VN8QhQ0UCS09jeMVxgAnI9qdOzO85RXdQGxq+aWCdv8/+k3W0aYO6j/8fQ==",
+ "dev": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.23.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-sfc": "^3.4.15"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@vue/compiler-core": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.15.tgz",
+ "integrity": "sha512-XcJQVOaxTKCnth1vCxEChteGuwG6wqnUHxAm1DO3gCz0+uXKaJNx8/digSz4dLALCy8n2lKq24jSUs8segoqIw==",
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/shared": "3.4.15",
+ "entities": "^4.5.0",
+ "estree-walker": "^2.0.2",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-dom": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.15.tgz",
+ "integrity": "sha512-wox0aasVV74zoXyblarOM3AZQz/Z+OunYcIHe1OsGclCHt8RsRm04DObjefaI82u6XDzv+qGWZ24tIsRAIi5MQ==",
+ "dependencies": {
+ "@vue/compiler-core": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/compiler-sfc": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.15.tgz",
+ "integrity": "sha512-LCn5M6QpkpFsh3GQvs2mJUOAlBQcCco8D60Bcqmf3O3w5a+KWS5GvYbrrJBkgvL1BDnTp+e8q0lXCLgHhKguBA==",
+ "dependencies": {
+ "@babel/parser": "^7.23.6",
+ "@vue/compiler-core": "3.4.15",
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/compiler-ssr": "3.4.15",
+ "@vue/shared": "3.4.15",
+ "estree-walker": "^2.0.2",
+ "magic-string": "^0.30.5",
+ "postcss": "^8.4.33",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "node_modules/@vue/compiler-sfc/node_modules/magic-string": {
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz",
+ "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.4.15"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@vue/compiler-ssr": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.15.tgz",
+ "integrity": "sha512-1jdeQyiGznr8gjFDadVmOJqZiLNSsMa5ZgqavkPZ8O2wjHv0tVuAEsw5hTdUoUW4232vpBbL/wJhzVW/JwY1Uw==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/devtools-api": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+ },
+ "node_modules/@vue/eslint-config-prettier": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz",
+ "integrity": "sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==",
+ "dev": true,
+ "dependencies": {
+ "eslint-config-prettier": "^8.3.0",
+ "eslint-plugin-prettier": "^4.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">= 7.28.0",
+ "prettier": ">= 2.0.0"
+ }
+ },
+ "node_modules/@vue/eslint-config-typescript": {
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz",
+ "integrity": "sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==",
+ "dev": true,
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "^5.59.1",
+ "@typescript-eslint/parser": "^5.59.1",
+ "vue-eslint-parser": "^9.1.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vue/reactivity": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.15.tgz",
+ "integrity": "sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==",
+ "dependencies": {
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/runtime-core": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.15.tgz",
+ "integrity": "sha512-6E3by5m6v1AkW0McCeAyhHTw+3y17YCOKG0U0HDKDscV4Hs0kgNT5G+GCHak16jKgcCDHpI9xe5NKb8sdLCLdw==",
+ "dependencies": {
+ "@vue/reactivity": "3.4.15",
+ "@vue/shared": "3.4.15"
+ }
+ },
+ "node_modules/@vue/runtime-dom": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.15.tgz",
+ "integrity": "sha512-EVW8D6vfFVq3V/yDKNPBFkZKGMFSvZrUQmx196o/v2tHKdwWdiZjYUBS+0Ez3+ohRyF8Njwy/6FH5gYJ75liUw==",
+ "dependencies": {
+ "@vue/runtime-core": "3.4.15",
+ "@vue/shared": "3.4.15",
+ "csstype": "^3.1.3"
+ }
+ },
+ "node_modules/@vue/server-renderer": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.15.tgz",
+ "integrity": "sha512-3HYzaidu9cHjrT+qGUuDhFYvF/j643bHC6uUN9BgM11DVy+pM6ATsG6uPBLnkwOgs7BpJABReLmpL3ZPAsUaqw==",
+ "dependencies": {
+ "@vue/compiler-ssr": "3.4.15",
+ "@vue/shared": "3.4.15"
+ },
+ "peerDependencies": {
+ "vue": "3.4.15"
+ }
+ },
+ "node_modules/@vue/shared": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.15.tgz",
+ "integrity": "sha512-KzfPTxVaWfB+eGcGdbSf4CWdaXcGDqckoeXUh7SB3fZdEtzPCK2Vq9B/lRRL3yutax/LWITz+SwvgyOxz5V75g=="
+ },
+ "node_modules/@vue/tsconfig": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.1.3.tgz",
+ "integrity": "sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==",
+ "dev": true,
+ "peerDependencies": {
+ "@types/node": "*"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/core": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+ "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+ "dependencies": {
+ "@types/web-bluetooth": "^0.0.16",
+ "@vueuse/metadata": "9.13.0",
+ "@vueuse/shared": "9.13.0",
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/core/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vueuse/metadata": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+ "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared": {
+ "version": "9.13.0",
+ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+ "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+ "dependencies": {
+ "vue-demi": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/@vueuse/shared/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@wangeditor/basic-modules": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
+ "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
+ "dependencies": {
+ "is-url": "^1.2.4"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.throttle": "^4.1.1",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/code-highlight": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
+ "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
+ "dependencies": {
+ "prismjs": "^1.23.0"
+ },
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/core": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmjs.org/@wangeditor/core/-/core-1.1.19.tgz",
+ "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
+ "dependencies": {
+ "@types/event-emitter": "^0.3.3",
+ "event-emitter": "^0.3.5",
+ "html-void-elements": "^2.0.0",
+ "i18next": "^20.4.0",
+ "scroll-into-view-if-needed": "^2.2.28",
+ "slate-history": "^0.66.0"
+ },
+ "peerDependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "dom7": "^3.0.0",
+ "is-hotkey": "^0.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.foreach": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "lodash.toarray": "^4.4.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor": {
+ "version": "5.1.23",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor/-/editor-5.1.23.tgz",
+ "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
+ "dependencies": {
+ "@uppy/core": "^2.1.1",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "^1.1.7",
+ "@wangeditor/code-highlight": "^1.0.3",
+ "@wangeditor/core": "^1.1.19",
+ "@wangeditor/list-module": "^1.0.5",
+ "@wangeditor/table-module": "^1.1.4",
+ "@wangeditor/upload-image-module": "^1.0.2",
+ "@wangeditor/video-module": "^1.1.4",
+ "dom7": "^3.0.0",
+ "is-hotkey": "^0.2.0",
+ "lodash.camelcase": "^4.3.0",
+ "lodash.clonedeep": "^4.5.0",
+ "lodash.debounce": "^4.0.8",
+ "lodash.foreach": "^4.5.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "lodash.toarray": "^4.4.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/editor-for-vue": {
+ "version": "5.1.12",
+ "resolved": "https://registry.npmjs.org/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
+ "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==",
+ "peerDependencies": {
+ "@wangeditor/editor": ">=5.1.0",
+ "vue": "^3.0.5"
+ }
+ },
+ "node_modules/@wangeditor/list-module": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@wangeditor/list-module/-/list-module-1.0.5.tgz",
+ "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ==",
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/table-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/table-module/-/table-module-1.1.4.tgz",
+ "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w==",
+ "peerDependencies": {
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.isequal": "^4.5.0",
+ "lodash.throttle": "^4.1.1",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/upload-image-module": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
+ "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA==",
+ "peerDependencies": {
+ "@uppy/core": "^2.0.3",
+ "@uppy/xhr-upload": "^2.0.3",
+ "@wangeditor/basic-modules": "1.x",
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "lodash.foreach": "^4.5.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/@wangeditor/video-module": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@wangeditor/video-module/-/video-module-1.1.4.tgz",
+ "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg==",
+ "peerDependencies": {
+ "@uppy/core": "^2.1.4",
+ "@uppy/xhr-upload": "^2.0.7",
+ "@wangeditor/core": "1.x",
+ "dom7": "^3.0.0",
+ "nanoid": "^3.2.0",
+ "slate": "^0.72.0",
+ "snabbdom": "^3.1.0"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.11.3",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
+ "dev": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
+ "dev": true
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true
+ },
+ "node_modules/arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/async-validator": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+ "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true,
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
+ "node_modules/autoprefixer": {
+ "version": "10.4.17",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz",
+ "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "browserslist": "^4.22.2",
+ "caniuse-lite": "^1.0.30001578",
+ "fraction.js": "^4.3.7",
+ "normalize-range": "^0.1.2",
+ "picocolors": "^1.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "bin": {
+ "autoprefixer": "bin/autoprefixer"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ },
+ "peerDependencies": {
+ "postcss": "^8.1.0"
+ }
+ },
+ "node_modules/axios": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
+ "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
+ "dependencies": {
+ "follow-redirects": "^1.14.9",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.1.0.tgz",
+ "integrity": "sha512-4xb6XqAEo3Z+5pEDJz33R8BZXI8FRJU+cDNLdKgDpmnz+pKKRVYLpdv+VvUAC7yUhBMj4izmyt19eCGv1QGV7A=="
+ },
+ "node_modules/base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "dependencies": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/base/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
+ "node_modules/boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/brace-expansion/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "dependencies": {
+ "fill-range": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.22.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz",
+ "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001580",
+ "electron-to-chromium": "^1.4.648",
+ "node-releases": "^2.0.14",
+ "update-browserslist-db": "^1.0.13"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "dependencies": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/cache-base/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camel-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz",
+ "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==",
+ "dev": true,
+ "dependencies": {
+ "pascal-case": "^3.1.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/camelcase-css": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001584",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001584.tgz",
+ "integrity": "sha512-LOz7CCQ9M1G7OjJOF9/mzmqmj3jE/7VOmrfw6Mgs0E8cjOsbRXQJHsPBfmBOXDskXKrHLyyW3n7kpDW/4BsfpQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ]
+ },
+ "node_modules/capital-case": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz",
+ "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/change-case": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz",
+ "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==",
+ "dev": true,
+ "dependencies": {
+ "camel-case": "^4.1.2",
+ "capital-case": "^1.0.4",
+ "constant-case": "^3.0.4",
+ "dot-case": "^3.0.4",
+ "header-case": "^2.0.4",
+ "no-case": "^3.0.4",
+ "param-case": "^3.0.4",
+ "pascal-case": "^3.1.2",
+ "path-case": "^3.0.4",
+ "sentence-case": "^3.0.4",
+ "snake-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ ],
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/class-utils/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/class-utils/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "dependencies": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "node_modules/clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "dependencies": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/color": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+ "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==",
+ "dependencies": {
+ "clone": "^1.0.2",
+ "color-convert": "^1.3.0",
+ "color-string": "^0.3.0"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "node_modules/color-string": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+ "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==",
+ "dependencies": {
+ "color-name": "^1.0.0"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/commander": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/component-emitter": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
+ "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/compute-scroll-into-view": {
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+ "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true
+ },
+ "node_modules/consola": {
+ "version": "2.15.3",
+ "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz",
+ "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==",
+ "dev": true
+ },
+ "node_modules/console": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/console/-/console-0.7.2.tgz",
+ "integrity": "sha512-+JSDwGunA4MTEgAV/4VBKwUHonP8CzJ/6GIuwPi6acKFqFfHUdSGCm89ZxZ5FfGWdZfkdgAroy5bJ5FSeN/t4g==",
+ "dev": true
+ },
+ "node_modules/constant-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz",
+ "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case": "^2.0.2"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true
+ },
+ "node_modules/copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/core-js": {
+ "version": "3.35.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.1.tgz",
+ "integrity": "sha512-IgdsbxNyMskrTFxa9lWHyMwAJU5gXOPP+1yO+K59d50VLVAIDAbs7gIv705KzALModfK3ZrSZTPNpC0PQgIZuw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/css-color-function": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/css-color-function/-/css-color-function-1.3.3.tgz",
+ "integrity": "sha512-YD/WhiRZIYgadwFJ48X5QmlOQ/w8Me4yQI6/eSUoiE8spIFp+S/rGpsAH48iyq/0ZWkCDWqVQKUlQmUzn7BQ9w==",
+ "dependencies": {
+ "balanced-match": "0.1.0",
+ "color": "^0.11.0",
+ "debug": "^3.1.0",
+ "rgb": "~0.1.0"
+ }
+ },
+ "node_modules/css-color-function/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
+ "node_modules/css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/css-select/node_modules/dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/css-select/node_modules/domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.2.0"
+ },
+ "engines": {
+ "node": ">= 4"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domhandler?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/domutils?sponsor=1"
+ }
+ },
+ "node_modules/css-select/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/css-tree": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz",
+ "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==",
+ "dev": true,
+ "dependencies": {
+ "mdn-data": "2.0.14",
+ "source-map": "^0.6.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/fb55"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true,
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cssfilter": {
+ "version": "0.0.10",
+ "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz",
+ "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw=="
+ },
+ "node_modules/csso": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz",
+ "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==",
+ "dev": true,
+ "dependencies": {
+ "css-tree": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/csstype": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
+ },
+ "node_modules/d": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz",
+ "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==",
+ "dependencies": {
+ "es5-ext": "^0.10.50",
+ "type": "^1.0.1"
+ }
+ },
+ "node_modules/dayjs": {
+ "version": "1.11.10",
+ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "node_modules/define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ },
+ "node_modules/didyoumean": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
+ "dev": true
+ },
+ "node_modules/diff-match-patch": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
+ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/dlv": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
+ "dev": true
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ }
+ },
+ "node_modules/dom-serializer/node_modules/domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fb55"
+ }
+ ]
+ },
+ "node_modules/dom-serializer/node_modules/entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/dom7": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dom7/-/dom7-3.0.0.tgz",
+ "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
+ "dependencies": {
+ "ssr-window": "^3.0.0-alpha.1"
+ }
+ },
+ "node_modules/domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "node_modules/domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "dependencies": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "node_modules/dot-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz",
+ "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true
+ },
+ "node_modules/echarts": {
+ "version": "5.4.3",
+ "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz",
+ "integrity": "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==",
+ "dependencies": {
+ "tslib": "2.3.0",
+ "zrender": "5.4.4"
+ }
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.4.657",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.657.tgz",
+ "integrity": "sha512-On2ymeleg6QbRuDk7wNgDdXtNqlJLM2w4Agx1D/RiTmItiL+a9oq5p7HUa2ZtkAtGBe/kil2dq/7rPfkbe0r5w==",
+ "dev": true
+ },
+ "node_modules/element-plus": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.5.5.tgz",
+ "integrity": "sha512-yGU/MruLOWI0ImQPFCyFM4cXtHtILJNAi0hhLImcxjRukjgQLYNkvcvbwqNgBUt808KSeKF9MyxENFyBQLTg+Q==",
+ "dependencies": {
+ "@ctrl/tinycolor": "^3.4.1",
+ "@element-plus/icons-vue": "^2.3.1",
+ "@floating-ui/dom": "^1.0.1",
+ "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+ "@types/lodash": "^4.14.182",
+ "@types/lodash-es": "^4.17.6",
+ "@vueuse/core": "^9.1.0",
+ "async-validator": "^4.2.5",
+ "dayjs": "^1.11.3",
+ "escape-html": "^1.0.3",
+ "lodash": "^4.17.21",
+ "lodash-es": "^4.17.21",
+ "lodash-unified": "^1.0.2",
+ "memoize-one": "^6.0.0",
+ "normalize-wheel-es": "^1.2.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true
+ },
+ "node_modules/emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
+ "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==",
+ "dev": true
+ },
+ "node_modules/es5-ext": {
+ "version": "0.10.62",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz",
+ "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz",
+ "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==",
+ "dependencies": {
+ "d": "^1.0.1",
+ "ext": "^1.1.2"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz",
+ "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==",
+ "dev": true,
+ "hasInstallScript": true,
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "optionalDependencies": {
+ "@esbuild/android-arm": "0.15.18",
+ "@esbuild/linux-loong64": "0.15.18",
+ "esbuild-android-64": "0.15.18",
+ "esbuild-android-arm64": "0.15.18",
+ "esbuild-darwin-64": "0.15.18",
+ "esbuild-darwin-arm64": "0.15.18",
+ "esbuild-freebsd-64": "0.15.18",
+ "esbuild-freebsd-arm64": "0.15.18",
+ "esbuild-linux-32": "0.15.18",
+ "esbuild-linux-64": "0.15.18",
+ "esbuild-linux-arm": "0.15.18",
+ "esbuild-linux-arm64": "0.15.18",
+ "esbuild-linux-mips64le": "0.15.18",
+ "esbuild-linux-ppc64le": "0.15.18",
+ "esbuild-linux-riscv64": "0.15.18",
+ "esbuild-linux-s390x": "0.15.18",
+ "esbuild-netbsd-64": "0.15.18",
+ "esbuild-openbsd-64": "0.15.18",
+ "esbuild-sunos-64": "0.15.18",
+ "esbuild-windows-32": "0.15.18",
+ "esbuild-windows-64": "0.15.18",
+ "esbuild-windows-arm64": "0.15.18"
+ }
+ },
+ "node_modules/esbuild-android-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz",
+ "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-android-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz",
+ "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz",
+ "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-darwin-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz",
+ "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz",
+ "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-freebsd-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz",
+ "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-32": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz",
+ "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz",
+ "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz",
+ "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz",
+ "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-mips64le": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz",
+ "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-ppc64le": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz",
+ "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-riscv64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz",
+ "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-linux-s390x": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz",
+ "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-netbsd-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz",
+ "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-openbsd-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz",
+ "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-sunos-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz",
+ "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-32": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz",
+ "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz",
+ "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/esbuild-windows-arm64": {
+ "version": "0.15.18",
+ "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz",
+ "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.56.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
+ "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.56.0",
+ "@humanwhocodes/config-array": "^0.11.13",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-config-prettier": {
+ "version": "8.10.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz",
+ "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==",
+ "dev": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
+ "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "dev": true,
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.28.0",
+ "prettier": ">=2.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-vue": {
+ "version": "9.21.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.21.1.tgz",
+ "integrity": "sha512-XVtI7z39yOVBFJyi8Ljbn7kY9yHzznKXL02qQYn+ta63Iy4A9JFBw6o4OSB9hyD2++tVT+su9kQqetUyCCwhjw==",
+ "dev": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "natural-compare": "^1.4.0",
+ "nth-check": "^2.1.1",
+ "postcss-selector-parser": "^6.0.13",
+ "semver": "^7.5.4",
+ "vue-eslint-parser": "^9.4.2",
+ "xml-name-validator": "^4.0.0"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/eslint-plugin-vue/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/eslint/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/eslint/node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/eslint/node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/eslint/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esquery/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esrecurse/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
+ "node_modules/execa": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
+ "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.1",
+ "human-signals": "^3.0.1",
+ "is-stream": "^3.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^5.1.0",
+ "onetime": "^6.0.0",
+ "signal-exit": "^3.0.7",
+ "strip-final-newline": "^3.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/expand-brackets/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
+ "node_modules/ext/node_modules/type": {
+ "version": "2.7.2",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz",
+ "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw=="
+ },
+ "node_modules/extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "dependencies": {
+ "is-extendable": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "dependencies": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "node_modules/fastq": {
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+ "dev": true,
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.2.9",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
+ "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "dev": true
+ },
+ "node_modules/follow-redirects": {
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
+ "dev": true,
+ "dependencies": {
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/foreground-child/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fraction.js": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "type": "patreon",
+ "url": "https://github.com/sponsors/rawify"
+ }
+ },
+ "node_modules/fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "dependencies": {
+ "map-cache": "^0.2.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
+ "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "dev": true,
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "dependencies": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "dev": true
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true
+ },
+ "node_modules/has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-ansi/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/has-values/node_modules/kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
+ "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+ "dev": true,
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true,
+ "bin": {
+ "he": "bin/he"
+ }
+ },
+ "node_modules/header-case": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz",
+ "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==",
+ "dev": true,
+ "dependencies": {
+ "capital-case": "^1.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/highlight.js": {
+ "version": "11.9.0",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz",
+ "integrity": "sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/hls.js": {
+ "version": "1.5.3",
+ "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.5.3.tgz",
+ "integrity": "sha512-gonnYpZ5bxuVdwpcbzfylUlNZ8917LjACUjpWXiaeo8zPAIDfPcMZjEQPy6CeeRSJbcg1P+aVqwxrXr2J+SeUg=="
+ },
+ "node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/html-void-elements": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
+ "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
+ "node_modules/htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "dependencies": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "node_modules/htmlparser2/node_modules/entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "node_modules/human-signals": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz",
+ "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/i18next": {
+ "version": "20.6.1",
+ "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
+ "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
+ "dependencies": {
+ "@babel/runtime": "^7.12.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true,
+ "bin": {
+ "image-size": "bin/image-size.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/immer": {
+ "version": "9.0.21",
+ "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz",
+ "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/immer"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz",
+ "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==",
+ "dev": true
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/is-accessor-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz",
+ "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "node_modules/is-core-module": {
+ "version": "2.13.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
+ "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-descriptor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz",
+ "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==",
+ "dev": true,
+ "dependencies": {
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-descriptor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz",
+ "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-hotkey": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
+ "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
+ "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
+ "dev": true,
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
+ },
+ "node_modules/is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "dev": true
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true
+ },
+ "node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
+ "dev": true,
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jiti": {
+ "version": "1.21.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
+ "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
+ "dev": true,
+ "bin": {
+ "jiti": "bin/jiti.js"
+ }
+ },
+ "node_modules/js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
+ "dev": true
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+ "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "dev": true,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true,
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz",
+ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==",
+ "dev": true
+ },
+ "node_modules/jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lilconfig": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "node_modules/loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "dev": true,
+ "dependencies": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/loader-utils/node_modules/json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.0"
+ },
+ "bin": {
+ "json5": "lib/cli.js"
+ }
+ },
+ "node_modules/local-pkg": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+ "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "node_modules/lodash-es": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+ },
+ "node_modules/lodash-unified": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+ "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+ "peerDependencies": {
+ "@types/lodash-es": "*",
+ "lodash": "*",
+ "lodash-es": "*"
+ }
+ },
+ "node_modules/lodash.camelcase": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+ },
+ "node_modules/lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+ },
+ "node_modules/lodash.foreach": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+ "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
+ },
+ "node_modules/lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
+ },
+ "node_modules/lodash.toarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+ "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw=="
+ },
+ "node_modules/lower-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz",
+ "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/magic-string": {
+ "version": "0.26.7",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz",
+ "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "dependencies": {
+ "object-visit": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mavon-editor": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mavon-editor/-/mavon-editor-3.0.1.tgz",
+ "integrity": "sha512-973cYCwv+AB+fcecsU6Ua6UXATxDMaY0Q7QzKQ/GmRW1sg+3DolZDnCGXth7XHDgrmqKTO57N42fVYujt0wfFw==",
+ "dependencies": {
+ "xss": "^1.0.10"
+ }
+ },
+ "node_modules/mdn-data": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz",
+ "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==",
+ "dev": true
+ },
+ "node_modules/memoize-one": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+ "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+ },
+ "node_modules/merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-1.0.1.tgz",
+ "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-obj": "^1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "dependencies": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz",
+ "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
+ "dependencies": {
+ "wildcard": "^1.1.0"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
+ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "dependencies": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mixin-deep/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/mlly": {
+ "version": "0.5.17",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-0.5.17.tgz",
+ "integrity": "sha512-Rn+ai4G+CQXptDFSRNnChEgNr+xAEauYhwRvpPl/UHStTlgkIftplgJRsA2OXPuoUn86K4XAjB26+x5CEvVb6A==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.1",
+ "pathe": "^1.0.0",
+ "pkg-types": "^1.0.0",
+ "ufo": "^1.0.0"
+ }
+ },
+ "node_modules/mlly/node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ },
+ "node_modules/mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "node_modules/namespace-emitter": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
+ "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g=="
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "bin": {
+ "nanoid": "bin/nanoid.cjs"
+ },
+ "engines": {
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ }
+ },
+ "node_modules/nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/nanomatch/node_modules/kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "node_modules/natural-compare-lite": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
+ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
+ "dev": true
+ },
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
+ },
+ "node_modules/no-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
+ "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==",
+ "dev": true,
+ "dependencies": {
+ "lower-case": "^2.0.2",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.14",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
+ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "dev": true
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/normalize-wheel-es": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+ "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+ },
+ "node_modules/npm-run-path": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz",
+ "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==",
+ "dev": true,
+ "dependencies": {
+ "path-key": "^4.0.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/nprogress": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+ },
+ "node_modules/nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "dependencies": {
+ "boolbase": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/nth-check?sponsor=1"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "dependencies": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-copy/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object-copy/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-hash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-visit/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object.pick/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
+ "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
+ "dev": true,
+ "dependencies": {
+ "mimic-fn": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.3",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
+ "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "dev": true,
+ "dependencies": {
+ "@aashutoshrathi/word-wrap": "^1.2.3",
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/param-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz",
+ "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pascal-case": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz",
+ "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
+ "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true
+ },
+ "node_modules/path-scurry": {
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^9.1.1 || ^10.0.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
+ "dev": true,
+ "engines": {
+ "node": "14 || >=16.14"
+ }
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pathe": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.3.9.tgz",
+ "integrity": "sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==",
+ "dev": true
+ },
+ "node_modules/picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinia": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+ "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0",
+ "vue-demi": ">=0.14.5"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.4.0",
+ "typescript": ">=4.4.4",
+ "vue": "^2.6.14 || ^3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pinia/node_modules/vue-demi": {
+ "version": "0.14.7",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
+ "integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-types": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
+ "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==",
+ "dev": true,
+ "dependencies": {
+ "jsonc-parser": "^3.2.0",
+ "mlly": "^1.2.0",
+ "pathe": "^1.1.0"
+ }
+ },
+ "node_modules/pkg-types/node_modules/mlly": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz",
+ "integrity": "sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.11.3",
+ "pathe": "^1.1.2",
+ "pkg-types": "^1.0.3",
+ "ufo": "^1.3.2"
+ }
+ },
+ "node_modules/pkg-types/node_modules/pathe": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
+ "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
+ "dev": true
+ },
+ "node_modules/posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.4.34",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz",
+ "integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "nanoid": "^3.3.7",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-import": {
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
+ "dev": true,
+ "dependencies": {
+ "postcss-value-parser": "^4.0.0",
+ "read-cache": "^1.0.0",
+ "resolve": "^1.1.7"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
+ "node_modules/postcss-js": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
+ "dev": true,
+ "dependencies": {
+ "camelcase-css": "^2.0.1"
+ },
+ "engines": {
+ "node": "^12 || ^14 || >= 16"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.21"
+ }
+ },
+ "node_modules/postcss-load-config": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "lilconfig": "^3.0.0",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ },
+ "peerDependencies": {
+ "postcss": ">=8.0.9",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "postcss": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
+ "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
+ "dev": true,
+ "engines": {
+ "node": ">=14"
+ }
+ },
+ "node_modules/postcss-nested": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
+ "dev": true,
+ "dependencies": {
+ "postcss-selector-parser": "^6.0.11"
+ },
+ "engines": {
+ "node": ">=12.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ "peerDependencies": {
+ "postcss": "^8.2.14"
+ }
+ },
+ "node_modules/postcss-prefix-selector": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz",
+ "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==",
+ "dev": true,
+ "peerDependencies": {
+ "postcss": ">4 <9"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "6.0.15",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
+ "dev": true,
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "node_modules/posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+ "dev": true,
+ "dependencies": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+ "dev": true,
+ "dependencies": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ }
+ },
+ "node_modules/posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+ "dev": true,
+ "dependencies": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "node_modules/posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.4.0.tgz",
+ "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+ "dev": true,
+ "dependencies": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "node_modules/preact": {
+ "version": "10.19.3",
+ "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.3.tgz",
+ "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/preact"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
+ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "dev": true,
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/prismjs": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz",
+ "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "dependencies": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/read-cache": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
+ "dev": true,
+ "dependencies": {
+ "pify": "^2.3.0"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "dev": true,
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "dev": true
+ },
+ "node_modules/regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/regex-not/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/resize-detector": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz",
+ "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ=="
+ },
+ "node_modules/resolve": {
+ "version": "1.22.8",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
+ "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
+ "dev": true,
+ "dependencies": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
+ "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+ "dev": true
+ },
+ "node_modules/ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true,
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rgb": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/rgb/-/rgb-0.1.0.tgz",
+ "integrity": "sha512-F49dXX73a92N09uQkfCp2QjwXpmJcn9/i9PvjmwsSIXUGqRLCf/yx5Q9gRxuLQTq248kakqQuc8GX/U/CxSqlA==",
+ "bin": {
+ "rgb": "bin/rgb"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "dev": true,
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/rollup": {
+ "version": "2.79.1",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
+ "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
+ "dev": true,
+ "bin": {
+ "rollup": "dist/bin/rollup"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "dependencies": {
+ "ret": "~0.1.10"
+ }
+ },
+ "node_modules/sass": {
+ "version": "1.70.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz",
+ "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==",
+ "dev": true,
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/scroll-into-view-if-needed": {
+ "version": "2.2.31",
+ "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+ "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+ "dependencies": {
+ "compute-scroll-into-view": "^1.0.20"
+ }
+ },
+ "node_modules/scule": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/scule/-/scule-0.2.1.tgz",
+ "integrity": "sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==",
+ "dev": true
+ },
+ "node_modules/select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/sentence-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz",
+ "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==",
+ "dev": true,
+ "dependencies": {
+ "no-case": "^3.0.4",
+ "tslib": "^2.0.3",
+ "upper-case-first": "^2.0.2"
+ }
+ },
+ "node_modules/set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/set-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/slate": {
+ "version": "0.72.8",
+ "resolved": "https://registry.npmjs.org/slate/-/slate-0.72.8.tgz",
+ "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
+ "dependencies": {
+ "immer": "^9.0.6",
+ "is-plain-object": "^5.0.0",
+ "tiny-warning": "^1.0.3"
+ }
+ },
+ "node_modules/slate-history": {
+ "version": "0.66.0",
+ "resolved": "https://registry.npmjs.org/slate-history/-/slate-history-0.66.0.tgz",
+ "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
+ "dependencies": {
+ "is-plain-object": "^5.0.0"
+ },
+ "peerDependencies": {
+ "slate": ">=0.65.3"
+ }
+ },
+ "node_modules/snabbdom": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.2.tgz",
+ "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q==",
+ "engines": {
+ "node": ">=12.17.0"
+ }
+ },
+ "node_modules/snake-case": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz",
+ "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==",
+ "dev": true,
+ "dependencies": {
+ "dot-case": "^3.0.4",
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "dependencies": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-node/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon-util/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/snapdragon/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/snapdragon/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "node_modules/snapdragon/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz",
+ "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+ "dev": true,
+ "dependencies": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+ "dev": true
+ },
+ "node_modules/sourcemap-codec": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
+ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
+ "deprecated": "Please use @jridgewell/sourcemap-codec instead",
+ "dev": true
+ },
+ "node_modules/split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/split-string/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ssr-window": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
+ "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
+ },
+ "node_modules/stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility",
+ "dev": true
+ },
+ "node_modules/static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/static-extend/node_modules/is-descriptor": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz",
+ "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==",
+ "dev": true,
+ "dependencies": {
+ "is-accessor-descriptor": "^1.0.1",
+ "is-data-descriptor": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/string-width/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/string-width/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
+ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strip-literal": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-0.4.2.tgz",
+ "integrity": "sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.8.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
+ "node_modules/sucrase": {
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "commander": "^4.0.0",
+ "glob": "^10.3.10",
+ "lines-and-columns": "^1.1.6",
+ "mz": "^2.7.0",
+ "pirates": "^4.0.1",
+ "ts-interface-checker": "^0.1.9"
+ },
+ "bin": {
+ "sucrase": "bin/sucrase",
+ "sucrase-node": "bin/sucrase-node"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/sucrase/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/sucrase/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/sucrase/node_modules/glob": {
+ "version": "10.3.10",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
+ "dev": true,
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^2.3.5",
+ "minimatch": "^9.0.1",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
+ "path-scurry": "^1.10.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sucrase/node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/svg-baker/-/svg-baker-1.7.0.tgz",
+ "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+ "dev": true,
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "dependencies": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/chalk/node_modules/supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/svg-baker/node_modules/fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "dependencies": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/is-number/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "dependencies": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/svg-baker/node_modules/source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/svg-baker/node_modules/to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "node_modules/svgo": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz",
+ "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==",
+ "dev": true,
+ "dependencies": {
+ "@trysound/sax": "0.2.0",
+ "commander": "^7.2.0",
+ "css-select": "^4.1.3",
+ "css-tree": "^1.1.3",
+ "csso": "^4.2.0",
+ "picocolors": "^1.0.0",
+ "stable": "^0.1.8"
+ },
+ "bin": {
+ "svgo": "bin/svgo"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/svgo/node_modules/commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/systemjs": {
+ "version": "6.14.3",
+ "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.14.3.tgz",
+ "integrity": "sha512-hQv45irdhXudAOr8r6SVSpJSGtogdGZUbJBRKCE5nsIS7tsxxvnIHqT4IOPWj+P+HcSzeWzHlGCGpmhPDIKe+w==",
+ "dev": true
+ },
+ "node_modules/tailwindcss": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
+ "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "dev": true,
+ "dependencies": {
+ "@alloc/quick-lru": "^5.2.0",
+ "arg": "^5.0.2",
+ "chokidar": "^3.5.3",
+ "didyoumean": "^1.2.2",
+ "dlv": "^1.1.3",
+ "fast-glob": "^3.3.0",
+ "glob-parent": "^6.0.2",
+ "is-glob": "^4.0.3",
+ "jiti": "^1.19.1",
+ "lilconfig": "^2.1.0",
+ "micromatch": "^4.0.5",
+ "normalize-path": "^3.0.0",
+ "object-hash": "^3.0.0",
+ "picocolors": "^1.0.0",
+ "postcss": "^8.4.23",
+ "postcss-import": "^15.1.0",
+ "postcss-js": "^4.0.1",
+ "postcss-load-config": "^4.0.1",
+ "postcss-nested": "^6.0.1",
+ "postcss-selector-parser": "^6.0.11",
+ "resolve": "^1.22.2",
+ "sucrase": "^3.32.0"
+ },
+ "bin": {
+ "tailwind": "lib/cli.js",
+ "tailwindcss": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/terser": {
+ "version": "5.27.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz",
+ "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==",
+ "dev": true,
+ "dependencies": {
+ "@jridgewell/source-map": "^0.3.3",
+ "acorn": "^8.8.2",
+ "commander": "^2.20.0",
+ "source-map-support": "~0.5.20"
+ },
+ "bin": {
+ "terser": "bin/terser"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/terser/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "node_modules/thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "dev": true,
+ "dependencies": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "node_modules/thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "dev": true,
+ "dependencies": {
+ "thenify": ">= 3.1.0 < 4"
+ },
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
+ "node_modules/throttle-debounce": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
+ "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ },
+ "node_modules/tiny-warning": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
+ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+ },
+ "node_modules/to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "dependencies": {
+ "kind-of": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-object-path/node_modules/kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "dependencies": {
+ "is-buffer": "^1.1.5"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "dependencies": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "dependencies": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "dependencies": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "dependencies": {
+ "is-plain-object": "^2.0.4"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "dependencies": {
+ "isobject": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/to-regex/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/traverse": {
+ "version": "0.6.8",
+ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz",
+ "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/ts-interface-checker": {
+ "version": "0.1.13",
+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
+ "dev": true
+ },
+ "node_modules/tslib": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+ },
+ "node_modules/tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^1.8.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ },
+ "peerDependencies": {
+ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
+ }
+ },
+ "node_modules/tsutils/node_modules/tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "node_modules/type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz",
+ "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg=="
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "4.7.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
+ "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+ "devOptional": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=4.2.0"
+ }
+ },
+ "node_modules/ufo": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz",
+ "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==",
+ "dev": true
+ },
+ "node_modules/unimport": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmjs.org/unimport/-/unimport-0.4.7.tgz",
+ "integrity": "sha512-V2Pbscd1VSdgWm1/OI2pjtydEOTjE7DDnHZKhpOq7bSUBc1i8+1f6PK8jI1lJ1plRDcSNr0DLtAmtU9NPkFQpw==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^4.2.1",
+ "escape-string-regexp": "^5.0.0",
+ "fast-glob": "^3.2.11",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "mlly": "^0.5.5",
+ "pathe": "^0.3.2",
+ "scule": "^0.2.1",
+ "strip-literal": "^0.4.0",
+ "unplugin": "^0.7.2"
+ }
+ },
+ "node_modules/unimport/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "dependencies": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unplugin": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-0.7.2.tgz",
+ "integrity": "sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==",
+ "dev": true,
+ "dependencies": {
+ "acorn": "^8.7.1",
+ "chokidar": "^3.5.3",
+ "webpack-sources": "^3.2.3",
+ "webpack-virtual-modules": "^0.4.4"
+ },
+ "peerDependencies": {
+ "esbuild": ">=0.13",
+ "rollup": "^2.50.0",
+ "vite": "^2.3.0 || ^3.0.0-0",
+ "webpack": "4 || 5"
+ },
+ "peerDependenciesMeta": {
+ "esbuild": {
+ "optional": true
+ },
+ "rollup": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ },
+ "webpack": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-auto-import": {
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.9.5.tgz",
+ "integrity": "sha512-CskZjMM+p/QZev7y4JgaAFrf63ui4VGS4HrDMm6VIiVjwnmQ0wPugo58GGhYa+W2Hyv6zGffYO6uYHfeVlDZDA==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.5.2",
+ "@rollup/pluginutils": "^4.2.1",
+ "local-pkg": "^0.4.2",
+ "magic-string": "^0.26.2",
+ "unimport": "^0.4.5",
+ "unplugin": "^0.7.2"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vueuse/core": "*"
+ },
+ "peerDependenciesMeta": {
+ "@vueuse/core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-vue-components": {
+ "version": "0.19.9",
+ "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.19.9.tgz",
+ "integrity": "sha512-i5mZtg85euPWZrGswFkoa9pf4WjKCP5qOjnwOyg3KOKVzFjnP3osCdrunQMjtoMKehTdz1vV6baZH8bZR4PNgg==",
+ "dev": true,
+ "dependencies": {
+ "@antfu/utils": "^0.5.2",
+ "@rollup/pluginutils": "^4.2.1",
+ "chokidar": "^3.5.3",
+ "debug": "^4.3.4",
+ "fast-glob": "^3.2.11",
+ "local-pkg": "^0.4.1",
+ "magic-string": "^0.26.2",
+ "minimatch": "^5.1.0",
+ "resolve": "^1.22.0",
+ "unplugin": "^0.7.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@babel/parser": "^7.15.8",
+ "@babel/traverse": "^7.15.4",
+ "vue": "2 || 3"
+ },
+ "peerDependenciesMeta": {
+ "@babel/parser": {
+ "optional": true
+ },
+ "@babel/traverse": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/unplugin-vue-components/node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/unplugin-vue-components/node_modules/minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "dependencies": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "dependencies": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "dependencies": {
+ "isarray": "1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/unset-value/node_modules/isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
+ "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "dependencies": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
+ "node_modules/upper-case": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz",
+ "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/upper-case-first": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz",
+ "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==",
+ "dev": true,
+ "dependencies": {
+ "tslib": "^2.0.3"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+ "dev": true
+ },
+ "node_modules/use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "dev": true
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vditor": {
+ "version": "3.9.9",
+ "resolved": "https://registry.npmjs.org/vditor/-/vditor-3.9.9.tgz",
+ "integrity": "sha512-yeUb6E//ppiN0bX85O0sDCZ7tf/b3Lz6CcR8n77mwuZWNYOmJaqG15CfSFHg21NyNFStdN54A3P/s+eq/TkwLg==",
+ "dependencies": {
+ "diff-match-patch": "^1.0.5"
+ },
+ "funding": {
+ "url": "https://ld246.com/sponsor"
+ }
+ },
+ "node_modules/vite": {
+ "version": "3.2.8",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.8.tgz",
+ "integrity": "sha512-EtQU16PLIJpAZol2cTLttNP1mX6L0SyI0pgQB1VOoWeQnMSvtiwovV3D6NcjN8CZQWWyESD2v5NGnpz5RvgOZA==",
+ "dev": true,
+ "dependencies": {
+ "esbuild": "^0.15.9",
+ "postcss": "^8.4.18",
+ "resolve": "^1.22.1",
+ "rollup": "^2.79.1"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ },
+ "peerDependencies": {
+ "@types/node": ">= 14",
+ "less": "*",
+ "sass": "*",
+ "stylus": "*",
+ "sugarss": "*",
+ "terser": "^5.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vite-plugin-style-import": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-style-import/-/vite-plugin-style-import-2.0.0.tgz",
+ "integrity": "sha512-qtoHQae5dSUQPo/rYz/8p190VU5y19rtBaeV7ryLa/AYAU/e9CG89NrN/3+k7MR8mJy/GPIu91iJ3zk9foUOSA==",
+ "dev": true,
+ "dependencies": {
+ "@rollup/pluginutils": "^4.1.2",
+ "change-case": "^4.1.2",
+ "console": "^0.7.2",
+ "es-module-lexer": "^0.9.3",
+ "fs-extra": "^10.0.0",
+ "magic-string": "^0.25.7",
+ "pathe": "^0.2.0"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-style-import/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/vite-plugin-style-import/node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "node_modules/vite-plugin-svg-icons": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-svg-icons/-/vite-plugin-svg-icons-2.0.1.tgz",
+ "integrity": "sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==",
+ "dev": true,
+ "dependencies": {
+ "@types/svgo": "^2.6.1",
+ "cors": "^2.8.5",
+ "debug": "^4.3.3",
+ "etag": "^1.8.1",
+ "fs-extra": "^10.0.0",
+ "pathe": "^0.2.0",
+ "svg-baker": "1.7.0",
+ "svgo": "^2.8.0"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-svg-icons/node_modules/pathe": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz",
+ "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
+ "dev": true
+ },
+ "node_modules/vite-plugin-vue-setup-extend": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/vite-plugin-vue-setup-extend/-/vite-plugin-vue-setup-extend-0.4.0.tgz",
+ "integrity": "sha512-WMbjPCui75fboFoUTHhdbXzu4Y/bJMv5N9QT9a7do3wNMNHHqrk+Tn2jrSJU0LS5fGl/EG+FEDBYVUeWIkDqXQ==",
+ "dev": true,
+ "dependencies": {
+ "@vue/compiler-sfc": "^3.2.29",
+ "magic-string": "^0.25.7"
+ },
+ "peerDependencies": {
+ "vite": ">=2.0.0"
+ }
+ },
+ "node_modules/vite-plugin-vue-setup-extend/node_modules/magic-string": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
+ "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
+ "dev": true,
+ "dependencies": {
+ "sourcemap-codec": "^1.4.8"
+ }
+ },
+ "node_modules/vue": {
+ "version": "3.4.15",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.15.tgz",
+ "integrity": "sha512-jC0GH4KkWLWJOEQjOpkqU1bQsBwf4R1rsFtw5GQJbjHVKWDzO6P0nWWBTmjp1xSemAioDFj1jdaK1qa3DnMQoQ==",
+ "dependencies": {
+ "@vue/compiler-dom": "3.4.15",
+ "@vue/compiler-sfc": "3.4.15",
+ "@vue/runtime-dom": "3.4.15",
+ "@vue/server-renderer": "3.4.15",
+ "@vue/shared": "3.4.15"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-clipboard3": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz",
+ "integrity": "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==",
+ "dependencies": {
+ "clipboard": "^2.0.6"
+ }
+ },
+ "node_modules/vue-echarts": {
+ "version": "6.6.8",
+ "resolved": "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.6.8.tgz",
+ "integrity": "sha512-3EGrxKGCGjHnkhudRQQ4fkK5iJxxXNQ1fXvSWA/7mzR/oV7BBSHYvC3gDbG/WIW0A/Fcx2H8k5H3NDyWgjyi8g==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "resize-detector": "^0.3.0",
+ "vue-demi": "^0.13.11"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.5",
+ "@vue/runtime-core": "^3.0.0",
+ "echarts": "^5.4.1",
+ "vue": "^2.6.12 || ^3.1.1"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ },
+ "@vue/runtime-core": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-echarts/node_modules/vue-demi": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz",
+ "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
+ "hasInstallScript": true,
+ "bin": {
+ "vue-demi-fix": "bin/vue-demi-fix.js",
+ "vue-demi-switch": "bin/vue-demi-switch.js"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ },
+ "peerDependencies": {
+ "@vue/composition-api": "^1.0.0-rc.1",
+ "vue": "^3.0.0-0 || ^2.6.0"
+ },
+ "peerDependenciesMeta": {
+ "@vue/composition-api": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vue-eslint-parser": {
+ "version": "9.4.2",
+ "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz",
+ "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.3.4",
+ "eslint-scope": "^7.1.1",
+ "eslint-visitor-keys": "^3.3.0",
+ "espree": "^9.3.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^7.3.6"
+ },
+ "engines": {
+ "node": "^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mysticatea"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+ "dev": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/vue-eslint-parser/node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ },
+ "node_modules/vue-router": {
+ "version": "4.2.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+ "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+ "dependencies": {
+ "@vue/devtools-api": "^6.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/posva"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
+ "node_modules/vue-tsc": {
+ "version": "0.38.9",
+ "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.38.9.tgz",
+ "integrity": "sha512-Yoy5phgvGqyF98Fb4mYqboR4Q149jrdcGv5kSmufXJUq++RZJ2iMVG0g6zl+v3t4ORVWkQmRpsV4x2szufZ0LQ==",
+ "dev": true,
+ "dependencies": {
+ "@volar/vue-typescript": "0.38.9"
+ },
+ "bin": {
+ "vue-tsc": "bin/vue-tsc.js"
+ },
+ "peerDependencies": {
+ "typescript": "*"
+ }
+ },
+ "node_modules/vue3-video-play": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/vue3-video-play/-/vue3-video-play-1.3.2.tgz",
+ "integrity": "sha512-eEwCJ0NIkfVQgTj0I3Kf9b1E/04Qne8mQQiE8r77BocblHsZ2T6af3q8l8Zzs/OvjlpQAQvkN/ACVUOJC3RSXg==",
+ "dependencies": {
+ "hls.js": "^1.0.10",
+ "throttle-debounce": "^3.0.1",
+ "vue": "^3.2.2"
+ }
+ },
+ "node_modules/vuedraggable": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz",
+ "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==",
+ "dependencies": {
+ "sortablejs": "1.14.0"
+ },
+ "peerDependencies": {
+ "vue": "^3.0.1"
+ }
+ },
+ "node_modules/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+ "dev": true,
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/webpack-virtual-modules": {
+ "version": "0.4.6",
+ "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz",
+ "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==",
+ "dev": true
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/wildcard": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz",
+ "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng=="
+ },
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
+ "dependencies": {
+ "ansi-regex": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true
+ },
+ "node_modules/xml-name-validator": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
+ "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/xss": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz",
+ "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==",
+ "dependencies": {
+ "commander": "^2.20.3",
+ "cssfilter": "0.0.10"
+ },
+ "bin": {
+ "xss": "bin/xss"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/xss/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "node_modules/yaml": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
+ "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
+ "dev": true,
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zrender": {
+ "version": "5.4.4",
+ "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz",
+ "integrity": "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==",
+ "dependencies": {
+ "tslib": "2.3.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..052632f
--- /dev/null
+++ b/package.json
@@ -0,0 +1,65 @@
+{
+ "name": "vue-project",
+ "version": "0.0.0",
+ "license": "MIT",
+ "scripts": {
+ "dev": "vite",
+ "preview": "vite preview --port 4173",
+ "build": "vite build && node scripts/release.mjs",
+ "type-check": "vue-tsc --noEmit",
+ "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore"
+ },
+ "dependencies": {
+ "@element-plus/icons-vue": "^2.0.6",
+ "@highlightjs/vue-plugin": "^2.1.0",
+ "@wangeditor/editor": "^5.1.12",
+ "@wangeditor/editor-for-vue": "^5.1.12",
+ "axios": "^0.27.2",
+ "css-color-function": "^1.3.3",
+ "echarts": "^5.3.3",
+ "element-plus": "^2.2.9",
+ "highlight.js": "^11.6.0",
+ "mavon-editor": "3.0.1",
+ "nprogress": "^0.2.0",
+ "pinia": "^2.0.14",
+ "vditor": "^3.9.9",
+ "vue": "^3.2.37",
+ "vue-clipboard3": "^2.0.0",
+ "vue-echarts": "^6.2.3",
+ "vue-router": "^4.0.16",
+ "vue3-video-play": "^1.3.2",
+ "vuedraggable": "^4.1.0"
+ },
+ "devDependencies": {
+ "@rushstack/eslint-patch": "^1.1.0",
+ "@tailwindcss/line-clamp": "^0.4.2",
+ "@types/lodash-es": "^4.17.6",
+ "@types/node": "^16.11.41",
+ "@types/nprogress": "^0.2.0",
+ "@vitejs/plugin-legacy": "^2.3.1",
+ "@vitejs/plugin-vue": "^3.0.0",
+ "@vitejs/plugin-vue-jsx": "^2.0.0",
+ "@vue/eslint-config-prettier": "^7.0.0",
+ "@vue/eslint-config-typescript": "^11.0.0",
+ "@vue/tsconfig": "^0.1.3",
+ "autoprefixer": "^10.4.7",
+ "consola": "^2.15.3",
+ "eslint": "^8.5.0",
+ "eslint-plugin-vue": "^9.0.0",
+ "execa": "^6.1.0",
+ "fs-extra": "^10.1.0",
+ "postcss": "^8.4.14",
+ "prettier": "^2.5.1",
+ "sass": "^1.53.0",
+ "tailwindcss": "^3.0.24",
+ "terser": "^5.15.1",
+ "typescript": "~4.7.4",
+ "unplugin-auto-import": "^0.9.2",
+ "unplugin-vue-components": "^0.19.9",
+ "vite": "^3.0.0",
+ "vite-plugin-style-import": "^2.0.0",
+ "vite-plugin-svg-icons": "^2.0.1",
+ "vite-plugin-vue-setup-extend": "^0.4.0",
+ "vue-tsc": "^0.38.1"
+ }
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..ff8ef3c
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+module.exports = {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {}
+ }
+}
diff --git a/scripts/release.mjs b/scripts/release.mjs
new file mode 100644
index 0000000..84461b6
--- /dev/null
+++ b/scripts/release.mjs
@@ -0,0 +1,35 @@
+import path from 'path'
+import fsExtra from 'fs-extra'
+const { existsSync, remove, copy } = fsExtra
+const cwd = process.cwd()
+//打包发布路径,谨慎改动
+const releaseRelativePath = '../server/public/admin'
+const distPath = path.resolve(cwd, 'dist')
+const releasePath = path.resolve(cwd, releaseRelativePath)
+
+async function build() {
+ if (existsSync(releasePath)) {
+ await remove(releasePath)
+ }
+ console.log(`文件正在复制 ==> ${releaseRelativePath}`)
+ try {
+ await copyFile(distPath, releasePath)
+ } catch (error) {
+ console.log(`\n ${error}`)
+ }
+ console.log(`文件已复制 ==> ${releaseRelativePath}`)
+}
+
+function copyFile(sourceDir, targetDir) {
+ return new Promise((resolve, reject) => {
+ copy(sourceDir, targetDir, (err) => {
+ if (err) {
+ reject(err)
+ } else {
+ resolve()
+ }
+ })
+ })
+}
+
+build()
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..75a248c
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/api/app.ts b/src/api/app.ts
new file mode 100644
index 0000000..fec3423
--- /dev/null
+++ b/src/api/app.ts
@@ -0,0 +1,16 @@
+import request from '@/utils/request'
+
+// 配置
+export function getConfig() {
+ return request.get({ url: '/config/getConfig' })
+}
+
+// 工作台主页
+export function getWorkbench() {
+ return request.get({ url: '/workbench/index' })
+}
+
+//字典数据
+export function getDictData(params: any) {
+ return request.get({ url: '/config/dict', params })
+}
diff --git a/src/api/app/recharge.ts b/src/api/app/recharge.ts
new file mode 100644
index 0000000..e243f2a
--- /dev/null
+++ b/src/api/app/recharge.ts
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+export function getRechargeConfig() {
+ return request.get({ url: '/recharge/recharge/getConfig' })
+}
+
+// 设置
+export function setRechargeConfig(params: any) {
+ return request.post({ url: '/recharge/recharge/setConfig', params })
+}
diff --git a/src/api/brand.ts b/src/api/brand.ts
new file mode 100644
index 0000000..bf9e7b2
--- /dev/null
+++ b/src/api/brand.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 品牌信息表列表
+export function apiBrandLists(params: any) {
+ return request.get({ url: '/goods/brand/lists', params })
+}
+
+// 添加品牌信息表
+export function apiBrandAdd(params: any) {
+ return request.post({ url: '/goods/brand/add', params })
+}
+
+// 编辑品牌信息表
+export function apiBrandEdit(params: any) {
+ return request.post({ url: '/goods/brand/edit', params })
+}
+
+// 删除品牌信息表
+export function apiBrandDelete(params: any) {
+ return request.post({ url: '/goods/brand/delete', params })
+}
+
+// 品牌信息表详情
+export function apiBrandDetail(params: any) {
+ return request.get({ url: '/goods/brand/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/category.ts b/src/api/category.ts
new file mode 100644
index 0000000..dba8c4d
--- /dev/null
+++ b/src/api/category.ts
@@ -0,0 +1,26 @@
+import request from "@/utils/request";
+
+// 分类表列表
+export function apiCategoryLists(params: any) {
+ return request.get({ url: "/setting/category/lists", params });
+}
+
+// 添加分类表
+export function apiCategoryAdd(params: any) {
+ return request.post({ url: "/setting/category/add", params });
+}
+
+// 编辑分类表
+export function apiCategoryEdit(params: any) {
+ return request.post({ url: "/setting/category/edit", params });
+}
+
+// 删除分类表
+export function apiCategoryDelete(params: any) {
+ return request.post({ url: "/setting/category/delete", params });
+}
+
+// 分类表详情
+export function apiCategoryDetail(params: any) {
+ return request.get({ url: "/setting/category/detail", params });
+}
diff --git a/src/api/code.ts b/src/api/code.ts
new file mode 100644
index 0000000..f56a96f
--- /dev/null
+++ b/src/api/code.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 条码表列表
+export function apiCodeLists(params: any) {
+ return request.get({ url: '/goods/code/lists', params })
+}
+
+// 添加条码表
+export function apiCodeAdd(params: any) {
+ return request.post({ url: '/goods/code/add', params })
+}
+
+// 编辑条码表
+export function apiCodeEdit(params: any) {
+ return request.post({ url: '/goods/code/edit', params })
+}
+
+// 删除条码表
+export function apiCodeDelete(params: any) {
+ return request.post({ url: '/goods/code/delete', params })
+}
+
+// 条码表详情
+export function apiCodeDetail(params: any) {
+ return request.get({ url: '/goods/code/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/consumer.ts b/src/api/consumer.ts
new file mode 100644
index 0000000..8116579
--- /dev/null
+++ b/src/api/consumer.ts
@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 用户列表
+export function getUserList(params: any) {
+ return request.get({ url: '/user/user/lists', params }, { ignoreCancelToken: true })
+}
+
+// 用户详情
+export function getUserDetail(params: any) {
+ return request.get({ url: '/user/user/detail', params })
+}
+
+// 用户编辑
+export function userEdit(params: any) {
+ return request.post({ url: '/user/user/edit', params })
+}
+
+// 用户编辑
+export function adjustMoney(params: any) {
+ return request.post({ url: '/user/user/adjustMoney', params })
+}
diff --git a/src/api/customer.ts b/src/api/customer.ts
new file mode 100644
index 0000000..1b9d6bf
--- /dev/null
+++ b/src/api/customer.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 客户表列表
+export function apiCustomerLists(params: any) {
+ return request.get({ url: '/customer/customer/lists', params })
+}
+
+// 添加客户表
+export function apiCustomerAdd(params: any) {
+ return request.post({ url: '/customer/customer/add', params })
+}
+
+// 编辑客户表
+export function apiCustomerEdit(params: any) {
+ return request.post({ url: '/customer/customer/edit', params })
+}
+
+// 删除客户表
+export function apiCustomerDelete(params: any) {
+ return request.post({ url: '/customer/customer/delete', params })
+}
+
+// 客户表详情
+export function apiCustomerDetail(params: any) {
+ return request.get({ url: '/customer/customer/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/file.ts b/src/api/file.ts
new file mode 100644
index 0000000..2181001
--- /dev/null
+++ b/src/api/file.ts
@@ -0,0 +1,39 @@
+import request from '@/utils/request'
+
+export function fileCateAdd(params: Record) {
+ return request.post({url: '/file/addCate', params})
+}
+
+export function fileCateEdit(params: Record) {
+ return request.post({url: '/file/editCate', params})
+}
+
+// 文件分类删除
+export function fileCateDelete(params: Record) {
+ return request.post({url: '/file/delCate', params})
+}
+
+// 文件分类列表
+export function fileCateLists(params: Record) {
+ return request.get({url: '/file/listCate', params})
+}
+
+// 文件列表
+export function fileList(params: Record) {
+ return request.get({url: '/file/lists', params}, {ignoreCancelToken: true, isOpenRetry: false})
+}
+
+// 文件删除
+export function fileDelete(params: Record) {
+ return request.post({url: '/file/delete', params})
+}
+
+// 文件移动
+export function fileMove(params: Record) {
+ return request.post({url: '/file/move', params})
+}
+
+// 文件重命名
+export function fileRename(params: { id: number; name: string }) {
+ return request.post({url: '/file/rename', params})
+}
diff --git a/src/api/goods.ts b/src/api/goods.ts
new file mode 100644
index 0000000..2d2a3e8
--- /dev/null
+++ b/src/api/goods.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 商品表列表
+export function apiGoodsLists(params: any) {
+ return request.get({ url: '/goods/goods/lists', params })
+}
+
+// 添加商品表
+export function apiGoodsAdd(params: any) {
+ return request.post({ url: '/goods/goods/add', params })
+}
+
+// 编辑商品表
+export function apiGoodsEdit(params: any) {
+ return request.post({ url: '/goods/goods/edit', params })
+}
+
+// 删除商品表
+export function apiGoodsDelete(params: any) {
+ return request.post({ url: '/goods/goods/delete', params })
+}
+
+// 商品表详情
+export function apiGoodsDetail(params: any) {
+ return request.get({ url: '/goods/goods/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/goodsclass.ts b/src/api/goodsclass.ts
new file mode 100644
index 0000000..03b8696
--- /dev/null
+++ b/src/api/goodsclass.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 商品分类表列表
+export function apiGoodsclassLists(params: any) {
+ return request.get({ url: '/goods/goodsclass/lists', params })
+}
+
+// 添加商品分类表
+export function apiGoodsclassAdd(params: any) {
+ return request.post({ url: '/goods/goodsclass/add', params })
+}
+
+// 编辑商品分类表
+export function apiGoodsclassEdit(params: any) {
+ return request.post({ url: '/goods/goodsclass/edit', params })
+}
+
+// 删除商品分类表
+export function apiGoodsclassDelete(params: any) {
+ return request.post({ url: '/goods/goodsclass/delete', params })
+}
+
+// 商品分类表详情
+export function apiGoodsclassDetail(params: any) {
+ return request.get({ url: '/goods/goodsclass/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/label.ts b/src/api/label.ts
new file mode 100644
index 0000000..6838a4b
--- /dev/null
+++ b/src/api/label.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 标签列表
+export function apiLabelLists(params: any) {
+ return request.get({ url: '/setting/label/lists', params })
+}
+
+// 添加标签
+export function apiLabelAdd(params: any) {
+ return request.post({ url: '/setting/label/add', params })
+}
+
+// 编辑标签
+export function apiLabelEdit(params: any) {
+ return request.post({ url: '/setting/label/edit', params })
+}
+
+// 删除标签
+export function apiLabelDelete(params: any) {
+ return request.post({ url: '/setting/label/delete', params })
+}
+
+// 标签详情
+export function apiLabelDetail(params: any) {
+ return request.get({ url: '/setting/label/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/merchant.ts b/src/api/merchant.ts
new file mode 100644
index 0000000..b9ab307
--- /dev/null
+++ b/src/api/merchant.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 商户表列表
+export function apiMerchantLists(params: any) {
+ return request.get({ url: '/merchat/merchant/lists', params })
+}
+
+// 添加商户表
+export function apiMerchantAdd(params: any) {
+ return request.post({ url: '/merchat/merchant/add', params })
+}
+
+// 编辑商户表
+export function apiMerchantEdit(params: any) {
+ return request.post({ url: '/merchat/merchant/edit', params })
+}
+
+// 删除商户表
+export function apiMerchantDelete(params: any) {
+ return request.post({ url: '/merchat/merchant/delete', params })
+}
+
+// 商户表详情
+export function apiMerchantDetail(params: any) {
+ return request.get({ url: '/merchat/merchant/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/org/department.ts b/src/api/org/department.ts
new file mode 100644
index 0000000..bc51c21
--- /dev/null
+++ b/src/api/org/department.ts
@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+// 部门列表
+export function deptLists(params?: any) {
+ return request.get({ url: '/dept/dept/lists', params })
+}
+
+// 添加部门
+export function deptAdd(params: any) {
+ return request.post({ url: '/dept/dept/add', params })
+}
+
+// 编辑部门
+export function deptEdit(params: any) {
+ return request.post({ url: '/dept/dept/edit', params })
+}
+
+// 删除部门
+export function deptDelete(params: any) {
+ return request.post({ url: '/dept/dept/delete', params })
+}
+
+// 部门详情
+export function deptDetail(params: any) {
+ return request.get({ url: '/dept/dept/detail', params })
+}
+
+// 部门列表全部
+export function deptAll() {
+ return request.get({ url: '/dept/dept/all' })
+}
diff --git a/src/api/org/post.ts b/src/api/org/post.ts
new file mode 100644
index 0000000..40aed09
--- /dev/null
+++ b/src/api/org/post.ts
@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+// 岗位列表
+export function jobsLists(params: any) {
+ return request.get({ url: '/dept/jobs/lists', params }, { ignoreCancelToken: true })
+}
+
+// 岗位列表全部
+export function jobsAll(params: any) {
+ return request.get({ url: '/dept/jobs/all', params })
+}
+
+// 添加岗位
+export function jobsAdd(params: any) {
+ return request.post({ url: '/dept/jobs/add', params })
+}
+
+// 编辑岗位
+export function jobsEdit(params: any) {
+ return request.post({ url: '/dept/jobs/edit', params })
+}
+
+// 删除岗位
+export function jobsDelete(params: any) {
+ return request.post({ url: '/dept/jobs/delete', params })
+}
+
+// 岗位详情
+export function jobsDetail(params: any) {
+ return request.get({ url: '/dept/jobs/detail', params })
+}
diff --git a/src/api/perms/admin.ts b/src/api/perms/admin.ts
new file mode 100644
index 0000000..98ef2a6
--- /dev/null
+++ b/src/api/perms/admin.ts
@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+// 管理员列表
+export function adminLists(params: any) {
+ return request.get({ url: '/auth/admin/lists', params }, { ignoreCancelToken: true })
+}
+// 管理员列表全部
+export function adminAll(params: any) {
+ return request.get({ url: '/auth/admin/all', params })
+}
+// 管理员添加
+export function adminAdd(params: any) {
+ return request.post({ url: '/auth/admin/add', params })
+}
+
+// 管理员编辑
+export function adminEdit(params: any) {
+ return request.post({ url: '/auth/admin/edit', params })
+}
+
+// 管理员删除
+export function adminDelete(params: any) {
+ return request.post({ url: '/auth/admin/delete', params })
+}
+
+// 管理员详情
+export function adminDetail(params: any) {
+ return request.get({ url: '/auth/admin/detail', params })
+}
diff --git a/src/api/perms/menu.ts b/src/api/perms/menu.ts
new file mode 100644
index 0000000..b3932a2
--- /dev/null
+++ b/src/api/perms/menu.ts
@@ -0,0 +1,30 @@
+import request from '@/utils/request'
+
+// 菜单列表
+export function menuLists(params: Record) {
+ return request.get({ url: '/auth/menu/lists', params })
+}
+// 菜单全部
+export function menuAll(params?: Record) {
+ return request.get({ url: '/auth/menu/all', params })
+}
+
+// 添加菜单
+export function menuAdd(params: Record) {
+ return request.post({ url: '/auth/menu/add', params })
+}
+
+// 编辑菜单
+export function menuEdit(params: Record) {
+ return request.post({ url: '/auth/menu/edit', params })
+}
+
+// 菜单删除
+export function menuDelete(params: Record) {
+ return request.post({ url: '/auth/menu/delete', params })
+}
+
+// 菜单详情
+export function menuDetail(params: Record) {
+ return request.get({ url: '/auth/menu/detail', params })
+}
diff --git a/src/api/perms/role.ts b/src/api/perms/role.ts
new file mode 100644
index 0000000..390765e
--- /dev/null
+++ b/src/api/perms/role.ts
@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 角色列表
+export function roleLists(params: any) {
+ return request.get({ url: '/auth/role/lists', params })
+}
+// 角色列表全部
+export function roleAll(params: any) {
+ return request.get({ url: '/auth/role/all', params })
+}
+// 添加角色
+export function roleAdd(params: any) {
+ return request.post({ url: '/auth/role/add', params })
+}
+// 编辑角色
+export function roleEdit(params: any) {
+ return request.post({ url: '/auth/role/edit', params })
+}
+// 删除角色
+export function roleDelete(params: any) {
+ return request.post({ url: '/auth/role/delete', params })
+}
+
+// 角色详情
+export function roleDetail(params: any) {
+ return request.get({ url: '/auth/role/detail', params })
+}
diff --git a/src/api/setting/dict.ts b/src/api/setting/dict.ts
new file mode 100644
index 0000000..66f65da
--- /dev/null
+++ b/src/api/setting/dict.ts
@@ -0,0 +1,61 @@
+import request from '@/utils/request'
+
+// 字典类型列表
+export function dictTypeLists(params: any) {
+ return request.get({ url: '/setting/dict/dictType/lists', params })
+}
+
+// 字典类型列表全部
+export function dictTypeAll(params: any) {
+ return request.get({ url: '/setting/dict/dictType/all', params })
+}
+
+// 添加字典类型
+export function dictTypeAdd(params: any) {
+ return request.post({ url: '/setting/dict/dictType/add', params })
+}
+
+// 编辑字典类型
+export function dictTypeEdit(params: any) {
+ return request.post({ url: '/setting/dict/dictType/edit', params })
+}
+
+// 删除字典类型
+export function dictTypeDelete(params: any) {
+ return request.post({ url: '/setting/dict/dictType/delete', params })
+}
+
+// 字典类型详情
+export function dictTypeDetail(params: any) {
+ return request.get({ url: '/setting/dict/dictType/detail', params })
+}
+
+// 字典数据列表
+export function dictDataLists(params: any) {
+ return request.get(
+ { url: '/setting/dict/dictData/lists', params },
+ {
+ ignoreCancelToken: true
+ }
+ )
+}
+
+// 添加字典数据
+export function dictDataAdd(params: any) {
+ return request.post({ url: '/setting/dict/dictData/add', params })
+}
+
+// 编辑字典数据
+export function dictDataEdit(params: any) {
+ return request.post({ url: '/setting/dict/dictData/edit', params })
+}
+
+// 删除字典数据
+export function dictDataDelete(params: any) {
+ return request.post({ url: '/setting/dict/dictData/delete', params })
+}
+
+// 字典数据详情
+export function dictDataDetail(params: any) {
+ return request.get({ url: '/setting/dict/dictData/detail', params })
+}
diff --git a/src/api/setting/storage.ts b/src/api/setting/storage.ts
new file mode 100644
index 0000000..f1f3f43
--- /dev/null
+++ b/src/api/setting/storage.ts
@@ -0,0 +1,21 @@
+import request from '@/utils/request'
+
+// 获取存储引擎列表
+export function storageLists() {
+ return request.get({ url: '/setting/storage/lists' })
+}
+
+// 设置存储引擎信息
+export function storageChange(params: any) {
+ return request.post({ url: '/setting/storage/change', params })
+}
+
+// 设置存储引擎信息
+export function storageSetup(params: any) {
+ return request.post({ url: '/setting/storage/setup', params })
+}
+
+// 获取存储配置信息
+export function storageDetail(params: any) {
+ return request.get({ url: '/setting/storage/detail', params })
+}
diff --git a/src/api/setting/system.ts b/src/api/setting/system.ts
new file mode 100644
index 0000000..6508a4d
--- /dev/null
+++ b/src/api/setting/system.ts
@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 获取系统环境
+export function systemInfo() {
+ return request.get({ url: '/setting/system/system/info' })
+}
+
+// 获取系统日志列表
+export function systemLogLists(params: any) {
+ return request.get({ url: '/setting/system/log/lists', params }, { ignoreCancelToken: true })
+}
+
+// 清除系统缓存
+export function systemCacheClear() {
+ return request.post({ url: '/setting/system/cache/clear' })
+}
+
+// 定时任务列表
+export function crontabLists(params: any) {
+ return request.get({ url: '/crontab/crontab/lists', params })
+}
+
+// 添加定时任务
+export function crontabAdd(params: any) {
+ return request.post({ url: '/crontab/crontab/add', params })
+}
+
+// 定时任务详情
+export function crontabDetail(params: any) {
+ return request.get({ url: '/crontab/crontab/detail', params })
+}
+
+// 编辑定时任务
+export function crontabEdit(params: any) {
+ return request.post({ url: '/crontab/crontab/edit', params })
+}
+
+// 删除定时任务
+export function crontabDel(params: any) {
+ return request.post({ url: '/crontab/crontab/delete', params })
+}
+
+// 获取规则执行时间
+export function crontabExpression(params: any) {
+ return request.get({ url: '/crontab/crontab/expression', params })
+}
+
+// 操作定时任务
+export function srontabOperate(params: any) {
+ return request.post({ url: '/crontab/crontab/operate', params })
+}
diff --git a/src/api/setting/website.ts b/src/api/setting/website.ts
new file mode 100644
index 0000000..4f4de99
--- /dev/null
+++ b/src/api/setting/website.ts
@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+// 获取备案信息
+export function getCopyright() {
+ return request.get({ url: '/setting/web/webSetting/getCopyright' })
+}
+// 设置备案信息
+export function setCopyright(params: any) {
+ return request.post({ url: '/setting/web/webSetting/setCopyright', params })
+}
+// 获取网站信息
+export function getWebsite() {
+ return request.get({ url: '/setting/web/webSetting/getWebsite' })
+}
+// 设置网站信息
+export function setWebsite(params: any) {
+ return request.post({ url: '/setting/web/webSetting/setWebsite', params })
+}
+
+// 获取政策协议
+export function getProtocol() {
+ return request.get({ url: '/setting/web/webSetting/getAgreement' })
+}
+// 设置政策协议
+export function setProtocol(params: any) {
+ return request.post({ url: '/setting/web/webSetting/setAgreement', params })
+}
diff --git a/src/api/shop.ts b/src/api/shop.ts
new file mode 100644
index 0000000..9ce5f8f
--- /dev/null
+++ b/src/api/shop.ts
@@ -0,0 +1,64 @@
+import request from '@/utils/request'
+
+/**
+ * @description 商品列表
+ */
+export function storeListApi(id:any, data:any) {
+ return request.get(`server/${id}/product/lst`, { params: data })
+}
+
+// /**
+// * @description 商品详情
+// */
+// export function getAttrValue(id:any, data:any) {
+// return request.get(`store/product/detail/${id}`, { params: data })
+// }
+
+// /**
+// * @description 免审编辑
+// */
+// export function userFreeTrialApi(id:any, data:any) {
+// return request.post(`user_free_trial/${id}`, data)
+// }
+
+// /**
+// * @description 商品状态分类数量
+// */
+// export function productTitleApi(id:any, data:any) {
+// return request.get(`server/${id}/product/title`, { params: data })
+// }
+
+// /**
+// * @description 上下架
+// */
+// export function productStatusApi(mer_id:any, id:any, data:any) {
+// return request.post(`server/${mer_id}/product/status/${id}`, data)
+// }
+
+// /**
+// * @description 平台分类
+// */
+// export function categoryListApi(mer_id:any, data:any) {
+// return request.get(`server/${mer_id}/category/list`, { params: data })
+// }
+
+// /**
+// * @description 添加商品
+// */
+// export function productCreateApi(mer_id:any, data:any) {
+// return request.post(`server/${mer_id}/product/create`, data)
+// }
+
+// /**
+// * @description 编辑商品
+// */
+// export function productUpdateApi(mer_id:any, id:any, data:any) {
+// return request.post(`server/${mer_id}/product/update/${id}`, data)
+// }
+
+// /**
+// * @description 商品详情
+// */
+// export function productDetailApi(mer_id:any, id:any, data:any) {
+// return request.get(`server/${mer_id}/product/detail/${id}`, { params: data })
+// }
diff --git a/src/api/supplier.ts b/src/api/supplier.ts
new file mode 100644
index 0000000..c466363
--- /dev/null
+++ b/src/api/supplier.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 供应商表列表
+export function apiSupplierLists(params: any) {
+ return request.get({ url: '/supplier/supplier/lists', params })
+}
+
+// 添加供应商表
+export function apiSupplierAdd(params: any) {
+ return request.post({ url: '/supplier/supplier/add', params })
+}
+
+// 编辑供应商表
+export function apiSupplierEdit(params: any) {
+ return request.post({ url: '/supplier/supplier/edit', params })
+}
+
+// 删除供应商表
+export function apiSupplierDelete(params: any) {
+ return request.post({ url: '/supplier/supplier/delete', params })
+}
+
+// 供应商表详情
+export function apiSupplierDetail(params: any) {
+ return request.get({ url: '/supplier/supplier/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/tools/code.ts b/src/api/tools/code.ts
new file mode 100644
index 0000000..f9860ed
--- /dev/null
+++ b/src/api/tools/code.ts
@@ -0,0 +1,51 @@
+import request from '@/utils/request'
+
+// 代码生成已选数据表列表接口
+export function generateTable(params: any) {
+ return request.get({ url: '/tools/generator/generateTable', params })
+}
+
+// 数据表列表接口
+export function dataTable(params: any) {
+ return request.get({ url: '/tools/generator/dataTable', params })
+}
+
+//选择要生成代码的数据表
+export function selectTable(params: any) {
+ return request.post({ url: '/tools/generator/selectTable', params })
+}
+
+// 已选择的数据表详情
+export function tableDetail(params: any) {
+ return request.get({ url: '/tools/generator/detail', params })
+}
+
+//同步字段
+export function syncColumn(params: any) {
+ return request.post({ url: '/tools/generator/syncColumn', params })
+}
+
+//删除已选择的数据表
+export function generateDelete(params: any) {
+ return request.post({ url: '/tools/generator/delete', params })
+}
+
+//编辑已选表字段
+export function generateEdit(params: any) {
+ return request.post({ url: '/tools/generator/edit', params })
+}
+
+//预览代码
+export function generatePreview(params: any) {
+ return request.post({ url: '/tools/generator/preview', params })
+}
+
+//生成代码
+export function generateCode(params: any) {
+ return request.post({ url: '/tools/generator/generate', params })
+}
+
+//获取模型
+export function getModels() {
+ return request.get({ url: '/tools/generator/getModels' })
+}
diff --git a/src/api/unit.ts b/src/api/unit.ts
new file mode 100644
index 0000000..8653eed
--- /dev/null
+++ b/src/api/unit.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 计量单位列表
+export function apiUnitLists(params: any) {
+ return request.get({ url: '/goods/unit/lists', params })
+}
+
+// 添加计量单位
+export function apiUnitAdd(params: any) {
+ return request.post({ url: '/goods/unit/add', params })
+}
+
+// 编辑计量单位
+export function apiUnitEdit(params: any) {
+ return request.post({ url: '/goods/unit/edit', params })
+}
+
+// 删除计量单位
+export function apiUnitDelete(params: any) {
+ return request.post({ url: '/goods/unit/delete', params })
+}
+
+// 计量单位详情
+export function apiUnitDetail(params: any) {
+ return request.get({ url: '/goods/unit/detail', params })
+}
\ No newline at end of file
diff --git a/src/api/user.ts b/src/api/user.ts
new file mode 100644
index 0000000..0b22268
--- /dev/null
+++ b/src/api/user.ts
@@ -0,0 +1,22 @@
+import config from '@/config'
+import request from '@/utils/request'
+
+// 登录
+export function login(params: Record) {
+ return request.post({ url: '/login/account', params: { ...params, terminal: config.terminal } })
+}
+
+// 退出登录
+export function logout() {
+ return request.post({ url: '/login/logout' })
+}
+
+// 用户信息
+export function getUserInfo() {
+ return request.get({ url: '/auth/admin/mySelf' })
+}
+
+// 编辑管理员信息
+export function setUserInfo(params: any) {
+ return request.post({ url: '/auth/admin/editSelf', params })
+}
diff --git a/src/api/warehouse.ts b/src/api/warehouse.ts
new file mode 100644
index 0000000..2de8d9a
--- /dev/null
+++ b/src/api/warehouse.ts
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 仓库信息表列表
+export function apiWarehouseLists(params: any) {
+ return request.get({ url: '/warehouse/warehouse/lists', params })
+}
+
+// 添加仓库信息表
+export function apiWarehouseAdd(params: any) {
+ return request.post({ url: '/warehouse/warehouse/add', params })
+}
+
+// 编辑仓库信息表
+export function apiWarehouseEdit(params: any) {
+ return request.post({ url: '/warehouse/warehouse/edit', params })
+}
+
+// 删除仓库信息表
+export function apiWarehouseDelete(params: any) {
+ return request.post({ url: '/warehouse/warehouse/delete', params })
+}
+
+// 仓库信息表详情
+export function apiWarehouseDetail(params: any) {
+ return request.get({ url: '/warehouse/warehouse/detail', params })
+}
\ No newline at end of file
diff --git a/src/assets/icons/Androidfanhui.svg b/src/assets/icons/Androidfanhui.svg
new file mode 100644
index 0000000..e9ada24
--- /dev/null
+++ b/src/assets/icons/Androidfanhui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/KMSguanli.svg b/src/assets/icons/KMSguanli.svg
new file mode 100644
index 0000000..7c65298
--- /dev/null
+++ b/src/assets/icons/KMSguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/KTVyuding.svg b/src/assets/icons/KTVyuding.svg
new file mode 100644
index 0000000..8187b5f
--- /dev/null
+++ b/src/assets/icons/KTVyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/a-tixingdengpao.svg b/src/assets/icons/a-tixingdengpao.svg
new file mode 100644
index 0000000..7074ae7
--- /dev/null
+++ b/src/assets/icons/a-tixingdengpao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/anquan.svg b/src/assets/icons/anquan.svg
new file mode 100644
index 0000000..bf90259
--- /dev/null
+++ b/src/assets/icons/anquan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/anquan_mian.svg b/src/assets/icons/anquan_mian.svg
new file mode 100644
index 0000000..f3486b5
--- /dev/null
+++ b/src/assets/icons/anquan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/anquan_mian1.svg b/src/assets/icons/anquan_mian1.svg
new file mode 100644
index 0000000..f3486b5
--- /dev/null
+++ b/src/assets/icons/anquan_mian1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/banxing_mian.svg b/src/assets/icons/banxing_mian.svg
new file mode 100644
index 0000000..3cb468f
--- /dev/null
+++ b/src/assets/icons/banxing_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/baoxian.svg b/src/assets/icons/baoxian.svg
new file mode 100644
index 0000000..9885e88
--- /dev/null
+++ b/src/assets/icons/baoxian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/bendishenghuodaxue.svg b/src/assets/icons/bendishenghuodaxue.svg
new file mode 100644
index 0000000..4754e16
--- /dev/null
+++ b/src/assets/icons/bendishenghuodaxue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/bianji.svg b/src/assets/icons/bianji.svg
new file mode 100644
index 0000000..c8674e7
--- /dev/null
+++ b/src/assets/icons/bianji.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/biaoqing.svg b/src/assets/icons/biaoqing.svg
new file mode 100644
index 0000000..fcc84fb
--- /dev/null
+++ b/src/assets/icons/biaoqing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/bukejian.svg b/src/assets/icons/bukejian.svg
new file mode 100644
index 0000000..c79cd78
--- /dev/null
+++ b/src/assets/icons/bukejian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caipinguanli.svg b/src/assets/icons/caipinguanli.svg
new file mode 100644
index 0000000..3b1fc28
--- /dev/null
+++ b/src/assets/icons/caipinguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caiwu.svg b/src/assets/icons/caiwu.svg
new file mode 100644
index 0000000..e3e92f4
--- /dev/null
+++ b/src/assets/icons/caiwu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caiwu_jifen.svg b/src/assets/icons/caiwu_jifen.svg
new file mode 100644
index 0000000..07d01df
--- /dev/null
+++ b/src/assets/icons/caiwu_jifen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/caiwu_tixian.svg b/src/assets/icons/caiwu_tixian.svg
new file mode 100644
index 0000000..982ac58
--- /dev/null
+++ b/src/assets/icons/caiwu_tixian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/canyinfuwu.svg b/src/assets/icons/canyinfuwu.svg
new file mode 100644
index 0000000..5d87395
--- /dev/null
+++ b/src/assets/icons/canyinfuwu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/carryout.svg b/src/assets/icons/carryout.svg
new file mode 100644
index 0000000..4a06640
--- /dev/null
+++ b/src/assets/icons/carryout.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/chexiao.svg b/src/assets/icons/chexiao.svg
new file mode 100644
index 0000000..b9e6e5d
--- /dev/null
+++ b/src/assets/icons/chexiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/chihuohongbao.svg b/src/assets/icons/chihuohongbao.svg
new file mode 100644
index 0000000..bb1fb66
--- /dev/null
+++ b/src/assets/icons/chihuohongbao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/chuangyiwuliao.svg b/src/assets/icons/chuangyiwuliao.svg
new file mode 100644
index 0000000..045057d
--- /dev/null
+++ b/src/assets/icons/chuangyiwuliao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/close.svg b/src/assets/icons/close.svg
new file mode 100644
index 0000000..54f3e08
--- /dev/null
+++ b/src/assets/icons/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/daiyunying.svg b/src/assets/icons/daiyunying.svg
new file mode 100644
index 0000000..dc1c7c5
--- /dev/null
+++ b/src/assets/icons/daiyunying.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/danwei.svg b/src/assets/icons/danwei.svg
new file mode 100644
index 0000000..ba527e8
--- /dev/null
+++ b/src/assets/icons/danwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/danxuankuang.svg b/src/assets/icons/danxuankuang.svg
new file mode 100644
index 0000000..2ef171c
--- /dev/null
+++ b/src/assets/icons/danxuankuang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/danxuanxuanzhong.svg b/src/assets/icons/danxuanxuanzhong.svg
new file mode 100644
index 0000000..c7f230c
--- /dev/null
+++ b/src/assets/icons/danxuanxuanzhong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dayin.svg b/src/assets/icons/dayin.svg
new file mode 100644
index 0000000..0d2291d
--- /dev/null
+++ b/src/assets/icons/dayin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dayin_mian.svg b/src/assets/icons/dayin_mian.svg
new file mode 100644
index 0000000..7989ff6
--- /dev/null
+++ b/src/assets/icons/dayin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/del.svg b/src/assets/icons/del.svg
new file mode 100644
index 0000000..f938140
--- /dev/null
+++ b/src/assets/icons/del.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/diancanshezhi.svg b/src/assets/icons/diancanshezhi.svg
new file mode 100644
index 0000000..8723cbf
--- /dev/null
+++ b/src/assets/icons/diancanshezhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianhua.svg b/src/assets/icons/dianhua.svg
new file mode 100644
index 0000000..be006a9
--- /dev/null
+++ b/src/assets/icons/dianhua.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianhua_mian.svg b/src/assets/icons/dianhua_mian.svg
new file mode 100644
index 0000000..5554077
--- /dev/null
+++ b/src/assets/icons/dianhua_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianpu_fengge.svg b/src/assets/icons/dianpu_fengge.svg
new file mode 100644
index 0000000..a7dc3e1
--- /dev/null
+++ b/src/assets/icons/dianpu_fengge.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianputuijian.svg b/src/assets/icons/dianputuijian.svg
new file mode 100644
index 0000000..0e8a4c8
--- /dev/null
+++ b/src/assets/icons/dianputuijian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dianzifapiao.svg b/src/assets/icons/dianzifapiao.svg
new file mode 100644
index 0000000..b2db463
--- /dev/null
+++ b/src/assets/icons/dianzifapiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingcan.svg b/src/assets/icons/dingcan.svg
new file mode 100644
index 0000000..46d4e95
--- /dev/null
+++ b/src/assets/icons/dingcan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingdan.svg b/src/assets/icons/dingdan.svg
new file mode 100644
index 0000000..e5b35a9
--- /dev/null
+++ b/src/assets/icons/dingdan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingdan1.svg b/src/assets/icons/dingdan1.svg
new file mode 100644
index 0000000..5330a6a
--- /dev/null
+++ b/src/assets/icons/dingdan1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingdan_mian.svg b/src/assets/icons/dingdan_mian.svg
new file mode 100644
index 0000000..0929276
--- /dev/null
+++ b/src/assets/icons/dingdan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingwei.svg b/src/assets/icons/dingwei.svg
new file mode 100644
index 0000000..ef573a7
--- /dev/null
+++ b/src/assets/icons/dingwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/dingwei_mian.svg b/src/assets/icons/dingwei_mian.svg
new file mode 100644
index 0000000..8c86674
--- /dev/null
+++ b/src/assets/icons/dingwei_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ditu.svg b/src/assets/icons/ditu.svg
new file mode 100644
index 0000000..6b5e5f2
--- /dev/null
+++ b/src/assets/icons/ditu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ditu_mian.svg b/src/assets/icons/ditu_mian.svg
new file mode 100644
index 0000000..bb542bf
--- /dev/null
+++ b/src/assets/icons/ditu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/duizhang.svg b/src/assets/icons/duizhang.svg
new file mode 100644
index 0000000..f63d6df
--- /dev/null
+++ b/src/assets/icons/duizhang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/elemo.svg b/src/assets/icons/elemo.svg
new file mode 100644
index 0000000..c1d5388
--- /dev/null
+++ b/src/assets/icons/elemo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ezhanggui.svg b/src/assets/icons/ezhanggui.svg
new file mode 100644
index 0000000..cd50b0b
--- /dev/null
+++ b/src/assets/icons/ezhanggui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/falvfuwubaoxiaohei.svg b/src/assets/icons/falvfuwubaoxiaohei.svg
new file mode 100644
index 0000000..27ea856
--- /dev/null
+++ b/src/assets/icons/falvfuwubaoxiaohei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fengniaopaotui.svg b/src/assets/icons/fengniaopaotui.svg
new file mode 100644
index 0000000..3f5f7b1
--- /dev/null
+++ b/src/assets/icons/fengniaopaotui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fenxiang.svg b/src/assets/icons/fenxiang.svg
new file mode 100644
index 0000000..e4eb7cc
--- /dev/null
+++ b/src/assets/icons/fenxiang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fukuan.svg b/src/assets/icons/fukuan.svg
new file mode 100644
index 0000000..939c745
--- /dev/null
+++ b/src/assets/icons/fukuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fukuan_mian.svg b/src/assets/icons/fukuan_mian.svg
new file mode 100644
index 0000000..ba094cc
--- /dev/null
+++ b/src/assets/icons/fukuan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fullscreen-exit.svg b/src/assets/icons/fullscreen-exit.svg
new file mode 100644
index 0000000..e845a79
--- /dev/null
+++ b/src/assets/icons/fullscreen-exit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fullscreen.svg b/src/assets/icons/fullscreen.svg
new file mode 100644
index 0000000..516e890
--- /dev/null
+++ b/src/assets/icons/fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fuwushichang.svg b/src/assets/icons/fuwushichang.svg
new file mode 100644
index 0000000..2564370
--- /dev/null
+++ b/src/assets/icons/fuwushichang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fuzhi.svg b/src/assets/icons/fuzhi.svg
new file mode 100644
index 0000000..659c6e0
--- /dev/null
+++ b/src/assets/icons/fuzhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gaode.svg b/src/assets/icons/gaode.svg
new file mode 100644
index 0000000..8d26343
--- /dev/null
+++ b/src/assets/icons/gaode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gengduo.svg b/src/assets/icons/gengduo.svg
new file mode 100644
index 0000000..2956729
--- /dev/null
+++ b/src/assets/icons/gengduo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gengduoandroid.svg b/src/assets/icons/gengduoandroid.svg
new file mode 100644
index 0000000..ecde71b
--- /dev/null
+++ b/src/assets/icons/gengduoandroid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gift.svg b/src/assets/icons/gift.svg
new file mode 100644
index 0000000..add9ce8
--- /dev/null
+++ b/src/assets/icons/gift.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gongyingshang.svg b/src/assets/icons/gongyingshang.svg
new file mode 100644
index 0000000..9426995
--- /dev/null
+++ b/src/assets/icons/gongyingshang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/goods.svg b/src/assets/icons/goods.svg
new file mode 100644
index 0000000..b80fbed
--- /dev/null
+++ b/src/assets/icons/goods.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gou.svg b/src/assets/icons/gou.svg
new file mode 100644
index 0000000..6354197
--- /dev/null
+++ b/src/assets/icons/gou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gouwuche.svg b/src/assets/icons/gouwuche.svg
new file mode 100644
index 0000000..6e76f7d
--- /dev/null
+++ b/src/assets/icons/gouwuche.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gouxuan.svg b/src/assets/icons/gouxuan.svg
new file mode 100644
index 0000000..8fe88a6
--- /dev/null
+++ b/src/assets/icons/gouxuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gouxuan_mian.svg b/src/assets/icons/gouxuan_mian.svg
new file mode 100644
index 0000000..375972b
--- /dev/null
+++ b/src/assets/icons/gouxuan_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/guanbi.svg b/src/assets/icons/guanbi.svg
new file mode 100644
index 0000000..831bd0e
--- /dev/null
+++ b/src/assets/icons/guanbi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/guanli.svg b/src/assets/icons/guanli.svg
new file mode 100644
index 0000000..4848092
--- /dev/null
+++ b/src/assets/icons/guanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/guanli_mian.svg b/src/assets/icons/guanli_mian.svg
new file mode 100644
index 0000000..db46ff1
--- /dev/null
+++ b/src/assets/icons/guanli_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/gukefapiao.svg b/src/assets/icons/gukefapiao.svg
new file mode 100644
index 0000000..341b686
--- /dev/null
+++ b/src/assets/icons/gukefapiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/haibaosheji.svg b/src/assets/icons/haibaosheji.svg
new file mode 100644
index 0000000..f875157
--- /dev/null
+++ b/src/assets/icons/haibaosheji.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/heshoujilu.svg b/src/assets/icons/heshoujilu.svg
new file mode 100644
index 0000000..cd25273
--- /dev/null
+++ b/src/assets/icons/heshoujilu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/heshoujilu1.svg b/src/assets/icons/heshoujilu1.svg
new file mode 100644
index 0000000..f8d1bd4
--- /dev/null
+++ b/src/assets/icons/heshoujilu1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hexiao_order.svg b/src/assets/icons/hexiao_order.svg
new file mode 100644
index 0000000..f1c4034
--- /dev/null
+++ b/src/assets/icons/hexiao_order.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hide-2.svg b/src/assets/icons/hide-2.svg
new file mode 100644
index 0000000..8c74146
--- /dev/null
+++ b/src/assets/icons/hide-2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hide.svg b/src/assets/icons/hide.svg
new file mode 100644
index 0000000..5cbbabd
--- /dev/null
+++ b/src/assets/icons/hide.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/hongbao.svg b/src/assets/icons/hongbao.svg
new file mode 100644
index 0000000..9d331b5
--- /dev/null
+++ b/src/assets/icons/hongbao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huiche.svg b/src/assets/icons/huiche.svg
new file mode 100644
index 0000000..5022718
--- /dev/null
+++ b/src/assets/icons/huiche.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huiyuanyingxiao.svg b/src/assets/icons/huiyuanyingxiao.svg
new file mode 100644
index 0000000..ae06769
--- /dev/null
+++ b/src/assets/icons/huiyuanyingxiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huodongbaoming.svg b/src/assets/icons/huodongbaoming.svg
new file mode 100644
index 0000000..0c60672
--- /dev/null
+++ b/src/assets/icons/huodongbaoming.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huodongguanli.svg b/src/assets/icons/huodongguanli.svg
new file mode 100644
index 0000000..def7109
--- /dev/null
+++ b/src/assets/icons/huodongguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huodongzhongxin.svg b/src/assets/icons/huodongzhongxin.svg
new file mode 100644
index 0000000..f22bb26
--- /dev/null
+++ b/src/assets/icons/huodongzhongxin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huojian.svg b/src/assets/icons/huojian.svg
new file mode 100644
index 0000000..f439dd8
--- /dev/null
+++ b/src/assets/icons/huojian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huojian_mian.svg b/src/assets/icons/huojian_mian.svg
new file mode 100644
index 0000000..812d3be
--- /dev/null
+++ b/src/assets/icons/huojian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/huolala.svg b/src/assets/icons/huolala.svg
new file mode 100644
index 0000000..a42ade7
--- /dev/null
+++ b/src/assets/icons/huolala.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/iOSfanhui.svg b/src/assets/icons/iOSfanhui.svg
new file mode 100644
index 0000000..8aeefbb
--- /dev/null
+++ b/src/assets/icons/iOSfanhui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jia.svg b/src/assets/icons/jia.svg
new file mode 100644
index 0000000..18fbd45
--- /dev/null
+++ b/src/assets/icons/jia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jia_mian.svg b/src/assets/icons/jia_mian.svg
new file mode 100644
index 0000000..5899c91
--- /dev/null
+++ b/src/assets/icons/jia_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jian.svg b/src/assets/icons/jian.svg
new file mode 100644
index 0000000..295037f
--- /dev/null
+++ b/src/assets/icons/jian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jian_mian.svg b/src/assets/icons/jian_mian.svg
new file mode 100644
index 0000000..e9dfa91
--- /dev/null
+++ b/src/assets/icons/jian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jianpan.svg b/src/assets/icons/jianpan.svg
new file mode 100644
index 0000000..5a7dcb9
--- /dev/null
+++ b/src/assets/icons/jianpan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jianpanshanchu.svg b/src/assets/icons/jianpanshanchu.svg
new file mode 100644
index 0000000..a5a5de1
--- /dev/null
+++ b/src/assets/icons/jianpanshanchu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jianshao.svg b/src/assets/icons/jianshao.svg
new file mode 100644
index 0000000..0a4d919
--- /dev/null
+++ b/src/assets/icons/jianshao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiaopeiwangputong.svg b/src/assets/icons/jiaopeiwangputong.svg
new file mode 100644
index 0000000..ec73071
--- /dev/null
+++ b/src/assets/icons/jiaopeiwangputong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiaoyi.svg b/src/assets/icons/jiaoyi.svg
new file mode 100644
index 0000000..1396bac
--- /dev/null
+++ b/src/assets/icons/jiaoyi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiedan.svg b/src/assets/icons/jiedan.svg
new file mode 100644
index 0000000..fcbe7a1
--- /dev/null
+++ b/src/assets/icons/jiedan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jiekuan.svg b/src/assets/icons/jiekuan.svg
new file mode 100644
index 0000000..4b7377f
--- /dev/null
+++ b/src/assets/icons/jiekuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingshi.svg b/src/assets/icons/jingshi.svg
new file mode 100644
index 0000000..3cecfc7
--- /dev/null
+++ b/src/assets/icons/jingshi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingshi_mian.svg b/src/assets/icons/jingshi_mian.svg
new file mode 100644
index 0000000..fe636ee
--- /dev/null
+++ b/src/assets/icons/jingshi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingshi_mian1.svg b/src/assets/icons/jingshi_mian1.svg
new file mode 100644
index 0000000..fe636ee
--- /dev/null
+++ b/src/assets/icons/jingshi_mian1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingyin.svg b/src/assets/icons/jingyin.svg
new file mode 100644
index 0000000..753f254
--- /dev/null
+++ b/src/assets/icons/jingyin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingyin_mian.svg b/src/assets/icons/jingyin_mian.svg
new file mode 100644
index 0000000..ce56e68
--- /dev/null
+++ b/src/assets/icons/jingyin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingying.svg b/src/assets/icons/jingying.svg
new file mode 100644
index 0000000..5630813
--- /dev/null
+++ b/src/assets/icons/jingying.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingying_mian.svg b/src/assets/icons/jingying_mian.svg
new file mode 100644
index 0000000..4e7ca35
--- /dev/null
+++ b/src/assets/icons/jingying_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingyinggonglve.svg b/src/assets/icons/jingyinggonglve.svg
new file mode 100644
index 0000000..0cd3755
--- /dev/null
+++ b/src/assets/icons/jingyinggonglve.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jingzhunyingxiao.svg b/src/assets/icons/jingzhunyingxiao.svg
new file mode 100644
index 0000000..781b0bb
--- /dev/null
+++ b/src/assets/icons/jingzhunyingxiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/jinhuo.svg b/src/assets/icons/jinhuo.svg
new file mode 100644
index 0000000..c5d9214
--- /dev/null
+++ b/src/assets/icons/jinhuo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kaitongwaimai.svg b/src/assets/icons/kaitongwaimai.svg
new file mode 100644
index 0000000..a6daad9
--- /dev/null
+++ b/src/assets/icons/kaitongwaimai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kanjia.svg b/src/assets/icons/kanjia.svg
new file mode 100644
index 0000000..9f6840b
--- /dev/null
+++ b/src/assets/icons/kanjia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kefu.svg b/src/assets/icons/kefu.svg
new file mode 100644
index 0000000..f32cacd
--- /dev/null
+++ b/src/assets/icons/kefu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kejian.svg b/src/assets/icons/kejian.svg
new file mode 100644
index 0000000..8b89874
--- /dev/null
+++ b/src/assets/icons/kejian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kejian_mian.svg b/src/assets/icons/kejian_mian.svg
new file mode 100644
index 0000000..62223b4
--- /dev/null
+++ b/src/assets/icons/kejian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/keziyuyue.svg b/src/assets/icons/keziyuyue.svg
new file mode 100644
index 0000000..0d2f1f9
--- /dev/null
+++ b/src/assets/icons/keziyuyue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kezizhongxin.svg b/src/assets/icons/kezizhongxin.svg
new file mode 100644
index 0000000..7fbcc6c
--- /dev/null
+++ b/src/assets/icons/kezizhongxin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/koubei.svg b/src/assets/icons/koubei.svg
new file mode 100644
index 0000000..a744077
--- /dev/null
+++ b/src/assets/icons/koubei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/kuaijiehuifu.svg b/src/assets/icons/kuaijiehuifu.svg
new file mode 100644
index 0000000..72aa5c5
--- /dev/null
+++ b/src/assets/icons/kuaijiehuifu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/ladu_mian.svg b/src/assets/icons/ladu_mian.svg
new file mode 100644
index 0000000..a40816c
--- /dev/null
+++ b/src/assets/icons/ladu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/lanyadingwei.svg b/src/assets/icons/lanyadingwei.svg
new file mode 100644
index 0000000..205653f
--- /dev/null
+++ b/src/assets/icons/lanyadingwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/list-2.svg b/src/assets/icons/list-2.svg
new file mode 100644
index 0000000..1f471f3
--- /dev/null
+++ b/src/assets/icons/list-2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/mendiandongtai.svg b/src/assets/icons/mendiandongtai.svg
new file mode 100644
index 0000000..7a7b415
--- /dev/null
+++ b/src/assets/icons/mendiandongtai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/mishiyuding.svg b/src/assets/icons/mishiyuding.svg
new file mode 100644
index 0000000..b856afa
--- /dev/null
+++ b/src/assets/icons/mishiyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/mishiyuding1.svg b/src/assets/icons/mishiyuding1.svg
new file mode 100644
index 0000000..7ac9101
--- /dev/null
+++ b/src/assets/icons/mishiyuding1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/notice_buyer.svg b/src/assets/icons/notice_buyer.svg
new file mode 100644
index 0000000..bab1997
--- /dev/null
+++ b/src/assets/icons/notice_buyer.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/open.svg b/src/assets/icons/open.svg
new file mode 100644
index 0000000..3cbd08c
--- /dev/null
+++ b/src/assets/icons/open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/paiduiquhao.svg b/src/assets/icons/paiduiquhao.svg
new file mode 100644
index 0000000..fb7abc9
--- /dev/null
+++ b/src/assets/icons/paiduiquhao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/paimai.svg b/src/assets/icons/paimai.svg
new file mode 100644
index 0000000..0139a69
--- /dev/null
+++ b/src/assets/icons/paimai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pingjia.svg b/src/assets/icons/pingjia.svg
new file mode 100644
index 0000000..9b39672
--- /dev/null
+++ b/src/assets/icons/pingjia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pingtaifapiao.svg b/src/assets/icons/pingtaifapiao.svg
new file mode 100644
index 0000000..b6b3315
--- /dev/null
+++ b/src/assets/icons/pingtaifapiao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pinpai.svg b/src/assets/icons/pinpai.svg
new file mode 100644
index 0000000..f4b129c
--- /dev/null
+++ b/src/assets/icons/pinpai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qianbao.svg b/src/assets/icons/qianbao.svg
new file mode 100644
index 0000000..f384250
--- /dev/null
+++ b/src/assets/icons/qianbao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qianbao_mian.svg b/src/assets/icons/qianbao_mian.svg
new file mode 100644
index 0000000..897f029
--- /dev/null
+++ b/src/assets/icons/qianbao_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qiehuan.svg b/src/assets/icons/qiehuan.svg
new file mode 100644
index 0000000..37e0a94
--- /dev/null
+++ b/src/assets/icons/qiehuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qingchu.svg b/src/assets/icons/qingchu.svg
new file mode 100644
index 0000000..dc898ac
--- /dev/null
+++ b/src/assets/icons/qingchu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qingchu_mian.svg b/src/assets/icons/qingchu_mian.svg
new file mode 100644
index 0000000..94ecaa2
--- /dev/null
+++ b/src/assets/icons/qingchu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qishoupeisong.svg b/src/assets/icons/qishoupeisong.svg
new file mode 100644
index 0000000..9adc068
--- /dev/null
+++ b/src/assets/icons/qishoupeisong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qiyedingcan.svg b/src/assets/icons/qiyedingcan.svg
new file mode 100644
index 0000000..147c9e2
--- /dev/null
+++ b/src/assets/icons/qiyedingcan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qiyedingcan1.svg b/src/assets/icons/qiyedingcan1.svg
new file mode 100644
index 0000000..a3c3277
--- /dev/null
+++ b/src/assets/icons/qiyedingcan1.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/quanbu.svg b/src/assets/icons/quanbu.svg
new file mode 100644
index 0000000..db088f5
--- /dev/null
+++ b/src/assets/icons/quanbu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/quanping.svg b/src/assets/icons/quanping.svg
new file mode 100644
index 0000000..0a5cfbe
--- /dev/null
+++ b/src/assets/icons/quanping.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qudao.svg b/src/assets/icons/qudao.svg
new file mode 100644
index 0000000..e0fbf39
--- /dev/null
+++ b/src/assets/icons/qudao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/qudao_xiaochengxu.svg b/src/assets/icons/qudao_xiaochengxu.svg
new file mode 100644
index 0000000..54af407
--- /dev/null
+++ b/src/assets/icons/qudao_xiaochengxu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rencaizhaopin.svg b/src/assets/icons/rencaizhaopin.svg
new file mode 100644
index 0000000..6113e53
--- /dev/null
+++ b/src/assets/icons/rencaizhaopin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rili.svg b/src/assets/icons/rili.svg
new file mode 100644
index 0000000..5d751bf
--- /dev/null
+++ b/src/assets/icons/rili.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rili2.svg b/src/assets/icons/rili2.svg
new file mode 100644
index 0000000..ba2d55d
--- /dev/null
+++ b/src/assets/icons/rili2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/rizhi.svg b/src/assets/icons/rizhi.svg
new file mode 100644
index 0000000..bfdf2b0
--- /dev/null
+++ b/src/assets/icons/rizhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/saoma.svg b/src/assets/icons/saoma.svg
new file mode 100644
index 0000000..260981d
--- /dev/null
+++ b/src/assets/icons/saoma.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_pay.svg b/src/assets/icons/set_pay.svg
new file mode 100644
index 0000000..639bb8e
--- /dev/null
+++ b/src/assets/icons/set_pay.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_peisong.svg b/src/assets/icons/set_peisong.svg
new file mode 100644
index 0000000..a87ca69
--- /dev/null
+++ b/src/assets/icons/set_peisong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_user.svg b/src/assets/icons/set_user.svg
new file mode 100644
index 0000000..800baf5
--- /dev/null
+++ b/src/assets/icons/set_user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/set_weihu.svg b/src/assets/icons/set_weihu.svg
new file mode 100644
index 0000000..e6765f1
--- /dev/null
+++ b/src/assets/icons/set_weihu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shanchu.svg b/src/assets/icons/shanchu.svg
new file mode 100644
index 0000000..9655138
--- /dev/null
+++ b/src/assets/icons/shanchu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shanchu_mian.svg b/src/assets/icons/shanchu_mian.svg
new file mode 100644
index 0000000..17ffa4e
--- /dev/null
+++ b/src/assets/icons/shanchu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangchuan.svg b/src/assets/icons/shangchuan.svg
new file mode 100644
index 0000000..f2d1a01
--- /dev/null
+++ b/src/assets/icons/shangchuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangchuanzhaopian.svg b/src/assets/icons/shangchuanzhaopian.svg
new file mode 100644
index 0000000..5e90e91
--- /dev/null
+++ b/src/assets/icons/shangchuanzhaopian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangpinguanli.svg b/src/assets/icons/shangpinguanli.svg
new file mode 100644
index 0000000..c15f1a1
--- /dev/null
+++ b/src/assets/icons/shangpinguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangpinzhushou.svg b/src/assets/icons/shangpinzhushou.svg
new file mode 100644
index 0000000..9972561
--- /dev/null
+++ b/src/assets/icons/shangpinzhushou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shangpuyuding.svg b/src/assets/icons/shangpuyuding.svg
new file mode 100644
index 0000000..4250f00
--- /dev/null
+++ b/src/assets/icons/shangpuyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shebeiguanli.svg b/src/assets/icons/shebeiguanli.svg
new file mode 100644
index 0000000..1ca4ef0
--- /dev/null
+++ b/src/assets/icons/shebeiguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shengfuwangputong.svg b/src/assets/icons/shengfuwangputong.svg
new file mode 100644
index 0000000..467b687
--- /dev/null
+++ b/src/assets/icons/shengfuwangputong.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shengyin.svg b/src/assets/icons/shengyin.svg
new file mode 100644
index 0000000..9b1d63b
--- /dev/null
+++ b/src/assets/icons/shengyin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shengyin_mian.svg b/src/assets/icons/shengyin_mian.svg
new file mode 100644
index 0000000..00c76a7
--- /dev/null
+++ b/src/assets/icons/shengyin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shezhi.svg b/src/assets/icons/shezhi.svg
new file mode 100644
index 0000000..785b60f
--- /dev/null
+++ b/src/assets/icons/shezhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shezhi_mian.svg b/src/assets/icons/shezhi_mian.svg
new file mode 100644
index 0000000..0bdc106
--- /dev/null
+++ b/src/assets/icons/shezhi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shichang.svg b/src/assets/icons/shichang.svg
new file mode 100644
index 0000000..d5d5d88
--- /dev/null
+++ b/src/assets/icons/shichang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shichang_mian.svg b/src/assets/icons/shichang_mian.svg
new file mode 100644
index 0000000..083b301
--- /dev/null
+++ b/src/assets/icons/shichang_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shijian.svg b/src/assets/icons/shijian.svg
new file mode 100644
index 0000000..9ad8b2e
--- /dev/null
+++ b/src/assets/icons/shijian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shijian_mian.svg b/src/assets/icons/shijian_mian.svg
new file mode 100644
index 0000000..6c00d41
--- /dev/null
+++ b/src/assets/icons/shijian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shoudan.svg b/src/assets/icons/shoudan.svg
new file mode 100644
index 0000000..9967dd8
--- /dev/null
+++ b/src/assets/icons/shoudan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouqi.svg b/src/assets/icons/shouqi.svg
new file mode 100644
index 0000000..e8386f1
--- /dev/null
+++ b/src/assets/icons/shouqi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouqi_mian.svg b/src/assets/icons/shouqi_mian.svg
new file mode 100644
index 0000000..b022d4c
--- /dev/null
+++ b/src/assets/icons/shouqi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouye.svg b/src/assets/icons/shouye.svg
new file mode 100644
index 0000000..288b24f
--- /dev/null
+++ b/src/assets/icons/shouye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouye_mian.svg b/src/assets/icons/shouye_mian.svg
new file mode 100644
index 0000000..d180e9b
--- /dev/null
+++ b/src/assets/icons/shouye_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shouyiren.svg b/src/assets/icons/shouyiren.svg
new file mode 100644
index 0000000..3b409d2
--- /dev/null
+++ b/src/assets/icons/shouyiren.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/show.svg b/src/assets/icons/show.svg
new file mode 100644
index 0000000..2fdf9b9
--- /dev/null
+++ b/src/assets/icons/show.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuangjiantouxiangyou.svg b/src/assets/icons/shuangjiantouxiangyou.svg
new file mode 100644
index 0000000..56c0e61
--- /dev/null
+++ b/src/assets/icons/shuangjiantouxiangyou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuangjiantouxiangzuo.svg b/src/assets/icons/shuangjiantouxiangzuo.svg
new file mode 100644
index 0000000..1a90a69
--- /dev/null
+++ b/src/assets/icons/shuangjiantouxiangzuo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuaxin.svg b/src/assets/icons/shuaxin.svg
new file mode 100644
index 0000000..a4686b3
--- /dev/null
+++ b/src/assets/icons/shuaxin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju.svg b/src/assets/icons/shuju.svg
new file mode 100644
index 0000000..8418b76
--- /dev/null
+++ b/src/assets/icons/shuju.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju2.svg b/src/assets/icons/shuju2.svg
new file mode 100644
index 0000000..bea4c25
--- /dev/null
+++ b/src/assets/icons/shuju2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju_liuliang.svg b/src/assets/icons/shuju_liuliang.svg
new file mode 100644
index 0000000..21b048b
--- /dev/null
+++ b/src/assets/icons/shuju_liuliang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuju_mian.svg b/src/assets/icons/shuju_mian.svg
new file mode 100644
index 0000000..5da2d78
--- /dev/null
+++ b/src/assets/icons/shuju_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sort.svg b/src/assets/icons/sort.svg
new file mode 100644
index 0000000..1e760a8
--- /dev/null
+++ b/src/assets/icons/sort.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sousuo.svg b/src/assets/icons/sousuo.svg
new file mode 100644
index 0000000..2387e0a
--- /dev/null
+++ b/src/assets/icons/sousuo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sucai.svg b/src/assets/icons/sucai.svg
new file mode 100644
index 0000000..23499f8
--- /dev/null
+++ b/src/assets/icons/sucai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tianjia.svg b/src/assets/icons/tianjia.svg
new file mode 100644
index 0000000..b06fe16
--- /dev/null
+++ b/src/assets/icons/tianjia.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tishi.svg b/src/assets/icons/tishi.svg
new file mode 100644
index 0000000..e14e118
--- /dev/null
+++ b/src/assets/icons/tishi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tishi_mian.svg b/src/assets/icons/tishi_mian.svg
new file mode 100644
index 0000000..04334ea
--- /dev/null
+++ b/src/assets/icons/tishi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tongxunlu_mian.svg b/src/assets/icons/tongxunlu_mian.svg
new file mode 100644
index 0000000..b7c06ab
--- /dev/null
+++ b/src/assets/icons/tongxunlu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tongzhi.svg b/src/assets/icons/tongzhi.svg
new file mode 100644
index 0000000..a227028
--- /dev/null
+++ b/src/assets/icons/tongzhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tongzhi_mian.svg b/src/assets/icons/tongzhi_mian.svg
new file mode 100644
index 0000000..876676f
--- /dev/null
+++ b/src/assets/icons/tongzhi_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tuichuquanping.svg b/src/assets/icons/tuichuquanping.svg
new file mode 100644
index 0000000..3832030
--- /dev/null
+++ b/src/assets/icons/tuichuquanping.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tuiguang.svg b/src/assets/icons/tuiguang.svg
new file mode 100644
index 0000000..7d5bb2d
--- /dev/null
+++ b/src/assets/icons/tuiguang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tuiguang_mian.svg b/src/assets/icons/tuiguang_mian.svg
new file mode 100644
index 0000000..005323a
--- /dev/null
+++ b/src/assets/icons/tuiguang_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tupian.svg b/src/assets/icons/tupian.svg
new file mode 100644
index 0000000..64b511d
--- /dev/null
+++ b/src/assets/icons/tupian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/tupian_mian.svg b/src/assets/icons/tupian_mian.svg
new file mode 100644
index 0000000..0875efd
--- /dev/null
+++ b/src/assets/icons/tupian_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user_biaoqian.svg b/src/assets/icons/user_biaoqian.svg
new file mode 100644
index 0000000..206fff6
--- /dev/null
+++ b/src/assets/icons/user_biaoqian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user_gaikuang.svg b/src/assets/icons/user_gaikuang.svg
new file mode 100644
index 0000000..b4ae10e
--- /dev/null
+++ b/src/assets/icons/user_gaikuang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user_guanli.svg b/src/assets/icons/user_guanli.svg
new file mode 100644
index 0000000..e00fd79
--- /dev/null
+++ b/src/assets/icons/user_guanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/wangpudiandan.svg b/src/assets/icons/wangpudiandan.svg
new file mode 100644
index 0000000..77cc413
--- /dev/null
+++ b/src/assets/icons/wangpudiandan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/weixin.svg b/src/assets/icons/weixin.svg
new file mode 100644
index 0000000..f043f12
--- /dev/null
+++ b/src/assets/icons/weixin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/weixin_mian.svg b/src/assets/icons/weixin_mian.svg
new file mode 100644
index 0000000..5c4e92e
--- /dev/null
+++ b/src/assets/icons/weixin_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/wode.svg b/src/assets/icons/wode.svg
new file mode 100644
index 0000000..4cc5c10
--- /dev/null
+++ b/src/assets/icons/wode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/wode_mian.svg b/src/assets/icons/wode_mian.svg
new file mode 100644
index 0000000..ea9ebfb
--- /dev/null
+++ b/src/assets/icons/wode_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xiangji.svg b/src/assets/icons/xiangji.svg
new file mode 100644
index 0000000..a9f7b5f
--- /dev/null
+++ b/src/assets/icons/xiangji.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xiaoxi.svg b/src/assets/icons/xiaoxi.svg
new file mode 100644
index 0000000..cf220c8
--- /dev/null
+++ b/src/assets/icons/xiaoxi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xiazai.svg b/src/assets/icons/xiazai.svg
new file mode 100644
index 0000000..c741576
--- /dev/null
+++ b/src/assets/icons/xiazai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/xitongquanxian.svg b/src/assets/icons/xitongquanxian.svg
new file mode 100644
index 0000000..b34ac74
--- /dev/null
+++ b/src/assets/icons/xitongquanxian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yingxiao_qipao.svg b/src/assets/icons/yingxiao_qipao.svg
new file mode 100644
index 0000000..238ddf2
--- /dev/null
+++ b/src/assets/icons/yingxiao_qipao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yingyezizhi.svg b/src/assets/icons/yingyezizhi.svg
new file mode 100644
index 0000000..23ae5be
--- /dev/null
+++ b/src/assets/icons/yingyezizhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yinhangka.svg b/src/assets/icons/yinhangka.svg
new file mode 100644
index 0000000..20c1fdc
--- /dev/null
+++ b/src/assets/icons/yinhangka.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yiwen.svg b/src/assets/icons/yiwen.svg
new file mode 100644
index 0000000..ef07f2e
--- /dev/null
+++ b/src/assets/icons/yiwen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/youhui.svg b/src/assets/icons/youhui.svg
new file mode 100644
index 0000000..4358e1c
--- /dev/null
+++ b/src/assets/icons/youhui.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/youjian.svg b/src/assets/icons/youjian.svg
new file mode 100644
index 0000000..1304c01
--- /dev/null
+++ b/src/assets/icons/youjian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/youjiantou.svg b/src/assets/icons/youjiantou.svg
new file mode 100644
index 0000000..5c59926
--- /dev/null
+++ b/src/assets/icons/youjiantou.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yulibao.svg b/src/assets/icons/yulibao.svg
new file mode 100644
index 0000000..b785c04
--- /dev/null
+++ b/src/assets/icons/yulibao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yuyin.svg b/src/assets/icons/yuyin.svg
new file mode 100644
index 0000000..1ac06af
--- /dev/null
+++ b/src/assets/icons/yuyin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yuyueguanli.svg b/src/assets/icons/yuyueguanli.svg
new file mode 100644
index 0000000..080255d
--- /dev/null
+++ b/src/assets/icons/yuyueguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/yuyueguanlishezhi.svg b/src/assets/icons/yuyueguanlishezhi.svg
new file mode 100644
index 0000000..eac7549
--- /dev/null
+++ b/src/assets/icons/yuyueguanlishezhi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhankai.svg b/src/assets/icons/zhankai.svg
new file mode 100644
index 0000000..aef4e53
--- /dev/null
+++ b/src/assets/icons/zhankai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhankai_mian.svg b/src/assets/icons/zhankai_mian.svg
new file mode 100644
index 0000000..187e3e9
--- /dev/null
+++ b/src/assets/icons/zhankai_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhibo.svg b/src/assets/icons/zhibo.svg
new file mode 100644
index 0000000..d329b49
--- /dev/null
+++ b/src/assets/icons/zhibo.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhibo_mian.svg b/src/assets/icons/zhibo_mian.svg
new file mode 100644
index 0000000..443e2cb
--- /dev/null
+++ b/src/assets/icons/zhibo_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhuangxiu.svg b/src/assets/icons/zhuangxiu.svg
new file mode 100644
index 0000000..c692c45
--- /dev/null
+++ b/src/assets/icons/zhuangxiu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhuangxiu_mian.svg b/src/assets/icons/zhuangxiu_mian.svg
new file mode 100644
index 0000000..53e8deb
--- /dev/null
+++ b/src/assets/icons/zhuangxiu_mian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zhuoweiguanli.svg b/src/assets/icons/zhuoweiguanli.svg
new file mode 100644
index 0000000..ee9d0cc
--- /dev/null
+++ b/src/assets/icons/zhuoweiguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zichanzhuanrang.svg b/src/assets/icons/zichanzhuanrang.svg
new file mode 100644
index 0000000..8a8d546
--- /dev/null
+++ b/src/assets/icons/zichanzhuanrang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zuliao.svg b/src/assets/icons/zuliao.svg
new file mode 100644
index 0000000..e210df3
--- /dev/null
+++ b/src/assets/icons/zuliao.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/zuliaoyuding.svg b/src/assets/icons/zuliaoyuding.svg
new file mode 100644
index 0000000..69a9d99
--- /dev/null
+++ b/src/assets/icons/zuliaoyuding.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_folder.png b/src/assets/images/icon_folder.png
new file mode 100644
index 0000000000000000000000000000000000000000..99b800ffbe4458257e6e73a655ca36b0009d9439
GIT binary patch
literal 605
zcmV-j0;2tiP)4f26ot=uyR+%+k~IiHE3ItAV(o0yRy3M)!NP4)#f&2(+jnbn^?cI9`wDlzP&)flSvh}KV42+)wI0C=}a2e_th(T?W{$AuO*Lmvo
z4{6>3HwJb_0i50V#u_#G;KJvAFfoDH_H#G-UQWAkD4w&>Q
zFn8Y6w&*dM5$x|}25Cnbjt?pm=j-qX1h>uP+)s?7P1a2$NRLY?B-OatU!mR)^^hlA
z)B>0)+Yg?#%O{8%fL2lcyh6^$rYO~1u!2dG2Zi;JL57DQEranKt8-1Nc_$AAQ>@Th
zY0E^m&pbGLId8yl{W>4u&!n$~tHTIrFWLFI6V`_nu(K1ym*EC9#+*NrJbLht8UW|hXnxUyc_^6AU;a>%-ue0;w)l1fV0C{42(7AQXj%hst`Aos
z^r>0$Q-|Xj)wnecmX-j-<`U#Gf@VS3ea&w}lb=fFSZyvmgws^l{xHZa{!AD~?`%`f
zCb|e-_c=a0(*?YH7|t&OINkMUQgdiOAoi+hJNW{xe1)U+O(ymN?X(zSE4~ErBB+x9
r4((Mb=lf=Tyan9~#<*-gjj{a#{ssW#^D}X600000NkvXXu0mjflw=TH
literal 0
HcmV?d00001
diff --git a/src/assets/images/no_perms.png b/src/assets/images/no_perms.png
new file mode 100644
index 0000000000000000000000000000000000000000..c37c89bb5c0a1cb31be3900b6de604a0a8cd9063
GIT binary patch
literal 14619
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
literal 0
HcmV?d00001
diff --git a/src/assets/images/theme_white.png b/src/assets/images/theme_white.png
new file mode 100644
index 0000000000000000000000000000000000000000..52714ba146ac6aa1510c5615f7c5dce913cab9cb
GIT binary patch
literal 2559
zcmeH}`8U)J7rOTM+_*
zC_6f!&PqH@qDk^{66>My$xPy8h<1)1@)C)Wzmg1rDAYKjY&{|`&J1C$`FLtX*Tnk>ej*Z
zf8|s+lTTvqZpYx%%rNFz?UCZSSptzb^8HDaxSh3W_lf(hme{#5{;i$VV+a5JOzLR)
zN$pp{rgv`fC-`y+pcjNrWL0~6U!eCex7~Ulai~jltJGuiwID3IE_npdoYb<>{QT6)
zgF8vV*}go3*e+w`4jK$T?SvkmzQtO!+FPM;RJ7>enR=hI9Jyq%5lx1pofK7WzLX-f
z$Ji^zUa#omokBXUYrJ{vV(X*f@W^N6;qzo)QfJJOFPc$4DT$mr!Nqvnh6phak>eD2
z)z6QQsv0nQRT%{UfH3{f0E_hC(cNtbw}ToXCPFM0ixiJEY<6@%N5i8cH3>G~GUL#V
zIGCwND_**y?>hI(_(F;I$?W_##GRscoGdDF@br$^d
z)(YgmaUYI8aM<9_!4`?EZLF`vPC!Ft!id2b0ly!eSuA7xJFVl8jTwBpCg
z%7fkXjfwe;W3-RMcE%%I;nJm#X(Xd8_{ThaZu+_?ge=Z}D#|C9a3hq3BB)<#9Wk
zi_#CZs0O74*0_z9c^U0UvIZ4vcy%OKm*O;i#RyjLNL}>G>gb20Sh?BuW$=X(a_5d6
z87Z+e<6&SfC2%`FxHVU|t>=|%(8|ovO1-mY%Y`Z`dwP0$Kr&w;mq{CF47?eAj1I>y
z%3)Z+&Y*u+gZrVJi|u#@{hhPscH&Bf|7@WdLC97g_;bAWdxCw}mmXVr*i3~~SI&7L{P_K@
zr++Yj{=ZUi6ZmjE-z7Yh(x62ET=zG~LS}!>mMKb8auJ*G2%u$nAKprVQ3~`=roVa_*|I4IKN3z}5FXh|5O%V+gu
zK{jSIIdH3l$u%*2D23<0Bz!cJlQ7Qt8jesT!QIM#m$ZcWf7}1*l1&KWWIY%U>mGfC
zm{&yG)HI@=xs)Xy$96{|&Qbe<6B82;Fg%LAs7p8~GH+&or!EH6k6%ag4Myx`e!O81
z4i2t$cXty7L$|rP!v!To>b8q&P-g@JQIwXJ7V|j}*~MUpP!S8>K0Yy_{{Dh{_pmzL
z%hVfs3*I{BIl3t)9=|7ac6Pd+c5&f}IA;ZD+1XVK;ftdDf&!Qg>F1A!pU!s-mL@v4
zPh$=n?!Xf#a_Ly}$miXw6>bMVJuu(g0zL}0<*Hq?EZE#*Md0fzg^-NSa8;U(;jeAp
z^s*wTL}w5NgN-OFE7uKFdp65&1x-`?0#r0z4LUQ@(@9gKxqF91gKBGqZ_9Np^F&El
z%9HFvIZkW;oVpyR7vHPi?j!`&Ne?sXt)K-qVUt}ffx?T73pR2d#0Y=z`X8o2VnI_=
z6AYcPXRQ(D$*gLUKNAnwW!@HP`-^<*!lwQ$G&eW@Syt{>zy_LdfEXV>Pd!&rf84@i
ziNx?BYg2zhBfN6NoNy!(8Ow~E7odYUPu9-C?0@-TU7ZqI)QGb+;o{|FouD7B58$z;
z$B)O9dK;bKQuNm)%X*LCQG|WMC7Zn5+OnyS@kd1Ok7f
zLw<#>LhlZ4hD=@V74Ce|z@tR3>-8K|Y+cHU(tLP9g9f{!Nu8?KM4*ZbXamxrpk8Bn
zgr7QnhFBFKq(dn=l^$8$tg_#zu3z5qmMjKN!x3cQT#ayDOC05|Z*EU9?uSeH9PVGa
z#X6sI(6?8_oOtce8T)wz)zxZELpbD@NLhl4<+m%2(Uhx3I$Ozhf59$?fi;Km333EA
zb%wl}9JVz?*i|1iSTl{90?Fn~_<{+@_^NMIJfSL#SxZT2-Oc?JRh;{h#OM(~=8N
zYh^=EIT>M=yE+4f0A*Fq&OwPl2#F2%(q5?_G3EXJ5bEoFcW$Gw970$T^=r@ntq6(u
cufQ*r+E9`TEXaOJ^3g#YPr0Dp+W95?2N6QvSpWb4
literal 0
HcmV?d00001
diff --git a/src/components/app-link/index.vue b/src/components/app-link/index.vue
new file mode 100644
index 0000000..e7fe926
--- /dev/null
+++ b/src/components/app-link/index.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
diff --git a/src/components/color-picker/index.vue b/src/components/color-picker/index.vue
new file mode 100644
index 0000000..ed0bc3e
--- /dev/null
+++ b/src/components/color-picker/index.vue
@@ -0,0 +1,33 @@
+
+
+
+
+ 重置
+
+
+
diff --git a/src/components/daterange-picker/index.vue b/src/components/daterange-picker/index.vue
new file mode 100644
index 0000000..5ad8f04
--- /dev/null
+++ b/src/components/daterange-picker/index.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
diff --git a/src/components/del-wrap/index.vue b/src/components/del-wrap/index.vue
new file mode 100644
index 0000000..787f3e2
--- /dev/null
+++ b/src/components/del-wrap/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/src/components/dict-value/index.vue b/src/components/dict-value/index.vue
new file mode 100644
index 0000000..7d34aec
--- /dev/null
+++ b/src/components/dict-value/index.vue
@@ -0,0 +1,35 @@
+
+
+
+ {{ index != 0 ? '、' : '' }}{{ item[config.label] }}
+
+
+
+
diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue
new file mode 100644
index 0000000..ae39eee
--- /dev/null
+++ b/src/components/editor/index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/export-data/index.vue b/src/components/export-data/index.vue
new file mode 100644
index 0000000..b687c9d
--- /dev/null
+++ b/src/components/export-data/index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+ 导出
+
+
+
+
+ 预计导出{{ exportData.count }}条数据, 共{{ exportData.sum_page }}页,每页{{
+ exportData.page_size
+ }}条数据
+
+
+ 每次导出最大允许{{ exportData.max_page }}页,共{{
+ exportData.all_max_size
+ }}条数据
+
+
+
+ 全部导出
+ 分页导出
+
+
+
+
+
+
+
+ 页,至
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/footer-btns/index.vue b/src/components/footer-btns/index.vue
new file mode 100644
index 0000000..eb5aea2
--- /dev/null
+++ b/src/components/footer-btns/index.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/src/components/icon/index.ts b/src/components/icon/index.ts
new file mode 100644
index 0000000..831fcad
--- /dev/null
+++ b/src/components/icon/index.ts
@@ -0,0 +1,19 @@
+import * as ElementPlusIcons from '@element-plus/icons-vue'
+//@ts-ignore
+import localIconsName from 'virtual:svg-icons-names'
+
+export const LOCAL_ICON_PREFIX = 'local-icon-'
+export const EL_ICON_PREFIX = 'el-icon-'
+
+const elIconsName: string[] = []
+
+for (const [, component] of Object.entries(ElementPlusIcons)) {
+ elIconsName.push(`${EL_ICON_PREFIX}${component.name}`)
+}
+
+export function getElementPlusIconNames() {
+ return elIconsName
+}
+export function getLocalIconNames() {
+ return localIconsName
+}
diff --git a/src/components/icon/index.vue b/src/components/icon/index.vue
new file mode 100644
index 0000000..98dff2a
--- /dev/null
+++ b/src/components/icon/index.vue
@@ -0,0 +1,48 @@
+
diff --git a/src/components/icon/picker.vue b/src/components/icon/picker.vue
new file mode 100644
index 0000000..27fc8cd
--- /dev/null
+++ b/src/components/icon/picker.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
请选择图标
+
+
+ {{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 无
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/icon/svg-icon.vue b/src/components/icon/svg-icon.vue
new file mode 100644
index 0000000..10c6919
--- /dev/null
+++ b/src/components/icon/svg-icon.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
diff --git a/src/components/image-contain/index.vue b/src/components/image-contain/index.vue
new file mode 100644
index 0000000..e0285b9
--- /dev/null
+++ b/src/components/image-contain/index.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
diff --git a/src/components/material/file.vue b/src/components/material/file.vue
new file mode 100644
index 0000000..a9f0500
--- /dev/null
+++ b/src/components/material/file.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
diff --git a/src/components/material/hook.ts b/src/components/material/hook.ts
new file mode 100644
index 0000000..611453b
--- /dev/null
+++ b/src/components/material/hook.ts
@@ -0,0 +1,209 @@
+import {
+ fileCateAdd,
+ fileCateDelete,
+ fileCateEdit,
+ fileCateLists,
+ fileDelete,
+ fileList,
+ fileMove,
+ fileRename
+} from '@/api/file'
+import { usePaging } from '@/hooks/usePaging'
+import feedback from '@/utils/feedback'
+import { ElMessage, ElTree, type CheckboxValueType } from 'element-plus'
+import { shallowRef, type Ref } from 'vue'
+
+// 左侧分组的钩子函数
+export function useCate(type: number) {
+ const treeRef = shallowRef>()
+ // 分组列表
+ const cateLists = ref([])
+
+ // 选中的分组id
+ const cateId = ref('')
+
+ // 获取分组列表
+ const getCateLists = async () => {
+ const data = await fileCateLists({
+ page_type: 0,
+ type
+ })
+ const item: any[] = [
+ {
+ name: '全部',
+ id: ''
+ },
+ {
+ name: '未分组',
+ id: 0
+ }
+ ]
+ cateLists.value = data.lists
+ cateLists.value.unshift(...item)
+ setTimeout(() => {
+ treeRef.value?.setCurrentKey(cateId.value)
+ }, 0)
+ }
+
+ // 添加分组
+ const handleAddCate = async (value: string) => {
+ await fileCateAdd({
+ type,
+ name: value,
+ pid: 0
+ })
+ getCateLists()
+ }
+
+ // 编辑分组
+ const handleEditCate = async (value: string, id: number) => {
+ await fileCateEdit({
+ id,
+ name: value
+ })
+ getCateLists()
+ }
+
+ // 删除分组
+ const handleDeleteCate = async (id: number) => {
+ await feedback.confirm('确定要删除?')
+ await fileCateDelete({ id })
+ cateId.value = ''
+ getCateLists()
+ }
+
+ //选中分类
+ const handleCatSelect = (item: any) => {
+ cateId.value = item.id
+ }
+
+ return {
+ treeRef,
+ cateId,
+ cateLists,
+ handleAddCate,
+ handleEditCate,
+ handleDeleteCate,
+ getCateLists,
+ handleCatSelect
+ }
+}
+
+// 处理文件的钩子函数
+export function useFile(
+ cateId: Ref,
+ type: Ref,
+ limit: Ref,
+ size: number
+) {
+ const tableRef = shallowRef()
+ const listShowType = ref('normal')
+ const moveId = ref(0)
+ const select = ref([])
+ const isCheckAll = ref(false)
+ const isIndeterminate = ref(false)
+ const fileParams = reactive({
+ name: '',
+ type: type,
+ cid: cateId
+ })
+ const { pager, getLists, resetPage } = usePaging({
+ fetchFun: fileList,
+ params: fileParams,
+ firstLoading: true,
+ size
+ })
+
+ const getFileList = () => {
+ getLists()
+ }
+ const refresh = () => {
+ resetPage()
+ }
+
+ const isSelect = (id: number) => {
+ return !!select.value.find((item: any) => item.id == id)
+ }
+
+ const batchFileDelete = async (id?: number[]) => {
+ await feedback.confirm(
+ '确认删除后,本地或云存储文件也将同步删除,如文件已被使用,请谨慎操作!'
+ )
+ const ids = id ? id : select.value.map((item: any) => item.id)
+ await fileDelete({ ids })
+ getFileList()
+ clearSelect()
+ }
+
+ const batchFileMove = async () => {
+ const ids = select.value.map((item: any) => item.id)
+ await fileMove({ ids, cid: moveId.value })
+ moveId.value = 0
+ getFileList()
+ clearSelect()
+ }
+
+ const selectFile = (item: any) => {
+ const index = select.value.findIndex((items: any) => items.id == item.id)
+ if (index != -1) {
+ select.value.splice(index, 1)
+ return
+ }
+ if (select.value.length == limit.value) {
+ if (limit.value == 1) {
+ select.value = []
+ select.value.push(item)
+ return
+ }
+ ElMessage.warning('已达到选择上限')
+ return
+ }
+ select.value.push(item)
+ }
+
+ const clearSelect = () => {
+ select.value = []
+ }
+
+ const cancelSelete = (id: number) => {
+ select.value = select.value.filter((item: any) => item.id != id)
+ }
+
+ const selectAll = (value: CheckboxValueType) => {
+ isIndeterminate.value = false
+ tableRef.value?.toggleAllSelection()
+ if (value) {
+ select.value = [...pager.lists]
+ return
+ }
+ clearSelect()
+ }
+
+ const handleFileRename = async (name: string, id: number) => {
+ await fileRename({
+ id,
+ name
+ })
+ getFileList()
+ }
+ return {
+ listShowType,
+ tableRef,
+ moveId,
+ pager,
+ fileParams,
+ select,
+ isCheckAll,
+ isIndeterminate,
+ getFileList,
+ refresh,
+ batchFileDelete,
+ batchFileMove,
+ selectFile,
+ isSelect,
+ clearSelect,
+ cancelSelete,
+ selectAll,
+ handleFileRename
+ }
+}
diff --git a/src/components/material/index.vue b/src/components/material/index.vue
new file mode 100644
index 0000000..72660bb
--- /dev/null
+++ b/src/components/material/index.vue
@@ -0,0 +1,566 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ···
+
+
+
+
+
+ 命名分组
+
+
+
+
+ 删除分组
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 本地上传
+
+
+ 本地上传
+
+
+ 删除
+
+
+
+
+ 移动
+
+
+
+ 移动文件至
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当页全选
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.name }}
+
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+ 暂无数据~
+
+
+
+
+
+
+
+ 已选择 {{ select.length }}
+ /{{ limit }}
+
+
清空
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/material/picker.vue b/src/components/material/picker.vue
new file mode 100644
index 0000000..d015b74
--- /dev/null
+++ b/src/components/material/picker.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 修改
+ |
+ 查看
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/material/preview.vue b/src/components/material/preview.vue
new file mode 100644
index 0000000..07d551f
--- /dev/null
+++ b/src/components/material/preview.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
diff --git a/src/components/overflow-tooltip/index.vue b/src/components/overflow-tooltip/index.vue
new file mode 100644
index 0000000..57734db
--- /dev/null
+++ b/src/components/overflow-tooltip/index.vue
@@ -0,0 +1,47 @@
+
+
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
diff --git a/src/components/pagination/index.vue b/src/components/pagination/index.vue
new file mode 100644
index 0000000..020d304
--- /dev/null
+++ b/src/components/pagination/index.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
diff --git a/src/components/popover-input/index.vue b/src/components/popover-input/index.vue
new file mode 100644
index 0000000..88ba84a
--- /dev/null
+++ b/src/components/popover-input/index.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/popup/index.vue b/src/components/popup/index.vue
new file mode 100644
index 0000000..726f89f
--- /dev/null
+++ b/src/components/popup/index.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+ {{ title }}
+
+
+ {{ content }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/upload/index.vue b/src/components/upload/index.vue
new file mode 100644
index 0000000..6c09138
--- /dev/null
+++ b/src/components/upload/index.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/vditor/index.vue b/src/components/vditor/index.vue
new file mode 100644
index 0000000..ec31ca9
--- /dev/null
+++ b/src/components/vditor/index.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/video-player/index.vue b/src/components/video-player/index.vue
new file mode 100644
index 0000000..8a49f31
--- /dev/null
+++ b/src/components/video-player/index.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/src/config/index.ts b/src/config/index.ts
new file mode 100644
index 0000000..fe39e11
--- /dev/null
+++ b/src/config/index.ts
@@ -0,0 +1,10 @@
+const config = {
+ terminal: 1, //终端
+ title: '后台管理系统', //网站默认标题
+ version: '1.5.0', //版本号
+ baseUrl: `${import.meta.env.VITE_APP_BASE_URL || ''}/`, //请求接口域名
+ urlPrefix: 'admin', //请求默认前缀
+ timeout: 10 * 1000 //请求超时时长
+}
+
+export default config
diff --git a/src/config/setting.ts b/src/config/setting.ts
new file mode 100644
index 0000000..35d62e1
--- /dev/null
+++ b/src/config/setting.ts
@@ -0,0 +1,16 @@
+const defaultSetting = {
+ showCrumb: true, // 是否显示面包屑
+ showLogo: true, // 是否显示logo
+ isUniqueOpened: false, //只展开一个一级菜单
+ sideWidth: 200, //侧边栏宽度
+ sideTheme: 'light', //侧边栏主题
+ sideDarkColor: '#1d2124', //侧边栏深色主题颜色
+ openMultipleTabs: true, // 是否开启多标签tab栏
+ theme: '#4A5DFF', //主题色
+ successTheme: '#67c23a', //成功主题色
+ warningTheme: '#e6a23c', //警告主题色
+ dangerTheme: '#f56c6c', //危险主题色
+ errorTheme: '#f56c6c', //错误主题色
+ infoTheme: '#909399' //信息主题色
+}
+export default defaultSetting
diff --git a/src/enums/appEnums.ts b/src/enums/appEnums.ts
new file mode 100644
index 0000000..90ac145
--- /dev/null
+++ b/src/enums/appEnums.ts
@@ -0,0 +1,40 @@
+//菜单主题类型
+export enum ThemeEnum {
+ LIGHT = 'light',
+ DARK = 'dark'
+}
+
+// 菜单类型
+export enum MenuEnum {
+ CATALOGUE = 'M',
+ MENU = 'C',
+ BUTTON = 'A'
+}
+
+// 屏幕
+export enum ScreenEnum {
+ SM = 640,
+ MD = 768,
+ LG = 1024,
+ XL = 1280,
+ '2XL' = 1536
+}
+
+// 客户端类型
+export enum ClientEnum {
+ MP_WEIXIN = 1, // 微信-小程序
+ OA_WEIXIN = 2, // 微信-公众号
+ H5 = 3, // H5
+ PC = 4, // PC
+ IOS = 5, //苹果
+ ANDROID = 6 //安卓
+}
+
+export const ClientMap = {
+ [ClientEnum.MP_WEIXIN]: '微信小程序',
+ [ClientEnum.OA_WEIXIN]: '微信公众号',
+ [ClientEnum.H5]: '手机H5',
+ [ClientEnum.PC]: '电脑PC',
+ [ClientEnum.IOS]: '苹果APP',
+ [ClientEnum.ANDROID]: '安卓APP'
+}
diff --git a/src/enums/cacheEnums.ts b/src/enums/cacheEnums.ts
new file mode 100644
index 0000000..45624e4
--- /dev/null
+++ b/src/enums/cacheEnums.ts
@@ -0,0 +1,8 @@
+// 本地缓冲key
+
+//token
+export const TOKEN_KEY = 'token'
+//账号
+export const ACCOUNT_KEY = 'account'
+//设置
+export const SETTING_KEY = 'setting'
diff --git a/src/enums/pageEnum.ts b/src/enums/pageEnum.ts
new file mode 100644
index 0000000..1509ff5
--- /dev/null
+++ b/src/enums/pageEnum.ts
@@ -0,0 +1,7 @@
+export enum PageEnum {
+ //登录页面
+ LOGIN = '/login',
+ //无权限页面
+ ERROR_403 = '/403',
+ INDEX = '/'
+}
diff --git a/src/enums/requestEnums.ts b/src/enums/requestEnums.ts
new file mode 100644
index 0000000..7ee2107
--- /dev/null
+++ b/src/enums/requestEnums.ts
@@ -0,0 +1,18 @@
+export enum ContentTypeEnum {
+ // json
+ JSON = 'application/json;charset=UTF-8',
+ // form-data 上传资源(图片,视频)
+ FORM_DATA = 'multipart/form-data;charset=UTF-8'
+}
+
+export enum RequestMethodsEnum {
+ GET = 'GET',
+ POST = 'POST'
+}
+
+export enum RequestCodeEnum {
+ SUCCESS = 1,
+ FAIL = 0,
+ LOGIN_FAILURE = -1,
+ OPEN_NEW_PAGE = 2
+}
diff --git a/src/hooks/useDictOptions.ts b/src/hooks/useDictOptions.ts
new file mode 100644
index 0000000..d79ec5a
--- /dev/null
+++ b/src/hooks/useDictOptions.ts
@@ -0,0 +1,67 @@
+import { getDictData } from '@/api/app'
+import { reactive, toRaw } from 'vue'
+
+interface Options {
+ [propName: string]: {
+ api: PromiseFun
+ params?: Record
+ transformData?(data: any): any
+ }
+}
+
+// {
+// dict: {
+// api: dictData,
+// params: { name: 'user' },
+// transformData(data: any) {
+// return data.list
+// }
+// }
+// }
+
+export function useDictOptions(options: Options) {
+ const optionsData: any = reactive({})
+ const optionsKey = Object.keys(options)
+ const apiLists = optionsKey.map((key) => {
+ const value = options[key]
+ optionsData[key] = []
+ return () => value.api(toRaw(value.params) || {})
+ })
+
+ const refresh = async () => {
+ const res = await Promise.allSettled>(apiLists.map((api) => api()))
+ res.forEach((item, index) => {
+ const key = optionsKey[index]
+ if (item.status == 'fulfilled') {
+ const { transformData } = options[key]
+ const data = transformData ? transformData(item.value) : item.value
+ optionsData[key] = data
+ }
+ })
+ }
+ refresh()
+ return {
+ optionsData: optionsData as T,
+ refresh
+ }
+}
+
+// useDictData<{
+// dict: any[]
+// }>(['dict'])
+
+export function useDictData(dict: string) {
+ const dictData: any = reactive({})
+ const refresh = async () => {
+ const data = await getDictData({
+ type: dict
+ })
+ Object.assign(dictData, data)
+ }
+ refresh()
+
+ return {
+ dictData: dictData as T,
+ refresh
+ }
+}
diff --git a/src/hooks/useLockFn.ts b/src/hooks/useLockFn.ts
new file mode 100644
index 0000000..c4423d6
--- /dev/null
+++ b/src/hooks/useLockFn.ts
@@ -0,0 +1,21 @@
+import { ref } from 'vue'
+
+export function useLockFn(fn: (...args: any[]) => Promise) {
+ const isLock = ref(false)
+ const lockFn = async (...args: any[]) => {
+ if (isLock.value) return
+ isLock.value = true
+ try {
+ const res = await fn(...args)
+ isLock.value = false
+ return res
+ } catch (e) {
+ isLock.value = false
+ throw e
+ }
+ }
+ return {
+ isLock,
+ lockFn
+ }
+}
diff --git a/src/hooks/useMultipleTabs.ts b/src/hooks/useMultipleTabs.ts
new file mode 100644
index 0000000..02e1e43
--- /dev/null
+++ b/src/hooks/useMultipleTabs.ts
@@ -0,0 +1,47 @@
+import useTabsStore from '@/stores/modules/multipleTabs'
+import useSettingStore from '@/stores/modules/setting'
+
+export default function useMultipleTabs() {
+ const router = useRouter()
+ const route = useRoute()
+ const tabsStore = useTabsStore()
+ const settingStore = useSettingStore()
+
+ const tabsLists = computed(() => {
+ return tabsStore.getTabList
+ })
+
+ const currentTab = computed(() => {
+ return route.fullPath
+ })
+
+ const addTab = () => {
+ if (!settingStore.openMultipleTabs) return
+ tabsStore.addTab(router)
+ }
+
+ const removeTab = (fullPath?: any) => {
+ if (!settingStore.openMultipleTabs) return
+ fullPath = fullPath ?? route.fullPath
+ tabsStore.removeTab(fullPath, router)
+ }
+
+ const removeOtherTab = () => {
+ if (!settingStore.openMultipleTabs) return
+ tabsStore.removeOtherTab(route)
+ }
+
+ const removeAllTab = () => {
+ if (!settingStore.openMultipleTabs) return
+ tabsStore.removeAllTab(router)
+ }
+
+ return {
+ tabsLists,
+ currentTab,
+ addTab,
+ removeTab,
+ removeOtherTab,
+ removeAllTab
+ }
+}
diff --git a/src/hooks/usePaging.ts b/src/hooks/usePaging.ts
new file mode 100644
index 0000000..a5d5390
--- /dev/null
+++ b/src/hooks/usePaging.ts
@@ -0,0 +1,62 @@
+import { reactive, toRaw } from 'vue'
+
+// 分页钩子函数
+interface Options {
+ page?: number
+ size?: number
+ fetchFun: (_arg: any) => Promise
+ params?: Record
+ firstLoading?: boolean
+}
+
+export function usePaging(options: Options) {
+ const { page = 1, size = 15, fetchFun, params = {}, firstLoading = false } = options
+ // 记录分页初始参数
+ const paramsInit: Record = Object.assign({}, toRaw(params))
+ // 分页数据
+ const pager = reactive({
+ page,
+ size,
+ loading: firstLoading,
+ count: 0,
+ lists: [] as any[]
+ })
+ // 请求分页接口
+ const getLists = () => {
+ pager.loading = true
+ return fetchFun({
+ page_no: pager.page,
+ page_size: pager.size,
+ ...params
+ })
+ .then((res: any) => {
+ pager.count = res?.count
+ pager.lists = res?.lists
+ return Promise.resolve(res)
+ })
+ .catch((err: any) => {
+ return Promise.reject(err)
+ })
+ .finally(() => {
+ pager.loading = false
+ })
+ }
+ // 重置为第一页
+ const resetPage = () => {
+ pager.page = 1
+ getLists()
+ }
+ // 重置参数
+ const resetParams = () => {
+ Object.keys(paramsInit).forEach((item) => {
+ params[item] = paramsInit[item]
+ })
+ getLists()
+ }
+ return {
+ pager,
+ getLists,
+ resetParams,
+ resetPage
+ }
+}
diff --git a/src/hooks/useWatchRoute.ts b/src/hooks/useWatchRoute.ts
new file mode 100644
index 0000000..381b2ec
--- /dev/null
+++ b/src/hooks/useWatchRoute.ts
@@ -0,0 +1,17 @@
+import type { RouteLocationNormalizedLoaded } from 'vue-router'
+
+export function useWatchRoute(callback: (route: RouteLocationNormalizedLoaded) => void) {
+ const route = useRoute()
+ watch(
+ route,
+ () => {
+ callback(route)
+ },
+ {
+ immediate: true
+ }
+ )
+ return {
+ route
+ }
+}
diff --git a/src/install/directives/copy.ts b/src/install/directives/copy.ts
new file mode 100644
index 0000000..c0b1909
--- /dev/null
+++ b/src/install/directives/copy.ts
@@ -0,0 +1,28 @@
+/**
+ * perm 操作权限处理
+ * 指令用法:
+ * 编辑
+ */
+
+import feedback from '@/utils/feedback'
+import useClipboard from 'vue-clipboard3'
+const clipboard = 'data-clipboard-text'
+export default {
+ mounted: (el: HTMLElement, binding: any) => {
+ el.setAttribute(clipboard, binding.value)
+ const { toClipboard } = useClipboard()
+
+ el.onclick = () => {
+ toClipboard(el.getAttribute(clipboard)!)
+ .then(() => {
+ feedback.msgSuccess('复制成功')
+ })
+ .catch(() => {
+ feedback.msgError('复制失败')
+ })
+ }
+ },
+ updated: (el: HTMLElement, binding: any) => {
+ el.setAttribute(clipboard, binding.value)
+ }
+}
diff --git a/src/install/directives/perms.ts b/src/install/directives/perms.ts
new file mode 100644
index 0000000..507dbfe
--- /dev/null
+++ b/src/install/directives/perms.ts
@@ -0,0 +1,29 @@
+/**
+ * perm 操作权限处理
+ * 指令用法:
+ * 编辑
+ */
+
+import useUserStore from '@/stores/modules/user'
+
+export default {
+ mounted: (el: HTMLElement, binding: any) => {
+ const { value } = binding
+ const userStore = useUserStore()
+ const permissions = userStore.perms
+ const all_permission = '*'
+ if (Array.isArray(value)) {
+ if (value.length > 0) {
+ const hasPermission = permissions.some((key: string) => {
+ return all_permission == key || value.includes(key)
+ })
+
+ if (!hasPermission) {
+ el.parentNode && el.parentNode.removeChild(el)
+ }
+ }
+ } else {
+ throw new Error('like v-perms="[\'auth.menu/edit\']"')
+ }
+ }
+}
diff --git a/src/install/index.ts b/src/install/index.ts
new file mode 100644
index 0000000..eab8563
--- /dev/null
+++ b/src/install/index.ts
@@ -0,0 +1,27 @@
+import type { App } from 'vue'
+const modules = import.meta.glob('./**/*', { eager: true })
+
+// 安装方法,执行某一类相同操作
+function install(app: App) {
+ Object.keys(modules).forEach((key) => {
+ const name = key.replace(/(.*\/)*([^.]+).*/gi, '$2')
+ const type = key.replace(/^\.\/([\w-]+).*/gi, '$1')
+ const module: any = modules[key]
+ if (module.default) {
+ switch (type) {
+ // 用于注册全局指令
+ case 'directives':
+ app.directive(name, module.default)
+ break
+ // 使用插件
+ case 'plugins':
+ typeof module.default === 'function' && module.default(app)
+ break
+ }
+ }
+ })
+}
+
+export default {
+ install
+}
diff --git a/src/install/plugins/echart.ts b/src/install/plugins/echart.ts
new file mode 100644
index 0000000..96edebb
--- /dev/null
+++ b/src/install/plugins/echart.ts
@@ -0,0 +1,63 @@
+//引入 echarts 核心模块,核心模块提供了 echarts 使用必须要的接口。
+
+import * as echarts from 'echarts/core'
+//引入柱状图图表,图表后缀都为 Chart
+import {
+ BarChart,
+ LineChart,
+ PieChart,
+ MapChart,
+ PictorialBarChart,
+ RadarChart,
+ ScatterChart
+} from 'echarts/charts'
+// 引入提示框,标题,直角坐标系,数据集,内置数据转换器组件,组件后缀都为 Component
+import {
+ TitleComponent,
+ TooltipComponent,
+ GridComponent,
+ PolarComponent,
+ AriaComponent,
+ ParallelComponent,
+ LegendComponent,
+ RadarComponent,
+ ToolboxComponent,
+ DataZoomComponent,
+ VisualMapComponent,
+ TimelineComponent,
+ CalendarComponent,
+ GraphicComponent
+} from 'echarts/components'
+
+//引入 Canvas 渲染器,注意引入 CanvasRenderer 或者 SVGRenderer 是必须的一步
+import { CanvasRenderer } from 'echarts/renderers'
+//标签自动布局,全局过渡动画等特性
+import { LabelLayout, UniversalTransition } from 'echarts/features'
+
+// 注册必须的组件
+echarts.use([
+ LegendComponent,
+ TitleComponent,
+ TooltipComponent,
+ GridComponent,
+ PolarComponent,
+ AriaComponent,
+ ParallelComponent,
+ BarChart,
+ LineChart,
+ PieChart,
+ MapChart,
+ RadarChart,
+ PictorialBarChart,
+ RadarComponent,
+ ToolboxComponent,
+ DataZoomComponent,
+ VisualMapComponent,
+ TimelineComponent,
+ CalendarComponent,
+ GraphicComponent,
+ ScatterChart,
+ CanvasRenderer,
+ LabelLayout,
+ UniversalTransition
+])
diff --git a/src/install/plugins/element.ts b/src/install/plugins/element.ts
new file mode 100644
index 0000000..ac6ae23
--- /dev/null
+++ b/src/install/plugins/element.ts
@@ -0,0 +1,11 @@
+import * as ElementPlusIcons from '@element-plus/icons-vue'
+import type { App } from 'vue'
+//https://github.com/element-plus/element-plus/issues/7293
+import 'element-plus/es/components/dialog/style/css'
+
+export default (app: App) => {
+ // 全局注册ElementPlus图标
+ for (const [key, component] of Object.entries(ElementPlusIcons)) {
+ app.component(key, component)
+ }
+}
diff --git a/src/install/plugins/hljs.ts b/src/install/plugins/hljs.ts
new file mode 100644
index 0000000..041ac77
--- /dev/null
+++ b/src/install/plugins/hljs.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue'
+import 'highlight.js/styles/github.css'
+import hljs from 'highlight.js/lib/common'
+import hljsVuePlugin from '@highlightjs/vue-plugin'
+console.log(hljs)
+export default (app: App) => {
+ app.use(hljsVuePlugin)
+}
diff --git a/src/install/plugins/pinia.ts b/src/install/plugins/pinia.ts
new file mode 100644
index 0000000..6e72e75
--- /dev/null
+++ b/src/install/plugins/pinia.ts
@@ -0,0 +1,6 @@
+import store from '@/stores'
+import type { App } from 'vue'
+
+export default (app: App) => {
+ app.use(store)
+}
diff --git a/src/install/plugins/router.ts b/src/install/plugins/router.ts
new file mode 100644
index 0000000..4e3647d
--- /dev/null
+++ b/src/install/plugins/router.ts
@@ -0,0 +1,6 @@
+import router from '@/router'
+import type { App } from 'vue'
+
+export default (app: App) => {
+ app.use(router)
+}
diff --git a/src/layout/components/footer.vue b/src/layout/components/footer.vue
new file mode 100644
index 0000000..1a41561
--- /dev/null
+++ b/src/layout/components/footer.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/layout/default/components/header/breadcrumb.vue b/src/layout/default/components/header/breadcrumb.vue
new file mode 100644
index 0000000..58c8ef2
--- /dev/null
+++ b/src/layout/default/components/header/breadcrumb.vue
@@ -0,0 +1,20 @@
+
+
+
+ {{ item.meta.title }}
+
+
+
+
diff --git a/src/layout/default/components/header/cache.vue b/src/layout/default/components/header/cache.vue
new file mode 100644
index 0000000..2d83f2b
--- /dev/null
+++ b/src/layout/default/components/header/cache.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/layout/default/components/header/fold.vue b/src/layout/default/components/header/fold.vue
new file mode 100644
index 0000000..7ce9360
--- /dev/null
+++ b/src/layout/default/components/header/fold.vue
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/full-screen.vue b/src/layout/default/components/header/full-screen.vue
new file mode 100644
index 0000000..96cec1e
--- /dev/null
+++ b/src/layout/default/components/header/full-screen.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/index.vue b/src/layout/default/components/header/index.vue
new file mode 100644
index 0000000..0b1a790
--- /dev/null
+++ b/src/layout/default/components/header/index.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/multiple-tabs.vue b/src/layout/default/components/header/multiple-tabs.vue
new file mode 100644
index 0000000..16a5d48
--- /dev/null
+++ b/src/layout/default/components/header/multiple-tabs.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 关闭当前
+ 关闭其他
+ 关闭全部
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/refresh.vue b/src/layout/default/components/header/refresh.vue
new file mode 100644
index 0000000..a55ccba
--- /dev/null
+++ b/src/layout/default/components/header/refresh.vue
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/header/user-drop-down.vue b/src/layout/default/components/header/user-drop-down.vue
new file mode 100644
index 0000000..de11585
--- /dev/null
+++ b/src/layout/default/components/header/user-drop-down.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
{{ userInfo.name }}
+
+
+
+
+
+
+ 个人设置
+
+ 退出登录
+
+
+
+
+
+
diff --git a/src/layout/default/components/main.vue b/src/layout/default/components/main.vue
new file mode 100644
index 0000000..b5386b3
--- /dev/null
+++ b/src/layout/default/components/main.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/setting/drawer.vue b/src/layout/default/components/setting/drawer.vue
new file mode 100644
index 0000000..efd08fd
--- /dev/null
+++ b/src/layout/default/components/setting/drawer.vue
@@ -0,0 +1,220 @@
+
+
+
+
+
风格设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置主题
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/setting/index.vue b/src/layout/default/components/setting/index.vue
new file mode 100644
index 0000000..d0f4957
--- /dev/null
+++ b/src/layout/default/components/setting/index.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/index.vue b/src/layout/default/components/sidebar/index.vue
new file mode 100644
index 0000000..28413a0
--- /dev/null
+++ b/src/layout/default/components/sidebar/index.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/logo.vue b/src/layout/default/components/sidebar/logo.vue
new file mode 100644
index 0000000..f1e8cb9
--- /dev/null
+++ b/src/layout/default/components/sidebar/logo.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/menu-item.vue b/src/layout/default/components/sidebar/menu-item.vue
new file mode 100644
index 0000000..09b46aa
--- /dev/null
+++ b/src/layout/default/components/sidebar/menu-item.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ {{ routeMeta?.title }}
+
+
+
+
+
+
+ {{ routeMeta?.title }}
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/menu.vue b/src/layout/default/components/sidebar/menu.vue
new file mode 100644
index 0000000..a56a181
--- /dev/null
+++ b/src/layout/default/components/sidebar/menu.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
diff --git a/src/layout/default/components/sidebar/side.vue b/src/layout/default/components/sidebar/side.vue
new file mode 100644
index 0000000..dc499e8
--- /dev/null
+++ b/src/layout/default/components/sidebar/side.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/default/index.vue b/src/layout/default/index.vue
new file mode 100644
index 0000000..ba6eb38
--- /dev/null
+++ b/src/layout/default/index.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..bc9aa29
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,10 @@
+import { createApp } from "vue";
+import App from "./App.vue";
+import install from "./install";
+import "./permission";
+import "./styles/index.scss";
+import "virtual:svg-icons-register";
+
+
+const app = createApp(App);
+app.use(install).mount("#app");
diff --git a/src/permission.ts b/src/permission.ts
new file mode 100644
index 0000000..decf89b
--- /dev/null
+++ b/src/permission.ts
@@ -0,0 +1,83 @@
+/**
+ * 权限控制
+ */
+
+import NProgress from 'nprogress'
+import router, { findFirstValidRoute } from './router'
+import 'nprogress/nprogress.css'
+import { isExternal } from './utils/validate'
+import useUserStore from './stores/modules/user'
+import { INDEX_ROUTE, INDEX_ROUTE_NAME } from './router/routes'
+import { PageEnum } from './enums/pageEnum'
+import useTabsStore from './stores/modules/multipleTabs'
+import { clearAuthInfo } from './utils/auth'
+import config from './config'
+
+// NProgress配置
+NProgress.configure({ showSpinner: false })
+
+const loginPath = PageEnum.LOGIN
+const defaultPath = PageEnum.INDEX
+// 免登录白名单
+const whiteList: string[] = [PageEnum.LOGIN, PageEnum.ERROR_403]
+router.beforeEach(async (to, from, next) => {
+ // 开始 Progress Bar
+ NProgress.start()
+ document.title = to.meta.title ?? config.title
+ const userStore = useUserStore()
+ const tabsStore = useTabsStore()
+ if (whiteList.includes(to.path)) {
+ // 在免登录白名单,直接进入
+ next()
+ } else if (userStore.token) {
+ // 获取用户信息
+ const hasGetUserInfo = Object.keys(userStore.userInfo).length !== 0
+ if (hasGetUserInfo) {
+ if (to.path === loginPath) {
+ next({ path: defaultPath })
+ } else {
+ next()
+ }
+ } else {
+ try {
+ await userStore.getUserInfo()
+ const routes = userStore.routes
+ // 找到第一个有效路由
+ const routeName = findFirstValidRoute(routes)
+ // 没有有效路由跳转到403页面
+ if (!routeName) {
+ clearAuthInfo()
+ next(PageEnum.ERROR_403)
+ return
+ }
+ tabsStore.setRouteName(routeName!)
+ INDEX_ROUTE.redirect = { name: routeName }
+
+ // 动态添加index路由
+ router.addRoute(INDEX_ROUTE)
+ routes.forEach((route: any) => {
+ // https 则不插入
+ if (isExternal(route.path)) {
+ return
+ }
+ if (!route.children) {
+ router.addRoute(INDEX_ROUTE_NAME, route)
+ return
+ }
+ // 动态添加可访问路由表
+ router.addRoute(route)
+ })
+ next({ ...to, replace: true })
+ } catch (err) {
+ clearAuthInfo()
+ next({ path: loginPath, query: { redirect: to.fullPath } })
+ }
+ }
+ } else {
+ next({ path: loginPath, query: { redirect: to.fullPath } })
+ }
+})
+
+router.afterEach(() => {
+ NProgress.done()
+})
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..ba004d0
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,110 @@
+import { createRouter, createWebHistory, RouterView, type RouteRecordRaw } from 'vue-router'
+import { MenuEnum } from '@/enums/appEnums'
+import { isExternal } from '@/utils/validate'
+import { constantRoutes, INDEX_ROUTE_NAME, LAYOUT } from './routes'
+import useUserStore from '@/stores/modules/user'
+
+// 匹配views里面所有的.vue文件,动态引入
+const modules = import.meta.glob('/src/views/**/*.vue')
+
+//
+export function getModulesKey() {
+ return Object.keys(modules).map((item) => item.replace('/src/views/', '').replace('.vue', ''))
+}
+
+// 过滤路由所需要的数据
+export function filterAsyncRoutes(routes: any[], firstRoute = true) {
+ return routes.map((route) => {
+ const routeRecord = createRouteRecord(route, firstRoute)
+ if (route.children != null && route.children && route.children.length) {
+ routeRecord.children = filterAsyncRoutes(route.children, false)
+ }
+ return routeRecord
+ })
+}
+
+// 创建一条路由记录
+export function createRouteRecord(route: any, firstRoute: boolean): RouteRecordRaw {
+ //@ts-ignore
+ const routeRecord: RouteRecordRaw = {
+ path: isExternal(route.paths) ? route.paths : firstRoute ? `/${route.paths}` : route.paths,
+ name: Symbol(route.paths),
+ meta: {
+ hidden: !route.is_show,
+ keepAlive: !!route.is_cache,
+ title: route.name,
+ perms: route.perms,
+ query: route.params,
+ icon: route.icon,
+ type: route.type,
+ activeMenu: route.selected
+ }
+ }
+ switch (route.type) {
+ case MenuEnum.CATALOGUE:
+ routeRecord.component = firstRoute ? LAYOUT : RouterView
+ if (!route.children) {
+ routeRecord.component = RouterView
+ }
+ break
+ case MenuEnum.MENU:
+ routeRecord.component = loadRouteView(route.component)
+ break
+ }
+ return routeRecord
+}
+
+// 动态加载组件
+export function loadRouteView(component: string) {
+ try {
+ const key = Object.keys(modules).find((key) => {
+ return key.includes(`${component}.vue`)
+ })
+ if (key) {
+ return modules[key]
+ }
+ throw Error(`找不到组件${component},请确保组件路径正确`)
+ } catch (error) {
+ console.error(error)
+ return RouterView
+ }
+}
+
+// 找到第一个有效的路由
+export function findFirstValidRoute(routes: RouteRecordRaw[]): string | undefined {
+ for (const route of routes) {
+ if (route.meta?.type == MenuEnum.MENU && !route.meta?.hidden && !isExternal(route.path)) {
+ return route.name as string
+ }
+ if (route.children) {
+ const name = findFirstValidRoute(route.children)
+ if (name) {
+ return name
+ }
+ }
+ }
+}
+//通过权限字符查询路由路径
+export function getRoutePath(perms: string) {
+ const routerObj = useRouter() || router
+ return routerObj.getRoutes().find((item) => item.meta?.perms == perms)?.path || ''
+}
+
+// 重置路由
+export function resetRouter() {
+ router.removeRoute(INDEX_ROUTE_NAME)
+ const { routes } = useUserStore()
+ routes.forEach((route) => {
+ const name = route.name
+ if (name && router.hasRoute(name)) {
+ router.removeRoute(name)
+ }
+ })
+}
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ routes: constantRoutes
+})
+
+export default router
diff --git a/src/router/routes.ts b/src/router/routes.ts
new file mode 100644
index 0000000..a3603cb
--- /dev/null
+++ b/src/router/routes.ts
@@ -0,0 +1,85 @@
+/**
+ * Note: 路由配置项
+ *
+ * path: '/path' // 路由路径
+ * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题
+ * meta : {
+ title: 'title' // 设置该路由在侧边栏的名字
+ icon: 'icon-name' // 设置该路由的图标
+ activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。
+ query: '{"id": 1}' // 访问路由的默认传递参数
+ hidden: true // 当设置 true 的时候该路由不会在侧边栏出现
+ hideTab: true //当设置 true 的时候该路由不会在多标签tab栏出现
+ }
+ */
+
+import type { RouteRecordRaw } from 'vue-router'
+import { PageEnum } from '@/enums/pageEnum'
+import Layout from '@/layout/default/index.vue'
+
+export const LAYOUT = () => Promise.resolve(Layout)
+
+export const INDEX_ROUTE_NAME = Symbol()
+
+export const constantRoutes: Array = [
+ {
+ path: '/:pathMatch(.*)*',
+ component: () => import('@/views/error/404.vue')
+ },
+ {
+ path: PageEnum.ERROR_403,
+ component: () => import('@/views/error/403.vue')
+ },
+ {
+ path: PageEnum.LOGIN,
+ component: () => import('@/views/account/login.vue')
+ },
+ {
+ path: '/user',
+ component: LAYOUT,
+ children: [
+ {
+ path: 'setting',
+ component: () => import('@/views/user/setting.vue'),
+ name: Symbol(),
+ meta: {
+ title: '个人设置'
+ }
+ }
+ ]
+ }
+ // {
+ // path: '/dev_tools',
+ // component: LAYOUT,
+ // children: [
+ // {
+ // path: 'code/edit',
+ // component: () => import('@/views/dev_tools/code/edit.vue'),
+ // meta: {
+ // title: '编辑数据表',
+ // activeMenu: '/dev_tools/code'
+ // }
+ // }
+ // ]
+ // },
+ // {
+ // path: '/setting',
+ // component: LAYOUT,
+ // children: [
+ // {
+ // path: 'dict/data',
+ // component: () => import('@/views/setting/dict/data/index.vue'),
+ // meta: {
+ // title: '数据管理',
+ // activeMenu: '/setting/dict'
+ // }
+ // }
+ // ]
+ // }
+]
+
+export const INDEX_ROUTE: RouteRecordRaw = {
+ path: PageEnum.INDEX,
+ component: LAYOUT,
+ name: INDEX_ROUTE_NAME
+}
diff --git a/src/stores/index.ts b/src/stores/index.ts
new file mode 100644
index 0000000..7c7ea69
--- /dev/null
+++ b/src/stores/index.ts
@@ -0,0 +1,3 @@
+import { createPinia } from 'pinia'
+const store = createPinia()
+export default store
diff --git a/src/stores/modules/app.ts b/src/stores/modules/app.ts
new file mode 100644
index 0000000..e642142
--- /dev/null
+++ b/src/stores/modules/app.ts
@@ -0,0 +1,51 @@
+import { getConfig } from '@/api/app'
+import { defineStore } from 'pinia'
+interface AppSate {
+ config: Record
+ isMobile: boolean
+ isCollapsed: boolean
+ isRouteShow: boolean
+}
+
+const useAppStore = defineStore({
+ id: 'app',
+ state: (): AppSate => {
+ return {
+ config: {},
+ isMobile: true,
+ isCollapsed: false,
+ isRouteShow: true
+ }
+ },
+ actions: {
+ getImageUrl(url: string) {
+ return url ? `${this.config.oss_domain}${url}` : ''
+ },
+ getConfig() {
+ return new Promise((resolve, reject) => {
+ getConfig()
+ .then((data) => {
+ this.config = data
+ resolve(data)
+ })
+ .catch((err) => {
+ reject(err)
+ })
+ })
+ },
+ setMobile(value: boolean) {
+ this.isMobile = value
+ },
+ toggleCollapsed(toggle?: boolean) {
+ this.isCollapsed = toggle ?? !this.isCollapsed
+ },
+ refreshView() {
+ this.isRouteShow = false
+ nextTick(() => {
+ this.isRouteShow = true
+ })
+ }
+ }
+})
+
+export default useAppStore
diff --git a/src/stores/modules/multipleTabs.ts b/src/stores/modules/multipleTabs.ts
new file mode 100644
index 0000000..5c60b03
--- /dev/null
+++ b/src/stores/modules/multipleTabs.ts
@@ -0,0 +1,169 @@
+import { defineStore } from 'pinia'
+import { isExternal } from '@/utils/validate'
+import type {
+ LocationQuery,
+ RouteLocationNormalized,
+ RouteParamsRaw,
+ Router,
+ RouteRecordName
+} from 'vue-router'
+import { PageEnum } from '@/enums/pageEnum'
+
+interface TabItem {
+ name: RouteRecordName
+ fullPath: string
+ path: string
+ title?: string
+ query?: LocationQuery
+ params?: RouteParamsRaw
+}
+
+interface TabsSate {
+ cacheTabList: Set
+ tabList: TabItem[]
+ tasMap: Record
+ indexRouteName: RouteRecordName
+}
+
+const getHasTabIndex = (fullPath: string, tabList: TabItem[]) => {
+ return tabList.findIndex((item) => item.fullPath == fullPath)
+}
+
+const isCannotAddRoute = (route: RouteLocationNormalized, router: Router) => {
+ const { path, meta, name } = route
+ if (!path || isExternal(path)) return true
+ if (meta?.hideTab) return true
+ if (!router.hasRoute(name!)) return true
+ if (([PageEnum.LOGIN, PageEnum.ERROR_403] as string[]).includes(path)) {
+ return true
+ }
+ return false
+}
+
+const findTabsIndex = (fullPath: string, tabList: TabItem[]) => {
+ return tabList.findIndex((item) => item.fullPath === fullPath)
+}
+
+const getComponentName = (route: RouteLocationNormalized) => {
+ return route.matched.at(-1)?.components?.default?.name
+}
+
+export const getRouteParams = (tabItem: TabItem) => {
+ const { params, path, query } = tabItem
+ return {
+ params: params || {},
+ path,
+ query: query || {}
+ }
+}
+
+const useTabsStore = defineStore({
+ id: 'tabs',
+ state: (): TabsSate => ({
+ cacheTabList: new Set(),
+ tabList: [],
+ tasMap: {},
+ indexRouteName: ''
+ }),
+ getters: {
+ getTabList(): TabItem[] {
+ return this.tabList
+ },
+ getCacheTabList(): string[] {
+ return Array.from(this.cacheTabList)
+ }
+ },
+ actions: {
+ setRouteName(name: RouteRecordName) {
+ this.indexRouteName = name
+ },
+ addCache(componentName?: string) {
+ if (componentName) this.cacheTabList.add(componentName)
+ },
+ removeCache(componentName?: string) {
+ if (componentName && this.cacheTabList.has(componentName)) {
+ this.cacheTabList.delete(componentName)
+ }
+ },
+ clearCache() {
+ this.cacheTabList.clear()
+ },
+ resetState() {
+ this.cacheTabList = new Set()
+ this.tabList = []
+ this.tasMap = {}
+ this.indexRouteName = ''
+ },
+ addTab(router: Router) {
+ const route = unref(router.currentRoute)
+ const { name, query, meta, params, fullPath, path } = route
+ if (isCannotAddRoute(route, router)) return
+ const hasTabIndex = getHasTabIndex(fullPath!, this.tabList)
+ const componentName = getComponentName(route)
+ const tabItem = {
+ name: name!,
+ path,
+ fullPath,
+ title: meta?.title,
+ query,
+ params
+ }
+ this.tasMap[fullPath] = tabItem
+ if (meta?.keepAlive) {
+ console.log(componentName)
+ this.addCache(componentName)
+ }
+ if (hasTabIndex != -1) {
+ return
+ }
+
+ this.tabList.push(tabItem)
+ },
+ removeTab(fullPath: string, router: Router) {
+ const { currentRoute, push } = router
+ const index = findTabsIndex(fullPath, this.tabList)
+ // 移除tab
+ if (this.tabList.length > 1) {
+ index !== -1 && this.tabList.splice(index, 1)
+ }
+ const componentName = getComponentName(currentRoute.value)
+ this.removeCache(componentName)
+ if (fullPath !== currentRoute.value.fullPath) {
+ return
+ }
+ // 删除选中的tab
+ let toTab: TabItem | null = null
+
+ if (index === 0) {
+ toTab = this.tabList[index]
+ } else {
+ toTab = this.tabList[index - 1]
+ }
+
+ const toRoute = getRouteParams(toTab)
+ push(toRoute)
+ },
+ removeOtherTab(route: RouteLocationNormalized) {
+ this.tabList = this.tabList.filter((item) => item.fullPath == route.fullPath)
+ const componentName = getComponentName(route)
+ this.cacheTabList.forEach((name) => {
+ if (componentName !== name) {
+ this.removeCache(name)
+ }
+ })
+ },
+ removeAllTab(router: Router) {
+ const { push, currentRoute } = router
+ const { name } = unref(currentRoute)
+ if (name == this.indexRouteName) {
+ this.removeOtherTab(currentRoute.value)
+ return
+ }
+ this.tabList = []
+ this.clearCache()
+ push(PageEnum.INDEX)
+ }
+ }
+})
+
+export default useTabsStore
diff --git a/src/stores/modules/setting.ts b/src/stores/modules/setting.ts
new file mode 100644
index 0000000..219a58b
--- /dev/null
+++ b/src/stores/modules/setting.ts
@@ -0,0 +1,55 @@
+import { defineStore } from 'pinia'
+import defaultSetting from '@/config/setting'
+import cache from '@/utils/cache'
+import { isObject } from '@vue/shared'
+import { setTheme } from '@/utils/theme'
+import { SETTING_KEY } from '@/enums/cacheEnums'
+const storageSetting = cache.get(SETTING_KEY)
+
+export const useSettingStore = defineStore({
+ id: 'setting',
+ state: () => {
+ const state = {
+ showDrawer: false,
+ ...defaultSetting
+ }
+ isObject(storageSetting) && Object.assign(state, storageSetting)
+ return state
+ },
+ actions: {
+ // 设置布局设置
+ setSetting(data: Record) {
+ const { key, value } = data
+ if (this.hasOwnProperty(key)) {
+ //@ts-ignore
+ this[key] = value
+ }
+ const settings: any = Object.assign({}, this.$state)
+ delete settings.showDrawer
+ cache.set(SETTING_KEY, settings)
+ },
+ // 设置主题色
+ setTheme(isDark: boolean) {
+ setTheme(
+ {
+ primary: this.theme,
+ success: this.successTheme,
+ warning: this.warningTheme,
+ danger: this.dangerTheme,
+ error: this.errorTheme,
+ info: this.infoTheme
+ },
+ isDark
+ )
+ },
+ resetTheme() {
+ for (const key in defaultSetting) {
+ //@ts-ignore
+ this[key] = defaultSetting[key]
+ }
+ cache.remove(SETTING_KEY)
+ }
+ }
+})
+
+export default useSettingStore
diff --git a/src/stores/modules/user.ts b/src/stores/modules/user.ts
new file mode 100644
index 0000000..27b4ebc
--- /dev/null
+++ b/src/stores/modules/user.ts
@@ -0,0 +1,82 @@
+import { defineStore } from 'pinia'
+import cache from '@/utils/cache'
+import type { RouteRecordRaw } from 'vue-router'
+import { getUserInfo, login, logout } from '@/api/user'
+import router, { filterAsyncRoutes } from '@/router'
+import { TOKEN_KEY } from '@/enums/cacheEnums'
+import { PageEnum } from '@/enums/pageEnum'
+import { clearAuthInfo, getToken } from '@/utils/auth'
+export interface UserState {
+ token: string
+ userInfo: Record
+ routes: RouteRecordRaw[]
+ perms: string[]
+}
+
+const useUserStore = defineStore({
+ id: 'user',
+ state: (): UserState => ({
+ token: getToken() || '',
+ // 用户信息
+ userInfo: {},
+ // 路由
+ routes: [],
+ // 权限
+ perms: []
+ }),
+ getters: {},
+ actions: {
+ resetState() {
+ this.token = ''
+ this.userInfo = {}
+ this.perms = []
+ },
+ login(playload: any) {
+ const { account, password } = playload
+ return new Promise((resolve, reject) => {
+ login({
+ account: account.trim(),
+ password: password
+ })
+ .then((data) => {
+ this.token = data.token
+ cache.set(TOKEN_KEY, data.token)
+ resolve(data)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+ },
+ logout() {
+ return new Promise((resolve, reject) => {
+ logout()
+ .then(async (data) => {
+ this.token = ''
+ await router.push(PageEnum.LOGIN)
+ clearAuthInfo()
+ resolve(data)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+ },
+ getUserInfo() {
+ return new Promise((resolve, reject) => {
+ getUserInfo()
+ .then((data) => {
+ this.userInfo = data.user
+ this.perms = data.permissions
+ this.routes = filterAsyncRoutes(data.menu)
+ resolve(data)
+ })
+ .catch((error) => {
+ reject(error)
+ })
+ })
+ }
+ }
+})
+
+export default useUserStore
diff --git a/src/styles/dark.css b/src/styles/dark.css
new file mode 100644
index 0000000..ae969fd
--- /dev/null
+++ b/src/styles/dark.css
@@ -0,0 +1,49 @@
+:root.dark {
+ color-scheme: dark;
+ --table-header-bg-color: var(--el-bg-color);
+ --el-bg-color-page: #0a0a0a;
+ --el-bg-color: #1d2124;
+ --el-bg-color-overlay: #1d1e1f;
+ --el-text-color-primary: #e5eaf3;
+ --el-text-color-regular: #cfd3dc;
+ --el-text-color-secondary: #a3a6ad;
+ --el-text-color-placeholder: #8d9095;
+ --el-text-color-disabled: #6c6e72;
+ --el-border-color-darker: #636466;
+ --el-border-color-dark: #58585b;
+ --el-border-color: #4c4d4f;
+ --el-border-color-light: #414243;
+ --el-border-color-lighter: #363637;
+ --el-border-color-extra-light: #2b2b2c;
+ --el-fill-color-darker: #424243;
+ --el-fill-color-dark: #39393a;
+ --el-fill-color: #303030;
+ --el-fill-color-light: #262727;
+ --el-fill-color-lighter: #1d1d1d;
+ --el-fill-color-extra-light: #191919;
+ --el-fill-color-blank: var(--el-bg-color);
+ --el-mask-color: rgba(0, 0, 0, 0.8);
+ --el-mask-color-extra-light: rgba(0, 0, 0, 0.3);
+ --el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.36), 0px 8px 20px rgba(0, 0, 0, 0.72);
+ --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.72);
+ --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.72);
+ --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.72), 0px 12px 32px #000000,
+ 0px 8px 16px -8px #000000 !important;
+ /* wangeditor主题 */
+ --w-e-textarea-bg-color: var(--el-bg-color);
+ --w-e-textarea-color: var(--el-text-color-primary);
+ --w-e-textarea-border-color: var(--el-border-color);
+ --w-e-textarea-slight-border-color: var(--el-border-color-light);
+ --w-e-textarea-slight-color: var(--el-border-color);
+ --w-e-textarea-slight-bg-color: var(--el-bg-color-page);
+ /* --w-e-textarea-selected-border-color: #b4d5ff;
+ --w-e-textarea-handler-bg-color: #4290f7; */
+ --w-e-toolbar-color: var(--el-text-color-primary);
+ --w-e-toolbar-bg-color: var(--el-bg-color);
+ --w-e-toolbar-active-color: var(--el-text-color-primary);
+ --w-e-toolbar-active-bg-color: var(--el-bg-color);
+ --w-e-toolbar-disabled-color: var(--el-text-color-disabled);
+ --w-e-toolbar-border-color: var(--el-border-color);
+ --w-e-modal-button-bg-color: var(--el-bg-color);
+ --w-e-modal-button-border-color: var(--el-border-color);
+}
diff --git a/src/styles/element.scss b/src/styles/element.scss
new file mode 100644
index 0000000..a493e35
--- /dev/null
+++ b/src/styles/element.scss
@@ -0,0 +1,151 @@
+:root {
+ // 弹窗居中
+ .el-overlay-dialog {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 100%;
+ position: static;
+
+ .el-dialog {
+ --el-dialog-content-font-size: var(--el-font-size-base);
+ --el-dialog-margin-top: 50px;
+ max-width: calc(100vw - 30px);
+ flex: none;
+ display: flex;
+ flex-direction: column;
+ border-radius: 5px;
+
+ &.body-padding .el-dialog__body {
+ padding: 0;
+ }
+
+ .el-dialog__body {
+ flex: 1;
+ padding: 15px 20px;
+ }
+ .el-dialog__header {
+ font-size: var(--el-font-size-large);
+ }
+ }
+ }
+
+ .el-drawer {
+ --el-drawer-padding-primary: 16px;
+ &__header {
+ margin-bottom: 0;
+ padding: 13px 16px;
+ border-bottom: 1px solid var(--el-border-color-lighter);
+ }
+ &__title {
+ @apply text-tx-primary;
+ }
+ }
+
+ .el-table {
+ --el-table-header-text-color: var(--el-text-color-primary);
+ --el-table-header-bg-color: var(--table-header-bg-color);
+ font-size: var(--el-font-size-base);
+
+ thead {
+ th {
+ font-weight: 400;
+ }
+ }
+ }
+
+ .el-input-group__prepend {
+ background-color: var(--el-fill-color-blank);
+ }
+
+ .el-checkbox {
+ --el-checkbox-font-size: var(--el-font-size-base);
+ }
+
+ .el-menu--popup-container {
+ &.theme-light {
+ .el-menu {
+ .el-menu-item {
+ &.is-active {
+ @apply bg-primary-light-9 border-primary border-r-2;
+ }
+ }
+ .el-menu-item:hover,
+ .el-sub-menu__title:hover {
+ color: var(--el-color-primary);
+ }
+ }
+ }
+ &.theme-dark {
+ .el-menu {
+ .el-menu-item {
+ &.is-active {
+ @apply bg-primary;
+ }
+ }
+ }
+ }
+ }
+
+ .el-message-box {
+ --el-messagebox-width: 350px;
+ }
+ .el-date-editor {
+ --el-date-editor-datetimerange-width: 380px;
+ .el-range-input {
+ font-size: var(--el-font-size-small);
+ }
+ }
+
+ .el-button--primary {
+ --el-button-hover-link-text-color: var(--el-color-primary-light-3);
+ }
+ .el-button--success {
+ --el-button-hover-link-text-color: var(--el-color-success-light-3);
+ }
+ .el-button--info {
+ --el-button-hover-link-text-color: var(--el-color-info-light-3);
+ }
+ .el-button--warning {
+ --el-button-hover-link-text-color: var(--el-color-warning-light-3);
+ }
+ .el-button--danger {
+ --el-button-hover-link-text-color: var(--el-color-danger-light-3);
+ }
+ .el-image__error {
+ font-size: 12px;
+ }
+ .el-tabs__nav-wrap::after {
+ height: 1px;
+ }
+ .el-page-header {
+ &__breadcrumb {
+ margin-bottom: 0;
+ }
+ }
+}
+@media (max-width: 768px) {
+ .el-pagination > .el-pagination__jump {
+ display: none !important;
+ }
+ .el-pagination > .el-pagination__sizes {
+ display: none !important;
+ }
+}
+
+.el-button {
+ // 防止被tailwindcss默认样式覆盖
+ background-color: var(--el-button-bg-color, var(--el-color-white));
+
+ //覆盖el-button的点击样式
+ &:focus {
+ color: var(--el-button-text-color);
+ border-color: var(--el-button-border-color);
+ background-color: var(--el-button-bg-color);
+ }
+ &:hover {
+ color: var(--el-button-hover-text-color);
+ border-color: var(--el-button-hover-border-color);
+ background-color: var(--el-button-hover-bg-color);
+ }
+}
diff --git a/src/styles/index.css b/src/styles/index.css
new file mode 100644
index 0000000..c03121c
--- /dev/null
+++ b/src/styles/index.css
@@ -0,0 +1,168 @@
+@charset "UTF-8";
+@import url(d:\里海数字乡村\webman-like\src\styles\dark.css);
+@import url(d:\里海数字乡村\webman-like\src\styles\var.css);
+@import url(d:\里海数字乡村\webman-like\src\styles\tailwind.css);
+:root .el-overlay-dialog {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ min-height: 100%;
+ position: static;
+}
+
+:root .el-overlay-dialog .el-dialog {
+ --el-dialog-content-font-size: var(--el-font-size-base);
+ --el-dialog-margin-top: 50px;
+ max-width: calc(100vw - 30px);
+ flex: none;
+ display: flex;
+ flex-direction: column;
+ border-radius: 5px;
+}
+
+:root .el-overlay-dialog .el-dialog.body-padding .el-dialog__body {
+ padding: 0;
+}
+
+:root .el-overlay-dialog .el-dialog .el-dialog__body {
+ flex: 1;
+ padding: 15px 20px;
+}
+
+:root .el-overlay-dialog .el-dialog .el-dialog__header {
+ font-size: var(--el-font-size-large);
+}
+
+:root .el-drawer {
+ --el-drawer-padding-primary: 16px;
+}
+
+:root .el-drawer__header {
+ margin-bottom: 0;
+ padding: 13px 16px;
+ border-bottom: 1px solid var(--el-border-color-lighter);
+}
+
+:root .el-drawer__title {
+ @apply text-tx-primary;
+}
+
+:root .el-table {
+ --el-table-header-text-color: var(--el-text-color-primary);
+ --el-table-header-bg-color: var(--table-header-bg-color);
+ font-size: var(--el-font-size-base);
+}
+
+:root .el-table thead th {
+ font-weight: 400;
+}
+
+:root .el-input-group__prepend {
+ background-color: var(--el-fill-color-blank);
+}
+
+:root .el-checkbox {
+ --el-checkbox-font-size: var(--el-font-size-base);
+}
+
+:root .el-menu--popup-container.theme-light .el-menu .el-menu-item.is-active {
+ @apply bg-primary-light-9 border-primary border-r-2;
+}
+
+:root .el-menu--popup-container.theme-light .el-menu .el-menu-item:hover,
+:root .el-menu--popup-container.theme-light .el-menu .el-sub-menu__title:hover {
+ color: var(--el-color-primary);
+}
+
+:root .el-menu--popup-container.theme-dark .el-menu .el-menu-item.is-active {
+ @apply bg-primary;
+}
+
+:root .el-message-box {
+ --el-messagebox-width: 350px;
+}
+
+:root .el-date-editor {
+ --el-date-editor-datetimerange-width: 380px;
+}
+
+:root .el-date-editor .el-range-input {
+ font-size: var(--el-font-size-small);
+}
+
+:root .el-button--primary {
+ --el-button-hover-link-text-color: var(--el-color-primary-light-3);
+}
+
+:root .el-button--success {
+ --el-button-hover-link-text-color: var(--el-color-success-light-3);
+}
+
+:root .el-button--info {
+ --el-button-hover-link-text-color: var(--el-color-info-light-3);
+}
+
+:root .el-button--warning {
+ --el-button-hover-link-text-color: var(--el-color-warning-light-3);
+}
+
+:root .el-button--danger {
+ --el-button-hover-link-text-color: var(--el-color-danger-light-3);
+}
+
+:root .el-image__error {
+ font-size: 12px;
+}
+
+:root .el-tabs__nav-wrap::after {
+ height: 1px;
+}
+
+:root .el-page-header__breadcrumb {
+ margin-bottom: 0;
+}
+
+@media (max-width: 768px) {
+ .el-pagination > .el-pagination__jump {
+ display: none !important;
+ }
+ .el-pagination > .el-pagination__sizes {
+ display: none !important;
+ }
+}
+
+.el-button {
+ background-color: var(--el-button-bg-color, var(--el-color-white));
+}
+
+.el-button:focus {
+ color: var(--el-button-text-color);
+ border-color: var(--el-button-border-color);
+ background-color: var(--el-button-bg-color);
+}
+
+.el-button:hover {
+ color: var(--el-button-hover-text-color);
+ border-color: var(--el-button-hover-border-color);
+ background-color: var(--el-button-hover-bg-color);
+}
+
+body {
+ @apply text-base text-tx-primary overflow-hidden min-w-[375px];
+}
+
+.form-tips {
+ @apply text-tx-secondary text-xs leading-6 mt-1;
+}
+
+.clearfix:after {
+ content: '';
+ display: block;
+ clear: both;
+ visibility: hidden;
+}
+
+/* NProgress */
+#nprogress .bar {
+ @apply bg-primary !important;
+}
diff --git a/src/styles/index.min.css b/src/styles/index.min.css
new file mode 100644
index 0000000..bcb91f3
--- /dev/null
+++ b/src/styles/index.min.css
@@ -0,0 +1 @@
+@import url(d:\里海数字乡村\webman-like\src\styles\dark.css);@import url(d:\里海数字乡村\webman-like\src\styles\var.css);@import url(d:\里海数字乡村\webman-like\src\styles\tailwind.css);:root .el-overlay-dialog{display:flex;justify-content:center;align-items:center;min-height:100%;position:static}:root .el-overlay-dialog .el-dialog{--el-dialog-content-font-size:var(--el-font-size-base);--el-dialog-margin-top:50px;max-width:calc(100vw - 30px);flex:none;display:flex;flex-direction:column;border-radius:5px}:root .el-overlay-dialog .el-dialog.body-padding .el-dialog__body{padding:0}:root .el-overlay-dialog .el-dialog .el-dialog__body{flex:1;padding:15px 20px}:root .el-overlay-dialog .el-dialog .el-dialog__header{font-size:var(--el-font-size-large)}:root .el-drawer{--el-drawer-padding-primary:16px}:root .el-drawer__header{margin-bottom:0;padding:13px 16px;border-bottom:1px solid var(--el-border-color-lighter)}:root .el-drawer__title{@apply text-tx-primary}:root .el-table{--el-table-header-text-color:var(--el-text-color-primary);--el-table-header-bg-color:var(--table-header-bg-color);font-size:var(--el-font-size-base)}:root .el-table thead th{font-weight:400}:root .el-input-group__prepend{background-color:var(--el-fill-color-blank)}:root .el-checkbox{--el-checkbox-font-size:var(--el-font-size-base)}:root .el-menu--popup-container.theme-light .el-menu .el-menu-item.is-active{@apply bg-primary-light-9 border-primary border-r-2}:root .el-menu--popup-container.theme-light .el-menu .el-menu-item:hover,:root .el-menu--popup-container.theme-light .el-menu .el-sub-menu__title:hover{color:var(--el-color-primary)}:root .el-menu--popup-container.theme-dark .el-menu .el-menu-item.is-active{@apply bg-primary}:root .el-message-box{--el-messagebox-width:350px}:root .el-date-editor{--el-date-editor-datetimerange-width:380px}:root .el-date-editor .el-range-input{font-size:var(--el-font-size-small)}:root .el-button--primary{--el-button-hover-link-text-color:var(--el-color-primary-light-3)}:root .el-button--success{--el-button-hover-link-text-color:var(--el-color-success-light-3)}:root .el-button--info{--el-button-hover-link-text-color:var(--el-color-info-light-3)}:root .el-button--warning{--el-button-hover-link-text-color:var(--el-color-warning-light-3)}:root .el-button--danger{--el-button-hover-link-text-color:var(--el-color-danger-light-3)}:root .el-image__error{font-size:12px}:root .el-tabs__nav-wrap::after{height:1px}:root .el-page-header__breadcrumb{margin-bottom:0}@media (max-width: 768px){.el-pagination>.el-pagination__jump{display:none !important}.el-pagination>.el-pagination__sizes{display:none !important}}.el-button{background-color:var(--el-button-bg-color, var(--el-color-white))}.el-button:focus{color:var(--el-button-text-color);border-color:var(--el-button-border-color);background-color:var(--el-button-bg-color)}.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color)}body{@apply text-base text-tx-primary overflow-hidden min-w-[375px]}.form-tips{@apply text-tx-secondary text-xs leading-6 mt-1}.clearfix:after{content:'';display:block;clear:both;visibility:hidden}#nprogress .bar{@apply bg-primary !important}
diff --git a/src/styles/index.scss b/src/styles/index.scss
new file mode 100644
index 0000000..5821ec2
--- /dev/null
+++ b/src/styles/index.scss
@@ -0,0 +1,6 @@
+
+@import 'element.scss';
+@import 'dark.css';
+@import 'var.css';
+@import 'public.scss';
+@import 'tailwind.css';
diff --git a/src/styles/public.scss b/src/styles/public.scss
new file mode 100644
index 0000000..a11a8bd
--- /dev/null
+++ b/src/styles/public.scss
@@ -0,0 +1,18 @@
+body {
+ @apply text-base text-tx-primary overflow-hidden min-w-[375px];
+}
+.form-tips {
+ @apply text-tx-secondary text-xs leading-6 mt-1;
+}
+
+.clearfix:after {
+ content: '';
+ display: block;
+ clear: both;
+ visibility: hidden;
+}
+
+/* NProgress */
+#nprogress .bar {
+ @apply bg-primary #{!important};
+}
diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css
new file mode 100644
index 0000000..bd6213e
--- /dev/null
+++ b/src/styles/tailwind.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
\ No newline at end of file
diff --git a/src/styles/var.css b/src/styles/var.css
new file mode 100644
index 0000000..a10631a
--- /dev/null
+++ b/src/styles/var.css
@@ -0,0 +1,48 @@
+:root {
+ --el-font-family: theme(fontFamily.sans);
+ --el-font-weight-primary: 400;
+ --el-menu-item-height: 46px;
+ --el-menu-sub-item-height: var(--el-menu-item-height);
+ --el-menu-icon-width: 18px;
+ --aside-width: 200px;
+ --navbar-height: 50px;
+ --color-white: #ffffff;
+ --table-header-bg-color: #f8f8f8;
+ --el-font-size-extra-large: 18px;
+ --el-menu-base-level-padding: 16px;
+ --el-menu-level-padding: 26px;
+ --el-font-size-large: 16px;
+ --el-font-size-medium: 15px;
+ --el-font-size-base: 14px;
+ --el-font-size-small: 13px;
+ --el-font-size-extra-small: 12px;
+
+ --el-bg-color: var(--color-white);
+ --el-bg-color-page: #f6f6f6;
+ --el-bg-color-overlay: #ffffff;
+ --el-text-color-primary: #333333;
+ --el-text-color-regular: #666666;
+ --el-text-color-secondary: #999999;
+ --el-text-color-placeholder: #a8abb2;
+ --el-text-color-disabled: #c0c4cc;
+ --el-border-color: #dcdfe6;
+ --el-border-color-light: #e4e7ed;
+ --el-border-color-lighter: #ebeef5;
+ --el-border-color-extra-light: #f2f2f2;
+ --el-border-color-dark: #d4d7de;
+ --el-border-color-darker: #cdd0d6;
+ --el-fill-color: #f0f2f5;
+ --el-fill-color-light: #f8f8f8;
+ --el-fill-color-lighter: #fafafa;
+ --el-fill-color-extra-light: #fafcff;
+ --el-fill-color-dark: #ebedf0;
+ --el-fill-color-darker: #e6e8eb;
+ --el-fill-color-blank: #ffffff;
+ --el-mask-color: rgba(255, 255, 255, 0.9);
+ --el-mask-color-extra-light: rgba(255, 255, 255, 0.3);
+ -el-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, 0.04), 0px 8px 20px rgba(0, 0, 0, 0.08);
+ --el-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, 0.12);
+ --el-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, 0.12);
+ --el-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, 0.08), 0px 12px 32px rgba(0, 0, 0, 0.12),
+ 0px 8px 16px -8px rgba(0, 0, 0, 0.16);
+}
diff --git a/src/test.vue b/src/test.vue
new file mode 100644
index 0000000..04db437
--- /dev/null
+++ b/src/test.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
diff --git a/src/utils/auth.ts b/src/utils/auth.ts
new file mode 100644
index 0000000..abc6f92
--- /dev/null
+++ b/src/utils/auth.ts
@@ -0,0 +1,18 @@
+import { TOKEN_KEY } from '@/enums/cacheEnums'
+import { resetRouter } from '@/router'
+import useTabsStore from '@/stores/modules/multipleTabs'
+import useUserStore from '@/stores/modules/user'
+import cache from './cache'
+
+export function getToken() {
+ return cache.get(TOKEN_KEY)
+}
+
+export function clearAuthInfo() {
+ const userStore = useUserStore()
+ const tabsStore = useTabsStore()
+ userStore.resetState()
+ tabsStore.resetState()
+ cache.remove(TOKEN_KEY)
+ resetRouter()
+}
diff --git a/src/utils/cache.ts b/src/utils/cache.ts
new file mode 100644
index 0000000..e16973f
--- /dev/null
+++ b/src/utils/cache.ts
@@ -0,0 +1,53 @@
+const cache = {
+ key: 'like_admin_',
+ //设置缓存(expire为缓存时效)
+ set(key: string, value: any, expire?: string) {
+ key = this.getKey(key)
+ let data: any = {
+ expire: expire ? this.time() + expire : '',
+ value
+ }
+
+ if (typeof data === 'object') {
+ data = JSON.stringify(data)
+ }
+ try {
+ window.localStorage.setItem(key, data)
+ } catch (e) {
+ return null
+ }
+ },
+ get(key: string) {
+ key = this.getKey(key)
+ try {
+ const data = window.localStorage.getItem(key)
+ if (!data) {
+ return null
+ }
+ const { value, expire } = JSON.parse(data)
+ if (expire && expire < this.time()) {
+ window.localStorage.removeItem(key)
+ return null
+ }
+ return value
+ } catch (e) {
+ return null
+ }
+ },
+ //获取当前时间
+ time() {
+ return Math.round(new Date().getTime() / 1000)
+ },
+ remove(key: string) {
+ key = this.getKey(key)
+ window.localStorage.removeItem(key)
+ },
+ clear() {
+ window.localStorage.clear()
+ },
+ getKey(key: string) {
+ return this.key + key
+ }
+}
+
+export default cache
diff --git a/src/utils/env.ts b/src/utils/env.ts
new file mode 100644
index 0000000..d8951e9
--- /dev/null
+++ b/src/utils/env.ts
@@ -0,0 +1,13 @@
+/**
+ * @description: 开发模式
+ */
+export function isDevMode(): boolean {
+ return import.meta.env.DEV
+}
+
+/**
+ * @description: 生成模式
+ */
+export function isProdMode(): boolean {
+ return import.meta.env.PROD
+}
diff --git a/src/utils/feedback.ts b/src/utils/feedback.ts
new file mode 100644
index 0000000..91672ab
--- /dev/null
+++ b/src/utils/feedback.ts
@@ -0,0 +1,95 @@
+import {
+ ElMessage,
+ ElMessageBox,
+ ElNotification,
+ ElLoading,
+ type ElMessageBoxOptions
+} from 'element-plus'
+import type { LoadingInstance } from 'element-plus/es/components/loading/src/loading'
+
+export class Feedback {
+ private loadingInstance: LoadingInstance | null = null
+ static instance: Feedback | null = null
+ static getInstance() {
+ return this.instance ?? (this.instance = new Feedback())
+ }
+ // 消息提示
+ msg(msg: string) {
+ ElMessage.info(msg)
+ }
+ // 错误消息
+ msgError(msg: string) {
+ ElMessage.error(msg)
+ }
+ // 成功消息
+ msgSuccess(msg: string) {
+ ElMessage.success(msg)
+ }
+ // 警告消息
+ msgWarning(msg: string) {
+ ElMessage.warning(msg)
+ }
+ // 弹出提示
+ alert(msg: string) {
+ ElMessageBox.alert(msg, '系统提示')
+ }
+ // 错误提示
+ alertError(msg: string) {
+ ElMessageBox.alert(msg, '系统提示', { type: 'error' })
+ }
+ // 成功提示
+ alertSuccess(msg: string) {
+ ElMessageBox.alert(msg, '系统提示', { type: 'success' })
+ }
+ // 警告提示
+ alertWarning(msg: string) {
+ ElMessageBox.alert(msg, '系统提示', { type: 'warning' })
+ }
+ // 通知提示
+ notify(msg: string) {
+ ElNotification.info(msg)
+ }
+ // 错误通知
+ notifyError(msg: string) {
+ ElNotification.error(msg)
+ }
+ // 成功通知
+ notifySuccess(msg: string) {
+ ElNotification.success(msg)
+ }
+ // 警告通知
+ notifyWarning(msg: string) {
+ ElNotification.warning(msg)
+ }
+ // 确认窗体
+ confirm(msg: string) {
+ return ElMessageBox.confirm(msg, '温馨提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ })
+ }
+ // 提交内容
+ prompt(content: string, title: string, options?: ElMessageBoxOptions) {
+ return ElMessageBox.prompt(content, title, {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ ...options
+ })
+ }
+ // 打开全局loading
+ loading(msg: string) {
+ this.loadingInstance = ElLoading.service({
+ lock: true,
+ text: msg
+ })
+ }
+ // 关闭全局loading
+ closeLoading() {
+ this.loadingInstance?.close()
+ }
+}
+
+const feedback = Feedback.getInstance()
+
+export default feedback
diff --git a/src/utils/request/axios.ts b/src/utils/request/axios.ts
new file mode 100644
index 0000000..65703e0
--- /dev/null
+++ b/src/utils/request/axios.ts
@@ -0,0 +1,165 @@
+import { RequestMethodsEnum } from '@/enums/requestEnums'
+import axios, {
+ AxiosError,
+ type AxiosInstance,
+ type AxiosRequestConfig,
+ type AxiosResponse
+} from 'axios'
+import { isFunction, merge, cloneDeep } from 'lodash'
+import axiosCancel from './cancel'
+import type { RequestData, RequestOptions } from './type'
+
+export class Axios {
+ private axiosInstance: AxiosInstance
+ private readonly config: AxiosRequestConfig
+ private readonly options: RequestOptions
+ constructor(config: AxiosRequestConfig) {
+ this.config = config
+ this.options = config.requestOptions
+ this.axiosInstance = axios.create(config)
+ this.setupInterceptors()
+ }
+
+ /**
+ * @description 获取axios实例
+ */
+ getAxiosInstance() {
+ return this.axiosInstance
+ }
+
+ /**
+ * @description 设置拦截器
+ */
+ setupInterceptors() {
+ if (!this.config.axiosHooks) {
+ return
+ }
+ const {
+ requestInterceptorsHook,
+ requestInterceptorsCatchHook,
+ responseInterceptorsHook,
+ responseInterceptorsCatchHook
+ } = this.config.axiosHooks
+ this.axiosInstance.interceptors.request.use(
+ (config) => {
+ this.addCancelToken(config)
+ if (isFunction(requestInterceptorsHook)) {
+ config = requestInterceptorsHook(config)
+ }
+ return config
+ },
+ (err: Error) => {
+ if (isFunction(requestInterceptorsCatchHook)) {
+ requestInterceptorsCatchHook(err)
+ }
+ return err
+ }
+ )
+ this.axiosInstance.interceptors.response.use(
+ (response: AxiosResponse) => {
+ this.removeCancelToken(response.config.url!)
+ if (isFunction(responseInterceptorsHook)) {
+ response = responseInterceptorsHook(response)
+ }
+ return response
+ },
+ (err: AxiosError) => {
+ if (isFunction(responseInterceptorsCatchHook)) {
+ responseInterceptorsCatchHook(err)
+ }
+ if (err.code != AxiosError.ERR_CANCELED) {
+ this.removeCancelToken(err.config?.url!)
+ }
+
+ if (err.code == AxiosError.ECONNABORTED || err.code == AxiosError.ERR_NETWORK) {
+ return new Promise((resolve) => setTimeout(resolve, 500)).then(() =>
+ this.retryRequest(err)
+ )
+ }
+ return Promise.reject(err)
+ }
+ )
+ }
+
+ /**
+ * @description 添加CancelToken
+ */
+ addCancelToken(config: AxiosRequestConfig) {
+ const { ignoreCancelToken } = config.requestOptions
+ !ignoreCancelToken && axiosCancel.add(config)
+ }
+
+ /**
+ * @description 移除CancelToken
+ */
+ removeCancelToken(url: string) {
+ axiosCancel.remove(url)
+ }
+
+ /**
+ * @description 重新请求
+ */
+ retryRequest(error: AxiosError) {
+ const config = error.config
+ const { retryCount, isOpenRetry } = config.requestOptions
+ if (!isOpenRetry || config.method?.toUpperCase() == RequestMethodsEnum.POST) {
+ return Promise.reject(error)
+ }
+ config.retryCount = config.retryCount ?? 0
+
+ if (config.retryCount >= retryCount) {
+ return Promise.reject(error)
+ }
+ config.retryCount++
+
+ return this.axiosInstance.request(config)
+ }
+ /**
+ * @description get请求
+ */
+ get(
+ config: Partial,
+ options?: Partial
+ ): Promise {
+ return this.request({ ...config, method: RequestMethodsEnum.GET }, options)
+ }
+
+ /**
+ * @description post请求
+ */
+ post(
+ config: Partial,
+ options?: Partial
+ ): Promise {
+ return this.request({ ...config, method: RequestMethodsEnum.POST }, options)
+ }
+
+ /**
+ * @description 请求函数
+ */
+ request(
+ config: Partial,
+ options?: Partial
+ ): Promise {
+ const opt: RequestOptions = merge({}, this.options, options)
+ const axioxConfig: AxiosRequestConfig = {
+ ...cloneDeep(config),
+ requestOptions: opt
+ }
+ const { urlPrefix } = opt
+ // 拼接请求前缀如api
+ if (urlPrefix) {
+ axioxConfig.url = `${urlPrefix}${config.url}`
+ }
+ return new Promise((resolve, reject) => {
+ this.axiosInstance
+ .request>>(axioxConfig)
+ .then((res) => {
+ resolve(res)
+ })
+ .catch((err) => {
+ reject(err)
+ })
+ })
+ }
+}
diff --git a/src/utils/request/cancel.ts b/src/utils/request/cancel.ts
new file mode 100644
index 0000000..b092e1d
--- /dev/null
+++ b/src/utils/request/cancel.ts
@@ -0,0 +1,31 @@
+import axios, { type AxiosRequestConfig, type Canceler } from 'axios'
+
+const cancelerMap = new Map()
+
+export class AxiosCancel {
+ private static instance?: AxiosCancel
+
+ static createInstance() {
+ return this.instance ?? (this.instance = new AxiosCancel())
+ }
+ add(config: AxiosRequestConfig) {
+ const url = config.url!
+ this.remove(url)
+ config.cancelToken = new axios.CancelToken((cancel) => {
+ if (!cancelerMap.has(url)) {
+ cancelerMap.set(url, cancel)
+ }
+ })
+ }
+ remove(url: string) {
+ if (cancelerMap.has(url)) {
+ const cancel = cancelerMap.get(url)
+ cancel && cancel(url)
+ cancelerMap.delete(url)
+ }
+ }
+}
+
+const axiosCancel = AxiosCancel.createInstance()
+
+export default axiosCancel
diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts
new file mode 100644
index 0000000..e66915d
--- /dev/null
+++ b/src/utils/request/index.ts
@@ -0,0 +1,123 @@
+import { merge } from 'lodash'
+import configs from '@/config'
+import { Axios } from './axios'
+import { ContentTypeEnum, RequestCodeEnum, RequestMethodsEnum } from '@/enums/requestEnums'
+import type { AxiosHooks } from './type'
+import { clearAuthInfo, getToken } from '../auth'
+import feedback from '../feedback'
+import NProgress from 'nprogress'
+import { AxiosError, type AxiosRequestConfig } from 'axios'
+import router from '@/router'
+import { PageEnum } from '@/enums/pageEnum'
+
+// 处理axios的钩子函数
+const axiosHooks: AxiosHooks = {
+ requestInterceptorsHook(config) {
+ NProgress.start()
+ const { withToken, isParamsToData } = config.requestOptions
+ const params = config.params || {}
+ const headers = config.headers || {}
+
+ // 添加token
+ if (withToken) {
+ const token = getToken()
+ headers.token = token
+ }
+ // POST请求下如果无data,则将params视为data
+ if (
+ isParamsToData &&
+ !Reflect.has(config, 'data') &&
+ config.method?.toUpperCase() === RequestMethodsEnum.POST
+ ) {
+ config.data = params
+ config.params = {}
+ }
+ config.headers = headers
+ return config
+ },
+ requestInterceptorsCatchHook(err) {
+ NProgress.done()
+ return err
+ },
+ async responseInterceptorsHook(response) {
+ NProgress.done()
+ const { isTransformResponse, isReturnDefaultResponse } = response.config.requestOptions
+
+ //返回默认响应,当需要获取响应头及其他数据时可使用
+ if (isReturnDefaultResponse) {
+ return response
+ }
+ // 是否需要对数据进行处理
+ if (!isTransformResponse) {
+ return response.data
+ }
+ const { code, data, show, msg } = response.data
+ switch (code) {
+ case RequestCodeEnum.SUCCESS:
+ if (show) {
+ msg && feedback.msgSuccess(msg)
+ }
+ return data
+ case RequestCodeEnum.FAIL:
+ if (show) {
+ msg && feedback.msgError(msg)
+ }
+ return Promise.reject(data)
+ case RequestCodeEnum.LOGIN_FAILURE:
+ clearAuthInfo()
+ router.push(PageEnum.LOGIN)
+ return Promise.reject()
+ case RequestCodeEnum.OPEN_NEW_PAGE:
+ window.location.href = data.url
+ return data
+ default:
+ return data
+ }
+ },
+ responseInterceptorsCatchHook(error) {
+ NProgress.done()
+ if (error.code !== AxiosError.ERR_CANCELED) {
+ error.message && feedback.msgError(error.message)
+ }
+ return Promise.reject(error)
+ }
+}
+
+const defaultOptions: AxiosRequestConfig = {
+ //接口超时时间
+ timeout: configs.timeout,
+ // 基础接口地址
+ baseURL: configs.baseUrl,
+ //请求头
+ headers: { 'Content-Type': ContentTypeEnum.JSON, version: configs.version },
+ // 处理 axios的钩子函数
+ axiosHooks: axiosHooks,
+ // 每个接口可以单独配置
+ requestOptions: {
+ // 是否将params视为data参数,仅限post请求
+ isParamsToData: true,
+ //是否返回默认的响应
+ isReturnDefaultResponse: false,
+ // 需要对返回数据进行处理
+ isTransformResponse: true,
+ // 接口拼接地址
+ urlPrefix: configs.urlPrefix,
+ // 忽略重复请求
+ ignoreCancelToken: false,
+ // 是否携带token
+ withToken: true,
+ // 开启请求超时重新发起请求请求机制
+ isOpenRetry: true,
+ // 重新请求次数
+ retryCount: 2
+ }
+}
+
+function createAxios(opt?: Partial) {
+ return new Axios(
+ // 深度合并
+ merge(defaultOptions, opt || {})
+ )
+}
+const request = createAxios()
+export default request
diff --git a/src/utils/request/type.d.ts b/src/utils/request/type.d.ts
new file mode 100644
index 0000000..a7f364d
--- /dev/null
+++ b/src/utils/request/type.d.ts
@@ -0,0 +1,38 @@
+import type { AxiosRequestConfig, AxiosResponse } from 'axios'
+
+import 'axios'
+declare module 'axios' {
+ // 扩展 RouteMeta
+ interface AxiosRequestConfig {
+ retryCount?: number
+ axiosHooks?: AxiosHooks
+ requestOptions: RequestOptions
+ }
+}
+
+export interface RequestOptions {
+ isParamsToData: boolean
+ isReturnDefaultResponse: boolean
+ isTransformResponse: boolean
+ urlPrefix: string
+ ignoreCancelToken: boolean
+ withToken: boolean
+ isOpenRetry: boolean
+ retryCount: number
+}
+
+export interface AxiosHooks {
+ requestInterceptorsHook?: (config: AxiosRequestConfig) => AxiosRequestConfig
+ requestInterceptorsCatchHook?: (error: Error) => void
+ responseInterceptorsHook?: (
+ response: AxiosResponse>
+ ) => AxiosResponse | RequestData | T
+ responseInterceptorsCatchHook?: (error: AxiosError) => void
+}
+
+export interface RequestData {
+ code: number
+ data: T
+ msg: string
+ show: boolean
+}
diff --git a/src/utils/theme.ts b/src/utils/theme.ts
new file mode 100644
index 0000000..d11fe18
--- /dev/null
+++ b/src/utils/theme.ts
@@ -0,0 +1,74 @@
+import colors from 'css-color-function'
+const lightConfig = {
+ 'dark-2': 'shade(20%)',
+ 'light-3': 'tint(30%)',
+ 'light-5': 'tint(50%)',
+ 'light-7': 'tint(70%)',
+ 'light-8': 'tint(80%)',
+ 'light-9': 'tint(90%)'
+}
+
+const darkConfig = {
+ 'light-3': 'shade(20%)',
+ 'light-5': 'shade(30%)',
+ 'light-7': 'shade(50%)',
+ 'light-8': 'shade(60%)',
+ 'light-9': 'shade(70%)',
+ 'dark-2': 'tint(20%)'
+}
+
+const themeId = 'theme-vars'
+
+/**
+ * @author Jason
+ * @description 用于生成elementui主题的行为变量
+ * 可选值有primary、success、warning、danger、error、info
+ */
+
+export const generateVars = (color: string, type = 'primary', isDark = false) => {
+ const colos = {
+ [`--el-color-${type}`]: color
+ }
+ const config: Record = isDark ? darkConfig : lightConfig
+ for (const key in config) {
+ colos[`--el-color-${type}-${key}`] = `color(${color} ${config[key]})`
+ }
+ return colos
+}
+
+/**
+ * @author Jason
+ * @description 用于设置css变量
+ * @param key css变量key 如 --color-primary
+ * @param value css变量值 如 #f40
+ * @param dom dom元素
+ */
+export const setCssVar = (key: string, value: string, dom = document.documentElement) => {
+ dom.style.setProperty(key, value)
+}
+
+/**
+ * @author Jason
+ * @description 设置主题
+ */
+export const setTheme = (options: Record, isDark = false) => {
+ const varsMap: Record = Object.keys(options).reduce((prev, key) => {
+ return Object.assign(prev, generateVars(options[key], key, isDark))
+ }, {})
+
+ let theme = Object.keys(varsMap).reduce((prev, key) => {
+ const color = colors.convert(varsMap[key])
+ return `${prev}${key}:${color};`
+ }, '')
+ theme = `:root{${theme}}`
+ let style = document.getElementById(themeId)
+ if (style) {
+ style.innerHTML = theme
+ return
+ }
+ style = document.createElement('style')
+ style.setAttribute('type', 'text/css')
+ style.setAttribute('id', themeId)
+ style.innerHTML = theme
+ document.head.append(style)
+}
diff --git a/src/utils/util.ts b/src/utils/util.ts
new file mode 100644
index 0000000..57d9ab6
--- /dev/null
+++ b/src/utils/util.ts
@@ -0,0 +1,162 @@
+import { isObject } from '@vue/shared'
+import { cloneDeep } from 'lodash'
+
+/**
+ * @description 添加单位
+ * @param {String | Number} value 值 100
+ * @param {String} unit 单位 px em rem
+ */
+export const addUnit = (value: string | number, unit = 'px') => {
+ return !Object.is(Number(value), NaN) ? `${value}${unit}` : value
+}
+
+/**
+ * @description 添加单位
+ * @param {unknown} value
+ * @return {Boolean}
+ */
+export const isEmpty = (value: unknown) => {
+ return value == null && typeof value == 'undefined'
+}
+
+/**
+ * @description 树转数组,队列实现广度优先遍历
+ * @param {Array} data 数据
+ * @param {Object} props `{ children: 'children' }`
+ */
+
+export const treeToArray = (data: any[], props = { children: 'children' }) => {
+ data = cloneDeep(data)
+ const { children } = props
+ const newData = []
+ const queue: any[] = []
+ data.forEach((child: any) => queue.push(child))
+ while (queue.length) {
+ const item: any = queue.shift()
+ if (item[children]) {
+ item[children].forEach((child: any) => queue.push(child))
+ delete item[children]
+ }
+ newData.push(item)
+ }
+ return newData
+}
+
+/**
+ * @description 数组转
+ * @param {Array} data 数据
+ * @param {Object} props `{ parent: 'pid', children: 'children' }`
+ */
+
+export const arrayToTree = (
+ data: any[],
+ props = { id: 'id', parentId: 'pid', children: 'children' }
+) => {
+ data = cloneDeep(data)
+ const { id, parentId, children } = props
+ const result: any[] = []
+ const map = new Map()
+ data.forEach((item) => {
+ map.set(item[id], item)
+ const parent = map.get(item[parentId])
+ if (parent) {
+ parent[children] = parent[children] ?? []
+ parent[children].push(item)
+ } else {
+ result.push(item)
+ }
+ })
+ return result
+}
+
+/**
+ * @description 获取正确的路经
+ * @param {String} path 数据
+ */
+export function getNormalPath(path: string) {
+ if (path.length === 0 || !path || path == 'undefined') {
+ return path
+ }
+ const newPath = path.replace('//', '/')
+ const length = newPath.length
+ if (newPath[length - 1] === '/') {
+ return newPath.slice(0, length - 1)
+ }
+ return newPath
+}
+
+/**
+ * @description对象格式化为Query语法
+ * @param { Object } params
+ * @return {string} Query语法
+ */
+export function objectToQuery(params: Record): string {
+ let query = ''
+ for (const props of Object.keys(params)) {
+ const value = params[props]
+ const part = encodeURIComponent(props) + '='
+ if (!isEmpty(value)) {
+ if (isObject(value)) {
+ for (const key of Object.keys(value)) {
+ if (!isEmpty(value[key])) {
+ const params = props + '[' + key + ']'
+ const subPart = encodeURIComponent(params) + '='
+ query += subPart + encodeURIComponent(value[key]) + '&'
+ }
+ }
+ } else {
+ query += part + encodeURIComponent(value) + '&'
+ }
+ }
+ }
+ return query.slice(0, -1)
+}
+
+/**
+ * @description 时间格式化
+ * @param dateTime { number } 时间戳
+ * @param fmt { string } 时间格式
+ * @return { string }
+ */
+// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合
+export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => {
+ // 如果为null,则格式化当前时间
+ if (!dateTime) {
+ dateTime = Number(new Date())
+ }
+ // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
+ if (dateTime.toString().length == 10) {
+ dateTime *= 1000
+ }
+ const date = new Date(dateTime)
+ let ret
+ const opt: any = {
+ 'y+': date.getFullYear().toString(), // 年
+ 'm+': (date.getMonth() + 1).toString(), // 月
+ 'd+': date.getDate().toString(), // 日
+ 'h+': date.getHours().toString(), // 时
+ 'M+': date.getMinutes().toString(), // 分
+ 's+': date.getSeconds().toString() // 秒
+ }
+ for (const k in opt) {
+ ret = new RegExp('(' + k + ')').exec(fmt)
+ if (ret) {
+ fmt = fmt.replace(
+ ret[1],
+ ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
+ )
+ }
+ }
+ return fmt
+}
+
+/**
+ * @description 获取不重复的id
+ * @param length { Number } id的长度
+ * @return { String } id
+ */
+export const getNonDuplicateID = (length = 8) => {
+ let idStr = Date.now().toString(36)
+ idStr += Math.random().toString(36).substring(3, length)
+ return idStr
+}
diff --git a/src/utils/validate.ts b/src/utils/validate.ts
new file mode 100644
index 0000000..0f8d8f1
--- /dev/null
+++ b/src/utils/validate.ts
@@ -0,0 +1,7 @@
+/**
+ * @param {string} path
+ * @returns {Boolean}
+ */
+export function isExternal(path: string) {
+ return /^(https?:|mailto:|tel:)/.test(path)
+}
diff --git a/src/views/account/images/login_bg.png b/src/views/account/images/login_bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..787837a256587e81c2ffd3abcac0324acff7a718
GIT binary patch
literal 59273
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