From 50d449763981f2f2d6c8725e760d004f16083f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Sat, 3 Jan 2026 15:37:56 +0800 Subject: [PATCH] =?UTF-8?q?chore(config):=20=E6=B7=BB=E5=8A=A0=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E5=92=8C=E9=9A=90?= =?UTF-8?q?=E7=A7=81=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 .editorconfig 文件统一代码风格 - 添加 .env.development 和 .env.example 环境变量配置 - 添加 .eslintignore 和 .eslintrc.js 代码检查配置 - 添加 .gitignore 版本控制忽略文件配置 - 添加 .prettierignore 代码格式化忽略配置 - 添加隐私协议 HTML 文件 - 添加 accesskey 编辑组件基础结构 --- .editorconfig | 14 + .env.development | 6 + .env.example | 40 + .eslintignore | 4 + .eslintrc.js | 78 + .gitignore | 33 + .prettierignore | 9 + README.md | 186 + components.d.ts | 2 + index.html | 68 + package-lock.json | 19250 ++++++++++++++++ package.json | 91 + pnpm-lock.yaml | 7589 ++++++ postcss.config.js | 6 + prettier.config.js | 19 + ...waRtkJyvf_!!6000000001499-55-tps-70-70.svg | 1 + public/assets/bg-2.jpeg | Bin 0 -> 406999 bytes public/assets/logo.svg | 15 + public/favicon.ico | Bin 0 -> 1620 bytes public/json.zip | Bin 0 -> 43714 bytes public/json/china-provinces.geo.json | 1 + public/json/industry-data.json | 1 + public/json/regions-data.json | 1 + public/logo.svg | 10 + public/mp-logo.png | Bin 0 -> 5238 bytes public/oa.png | Bin 0 -> 55378 bytes public/tinymce/langs/zh_CN.js | 462 + public/tinymce/langs/zh_TW.js | 419 + public/tinymce/skins/content/dark/content.css | 72 + .../skins/content/dark/content.min.css | 7 + .../tinymce/skins/content/default/content.css | 66 + .../skins/content/default/content.min.css | 7 + .../skins/content/document/content.css | 72 + .../skins/content/document/content.min.css | 7 + .../tinymce/skins/content/writer/content.css | 68 + .../skins/content/writer/content.min.css | 7 + .../tinymce/skins/ui/oxide-dark/content.css | 714 + .../skins/ui/oxide-dark/content.inline.css | 726 + .../ui/oxide-dark/content.inline.min.css | 7 + .../skins/ui/oxide-dark/content.min.css | 7 + .../skins/ui/oxide-dark/content.mobile.css | 29 + .../ui/oxide-dark/content.mobile.min.css | 7 + .../ui/oxide-dark/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes public/tinymce/skins/ui/oxide-dark/skin.css | 3047 +++ .../tinymce/skins/ui/oxide-dark/skin.min.css | 7 + .../skins/ui/oxide-dark/skin.mobile.css | 673 + .../skins/ui/oxide-dark/skin.mobile.min.css | 7 + .../skins/ui/oxide-dark/skin.shadowdom.css | 37 + .../ui/oxide-dark/skin.shadowdom.min.css | 7 + public/tinymce/skins/ui/oxide/content.css | 732 + .../tinymce/skins/ui/oxide/content.inline.css | 726 + .../skins/ui/oxide/content.inline.min.css | 7 + public/tinymce/skins/ui/oxide/content.min.css | 7 + .../tinymce/skins/ui/oxide/content.mobile.css | 29 + .../skins/ui/oxide/content.mobile.min.css | 7 + .../skins/ui/oxide/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes public/tinymce/skins/ui/oxide/skin.css | 3047 +++ public/tinymce/skins/ui/oxide/skin.min.css | 7 + public/tinymce/skins/ui/oxide/skin.mobile.css | 673 + .../skins/ui/oxide/skin.mobile.min.css | 7 + .../tinymce/skins/ui/oxide/skin.shadowdom.css | 37 + .../skins/ui/oxide/skin.shadowdom.min.css | 7 + public/ws-logo.svg | 15 + public/xieyi/01.html | 700 + src/App.vue | 43 + src/api/bszx/bszxBm/index.ts | 106 + src/api/bszx/bszxBm/model/index.ts | 78 + src/api/bszx/bszxBranch/index.ts | 106 + src/api/bszx/bszxBranch/model/index.ts | 23 + src/api/bszx/bszxClass/index.ts | 106 + src/api/bszx/bszxClass/model/index.ts | 48 + src/api/bszx/bszxEra/index.ts | 106 + src/api/bszx/bszxEra/model/index.ts | 21 + src/api/bszx/bszxGrade/index.ts | 106 + src/api/bszx/bszxGrade/model/index.ts | 37 + src/api/bszx/bszxOrder/index.ts | 37 + src/api/bszx/bszxPay/index.ts | 121 + src/api/bszx/bszxPay/model/index.ts | 69 + src/api/bszx/bszxPayRanking/index.ts | 135 + src/api/bszx/bszxPayRanking/model/index.ts | 35 + src/api/cms/cmsAd/index.ts | 106 + src/api/cms/cmsAd/model/index.ts | 65 + src/api/cms/cmsAdRecord/index.ts | 106 + src/api/cms/cmsAdRecord/model/index.ts | 35 + src/api/cms/cmsArticle/index.ts | 160 + src/api/cms/cmsArticle/model/index.ts | 131 + src/api/cms/cmsArticleCategory/index.ts | 108 + src/api/cms/cmsArticleCategory/model/index.ts | 59 + src/api/cms/cmsArticleComment/index.ts | 106 + src/api/cms/cmsArticleComment/model/index.ts | 47 + src/api/cms/cmsArticleContent/index.ts | 106 + src/api/cms/cmsArticleContent/model/index.ts | 25 + src/api/cms/cmsArticleCount/index.ts | 106 + src/api/cms/cmsArticleCount/model/index.ts | 25 + src/api/cms/cmsArticleLike/index.ts | 106 + src/api/cms/cmsArticleLike/model/index.ts | 25 + src/api/cms/cmsDesign/index.ts | 106 + src/api/cms/cmsDesign/model/index.ts | 64 + src/api/cms/cmsDomain/index.ts | 153 + src/api/cms/cmsDomain/model/index.ts | 43 + src/api/cms/cmsForm/index.ts | 106 + src/api/cms/cmsForm/model/index.ts | 53 + src/api/cms/cmsFormRecord/index.ts | 106 + src/api/cms/cmsFormRecord/model/index.ts | 41 + src/api/cms/cmsLang/index.ts | 106 + src/api/cms/cmsLang/model/index.ts | 35 + src/api/cms/cmsLangLog/index.ts | 106 + src/api/cms/cmsLangLog/model/index.ts | 27 + src/api/cms/cmsLink/index.ts | 120 + src/api/cms/cmsLink/model/index.ts | 45 + src/api/cms/cmsModel/index.ts | 106 + src/api/cms/cmsModel/model/index.ts | 63 + src/api/cms/cmsNavigation/index.ts | 151 + src/api/cms/cmsNavigation/model/index.ts | 106 + src/api/cms/cmsOrder/index.ts | 106 + src/api/cms/cmsOrder/model/index.ts | 66 + src/api/cms/cmsStatistics/index.ts | 106 + src/api/cms/cmsStatistics/model/index.ts | 79 + src/api/cms/cmsTemplate/index.ts | 106 + src/api/cms/cmsTemplate/model/index.ts | 59 + src/api/cms/cmsWebsite/index.ts | 119 + src/api/cms/cmsWebsite/model/index.ts | 160 + src/api/cms/cmsWebsiteAll/index.ts | 73 + src/api/cms/cmsWebsiteAll/model/index.ts | 132 + src/api/cms/cmsWebsiteField/index.ts | 167 + src/api/cms/cmsWebsiteField/model/index.ts | 65 + src/api/cms/cmsWebsiteSetting/index.ts | 106 + src/api/cms/cmsWebsiteSetting/model/index.ts | 55 + src/api/cms/link/index.ts | 113 + src/api/cms/link/model/index.ts | 31 + src/api/house/houseInfo/index.ts | 117 + src/api/house/houseInfo/model/index.ts | 107 + src/api/house/houseLikeLog/index.ts | 106 + src/api/house/houseLikeLog/model/index.ts | 31 + src/api/house/houseReservation/index.ts | 106 + src/api/house/houseReservation/model/index.ts | 63 + src/api/house/houseUser/index.ts | 106 + src/api/house/houseUser/model/index.ts | 131 + src/api/house/houseViewsLog/index.ts | 106 + src/api/house/houseViewsLog/model/index.ts | 31 + src/api/index.ts | 61 + src/api/layout/index.ts | 153 + src/api/layout/model/index.ts | 74 + src/api/miniprogram/index.ts | 50 + src/api/oa/oaApp/index.ts | 106 + src/api/oa/oaApp/model/index.ts | 149 + src/api/oa/oaAppField/index.ts | 106 + src/api/oa/oaAppField/model/index.ts | 33 + src/api/oa/oaAppRenew/index.ts | 106 + src/api/oa/oaAppRenew/model/index.ts | 41 + src/api/oa/oaAppUrl/index.ts | 106 + src/api/oa/oaAppUrl/model/index.ts | 37 + src/api/oa/oaAppUser/index.ts | 106 + src/api/oa/oaAppUser/model/index.ts | 31 + src/api/oa/oaAssets/index.ts | 105 + src/api/oa/oaAssets/model/index.ts | 102 + src/api/oa/oaAssetsCode/index.ts | 105 + src/api/oa/oaAssetsCode/model/index.ts | 49 + src/api/oa/oaAssetsDomain/index.ts | 105 + src/api/oa/oaAssetsDomain/model/index.ts | 58 + src/api/oa/oaAssetsEmail/index.ts | 105 + src/api/oa/oaAssetsEmail/model/index.ts | 55 + src/api/oa/oaAssetsMysql/index.ts | 105 + src/api/oa/oaAssetsMysql/model/index.ts | 63 + src/api/oa/oaAssetsServer/index.ts | 105 + src/api/oa/oaAssetsServer/model/index.ts | 45 + src/api/oa/oaAssetsSite/index.ts | 105 + src/api/oa/oaAssetsSite/model/index.ts | 111 + src/api/oa/oaAssetsSoftwareCert/index.ts | 105 + .../oa/oaAssetsSoftwareCert/model/index.ts | 55 + src/api/oa/oaAssetsSsl/index.ts | 105 + src/api/oa/oaAssetsSsl/model/index.ts | 67 + src/api/oa/oaAssetsTrademark/index.ts | 105 + src/api/oa/oaAssetsTrademark/model/index.ts | 55 + src/api/oa/oaAssetsUser/index.ts | 105 + src/api/oa/oaAssetsUser/model/index.ts | 31 + src/api/oa/oaAssetsVhost/index.ts | 105 + src/api/oa/oaAssetsVhost/model/index.ts | 61 + src/api/oa/oaCompany/index.ts | 105 + src/api/oa/oaCompany/model/index.ts | 117 + src/api/oa/oaCompanyField/index.ts | 105 + src/api/oa/oaCompanyField/model/index.ts | 33 + src/api/oa/oaCompanyUser/index.ts | 105 + src/api/oa/oaCompanyUser/model/index.ts | 31 + src/api/oa/oaLink/index.ts | 105 + src/api/oa/oaLink/model/index.ts | 45 + src/api/oa/oaTask/index.ts | 105 + src/api/oa/oaTask/model/index.ts | 85 + src/api/oa/oaTaskCount/index.ts | 105 + src/api/oa/oaTaskCount/model/index.ts | 45 + src/api/oa/oaTaskRecord/index.ts | 105 + src/api/oa/oaTaskRecord/model/index.ts | 45 + src/api/oa/oaTaskUser/index.ts | 105 + src/api/oa/oaTaskUser/model/index.ts | 31 + src/api/passport/login/index.ts | 117 + src/api/passport/login/model/index.ts | 46 + src/api/passport/qrLogin/index.ts | 110 + src/api/project/project/index.ts | 128 + src/api/project/project/model/index.ts | 198 + src/api/project/projectCollection/index.ts | 106 + .../project/projectCollection/model/index.ts | 25 + src/api/project/projectField/index.ts | 106 + src/api/project/projectField/model/index.ts | 39 + src/api/project/projectRenew/index.ts | 127 + src/api/project/projectRenew/model/index.ts | 65 + src/api/project/projectUrl/index.ts | 106 + src/api/project/projectUrl/model/index.ts | 39 + src/api/project/projectUser/index.ts | 106 + src/api/project/projectUser/model/index.ts | 34 + src/api/pwl/pwlProject/index.ts | 131 + src/api/pwl/pwlProject/model/index.ts | 111 + src/api/pwl/pwlProjectLibrary/index.ts | 106 + src/api/pwl/pwlProjectLibrary/model/index.ts | 47 + src/api/shop/shopCommissionRole/index.ts | 105 + .../shop/shopCommissionRole/model/index.ts | 35 + src/api/shop/shopCoupon/index.ts | 105 + src/api/shop/shopCoupon/model/index.ts | 71 + .../shop/shopCouponApplyCate/model/index.ts | 11 + .../shop/shopCouponApplyItem/model/index.ts | 11 + src/api/shop/shopDealerApply/index.ts | 158 + src/api/shop/shopDealerApply/model/index.ts | 61 + src/api/shop/shopDealerCapital/index.ts | 105 + src/api/shop/shopDealerCapital/model/index.ts | 35 + src/api/shop/shopDealerOrder/index.ts | 221 + src/api/shop/shopDealerOrder/model/index.ts | 73 + src/api/shop/shopDealerPoster/index.ts | 131 + src/api/shop/shopDealerPoster/model/index.ts | 93 + src/api/shop/shopDealerRecord/index.ts | 106 + src/api/shop/shopDealerRecord/model/index.ts | 39 + src/api/shop/shopDealerReferee/index.ts | 105 + src/api/shop/shopDealerReferee/model/index.ts | 34 + src/api/shop/shopDealerSetting/index.ts | 105 + src/api/shop/shopDealerSetting/model/index.ts | 25 + src/api/shop/shopDealerUser/index.ts | 140 + src/api/shop/shopDealerUser/model/index.ts | 60 + src/api/shop/shopDealerWithdraw/index.ts | 105 + .../shop/shopDealerWithdraw/model/index.ts | 47 + src/api/shop/shopExpress/index.ts | 105 + src/api/shop/shopExpress/model/index.ts | 35 + src/api/shop/shopExpressTemplate/index.ts | 105 + .../shop/shopExpressTemplate/model/index.ts | 43 + .../shop/shopExpressTemplateDetail/index.ts | 105 + .../shopExpressTemplateDetail/model/index.ts | 45 + src/api/shop/shopGift/index.ts | 130 + src/api/shop/shopGift/model/index.ts | 61 + src/api/shop/shopGoods/index.ts | 116 + src/api/shop/shopGoods/model/index.ts | 148 + src/api/shop/shopGoodsCategory/index.ts | 106 + src/api/shop/shopGoodsCategory/model/index.ts | 64 + src/api/shop/shopGoodsCoupon/index.ts | 106 + src/api/shop/shopGoodsCoupon/model/index.ts | 37 + src/api/shop/shopGoodsRoleCommission/index.ts | 106 + .../shopGoodsRoleCommission/model/index.ts | 35 + src/api/shop/shopGoodsSku/index.ts | 118 + src/api/shop/shopGoodsSku/model/index.ts | 50 + src/api/shop/shopGoodsSpec/index.ts | 105 + src/api/shop/shopGoodsSpec/model/index.ts | 29 + src/api/shop/shopMerchant/index.ts | 106 + src/api/shop/shopMerchant/model/index.ts | 95 + src/api/shop/shopMerchantAccount/index.ts | 106 + .../shop/shopMerchantAccount/model/index.ts | 39 + src/api/shop/shopMerchantApply/index.ts | 120 + src/api/shop/shopMerchantApply/model/index.ts | 72 + src/api/shop/shopMerchantCount/index.ts | 108 + src/api/shop/shopMerchantCount/model/index.ts | 29 + src/api/shop/shopMerchantType/index.ts | 108 + src/api/shop/shopMerchantType/model/index.ts | 30 + src/api/shop/shopOrder/index.ts | 137 + src/api/shop/shopOrder/model/index.ts | 169 + src/api/shop/shopOrderGoods/index.ts | 106 + src/api/shop/shopOrderGoods/model/index.ts | 71 + src/api/shop/shopSpec/index.ts | 106 + src/api/shop/shopSpec/model/index.ts | 38 + src/api/shop/shopSpecValue/index.ts | 105 + src/api/shop/shopSpecValue/model/index.ts | 29 + src/api/shop/shopUser/index.ts | 106 + src/api/shop/shopUser/model/index.ts | 163 + src/api/shop/shopUserAddress/index.ts | 106 + src/api/shop/shopUserAddress/model/index.ts | 49 + src/api/shop/shopUserCoupon/index.ts | 105 + src/api/shop/shopUserCoupon/model/index.ts | 61 + src/api/shop/shopUserReferee/index.ts | 105 + src/api/shop/shopUserReferee/model/index.ts | 33 + src/api/shop/spec/index.ts | 106 + src/api/shop/spec/model/index.ts | 37 + src/api/shop/specValue/index.ts | 106 + src/api/shop/specValue/model/index.ts | 33 + src/api/system/access-key/index.ts | 59 + src/api/system/access-key/model/index.ts | 20 + src/api/system/appstore/index.ts | 11 + src/api/system/appstore/model/index.ts | 13 + src/api/system/cache/index.ts | 76 + src/api/system/cache/model/index.ts | 18 + src/api/system/chat/index.ts | 157 + src/api/system/chat/model/index.ts | 49 + src/api/system/chatConversation/index.ts | 106 + .../system/chatConversation/model/index.ts | 37 + src/api/system/chatMessage/index.ts | 120 + src/api/system/chatMessage/model/index.ts | 49 + src/api/system/comment/index.ts | 106 + src/api/system/comment/model/index.ts | 33 + src/api/system/company/index.ts | 162 + src/api/system/company/model/index.ts | 187 + src/api/system/companyComment/index.ts | 106 + src/api/system/companyComment/model/index.ts | 35 + src/api/system/companyContent/index.ts | 121 + src/api/system/companyContent/model/index.ts | 25 + src/api/system/companyGit/index.ts | 106 + src/api/system/companyGit/model/index.ts | 41 + src/api/system/companyParameter/index.ts | 106 + .../system/companyParameter/model/index.ts | 33 + src/api/system/companyUrl/index.ts | 106 + src/api/system/companyUrl/model/index.ts | 39 + src/api/system/dict-data/index.ts | 87 + src/api/system/dict-data/model/index.ts | 49 + src/api/system/dict/index.ts | 61 + src/api/system/dict/model/index.ts | 29 + src/api/system/dictionary-data/index.ts | 87 + src/api/system/dictionary-data/model/index.ts | 37 + src/api/system/dictionary/index.ts | 61 + src/api/system/dictionary/model/index.ts | 29 + src/api/system/domain/index.ts | 119 + src/api/system/domain/model/index.ts | 38 + src/api/system/environment/index.ts | 125 + src/api/system/environment/model/index.ts | 25 + src/api/system/file/index.ts | 250 + src/api/system/file/model/index.ts | 55 + src/api/system/login-record/index.ts | 32 + src/api/system/login-record/model/index.ts | 38 + src/api/system/menu/index.ts | 172 + src/api/system/menu/model/index.ts | 67 + src/api/system/modules/index.ts | 118 + src/api/system/modules/model/index.ts | 22 + src/api/system/operation-record/index.ts | 32 + .../system/operation-record/model/index.ts | 56 + src/api/system/order/index.ts | 106 + src/api/system/order/model/index.ts | 98 + src/api/system/orderGoods/index.ts | 106 + src/api/system/orderGoods/model/index.ts | 57 + src/api/system/organization/index.ts | 73 + src/api/system/organization/model/index.ts | 42 + src/api/system/parameter/index.ts | 106 + src/api/system/parameter/model/index.ts | 31 + src/api/system/payment/index.ts | 121 + src/api/system/payment/model/index.ts | 59 + src/api/system/plug/index.ts | 125 + src/api/system/plug/model/index.ts | 67 + src/api/system/role/index.ts | 119 + src/api/system/role/model/index.ts | 27 + src/api/system/setting/index.ts | 153 + src/api/system/setting/model/index.ts | 127 + src/api/system/tenant/index.ts | 191 + src/api/system/tenant/model/index.ts | 46 + src/api/system/url/index.ts | 106 + src/api/system/url/model/index.ts | 37 + src/api/system/user-collection/index.ts | 106 + src/api/system/user-collection/model/index.ts | 25 + src/api/system/user-file/index.ts | 89 + src/api/system/user-file/model/index.ts | 39 + src/api/system/user-grade/index.ts | 120 + src/api/system/user-grade/model/index.ts | 28 + src/api/system/user-group/index.ts | 120 + src/api/system/user-group/model/index.ts | 23 + src/api/system/user/index.ts | 314 + src/api/system/user/model/count.ts | 15 + src/api/system/user/model/index.ts | 161 + src/api/system/userOauth/index.ts | 106 + src/api/system/userOauth/model/index.ts | 39 + src/api/system/userRole/index.ts | 48 + src/api/system/userRole/model/index.ts | 30 + src/api/system/userVerify/index.ts | 106 + src/api/system/userVerify/model/index.ts | 54 + src/api/system/version/index.ts | 119 + src/api/system/version/model/index.ts | 26 + src/api/system/website/field/index.ts | 162 + src/api/system/website/field/model/index.ts | 63 + src/api/system/website/index.ts | 169 + src/api/system/website/model/index.ts | 97 + src/api/system/white-domain/index.ts | 146 + src/api/system/white-domain/model/index.ts | 27 + src/api/user/balance-log/index.ts | 104 + src/api/user/balance-log/model/index.ts | 31 + src/api/user/feedback/index.ts | 103 + src/api/user/feedback/model/index.ts | 29 + src/api/user/grade/index.ts | 114 + src/api/user/grade/model/index.ts | 28 + src/api/user/index.ts | 18 + src/api/user/model/index.ts | 57 + src/api/user/recharge/export/index.ts | 109 + src/api/user/recharge/export/model/index.ts | 37 + src/api/user/recharge/order/index.ts | 134 + src/api/user/recharge/order/model/index.ts | 34 + src/api/user/referee/index.ts | 102 + src/api/user/referee/model/index.ts | 24 + src/api/user/userCoupon/index.ts | 106 + src/api/user/userCoupon/model/index.ts | 59 + ...waRtkJyvf_!!6000000001499-55-tps-70-70.svg | 1 + src/assets/bg-2.jpeg | Bin 0 -> 406999 bytes src/assets/bg-login.jpg | Bin 0 -> 66953 bytes src/assets/icon/app1.png | Bin 0 -> 1986 bytes src/assets/icon/book.png | Bin 0 -> 3134 bytes src/assets/icon/forum.png | Bin 0 -> 2979 bytes src/assets/icon/gitea.png | Bin 0 -> 2699 bytes src/assets/icon/openai-avatar.jpeg | Bin 0 -> 17990 bytes src/assets/icon/other.png | Bin 0 -> 4744 bytes src/assets/icon/pc.png | Bin 0 -> 1253 bytes src/assets/icon/question.png | Bin 0 -> 3976 bytes src/assets/icon/weixin.png | Bin 0 -> 4424 bytes src/assets/img/app-ui.png | Bin 0 -> 19578 bytes src/assets/img/circular.png | Bin 0 -> 2374 bytes src/assets/img/default-avatar.png | Bin 0 -> 2672 bytes src/assets/img/phone-top-black.png | Bin 0 -> 4420 bytes src/assets/img/phone-top-white.png | Bin 0 -> 4108 bytes src/assets/img/phone-ui.png | Bin 0 -> 18758 bytes src/assets/logo.svg | 15 + src/assets/oa-logo.svg | 10 + src/components/ByteMdEditor/index.vue | 109 + src/components/ByteMdViewer/index.vue | 93 + src/components/ChooseDictionary/index.vue | 73 + src/components/DesignBanner/index.vue | 173 + src/components/DesignHeader/index.vue | 48 + src/components/DictRadio/index.vue | 58 + src/components/DictSelect/index.vue | 75 + src/components/DictSelectMultiple/index.vue | 65 + src/components/FormSelect/index.vue | 61 + src/components/IndustrySelect/index.vue | 127 + src/components/IndustrySelect/load-data.ts | 25 + src/components/IndustrySelect/types/index.ts | 15 + src/components/MpQrCode/index.vue | 39 + src/components/PayMethod/index.vue | 76 + src/components/QrCode/index.vue | 41 + src/components/QrLogin/demo.vue | 258 + src/components/QrLogin/index.vue | 312 + src/components/QuestionIcon/index.vue | 23 + src/components/RadioGroup/index.vue | 45 + src/components/RedirectLayout/index.ts | 21 + src/components/RegionsSelect/index.vue | 127 + src/components/RegionsSelect/load-data.ts | 25 + src/components/RegionsSelect/types/index.ts | 15 + src/components/RouterLayout/index.vue | 26 + .../SelectArticle/components/select-data.vue | 143 + src/components/SelectArticle/index.vue | 60 + .../components/select-data.vue | 143 + .../SelectArticleCategory/index.vue | 60 + .../SelectDesign/components/select-data.vue | 142 + src/components/SelectDesign/index.vue | 60 + .../SelectDict/components/select-data.vue | 146 + src/components/SelectDict/index.vue | 67 + .../components/select-data.vue | 151 + src/components/SelectDictDictionary/index.vue | 66 + .../SelectFence/components/select-data.vue | 139 + src/components/SelectFence/index.vue | 75 + .../components/file-record-edit.vue | 179 + .../SelectFile/components/select-data.vue | 375 + src/components/SelectFile/index.vue | 135 + .../SelectForm/components/select-data.vue | 143 + src/components/SelectForm/index.vue | 60 + src/components/SelectGoodsCategory/index.vue | 138 + .../SelectGoodsCategory/load-data.ts | 25 + .../SelectGoodsCategory/types/index.ts | 15 + .../SelectGrade/components/select-data.vue | 137 + src/components/SelectGrade/index.vue | 60 + .../SelectGroup/components/select-data.vue | 137 + src/components/SelectGroup/index.vue | 60 + .../SelectMerchant/components/select-data.vue | 161 + src/components/SelectMerchant/index.vue | 64 + .../SelectModel/components/select-data.vue | 147 + src/components/SelectModel/index.vue | 62 + .../SelectModules/components/select-data.vue | 139 + src/components/SelectModules/index.vue | 62 + .../SelectMpPages/components/select-data.vue | 144 + src/components/SelectMpPages/index.vue | 60 + .../components/select-data.vue | 223 + src/components/SelectNavigsation/index.vue | 62 + .../components/select-data.vue | 224 + .../components/select-organization.vue | 123 + src/components/SelectOrganization/index.vue | 60 + .../SelectRole/components/select-data.vue | 151 + src/components/SelectRole/index.vue | 62 + .../SelectSpec/components/select-data.vue | 169 + src/components/SelectSpec/index.vue | 62 + src/components/SelectSpecValue/index.vue | 81 + .../SelectStaff/components/select-data.vue | 144 + .../SelectStaff/components/select-user.vue | 139 + src/components/SelectStaff/index.vue | 70 + .../SelectStudent/components/select-data.vue | 137 + src/components/SelectStudent/index.vue | 53 + .../SelectUser/components/select-data.vue | 151 + .../SelectUser/components/select-user.vue | 138 + src/components/SelectUser/index.vue | 102 + .../components/select-data.vue | 146 + src/components/SelectUserByButton/index.vue | 53 + .../components/select-data.vue | 169 + src/components/SelectWebsiteField/index.vue | 64 + src/components/Simulator/index.vue | 510 + src/components/Tag/index.vue | 25 + src/components/TinymceEditor/index.vue | 247 + src/components/TinymceEditor/util.ts | 350 + src/components/UploadCert/index.vue | 87 + src/components/UploadFile/index.vue | 142 + src/components/User/index.vue | 65 + src/components/UserChoose/choose-search.vue | 37 + src/components/UserChoose/index.vue | 146 + src/components/UserChoose/types/index.ts | 9 + src/components/UserSelect/index.vue | 144 + src/components/UserSelect/types/index.ts | 9 + src/components/UserSelect/user-search.vue | 37 + src/composables/useSiteData.ts | 101 + src/config/menu.ts | 117 + src/config/performance.ts | 396 + src/config/setting.ts | 78 + src/i18n/index.ts | 20 + src/i18n/lang/en/index.ts | 14 + src/i18n/lang/en/layout.ts | 80 + src/i18n/lang/en/list.ts | 17 + src/i18n/lang/en/login.ts | 14 + src/i18n/lang/en/route.ts | 22 + src/i18n/lang/zh_CN/index.ts | 14 + src/i18n/lang/zh_CN/layout.ts | 81 + src/i18n/lang/zh_CN/list.ts | 17 + src/i18n/lang/zh_CN/login.ts | 14 + src/i18n/lang/zh_CN/route.ts | 16 + src/i18n/use-locale.ts | 35 + src/layout/components/header-notice.vue | 133 + src/layout/components/header-tools.vue | 311 + src/layout/components/header-wechat.vue | 33 + src/layout/components/i18n-icon.vue | 52 + src/layout/components/menu-title.vue | 17 + src/layout/components/page-footer.vue | 26 + src/layout/components/password-modal.vue | 148 + src/layout/components/setting-drawer.vue | 747 + src/layout/index.vue | 374 + src/layout/menu-icons.ts | 153 + src/lib/port-manager.ts | 355 + src/lib/port-strategy.ts | 415 + src/lib/tenant-port-manager.ts | 411 + src/main.ts | 16 + src/router/index.ts | 86 + src/router/performance.ts | 313 + src/router/routes.ts | 113 + src/shims-vue.d.ts | 6 + src/store/index.ts | 6 + src/store/modules/bszx-statistics.ts | 141 + src/store/modules/chat.ts | 134 + src/store/modules/params.ts | 40 + src/store/modules/setting.ts | 25 + src/store/modules/site.ts | 172 + src/store/modules/statistics.ts | 320 + src/store/modules/template.ts | 119 + src/store/modules/tenant.ts | 70 + src/store/modules/theme.ts | 698 + src/store/modules/user.ts | 145 + src/styles/as-needed.less | 6 + src/styles/component.less | 17 + src/styles/global-import.less | 4 + src/styles/index.less | 39 + src/styles/transition/fade.less | 10 + src/styles/transition/index.less | 4 + src/styles/transition/slide.less | 31 + src/styles/transition/zoom.less | 31 + src/utils/cache-manager.ts | 429 + src/utils/common.ts | 565 + src/utils/component-optimization.ts | 429 + src/utils/document-title-util.ts | 71 + src/utils/domain.ts | 144 + src/utils/editor.ts | 47 + src/utils/enhanced-request.ts | 352 + src/utils/lazy-load.ts | 318 + src/utils/merchant.ts | 42 + src/utils/on-size-change.ts | 18 + src/utils/oss.js | 43 + src/utils/page-tab-util.ts | 261 + src/utils/performance.ts | 263 + src/utils/permission.ts | 119 + src/utils/plug-uitl.ts | 53 + src/utils/port-config-manager.ts | 357 + src/utils/request.ts | 116 + src/utils/shop.ts | 90 + src/utils/token-util.ts | 71 + src/utils/type-guards.ts | 105 + src/utils/use-echarts.ts | 76 + src/utils/use-form-data.ts | 29 + src/utils/use-search.ts | 27 + src/views/bszx/extra.vue | 55 + src/views/cms/clear-cache/index.vue | 41 + src/views/cms/cmsAd/components/cmsAdEdit.vue | 402 + src/views/cms/cmsAd/components/search.vue | 81 + src/views/cms/cmsAd/index.vue | 288 + .../components/cmsAdRecordEdit.vue | 215 + .../cms/cmsAdRecord/components/search.vue | 42 + src/views/cms/cmsAdRecord/index.vue | 257 + .../cms/cmsArticle/components/Import.vue | 82 + .../cms/cmsArticle/components/articleEdit.vue | 1554 ++ .../cmsArticle/components/articleUpdate.vue | 207 + .../cms/cmsArticle/components/search.vue | 326 + .../cmsArticle/dictionary/source-select.vue | 51 + src/views/cms/cmsArticle/index.vue | 467 + .../components/cmsArticleCategoryEdit.vue | 306 + .../cmsArticleCategory/components/search.vue | 42 + src/views/cms/cmsArticleCategory/index.vue | 323 + .../components/cmsArticleCommentEdit.vue | 263 + .../cmsArticleComment/components/search.vue | 42 + src/views/cms/cmsArticleComment/index.vue | 293 + .../components/cmsArticleContentEdit.vue | 178 + .../cmsArticleContent/components/search.vue | 42 + src/views/cms/cmsArticleContent/index.vue | 227 + .../components/cmsArticleCountEdit.vue | 178 + .../cms/cmsArticleCount/components/search.vue | 42 + src/views/cms/cmsArticleCount/index.vue | 227 + .../components/cmsArticleLikeEdit.vue | 178 + .../cms/cmsArticleLike/components/search.vue | 42 + src/views/cms/cmsArticleLike/index.vue | 227 + .../cmsDesign/components/cmsDesignEdit.vue | 275 + src/views/cms/cmsDesign/components/search.vue | 111 + src/views/cms/cmsDesign/index.vue | 240 + .../cmsDomain/components/cmsDomainEdit.vue | 186 + src/views/cms/cmsDomain/components/search.vue | 42 + src/views/cms/cmsDomain/index.vue | 249 + .../cms/cmsForm/components/cmsFormEdit.vue | 465 + src/views/cms/cmsForm/components/search.vue | 42 + src/views/cms/cmsForm/index.vue | 238 + .../components/cmsFormRecordEdit.vue | 239 + .../cms/cmsFormRecord/components/search.vue | 42 + src/views/cms/cmsFormRecord/index.vue | 275 + .../cms/cmsLang/components/cmsLangEdit.vue | 202 + src/views/cms/cmsLang/components/search.vue | 43 + src/views/cms/cmsLang/index.vue | 207 + .../cmsLangLog/components/cmsLangLogEdit.vue | 178 + .../cms/cmsLangLog/components/search.vue | 42 + src/views/cms/cmsLangLog/index.vue | 227 + .../cms/cmsLink/components/cmsLinkEdit.vue | 273 + .../cms/cmsLink/components/linkUpdate.vue | 199 + src/views/cms/cmsLink/components/search.vue | 94 + src/views/cms/cmsLink/index.vue | 273 + .../cms/cmsModel/components/cmsModelEdit.vue | 316 + src/views/cms/cmsModel/components/search.vue | 42 + src/views/cms/cmsModel/index.vue | 260 + .../components/designRecordEdit.vue | 245 + .../components/components/search.vue | 42 + .../cmsNavigation/components/design-edit.vue | 482 + .../cms/cmsNavigation/components/extra.vue | 60 + .../components/navigation-edit.vue | 595 + .../cms/cmsNavigation/components/search.vue | 184 + src/views/cms/cmsNavigation/index.vue | 590 + .../cms/cmsOrder/components/orderInfo.vue | 586 + src/views/cms/cmsOrder/components/search.vue | 222 + src/views/cms/cmsOrder/index.vue | 374 + src/views/cms/cmsSetting/index.vue | 176 + .../components/cmsStatisticsEdit.vue | 387 + .../cms/cmsStatistics/components/search.vue | 42 + src/views/cms/cmsStatistics/index.vue | 163 + .../components/cmsTemplateEdit.vue | 289 + .../cms/cmsTemplate/components/search.vue | 42 + src/views/cms/cmsTemplate/index.vue | 230 + .../cms/cmsWebsite-10257/components/Extra.vue | 65 + .../cmsWebsite-10257/components/search.vue | 57 + .../components/websiteEdit.vue | 420 + src/views/cms/cmsWebsite-10257/index.vue | 402 + src/views/cms/cmsWebsite-10258/index.vue | 404 + src/views/cms/cmsWebsite-10409/index.vue | 404 + src/views/cms/cmsWebsite-10411/index.vue | 404 + src/views/cms/cmsWebsite-all/index.vue | 451 + src/views/cms/cmsWebsite-official/index.vue | 341 + .../cms/cmsWebsite/components/search.vue | 100 + .../cms/cmsWebsite/components/websiteEdit.vue | 418 + src/views/cms/cmsWebsite/index.vue | 320 + .../cms/cmsWebsiteField/components/Import.vue | 82 + .../components/cmsWebsiteFieldEdit.vue | 261 + .../cms/cmsWebsiteField/components/edit.vue | 315 + .../cms/cmsWebsiteField/components/search.vue | 114 + src/views/cms/cmsWebsiteField/index.vue | 284 + .../components/cmsWebsiteSettingEdit.vue | 257 + .../cmsWebsiteSetting/components/search.vue | 42 + src/views/cms/cmsWebsiteSetting/index.vue | 305 + src/views/cms/dashboard/components/search.vue | 100 + .../cms/dashboard/components/websiteEdit.vue | 413 + src/views/cms/dashboard/index.vue | 258 + src/views/cms/dict/components/dict-edit.vue | 177 + src/views/cms/dict/index.vue | 213 + src/views/cms/file/components/video-edit.vue | 241 + src/views/cms/file/index.vue | 307 + src/views/cms/file/player/index.vue | 131 + src/views/cms/help/components/articleEdit.vue | 237 + src/views/cms/help/components/search.vue | 69 + src/views/cms/help/index.vue | 381 + src/views/cms/photo/components/Extra.vue | 70 + src/views/cms/photo/components/photo-edit.vue | 276 + .../cms/photo/dict/components/dict-edit.vue | 178 + src/views/cms/photo/dict/index.vue | 210 + src/views/cms/photo/image.vue | 141 + src/views/cms/photo/index.vue | 176 + src/views/cms/photo/list.vue | 348 + src/views/cms/photo/player/index.vue | 124 + src/views/cms/setting/components/field.vue | 250 + .../setting/components/website-field-edit.vue | 181 + .../components/website-field-search.vue | 13 + .../cms/setting/components/website-field.vue | 189 + src/views/cms/setting/index.vue | 367 + src/views/cms/video/components/video-edit.vue | 241 + src/views/cms/video/index.vue | 321 + src/views/cms/video/player/index.vue | 131 + .../houseInfo/components/houseInfoEdit.vue | 478 + .../house/houseInfo/components/search.vue | 42 + src/views/house/houseInfo/index.vue | 469 + .../components/houseLikeLogEdit.vue | 202 + .../house/houseLikeLog/components/search.vue | 42 + src/views/house/houseLikeLog/index.vue | 245 + .../components/houseReservationEdit.vue | 332 + .../houseReservation/components/search.vue | 42 + src/views/house/houseReservation/index.vue | 341 + .../house/houseUser/components/org-select.vue | 39 + .../houseUser/components/role-select.vue | 71 + .../house/houseUser/components/search.vue | 42 + .../house/houseUser/components/sex-select.vue | 45 + .../house/houseUser/components/user-edit.vue | 345 + .../houseUser/components/user-import.vue | 88 + .../house/houseUser/components/user-info.vue | 143 + .../houseUser/components/user-search.vue | 111 + .../house/houseUser/components/userEdit.vue | 274 + src/views/house/houseUser/details/index.vue | 130 + src/views/house/houseUser/index.vue | 547 + .../components/houseViewsLogEdit.vue | 202 + .../house/houseViewsLog/components/search.vue | 42 + src/views/house/houseViewsLog/index.vue | 245 + src/views/house/info/components/info-edit.vue | 801 + src/views/house/info/components/search.vue | 127 + src/views/house/info/index.vue | 448 + .../house/maimai/components/info-edit.vue | 772 + src/views/house/maimai/components/search.vue | 127 + src/views/house/maimai/index.vue | 449 + .../components/reservation-edit.vue | 741 + .../house/reservation/components/search.vue | 42 + src/views/house/reservation/index.vue | 360 + src/views/oa/index.vue | 58 + src/views/oa/oaApp/components/oaAppEdit.vue | 676 + src/views/oa/oaApp/components/search.vue | 42 + src/views/oa/oaApp/index.vue | 599 + .../oaAppField/components/oaAppFieldEdit.vue | 212 + src/views/oa/oaAppField/components/search.vue | 42 + src/views/oa/oaAppField/index.vue | 251 + .../oaAppRenew/components/oaAppRenewEdit.vue | 242 + src/views/oa/oaAppRenew/components/search.vue | 42 + src/views/oa/oaAppRenew/index.vue | 275 + .../oa/oaAppUrl/components/oaAppUrlEdit.vue | 228 + src/views/oa/oaAppUrl/components/search.vue | 42 + src/views/oa/oaAppUrl/index.vue | 263 + .../oa/oaAppUser/components/oaAppUserEdit.vue | 201 + src/views/oa/oaAppUser/components/search.vue | 42 + src/views/oa/oaAppUser/index.vue | 245 + src/views/oa/oaAssets/components/extra.vue | 100 + .../oa/oaAssets/components/oaAssetsEdit.vue | 379 + src/views/oa/oaAssets/components/search.vue | 87 + src/views/oa/oaAssets/index.vue | 381 + .../components/oaAssetsCodeEdit.vue | 204 + .../oa/oaAssetsCode/components/search.vue | 66 + src/views/oa/oaAssetsCode/index.vue | 252 + .../components/oaAssetsDomainEdit.vue | 235 + .../oa/oaAssetsDomain/components/search.vue | 63 + src/views/oa/oaAssetsDomain/index.vue | 290 + .../components/oaAssetsEmailEdit.vue | 239 + .../oa/oaAssetsEmail/components/search.vue | 42 + src/views/oa/oaAssetsEmail/index.vue | 264 + .../components/oaAssetsMysqlEdit.vue | 279 + .../oa/oaAssetsMysql/components/search.vue | 62 + src/views/oa/oaAssetsMysql/index.vue | 282 + .../components/oaAssetsServerEdit.vue | 213 + .../oa/oaAssetsServer/components/search.vue | 42 + src/views/oa/oaAssetsServer/index.vue | 242 + .../components/oaAssetsSiteEdit.vue | 453 + .../oa/oaAssetsSite/components/search.vue | 88 + src/views/oa/oaAssetsSite/index.vue | 311 + .../components/oaAssetsSoftwareCertEdit.vue | 260 + .../components/search.vue | 42 + src/views/oa/oaAssetsSoftwareCert/index.vue | 262 + .../components/oaAssetsSslEdit.vue | 279 + .../oa/oaAssetsSsl/components/search.vue | 76 + src/views/oa/oaAssetsSsl/index.vue | 289 + .../components/oaAssetsTrademarkEdit.vue | 300 + .../oaAssetsTrademark/components/search.vue | 42 + src/views/oa/oaAssetsTrademark/index.vue | 317 + .../components/oaAssetsUserEdit.vue | 201 + .../oa/oaAssetsUser/components/search.vue | 42 + src/views/oa/oaAssetsUser/index.vue | 245 + .../components/oaAssetsVhostEdit.vue | 324 + .../oa/oaAssetsVhost/components/search.vue | 42 + src/views/oa/oaAssetsVhost/index.vue | 278 + .../oa/oaCompany/components/oaCompanyEdit.vue | 548 + src/views/oa/oaCompany/components/search.vue | 42 + src/views/oa/oaCompany/index.vue | 503 + .../components/oaCompanyFieldEdit.vue | 212 + .../oa/oaCompanyField/components/search.vue | 42 + src/views/oa/oaCompanyField/index.vue | 251 + .../components/oaCompanyUserEdit.vue | 201 + .../oa/oaCompanyUser/components/search.vue | 42 + src/views/oa/oaCompanyUser/index.vue | 245 + src/views/oa/oaLink/components/oaLinkEdit.vue | 260 + src/views/oa/oaLink/components/search.vue | 42 + src/views/oa/oaLink/index.vue | 287 + src/views/oa/oaTask/components/oaTaskEdit.vue | 420 + src/views/oa/oaTask/components/search.vue | 42 + src/views/oa/oaTask/index.vue | 407 + .../components/oaTaskCountEdit.vue | 258 + .../oa/oaTaskCount/components/search.vue | 42 + src/views/oa/oaTaskCount/index.vue | 287 + .../components/oaTaskRecordEdit.vue | 260 + .../oa/oaTaskRecord/components/search.vue | 42 + src/views/oa/oaTaskRecord/index.vue | 287 + .../oaTaskUser/components/oaTaskUserEdit.vue | 201 + src/views/oa/oaTaskUser/components/search.vue | 42 + src/views/oa/oaTaskUser/index.vue | 245 + src/views/passport/dealer/register.vue | 685 + .../register/step/components/step-confirm.vue | 279 + .../register/step/components/step-edit.vue | 286 + .../register/step/components/step-success.vue | 24 + .../login/components/register/step/index.vue | 67 + .../components/register/step/model/index.ts | 12 + .../passport/login/components/wx-work.vue | 41 + src/views/passport/login/index.vue | 783 + src/views/passport/loginToken/index.vue | 31 + src/views/passport/qrConfirm/index.vue | 371 + src/views/passport/register/index.vue | 807 + src/views/passport/register2/index.vue | 804 + .../project/project/components/extra.vue | 75 + .../project/components/projectEdit.vue | 353 + .../project/project/components/search.vue | 154 + src/views/project/project/index.vue | 529 + .../components/projectCollectionEdit.vue | 178 + .../projectCollection/components/search.vue | 42 + src/views/project/projectCollection/index.vue | 227 + .../components/app-about-edit.vue | 213 + .../projectDetail/components/app-about.vue | 49 + .../components/app-annex-edit.vue | 221 + .../projectDetail/components/app-annex.vue | 337 + .../components/app-field-edit.vue | 221 + .../components/app-field-search.vue | 40 + .../projectDetail/components/app-field.vue | 246 + .../components/app-info-edit.vue | 564 + .../projectDetail/components/app-info.vue | 171 + .../components/app-order-edit.vue | 164 + .../components/app-order-search.vue | 13 + .../projectDetail/components/app-order.vue | 271 + .../components/app-photo-edit.vue | 240 + .../projectDetail/components/app-photo.vue | 91 + .../components/app-profile-edit.vue | 228 + .../projectDetail/components/app-profile.vue | 67 + .../components/app-secret-form.vue | 210 + .../components/app-task-search.vue | 34 + .../projectDetail/components/app-task.vue | 299 + .../projectDetail/components/app-url-edit.vue | 193 + .../components/app-url-search.vue | 13 + .../projectDetail/components/app-url.vue | 227 + .../projectDetail/components/app-users.vue | 139 + src/views/project/projectDetail/index.vue | 381 + .../components/projectFieldEdit.vue | 212 + .../projectField/components/search.vue | 42 + src/views/project/projectField/index.vue | 251 + .../components/expirationTimeEdit.vue | 249 + .../components/projectRenewEdit.vue | 361 + .../projectNoRenew/components/search.vue | 53 + src/views/project/projectNoRenew/index.vue | 289 + .../components/expirationTimeEdit.vue | 249 + .../components/projectRenewEdit.vue | 361 + .../projectRenew/components/search.vue | 166 + src/views/project/projectRenew/index.vue | 332 + .../components/projectRenewEdit.vue | 349 + .../projectRenewLog/components/search.vue | 119 + src/views/project/projectRenewLog/index.vue | 314 + .../projectUrl/components/projectUrlEdit.vue | 228 + .../project/projectUrl/components/search.vue | 42 + src/views/project/projectUrl/index.vue | 263 + .../components/projectUserEdit.vue | 201 + .../project/projectUser/components/search.vue | 42 + src/views/project/projectUser/index.vue | 245 + src/views/pwl/count/index.vue | 107 + .../pwl/pwlProject/components/Import.vue | 82 + src/views/pwl/pwlProject/components/extra.vue | 60 + .../pwlProject/components/pwlProjectEdit.vue | 634 + .../pwl/pwlProject/components/search.vue | 231 + src/views/pwl/pwlProject/index.vue | 457 + .../components/pwlProjectLibraryEdit.vue | 265 + .../pwlProjectLibrary/components/search.vue | 42 + src/views/pwl/pwlProjectLibrary/index.vue | 293 + src/views/result/fail/index.vue | 62 + src/views/result/success/index.vue | 34 + .../shop/dashboard/components/search.vue | 100 + .../shop/dashboard/components/websiteEdit.vue | 413 + src/views/shop/dashboard/index.vue | 295 + .../shopAdmin/components/invitation-modal.vue | 293 + .../shop/shopAdmin/components/org-select.vue | 39 + .../shop/shopAdmin/components/search.vue | 42 + .../shop/shopAdmin/components/super-admin.vue | 41 + .../shop/shopAdmin/components/user-edit.vue | 275 + .../shop/shopAdmin/components/user-import.vue | 88 + src/views/shop/shopAdmin/index.vue | 432 + .../shop/shopCoupon/components/search.vue | 42 + .../shopCoupon/components/shopCouponEdit.vue | 930 + src/views/shop/shopCoupon/index.vue | 708 + .../shopDealerApply/components/search.vue | 219 + .../components/shopDealerApplyEdit.vue | 407 + src/views/shop/shopDealerApply/index.vue | 494 + .../shopDealerCapital/components/search.vue | 42 + .../components/shopDealerCapitalEdit.vue | 398 + src/views/shop/shopDealerCapital/index.vue | 291 + .../shopDealerOrder/components/Import.vue | 79 + .../shopDealerOrder/components/search.vue | 196 + .../components/shopDealerOrderEdit.vue | 458 + src/views/shop/shopDealerOrder/index.vue | 486 + src/views/shop/shopDealerPoster/index.vue | 751 + .../shopDealerReferee/components/search.vue | 192 + .../components/shopDealerRefereeEdit.vue | 185 + src/views/shop/shopDealerReferee/index.vue | 490 + .../shopDealerSetting/components/search.vue | 42 + .../components/shopDealerSettingEdit.vue | 744 + src/views/shop/shopDealerSetting/index.vue | 403 + .../shop/shopDealerUser/components/Import.vue | 110 + .../shop/shopDealerUser/components/search.vue | 206 + .../components/shopDealerUserEdit.vue | 516 + src/views/shop/shopDealerUser/index.vue | 394 + .../shopDealerWithdraw/components/search.vue | 42 + .../components/shopDealerWithdrawEdit.vue | 698 + src/views/shop/shopDealerWithdraw/index.vue | 468 + .../shop/shopExpress/components/search.vue | 42 + .../components/shopExpressEdit.vue | 220 + src/views/shop/shopExpress/index.vue | 244 + .../shopExpressTemplate/components/search.vue | 42 + .../components/shopExpressTemplateEdit.vue | 239 + src/views/shop/shopExpressTemplate/index.vue | 274 + .../components/search.vue | 42 + .../shopExpressTemplateDetailEdit.vue | 232 + .../shop/shopExpressTemplateDetail/index.vue | 286 + .../shop/shopGift/components/makeCard.vue | 370 + src/views/shop/shopGift/components/search.vue | 627 + .../shop/shopGift/components/shopGiftEdit.vue | 707 + src/views/shop/shopGift/index.vue | 253 + src/views/shop/shopGoods/components/extra.vue | 39 + .../shop/shopGoods/components/search.vue | 158 + .../shopGoods/components/shopGoodsEdit.vue | 1947 ++ src/views/shop/shopGoods/index.vue | 323 + .../shopGoodsCoupon/components/search.vue | 42 + .../components/shopGoodsCouponEdit.vue | 193 + src/views/shop/shopGoodsCoupon/index.vue | 257 + .../shop/shopGoodsSku/components/search.vue | 42 + .../components/shopGoodsSkuEdit.vue | 273 + src/views/shop/shopGoodsSku/index.vue | 299 + .../shop/shopGoodsSpec/components/search.vue | 42 + .../components/shopGoodsSpecEdit.vue | 201 + src/views/shop/shopGoodsSpec/index.vue | 236 + .../shop/shopMerchant/components/search.vue | 41 + .../components/shopMerchantEdit.vue | 454 + src/views/shop/shopMerchant/index.vue | 244 + .../shopOrder/components/deliveryModal.vue | 311 + .../components/expressSettingModal.vue | 369 + .../shop/shopOrder/components/orderInfo.vue | 1034 + .../shop/shopOrder/components/search.vue | 273 + src/views/shop/shopOrder/index.vue | 675 + .../shop/shopOrderGoods/components/search.vue | 42 + .../components/shopOrderGoodsEdit.vue | 354 + src/views/shop/shopOrderGoods/index.vue | 359 + src/views/shop/shopSpec/components/search.vue | 42 + .../shop/shopSpec/components/shopSpecEdit.vue | 223 + src/views/shop/shopSpec/index.vue | 263 + .../shop/shopSpecValue/components/search.vue | 42 + .../components/shopSpecValueEdit.vue | 192 + src/views/shop/shopSpecValue/index.vue | 239 + .../shop/shopUser/components/org-select.vue | 39 + src/views/shop/shopUser/components/search.vue | 42 + .../shop/shopUser/components/user-edit.vue | 278 + .../shop/shopUser/components/user-import.vue | 88 + src/views/shop/shopUser/index.vue | 608 + .../shop/shopUserCoupon/components/search.vue | 42 + .../components/shopUserCouponEdit.vue | 316 + src/views/shop/shopUserCoupon/index.vue | 334 + .../shopUserReferee/components/search.vue | 42 + .../components/shopUserRefereeEdit.vue | 206 + src/views/shop/shopUserReferee/index.vue | 250 + .../access-key/components/accesskey-edit.vue | 130 + src/views/system/access-key/index.vue | 155 + .../system/admin/components/org-select.vue | 39 + .../system/admin/components/role-select.vue | 71 + src/views/system/admin/components/search.vue | 42 + .../system/admin/components/sex-select.vue | 45 + .../system/admin/components/user-edit.vue | 299 + .../system/admin/components/user-import.vue | 88 + .../system/admin/components/user-info.vue | 143 + .../system/admin/components/user-search.vue | 111 + .../system/admin/components/userEdit.vue | 274 + src/views/system/admin/details/index.vue | 130 + src/views/system/admin/index.vue | 434 + .../system/cache/components/cache-edit.vue | 165 + .../system/cache/components/send-sms.vue | 233 + src/views/system/cache/index.vue | 167 + .../components/chatConversationEdit.vue | 218 + .../chatConversation/components/search.vue | 42 + src/views/system/chatConversation/index.vue | 263 + .../components/chatMessageEdit.vue | 254 + .../system/chatMessage/components/search.vue | 42 + src/views/system/chatMessage/index.vue | 287 + src/views/system/demo/index.vue | 23 + .../system/developer/components/CodeInfo.vue | 68 + .../system/developer/components/ParamInfo.vue | 68 + .../developer/components/ServerInfo.vue | 28 + .../developer/components/TenantInfo.vue | 46 + src/views/system/developer/index.vue | 34 + .../system/dict/components/dict-data-edit.vue | 176 + .../dict/components/dict-data-search.vue | 70 + .../system/dict/components/dict-data.vue | 229 + .../system/dict/components/dict-edit.vue | 160 + src/views/system/dict/index.vue | 195 + src/views/system/dict/list.vue | 215 + .../dictionary/components/dict-data-edit.vue | 181 + .../components/dict-data-search.vue | 70 + .../dictionary/components/dict-data.vue | 207 + .../dictionary/components/dict-edit.vue | 160 + src/views/system/dictionary/index.vue | 203 + src/views/system/dictionary/list.vue | 195 + .../system/domain/components/domainEdit.vue | 193 + src/views/system/domain/components/search.vue | 53 + src/views/system/domain/index.vue | 250 + src/views/system/exception/403/index.vue | 17 + src/views/system/exception/404/index.vue | 70 + src/views/system/exception/500/index.vue | 17 + src/views/system/field/components/edit.vue | 237 + src/views/system/field/components/search.vue | 13 + src/views/system/field/index.vue | 230 + .../system/file/components/file-search.vue | 106 + src/views/system/file/index.vue | 244 + .../system/grade/components/grade-edit.vue | 191 + src/views/system/grade/components/search.vue | 42 + src/views/system/grade/index.vue | 296 + .../components/login-record-search.vue | 115 + src/views/system/login-record/index.vue | 235 + src/views/system/menu/components/Import.vue | 79 + src/views/system/menu/components/clone.vue | 216 + src/views/system/menu/components/delete.vue | 175 + .../system/menu/components/menu-edit.vue | 474 + .../system/menu/components/menu-plug.vue | 168 + .../menu/components/menu-search-original.vue | 106 + .../system/menu/components/menu-search.vue | 174 + src/views/system/menu/index.vue | 392 + .../modules/components/modules-edit.vue | 171 + .../modules/components/modules-search.vue | 106 + src/views/system/modules/index.vue | 160 + .../components/operation-record-detail.vue | 131 + .../components/operation-record-search.vue | 112 + .../components/text-ellipsis.vue | 59 + src/views/system/operation-record/index.vue | 273 + .../system/order/components/order-edit.vue | 175 + .../system/order/components/orderEdit.vue | 453 + src/views/system/order/components/search.vue | 104 + src/views/system/order/index.vue | 193 + .../organization/components/org-edit.vue | 229 + .../organization/components/org-select.vue | 39 + .../components/org-type-select.vue | 39 + .../organization/components/org-user-edit.vue | 509 + .../organization/components/org-user-list.vue | 201 + .../components/org-user-search.vue | 31 + .../organization/components/role-select.vue | 71 + .../organization/components/sex-select.vue | 45 + src/views/system/organization/index.vue | 214 + .../system/payment/components/paymentEdit.vue | 369 + .../system/payment/components/search.vue | 42 + src/views/system/payment/index.vue | 252 + .../system/plug/components/companyEdit.vue | 1012 + .../system/plug/components/menu-edit.vue | 416 + .../system/plug/components/menu-search.vue | 106 + .../system/plug/components/plug-edit.vue | 253 + .../system/plug/components/plug-search.vue | 67 + src/views/system/plug/components/plug.vue | 194 + src/views/system/plug/components/search.vue | 104 + src/views/system/plug/components/tenant.vue | 239 + .../system/plug/create/components/clone.vue | 186 + .../plug/create/components/plug-edit.vue | 261 + .../plug/create/components/plug-search.vue | 98 + src/views/system/plug/create/index.vue | 296 + src/views/system/plug/detail/index.vue | 308 + src/views/system/plug/index.vue | 20 + src/views/system/plug/list/index.vue | 253 + src/views/system/plug/search/index.vue | 285 + src/views/system/profile/components/field.vue | 274 + .../system/profile/components/sex-select.vue | 45 + .../system/profile/components/version.vue | 232 + src/views/system/profile/index.vue | 449 + .../system/role/components/role-auth.vue | 159 + .../system/role/components/role-edit.vue | 169 + .../system/role/components/role-search.vue | 106 + src/views/system/role/index.vue | 209 + src/views/system/setting/components/basic.vue | 316 + src/views/system/setting/components/clear.vue | 137 + .../system/setting/components/developer.vue | 202 + .../system/setting/components/mp-weixin.vue | 217 + .../system/setting/components/payment.vue | 526 + .../system/setting/components/printer.vue | 214 + .../system/setting/components/privacy.vue | 102 + .../system/setting/components/register.vue | 236 + .../system/setting/components/role-select.vue | 64 + src/views/system/setting/components/sms.vue | 246 + .../system/setting/components/upload.vue | 313 + .../system/setting/components/website.vue | 187 + .../system/setting/components/wx-official.vue | 176 + .../system/setting/components/wx-work.vue | 210 + src/views/system/setting/index.vue | 84 + .../user-group/components/category-select.vue | 39 + .../user-group/components/group-edit.vue | 161 + .../system/user-group/components/search.vue | 42 + src/views/system/user-group/index.vue | 267 + src/views/system/user-info/index.vue | 111 + src/views/system/user/components/Extra.vue | 55 + .../system/user/components/org-select.vue | 39 + .../system/user/components/role-select.vue | 71 + src/views/system/user/components/search.vue | 42 + .../system/user/components/sex-select.vue | 45 + .../system/user/components/user-edit.vue | 363 + .../system/user/components/user-import.vue | 88 + .../system/user/components/user-info.vue | 143 + .../system/user/components/user-search.vue | 111 + src/views/system/user/components/userEdit.vue | 274 + src/views/system/user/details/index.vue | 130 + src/views/system/user/index.vue | 681 + .../system/userOauth/components/search.vue | 42 + .../userOauth/components/userOauthEdit.vue | 209 + src/views/system/userOauth/index.vue | 223 + .../system/userVerify/components/search.vue | 67 + .../userVerify/components/userVerifyEdit.vue | 300 + src/views/system/userVerify/index.vue | 273 + .../system/userVerify2/components/search.vue | 67 + .../userVerify2/components/userVerifyEdit.vue | 376 + src/views/system/userVerify2/index.vue | 273 + .../version/components/version-edit.vue | 266 + src/views/system/version/index.vue | 212 + .../system/white-domain/components/search.vue | 42 + .../components/white-domain-edit.vue | 156 + src/views/system/white-domain/index.vue | 203 + .../components/chatConversationEdit.vue | 220 + .../chat-conversation/components/search.vue | 42 + src/views/user/chat-conversation/index.vue | 263 + .../components/chatMessageEdit.vue | 299 + .../user/chat-message/components/search.vue | 69 + src/views/user/chat-message/index.vue | 243 + .../user/profile/components/sex-select.vue | 45 + src/views/user/profile/index.vue | 454 + src/vite-env.d.ts | 1 + tailwind.config.js | 11 + tsconfig.json | 37 + version.json | 3 + vite.config.ts | 229 + yarn.lock | 6512 ++++++ 1146 files changed, 220891 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .env.example create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 README.md create mode 100644 components.d.ts create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 prettier.config.js create mode 100644 public/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg create mode 100644 public/assets/bg-2.jpeg create mode 100644 public/assets/logo.svg create mode 100644 public/favicon.ico create mode 100644 public/json.zip create mode 100644 public/json/china-provinces.geo.json create mode 100644 public/json/industry-data.json create mode 100644 public/json/regions-data.json create mode 100644 public/logo.svg create mode 100644 public/mp-logo.png create mode 100644 public/oa.png create mode 100644 public/tinymce/langs/zh_CN.js create mode 100644 public/tinymce/langs/zh_TW.js create mode 100644 public/tinymce/skins/content/dark/content.css create mode 100644 public/tinymce/skins/content/dark/content.min.css create mode 100644 public/tinymce/skins/content/default/content.css create mode 100644 public/tinymce/skins/content/default/content.min.css create mode 100644 public/tinymce/skins/content/document/content.css create mode 100644 public/tinymce/skins/content/document/content.min.css create mode 100644 public/tinymce/skins/content/writer/content.css create mode 100644 public/tinymce/skins/content/writer/content.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.inline.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.inline.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.mobile.css create mode 100644 public/tinymce/skins/ui/oxide-dark/content.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.mobile.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css create mode 100644 public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css create mode 100644 public/tinymce/skins/ui/oxide/content.css create mode 100644 public/tinymce/skins/ui/oxide/content.inline.css create mode 100644 public/tinymce/skins/ui/oxide/content.inline.min.css create mode 100644 public/tinymce/skins/ui/oxide/content.min.css create mode 100644 public/tinymce/skins/ui/oxide/content.mobile.css create mode 100644 public/tinymce/skins/ui/oxide/content.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff create mode 100644 public/tinymce/skins/ui/oxide/skin.css create mode 100644 public/tinymce/skins/ui/oxide/skin.min.css create mode 100644 public/tinymce/skins/ui/oxide/skin.mobile.css create mode 100644 public/tinymce/skins/ui/oxide/skin.mobile.min.css create mode 100644 public/tinymce/skins/ui/oxide/skin.shadowdom.css create mode 100644 public/tinymce/skins/ui/oxide/skin.shadowdom.min.css create mode 100644 public/ws-logo.svg create mode 100644 public/xieyi/01.html create mode 100644 src/App.vue create mode 100644 src/api/bszx/bszxBm/index.ts create mode 100644 src/api/bszx/bszxBm/model/index.ts create mode 100644 src/api/bszx/bszxBranch/index.ts create mode 100644 src/api/bszx/bszxBranch/model/index.ts create mode 100644 src/api/bszx/bszxClass/index.ts create mode 100644 src/api/bszx/bszxClass/model/index.ts create mode 100644 src/api/bszx/bszxEra/index.ts create mode 100644 src/api/bszx/bszxEra/model/index.ts create mode 100644 src/api/bszx/bszxGrade/index.ts create mode 100644 src/api/bszx/bszxGrade/model/index.ts create mode 100644 src/api/bszx/bszxOrder/index.ts create mode 100644 src/api/bszx/bszxPay/index.ts create mode 100644 src/api/bszx/bszxPay/model/index.ts create mode 100644 src/api/bszx/bszxPayRanking/index.ts create mode 100644 src/api/bszx/bszxPayRanking/model/index.ts create mode 100644 src/api/cms/cmsAd/index.ts create mode 100644 src/api/cms/cmsAd/model/index.ts create mode 100644 src/api/cms/cmsAdRecord/index.ts create mode 100644 src/api/cms/cmsAdRecord/model/index.ts create mode 100644 src/api/cms/cmsArticle/index.ts create mode 100644 src/api/cms/cmsArticle/model/index.ts create mode 100644 src/api/cms/cmsArticleCategory/index.ts create mode 100644 src/api/cms/cmsArticleCategory/model/index.ts create mode 100644 src/api/cms/cmsArticleComment/index.ts create mode 100644 src/api/cms/cmsArticleComment/model/index.ts create mode 100644 src/api/cms/cmsArticleContent/index.ts create mode 100644 src/api/cms/cmsArticleContent/model/index.ts create mode 100644 src/api/cms/cmsArticleCount/index.ts create mode 100644 src/api/cms/cmsArticleCount/model/index.ts create mode 100644 src/api/cms/cmsArticleLike/index.ts create mode 100644 src/api/cms/cmsArticleLike/model/index.ts create mode 100644 src/api/cms/cmsDesign/index.ts create mode 100644 src/api/cms/cmsDesign/model/index.ts create mode 100644 src/api/cms/cmsDomain/index.ts create mode 100644 src/api/cms/cmsDomain/model/index.ts create mode 100644 src/api/cms/cmsForm/index.ts create mode 100644 src/api/cms/cmsForm/model/index.ts create mode 100644 src/api/cms/cmsFormRecord/index.ts create mode 100644 src/api/cms/cmsFormRecord/model/index.ts create mode 100644 src/api/cms/cmsLang/index.ts create mode 100644 src/api/cms/cmsLang/model/index.ts create mode 100644 src/api/cms/cmsLangLog/index.ts create mode 100644 src/api/cms/cmsLangLog/model/index.ts create mode 100644 src/api/cms/cmsLink/index.ts create mode 100644 src/api/cms/cmsLink/model/index.ts create mode 100644 src/api/cms/cmsModel/index.ts create mode 100644 src/api/cms/cmsModel/model/index.ts create mode 100644 src/api/cms/cmsNavigation/index.ts create mode 100644 src/api/cms/cmsNavigation/model/index.ts create mode 100644 src/api/cms/cmsOrder/index.ts create mode 100644 src/api/cms/cmsOrder/model/index.ts create mode 100644 src/api/cms/cmsStatistics/index.ts create mode 100644 src/api/cms/cmsStatistics/model/index.ts create mode 100644 src/api/cms/cmsTemplate/index.ts create mode 100644 src/api/cms/cmsTemplate/model/index.ts create mode 100644 src/api/cms/cmsWebsite/index.ts create mode 100644 src/api/cms/cmsWebsite/model/index.ts create mode 100644 src/api/cms/cmsWebsiteAll/index.ts create mode 100644 src/api/cms/cmsWebsiteAll/model/index.ts create mode 100644 src/api/cms/cmsWebsiteField/index.ts create mode 100644 src/api/cms/cmsWebsiteField/model/index.ts create mode 100644 src/api/cms/cmsWebsiteSetting/index.ts create mode 100644 src/api/cms/cmsWebsiteSetting/model/index.ts create mode 100644 src/api/cms/link/index.ts create mode 100644 src/api/cms/link/model/index.ts create mode 100644 src/api/house/houseInfo/index.ts create mode 100644 src/api/house/houseInfo/model/index.ts create mode 100644 src/api/house/houseLikeLog/index.ts create mode 100644 src/api/house/houseLikeLog/model/index.ts create mode 100644 src/api/house/houseReservation/index.ts create mode 100644 src/api/house/houseReservation/model/index.ts create mode 100644 src/api/house/houseUser/index.ts create mode 100644 src/api/house/houseUser/model/index.ts create mode 100644 src/api/house/houseViewsLog/index.ts create mode 100644 src/api/house/houseViewsLog/model/index.ts create mode 100644 src/api/index.ts create mode 100644 src/api/layout/index.ts create mode 100644 src/api/layout/model/index.ts create mode 100644 src/api/miniprogram/index.ts create mode 100644 src/api/oa/oaApp/index.ts create mode 100644 src/api/oa/oaApp/model/index.ts create mode 100644 src/api/oa/oaAppField/index.ts create mode 100644 src/api/oa/oaAppField/model/index.ts create mode 100644 src/api/oa/oaAppRenew/index.ts create mode 100644 src/api/oa/oaAppRenew/model/index.ts create mode 100644 src/api/oa/oaAppUrl/index.ts create mode 100644 src/api/oa/oaAppUrl/model/index.ts create mode 100644 src/api/oa/oaAppUser/index.ts create mode 100644 src/api/oa/oaAppUser/model/index.ts create mode 100644 src/api/oa/oaAssets/index.ts create mode 100644 src/api/oa/oaAssets/model/index.ts create mode 100644 src/api/oa/oaAssetsCode/index.ts create mode 100644 src/api/oa/oaAssetsCode/model/index.ts create mode 100644 src/api/oa/oaAssetsDomain/index.ts create mode 100644 src/api/oa/oaAssetsDomain/model/index.ts create mode 100644 src/api/oa/oaAssetsEmail/index.ts create mode 100644 src/api/oa/oaAssetsEmail/model/index.ts create mode 100644 src/api/oa/oaAssetsMysql/index.ts create mode 100644 src/api/oa/oaAssetsMysql/model/index.ts create mode 100644 src/api/oa/oaAssetsServer/index.ts create mode 100644 src/api/oa/oaAssetsServer/model/index.ts create mode 100644 src/api/oa/oaAssetsSite/index.ts create mode 100644 src/api/oa/oaAssetsSite/model/index.ts create mode 100644 src/api/oa/oaAssetsSoftwareCert/index.ts create mode 100644 src/api/oa/oaAssetsSoftwareCert/model/index.ts create mode 100644 src/api/oa/oaAssetsSsl/index.ts create mode 100644 src/api/oa/oaAssetsSsl/model/index.ts create mode 100644 src/api/oa/oaAssetsTrademark/index.ts create mode 100644 src/api/oa/oaAssetsTrademark/model/index.ts create mode 100644 src/api/oa/oaAssetsUser/index.ts create mode 100644 src/api/oa/oaAssetsUser/model/index.ts create mode 100644 src/api/oa/oaAssetsVhost/index.ts create mode 100644 src/api/oa/oaAssetsVhost/model/index.ts create mode 100644 src/api/oa/oaCompany/index.ts create mode 100644 src/api/oa/oaCompany/model/index.ts create mode 100644 src/api/oa/oaCompanyField/index.ts create mode 100644 src/api/oa/oaCompanyField/model/index.ts create mode 100644 src/api/oa/oaCompanyUser/index.ts create mode 100644 src/api/oa/oaCompanyUser/model/index.ts create mode 100644 src/api/oa/oaLink/index.ts create mode 100644 src/api/oa/oaLink/model/index.ts create mode 100644 src/api/oa/oaTask/index.ts create mode 100644 src/api/oa/oaTask/model/index.ts create mode 100644 src/api/oa/oaTaskCount/index.ts create mode 100644 src/api/oa/oaTaskCount/model/index.ts create mode 100644 src/api/oa/oaTaskRecord/index.ts create mode 100644 src/api/oa/oaTaskRecord/model/index.ts create mode 100644 src/api/oa/oaTaskUser/index.ts create mode 100644 src/api/oa/oaTaskUser/model/index.ts create mode 100644 src/api/passport/login/index.ts create mode 100644 src/api/passport/login/model/index.ts create mode 100644 src/api/passport/qrLogin/index.ts create mode 100644 src/api/project/project/index.ts create mode 100644 src/api/project/project/model/index.ts create mode 100644 src/api/project/projectCollection/index.ts create mode 100644 src/api/project/projectCollection/model/index.ts create mode 100644 src/api/project/projectField/index.ts create mode 100644 src/api/project/projectField/model/index.ts create mode 100644 src/api/project/projectRenew/index.ts create mode 100644 src/api/project/projectRenew/model/index.ts create mode 100644 src/api/project/projectUrl/index.ts create mode 100644 src/api/project/projectUrl/model/index.ts create mode 100644 src/api/project/projectUser/index.ts create mode 100644 src/api/project/projectUser/model/index.ts create mode 100644 src/api/pwl/pwlProject/index.ts create mode 100644 src/api/pwl/pwlProject/model/index.ts create mode 100644 src/api/pwl/pwlProjectLibrary/index.ts create mode 100644 src/api/pwl/pwlProjectLibrary/model/index.ts create mode 100644 src/api/shop/shopCommissionRole/index.ts create mode 100644 src/api/shop/shopCommissionRole/model/index.ts create mode 100644 src/api/shop/shopCoupon/index.ts create mode 100644 src/api/shop/shopCoupon/model/index.ts create mode 100644 src/api/shop/shopCouponApplyCate/model/index.ts create mode 100644 src/api/shop/shopCouponApplyItem/model/index.ts create mode 100644 src/api/shop/shopDealerApply/index.ts create mode 100644 src/api/shop/shopDealerApply/model/index.ts create mode 100644 src/api/shop/shopDealerCapital/index.ts create mode 100644 src/api/shop/shopDealerCapital/model/index.ts create mode 100644 src/api/shop/shopDealerOrder/index.ts create mode 100644 src/api/shop/shopDealerOrder/model/index.ts create mode 100644 src/api/shop/shopDealerPoster/index.ts create mode 100644 src/api/shop/shopDealerPoster/model/index.ts create mode 100644 src/api/shop/shopDealerRecord/index.ts create mode 100644 src/api/shop/shopDealerRecord/model/index.ts create mode 100644 src/api/shop/shopDealerReferee/index.ts create mode 100644 src/api/shop/shopDealerReferee/model/index.ts create mode 100644 src/api/shop/shopDealerSetting/index.ts create mode 100644 src/api/shop/shopDealerSetting/model/index.ts create mode 100644 src/api/shop/shopDealerUser/index.ts create mode 100644 src/api/shop/shopDealerUser/model/index.ts create mode 100644 src/api/shop/shopDealerWithdraw/index.ts create mode 100644 src/api/shop/shopDealerWithdraw/model/index.ts create mode 100644 src/api/shop/shopExpress/index.ts create mode 100644 src/api/shop/shopExpress/model/index.ts create mode 100644 src/api/shop/shopExpressTemplate/index.ts create mode 100644 src/api/shop/shopExpressTemplate/model/index.ts create mode 100644 src/api/shop/shopExpressTemplateDetail/index.ts create mode 100644 src/api/shop/shopExpressTemplateDetail/model/index.ts create mode 100644 src/api/shop/shopGift/index.ts create mode 100644 src/api/shop/shopGift/model/index.ts create mode 100644 src/api/shop/shopGoods/index.ts create mode 100644 src/api/shop/shopGoods/model/index.ts create mode 100644 src/api/shop/shopGoodsCategory/index.ts create mode 100644 src/api/shop/shopGoodsCategory/model/index.ts create mode 100644 src/api/shop/shopGoodsCoupon/index.ts create mode 100644 src/api/shop/shopGoodsCoupon/model/index.ts create mode 100644 src/api/shop/shopGoodsRoleCommission/index.ts create mode 100644 src/api/shop/shopGoodsRoleCommission/model/index.ts create mode 100644 src/api/shop/shopGoodsSku/index.ts create mode 100644 src/api/shop/shopGoodsSku/model/index.ts create mode 100644 src/api/shop/shopGoodsSpec/index.ts create mode 100644 src/api/shop/shopGoodsSpec/model/index.ts create mode 100644 src/api/shop/shopMerchant/index.ts create mode 100644 src/api/shop/shopMerchant/model/index.ts create mode 100644 src/api/shop/shopMerchantAccount/index.ts create mode 100644 src/api/shop/shopMerchantAccount/model/index.ts create mode 100644 src/api/shop/shopMerchantApply/index.ts create mode 100644 src/api/shop/shopMerchantApply/model/index.ts create mode 100644 src/api/shop/shopMerchantCount/index.ts create mode 100644 src/api/shop/shopMerchantCount/model/index.ts create mode 100644 src/api/shop/shopMerchantType/index.ts create mode 100644 src/api/shop/shopMerchantType/model/index.ts create mode 100644 src/api/shop/shopOrder/index.ts create mode 100644 src/api/shop/shopOrder/model/index.ts create mode 100644 src/api/shop/shopOrderGoods/index.ts create mode 100644 src/api/shop/shopOrderGoods/model/index.ts create mode 100644 src/api/shop/shopSpec/index.ts create mode 100644 src/api/shop/shopSpec/model/index.ts create mode 100644 src/api/shop/shopSpecValue/index.ts create mode 100644 src/api/shop/shopSpecValue/model/index.ts create mode 100644 src/api/shop/shopUser/index.ts create mode 100644 src/api/shop/shopUser/model/index.ts create mode 100644 src/api/shop/shopUserAddress/index.ts create mode 100644 src/api/shop/shopUserAddress/model/index.ts create mode 100644 src/api/shop/shopUserCoupon/index.ts create mode 100644 src/api/shop/shopUserCoupon/model/index.ts create mode 100644 src/api/shop/shopUserReferee/index.ts create mode 100644 src/api/shop/shopUserReferee/model/index.ts create mode 100644 src/api/shop/spec/index.ts create mode 100644 src/api/shop/spec/model/index.ts create mode 100644 src/api/shop/specValue/index.ts create mode 100644 src/api/shop/specValue/model/index.ts create mode 100644 src/api/system/access-key/index.ts create mode 100644 src/api/system/access-key/model/index.ts create mode 100644 src/api/system/appstore/index.ts create mode 100644 src/api/system/appstore/model/index.ts create mode 100644 src/api/system/cache/index.ts create mode 100644 src/api/system/cache/model/index.ts create mode 100644 src/api/system/chat/index.ts create mode 100644 src/api/system/chat/model/index.ts create mode 100644 src/api/system/chatConversation/index.ts create mode 100644 src/api/system/chatConversation/model/index.ts create mode 100644 src/api/system/chatMessage/index.ts create mode 100644 src/api/system/chatMessage/model/index.ts create mode 100644 src/api/system/comment/index.ts create mode 100644 src/api/system/comment/model/index.ts create mode 100644 src/api/system/company/index.ts create mode 100644 src/api/system/company/model/index.ts create mode 100644 src/api/system/companyComment/index.ts create mode 100644 src/api/system/companyComment/model/index.ts create mode 100644 src/api/system/companyContent/index.ts create mode 100644 src/api/system/companyContent/model/index.ts create mode 100644 src/api/system/companyGit/index.ts create mode 100644 src/api/system/companyGit/model/index.ts create mode 100644 src/api/system/companyParameter/index.ts create mode 100644 src/api/system/companyParameter/model/index.ts create mode 100644 src/api/system/companyUrl/index.ts create mode 100644 src/api/system/companyUrl/model/index.ts create mode 100644 src/api/system/dict-data/index.ts create mode 100644 src/api/system/dict-data/model/index.ts create mode 100644 src/api/system/dict/index.ts create mode 100644 src/api/system/dict/model/index.ts create mode 100644 src/api/system/dictionary-data/index.ts create mode 100644 src/api/system/dictionary-data/model/index.ts create mode 100644 src/api/system/dictionary/index.ts create mode 100644 src/api/system/dictionary/model/index.ts create mode 100644 src/api/system/domain/index.ts create mode 100644 src/api/system/domain/model/index.ts create mode 100644 src/api/system/environment/index.ts create mode 100644 src/api/system/environment/model/index.ts create mode 100644 src/api/system/file/index.ts create mode 100644 src/api/system/file/model/index.ts create mode 100644 src/api/system/login-record/index.ts create mode 100644 src/api/system/login-record/model/index.ts create mode 100644 src/api/system/menu/index.ts create mode 100644 src/api/system/menu/model/index.ts create mode 100644 src/api/system/modules/index.ts create mode 100644 src/api/system/modules/model/index.ts create mode 100644 src/api/system/operation-record/index.ts create mode 100644 src/api/system/operation-record/model/index.ts create mode 100644 src/api/system/order/index.ts create mode 100644 src/api/system/order/model/index.ts create mode 100644 src/api/system/orderGoods/index.ts create mode 100644 src/api/system/orderGoods/model/index.ts create mode 100644 src/api/system/organization/index.ts create mode 100644 src/api/system/organization/model/index.ts create mode 100644 src/api/system/parameter/index.ts create mode 100644 src/api/system/parameter/model/index.ts create mode 100644 src/api/system/payment/index.ts create mode 100644 src/api/system/payment/model/index.ts create mode 100644 src/api/system/plug/index.ts create mode 100644 src/api/system/plug/model/index.ts create mode 100644 src/api/system/role/index.ts create mode 100644 src/api/system/role/model/index.ts create mode 100644 src/api/system/setting/index.ts create mode 100644 src/api/system/setting/model/index.ts create mode 100644 src/api/system/tenant/index.ts create mode 100644 src/api/system/tenant/model/index.ts create mode 100644 src/api/system/url/index.ts create mode 100644 src/api/system/url/model/index.ts create mode 100644 src/api/system/user-collection/index.ts create mode 100644 src/api/system/user-collection/model/index.ts create mode 100644 src/api/system/user-file/index.ts create mode 100644 src/api/system/user-file/model/index.ts create mode 100644 src/api/system/user-grade/index.ts create mode 100644 src/api/system/user-grade/model/index.ts create mode 100644 src/api/system/user-group/index.ts create mode 100644 src/api/system/user-group/model/index.ts create mode 100644 src/api/system/user/index.ts create mode 100644 src/api/system/user/model/count.ts create mode 100644 src/api/system/user/model/index.ts create mode 100644 src/api/system/userOauth/index.ts create mode 100644 src/api/system/userOauth/model/index.ts create mode 100644 src/api/system/userRole/index.ts create mode 100644 src/api/system/userRole/model/index.ts create mode 100644 src/api/system/userVerify/index.ts create mode 100644 src/api/system/userVerify/model/index.ts create mode 100644 src/api/system/version/index.ts create mode 100644 src/api/system/version/model/index.ts create mode 100644 src/api/system/website/field/index.ts create mode 100644 src/api/system/website/field/model/index.ts create mode 100644 src/api/system/website/index.ts create mode 100644 src/api/system/website/model/index.ts create mode 100644 src/api/system/white-domain/index.ts create mode 100644 src/api/system/white-domain/model/index.ts create mode 100644 src/api/user/balance-log/index.ts create mode 100644 src/api/user/balance-log/model/index.ts create mode 100644 src/api/user/feedback/index.ts create mode 100644 src/api/user/feedback/model/index.ts create mode 100644 src/api/user/grade/index.ts create mode 100644 src/api/user/grade/model/index.ts create mode 100644 src/api/user/index.ts create mode 100644 src/api/user/model/index.ts create mode 100644 src/api/user/recharge/export/index.ts create mode 100644 src/api/user/recharge/export/model/index.ts create mode 100644 src/api/user/recharge/order/index.ts create mode 100644 src/api/user/recharge/order/model/index.ts create mode 100644 src/api/user/referee/index.ts create mode 100644 src/api/user/referee/model/index.ts create mode 100644 src/api/user/userCoupon/index.ts create mode 100644 src/api/user/userCoupon/model/index.ts create mode 100644 src/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg create mode 100644 src/assets/bg-2.jpeg create mode 100644 src/assets/bg-login.jpg create mode 100644 src/assets/icon/app1.png create mode 100644 src/assets/icon/book.png create mode 100644 src/assets/icon/forum.png create mode 100644 src/assets/icon/gitea.png create mode 100644 src/assets/icon/openai-avatar.jpeg create mode 100644 src/assets/icon/other.png create mode 100644 src/assets/icon/pc.png create mode 100644 src/assets/icon/question.png create mode 100644 src/assets/icon/weixin.png create mode 100644 src/assets/img/app-ui.png create mode 100755 src/assets/img/circular.png create mode 100755 src/assets/img/default-avatar.png create mode 100755 src/assets/img/phone-top-black.png create mode 100755 src/assets/img/phone-top-white.png create mode 100644 src/assets/img/phone-ui.png create mode 100644 src/assets/logo.svg create mode 100644 src/assets/oa-logo.svg create mode 100644 src/components/ByteMdEditor/index.vue create mode 100644 src/components/ByteMdViewer/index.vue create mode 100644 src/components/ChooseDictionary/index.vue create mode 100644 src/components/DesignBanner/index.vue create mode 100644 src/components/DesignHeader/index.vue create mode 100644 src/components/DictRadio/index.vue create mode 100644 src/components/DictSelect/index.vue create mode 100644 src/components/DictSelectMultiple/index.vue create mode 100644 src/components/FormSelect/index.vue create mode 100644 src/components/IndustrySelect/index.vue create mode 100644 src/components/IndustrySelect/load-data.ts create mode 100644 src/components/IndustrySelect/types/index.ts create mode 100644 src/components/MpQrCode/index.vue create mode 100644 src/components/PayMethod/index.vue create mode 100644 src/components/QrCode/index.vue create mode 100644 src/components/QrLogin/demo.vue create mode 100644 src/components/QrLogin/index.vue create mode 100644 src/components/QuestionIcon/index.vue create mode 100644 src/components/RadioGroup/index.vue create mode 100644 src/components/RedirectLayout/index.ts create mode 100644 src/components/RegionsSelect/index.vue create mode 100644 src/components/RegionsSelect/load-data.ts create mode 100644 src/components/RegionsSelect/types/index.ts create mode 100644 src/components/RouterLayout/index.vue create mode 100644 src/components/SelectArticle/components/select-data.vue create mode 100644 src/components/SelectArticle/index.vue create mode 100644 src/components/SelectArticleCategory/components/select-data.vue create mode 100644 src/components/SelectArticleCategory/index.vue create mode 100644 src/components/SelectDesign/components/select-data.vue create mode 100644 src/components/SelectDesign/index.vue create mode 100644 src/components/SelectDict/components/select-data.vue create mode 100644 src/components/SelectDict/index.vue create mode 100644 src/components/SelectDictDictionary/components/select-data.vue create mode 100644 src/components/SelectDictDictionary/index.vue create mode 100644 src/components/SelectFence/components/select-data.vue create mode 100644 src/components/SelectFence/index.vue create mode 100644 src/components/SelectFile/components/file-record-edit.vue create mode 100644 src/components/SelectFile/components/select-data.vue create mode 100644 src/components/SelectFile/index.vue create mode 100644 src/components/SelectForm/components/select-data.vue create mode 100644 src/components/SelectForm/index.vue create mode 100644 src/components/SelectGoodsCategory/index.vue create mode 100644 src/components/SelectGoodsCategory/load-data.ts create mode 100644 src/components/SelectGoodsCategory/types/index.ts create mode 100644 src/components/SelectGrade/components/select-data.vue create mode 100644 src/components/SelectGrade/index.vue create mode 100644 src/components/SelectGroup/components/select-data.vue create mode 100644 src/components/SelectGroup/index.vue create mode 100644 src/components/SelectMerchant/components/select-data.vue create mode 100644 src/components/SelectMerchant/index.vue create mode 100644 src/components/SelectModel/components/select-data.vue create mode 100644 src/components/SelectModel/index.vue create mode 100644 src/components/SelectModules/components/select-data.vue create mode 100644 src/components/SelectModules/index.vue create mode 100644 src/components/SelectMpPages/components/select-data.vue create mode 100644 src/components/SelectMpPages/index.vue create mode 100644 src/components/SelectNavigsation/components/select-data.vue create mode 100644 src/components/SelectNavigsation/index.vue create mode 100644 src/components/SelectOrganization/components/select-data.vue create mode 100644 src/components/SelectOrganization/components/select-organization.vue create mode 100644 src/components/SelectOrganization/index.vue create mode 100644 src/components/SelectRole/components/select-data.vue create mode 100644 src/components/SelectRole/index.vue create mode 100644 src/components/SelectSpec/components/select-data.vue create mode 100644 src/components/SelectSpec/index.vue create mode 100644 src/components/SelectSpecValue/index.vue create mode 100644 src/components/SelectStaff/components/select-data.vue create mode 100644 src/components/SelectStaff/components/select-user.vue create mode 100644 src/components/SelectStaff/index.vue create mode 100644 src/components/SelectStudent/components/select-data.vue create mode 100644 src/components/SelectStudent/index.vue create mode 100644 src/components/SelectUser/components/select-data.vue create mode 100644 src/components/SelectUser/components/select-user.vue create mode 100644 src/components/SelectUser/index.vue create mode 100644 src/components/SelectUserByButton/components/select-data.vue create mode 100644 src/components/SelectUserByButton/index.vue create mode 100644 src/components/SelectWebsiteField/components/select-data.vue create mode 100644 src/components/SelectWebsiteField/index.vue create mode 100644 src/components/Simulator/index.vue create mode 100644 src/components/Tag/index.vue create mode 100644 src/components/TinymceEditor/index.vue create mode 100644 src/components/TinymceEditor/util.ts create mode 100644 src/components/UploadCert/index.vue create mode 100644 src/components/UploadFile/index.vue create mode 100644 src/components/User/index.vue create mode 100644 src/components/UserChoose/choose-search.vue create mode 100644 src/components/UserChoose/index.vue create mode 100644 src/components/UserChoose/types/index.ts create mode 100644 src/components/UserSelect/index.vue create mode 100644 src/components/UserSelect/types/index.ts create mode 100644 src/components/UserSelect/user-search.vue create mode 100644 src/composables/useSiteData.ts create mode 100644 src/config/menu.ts create mode 100644 src/config/performance.ts create mode 100644 src/config/setting.ts create mode 100644 src/i18n/index.ts create mode 100644 src/i18n/lang/en/index.ts create mode 100644 src/i18n/lang/en/layout.ts create mode 100644 src/i18n/lang/en/list.ts create mode 100644 src/i18n/lang/en/login.ts create mode 100644 src/i18n/lang/en/route.ts create mode 100644 src/i18n/lang/zh_CN/index.ts create mode 100644 src/i18n/lang/zh_CN/layout.ts create mode 100644 src/i18n/lang/zh_CN/list.ts create mode 100644 src/i18n/lang/zh_CN/login.ts create mode 100644 src/i18n/lang/zh_CN/route.ts create mode 100644 src/i18n/use-locale.ts create mode 100644 src/layout/components/header-notice.vue create mode 100644 src/layout/components/header-tools.vue create mode 100644 src/layout/components/header-wechat.vue create mode 100644 src/layout/components/i18n-icon.vue create mode 100644 src/layout/components/menu-title.vue create mode 100644 src/layout/components/page-footer.vue create mode 100644 src/layout/components/password-modal.vue create mode 100644 src/layout/components/setting-drawer.vue create mode 100644 src/layout/index.vue create mode 100644 src/layout/menu-icons.ts create mode 100644 src/lib/port-manager.ts create mode 100644 src/lib/port-strategy.ts create mode 100644 src/lib/tenant-port-manager.ts create mode 100644 src/main.ts create mode 100644 src/router/index.ts create mode 100644 src/router/performance.ts create mode 100644 src/router/routes.ts create mode 100644 src/shims-vue.d.ts create mode 100644 src/store/index.ts create mode 100644 src/store/modules/bszx-statistics.ts create mode 100644 src/store/modules/chat.ts create mode 100644 src/store/modules/params.ts create mode 100644 src/store/modules/setting.ts create mode 100644 src/store/modules/site.ts create mode 100644 src/store/modules/statistics.ts create mode 100644 src/store/modules/template.ts create mode 100644 src/store/modules/tenant.ts create mode 100644 src/store/modules/theme.ts create mode 100644 src/store/modules/user.ts create mode 100644 src/styles/as-needed.less create mode 100644 src/styles/component.less create mode 100644 src/styles/global-import.less create mode 100644 src/styles/index.less create mode 100644 src/styles/transition/fade.less create mode 100644 src/styles/transition/index.less create mode 100644 src/styles/transition/slide.less create mode 100644 src/styles/transition/zoom.less create mode 100644 src/utils/cache-manager.ts create mode 100644 src/utils/common.ts create mode 100644 src/utils/component-optimization.ts create mode 100644 src/utils/document-title-util.ts create mode 100644 src/utils/domain.ts create mode 100644 src/utils/editor.ts create mode 100644 src/utils/enhanced-request.ts create mode 100644 src/utils/lazy-load.ts create mode 100644 src/utils/merchant.ts create mode 100644 src/utils/on-size-change.ts create mode 100644 src/utils/oss.js create mode 100644 src/utils/page-tab-util.ts create mode 100644 src/utils/performance.ts create mode 100644 src/utils/permission.ts create mode 100644 src/utils/plug-uitl.ts create mode 100644 src/utils/port-config-manager.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/shop.ts create mode 100644 src/utils/token-util.ts create mode 100644 src/utils/type-guards.ts create mode 100644 src/utils/use-echarts.ts create mode 100644 src/utils/use-form-data.ts create mode 100644 src/utils/use-search.ts create mode 100644 src/views/bszx/extra.vue create mode 100644 src/views/cms/clear-cache/index.vue create mode 100644 src/views/cms/cmsAd/components/cmsAdEdit.vue create mode 100644 src/views/cms/cmsAd/components/search.vue create mode 100644 src/views/cms/cmsAd/index.vue create mode 100644 src/views/cms/cmsAdRecord/components/cmsAdRecordEdit.vue create mode 100644 src/views/cms/cmsAdRecord/components/search.vue create mode 100644 src/views/cms/cmsAdRecord/index.vue create mode 100644 src/views/cms/cmsArticle/components/Import.vue create mode 100644 src/views/cms/cmsArticle/components/articleEdit.vue create mode 100644 src/views/cms/cmsArticle/components/articleUpdate.vue create mode 100644 src/views/cms/cmsArticle/components/search.vue create mode 100644 src/views/cms/cmsArticle/dictionary/source-select.vue create mode 100644 src/views/cms/cmsArticle/index.vue create mode 100644 src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue create mode 100644 src/views/cms/cmsArticleCategory/components/search.vue create mode 100644 src/views/cms/cmsArticleCategory/index.vue create mode 100644 src/views/cms/cmsArticleComment/components/cmsArticleCommentEdit.vue create mode 100644 src/views/cms/cmsArticleComment/components/search.vue create mode 100644 src/views/cms/cmsArticleComment/index.vue create mode 100644 src/views/cms/cmsArticleContent/components/cmsArticleContentEdit.vue create mode 100644 src/views/cms/cmsArticleContent/components/search.vue create mode 100644 src/views/cms/cmsArticleContent/index.vue create mode 100644 src/views/cms/cmsArticleCount/components/cmsArticleCountEdit.vue create mode 100644 src/views/cms/cmsArticleCount/components/search.vue create mode 100644 src/views/cms/cmsArticleCount/index.vue create mode 100644 src/views/cms/cmsArticleLike/components/cmsArticleLikeEdit.vue create mode 100644 src/views/cms/cmsArticleLike/components/search.vue create mode 100644 src/views/cms/cmsArticleLike/index.vue create mode 100644 src/views/cms/cmsDesign/components/cmsDesignEdit.vue create mode 100644 src/views/cms/cmsDesign/components/search.vue create mode 100644 src/views/cms/cmsDesign/index.vue create mode 100644 src/views/cms/cmsDomain/components/cmsDomainEdit.vue create mode 100644 src/views/cms/cmsDomain/components/search.vue create mode 100644 src/views/cms/cmsDomain/index.vue create mode 100644 src/views/cms/cmsForm/components/cmsFormEdit.vue create mode 100644 src/views/cms/cmsForm/components/search.vue create mode 100644 src/views/cms/cmsForm/index.vue create mode 100644 src/views/cms/cmsFormRecord/components/cmsFormRecordEdit.vue create mode 100644 src/views/cms/cmsFormRecord/components/search.vue create mode 100644 src/views/cms/cmsFormRecord/index.vue create mode 100644 src/views/cms/cmsLang/components/cmsLangEdit.vue create mode 100644 src/views/cms/cmsLang/components/search.vue create mode 100644 src/views/cms/cmsLang/index.vue create mode 100644 src/views/cms/cmsLangLog/components/cmsLangLogEdit.vue create mode 100644 src/views/cms/cmsLangLog/components/search.vue create mode 100644 src/views/cms/cmsLangLog/index.vue create mode 100644 src/views/cms/cmsLink/components/cmsLinkEdit.vue create mode 100644 src/views/cms/cmsLink/components/linkUpdate.vue create mode 100644 src/views/cms/cmsLink/components/search.vue create mode 100644 src/views/cms/cmsLink/index.vue create mode 100644 src/views/cms/cmsModel/components/cmsModelEdit.vue create mode 100644 src/views/cms/cmsModel/components/search.vue create mode 100644 src/views/cms/cmsModel/index.vue create mode 100644 src/views/cms/cmsNavigation/components/components/designRecordEdit.vue create mode 100644 src/views/cms/cmsNavigation/components/components/search.vue create mode 100644 src/views/cms/cmsNavigation/components/design-edit.vue create mode 100644 src/views/cms/cmsNavigation/components/extra.vue create mode 100644 src/views/cms/cmsNavigation/components/navigation-edit.vue create mode 100644 src/views/cms/cmsNavigation/components/search.vue create mode 100644 src/views/cms/cmsNavigation/index.vue create mode 100644 src/views/cms/cmsOrder/components/orderInfo.vue create mode 100644 src/views/cms/cmsOrder/components/search.vue create mode 100644 src/views/cms/cmsOrder/index.vue create mode 100644 src/views/cms/cmsSetting/index.vue create mode 100644 src/views/cms/cmsStatistics/components/cmsStatisticsEdit.vue create mode 100644 src/views/cms/cmsStatistics/components/search.vue create mode 100644 src/views/cms/cmsStatistics/index.vue create mode 100644 src/views/cms/cmsTemplate/components/cmsTemplateEdit.vue create mode 100644 src/views/cms/cmsTemplate/components/search.vue create mode 100644 src/views/cms/cmsTemplate/index.vue create mode 100644 src/views/cms/cmsWebsite-10257/components/Extra.vue create mode 100644 src/views/cms/cmsWebsite-10257/components/search.vue create mode 100644 src/views/cms/cmsWebsite-10257/components/websiteEdit.vue create mode 100644 src/views/cms/cmsWebsite-10257/index.vue create mode 100644 src/views/cms/cmsWebsite-10258/index.vue create mode 100644 src/views/cms/cmsWebsite-10409/index.vue create mode 100644 src/views/cms/cmsWebsite-10411/index.vue create mode 100644 src/views/cms/cmsWebsite-all/index.vue create mode 100644 src/views/cms/cmsWebsite-official/index.vue create mode 100644 src/views/cms/cmsWebsite/components/search.vue create mode 100644 src/views/cms/cmsWebsite/components/websiteEdit.vue create mode 100644 src/views/cms/cmsWebsite/index.vue create mode 100644 src/views/cms/cmsWebsiteField/components/Import.vue create mode 100644 src/views/cms/cmsWebsiteField/components/cmsWebsiteFieldEdit.vue create mode 100644 src/views/cms/cmsWebsiteField/components/edit.vue create mode 100644 src/views/cms/cmsWebsiteField/components/search.vue create mode 100644 src/views/cms/cmsWebsiteField/index.vue create mode 100644 src/views/cms/cmsWebsiteSetting/components/cmsWebsiteSettingEdit.vue create mode 100644 src/views/cms/cmsWebsiteSetting/components/search.vue create mode 100644 src/views/cms/cmsWebsiteSetting/index.vue create mode 100644 src/views/cms/dashboard/components/search.vue create mode 100644 src/views/cms/dashboard/components/websiteEdit.vue create mode 100644 src/views/cms/dashboard/index.vue create mode 100644 src/views/cms/dict/components/dict-edit.vue create mode 100644 src/views/cms/dict/index.vue create mode 100644 src/views/cms/file/components/video-edit.vue create mode 100644 src/views/cms/file/index.vue create mode 100644 src/views/cms/file/player/index.vue create mode 100644 src/views/cms/help/components/articleEdit.vue create mode 100644 src/views/cms/help/components/search.vue create mode 100644 src/views/cms/help/index.vue create mode 100644 src/views/cms/photo/components/Extra.vue create mode 100644 src/views/cms/photo/components/photo-edit.vue create mode 100644 src/views/cms/photo/dict/components/dict-edit.vue create mode 100644 src/views/cms/photo/dict/index.vue create mode 100644 src/views/cms/photo/image.vue create mode 100644 src/views/cms/photo/index.vue create mode 100644 src/views/cms/photo/list.vue create mode 100644 src/views/cms/photo/player/index.vue create mode 100644 src/views/cms/setting/components/field.vue create mode 100644 src/views/cms/setting/components/website-field-edit.vue create mode 100644 src/views/cms/setting/components/website-field-search.vue create mode 100644 src/views/cms/setting/components/website-field.vue create mode 100644 src/views/cms/setting/index.vue create mode 100644 src/views/cms/video/components/video-edit.vue create mode 100644 src/views/cms/video/index.vue create mode 100644 src/views/cms/video/player/index.vue create mode 100644 src/views/house/houseInfo/components/houseInfoEdit.vue create mode 100644 src/views/house/houseInfo/components/search.vue create mode 100644 src/views/house/houseInfo/index.vue create mode 100644 src/views/house/houseLikeLog/components/houseLikeLogEdit.vue create mode 100644 src/views/house/houseLikeLog/components/search.vue create mode 100644 src/views/house/houseLikeLog/index.vue create mode 100644 src/views/house/houseReservation/components/houseReservationEdit.vue create mode 100644 src/views/house/houseReservation/components/search.vue create mode 100644 src/views/house/houseReservation/index.vue create mode 100644 src/views/house/houseUser/components/org-select.vue create mode 100644 src/views/house/houseUser/components/role-select.vue create mode 100644 src/views/house/houseUser/components/search.vue create mode 100644 src/views/house/houseUser/components/sex-select.vue create mode 100644 src/views/house/houseUser/components/user-edit.vue create mode 100644 src/views/house/houseUser/components/user-import.vue create mode 100644 src/views/house/houseUser/components/user-info.vue create mode 100644 src/views/house/houseUser/components/user-search.vue create mode 100644 src/views/house/houseUser/components/userEdit.vue create mode 100644 src/views/house/houseUser/details/index.vue create mode 100644 src/views/house/houseUser/index.vue create mode 100644 src/views/house/houseViewsLog/components/houseViewsLogEdit.vue create mode 100644 src/views/house/houseViewsLog/components/search.vue create mode 100644 src/views/house/houseViewsLog/index.vue create mode 100644 src/views/house/info/components/info-edit.vue create mode 100644 src/views/house/info/components/search.vue create mode 100644 src/views/house/info/index.vue create mode 100644 src/views/house/maimai/components/info-edit.vue create mode 100644 src/views/house/maimai/components/search.vue create mode 100644 src/views/house/maimai/index.vue create mode 100644 src/views/house/reservation/components/reservation-edit.vue create mode 100644 src/views/house/reservation/components/search.vue create mode 100644 src/views/house/reservation/index.vue create mode 100644 src/views/oa/index.vue create mode 100644 src/views/oa/oaApp/components/oaAppEdit.vue create mode 100644 src/views/oa/oaApp/components/search.vue create mode 100644 src/views/oa/oaApp/index.vue create mode 100644 src/views/oa/oaAppField/components/oaAppFieldEdit.vue create mode 100644 src/views/oa/oaAppField/components/search.vue create mode 100644 src/views/oa/oaAppField/index.vue create mode 100644 src/views/oa/oaAppRenew/components/oaAppRenewEdit.vue create mode 100644 src/views/oa/oaAppRenew/components/search.vue create mode 100644 src/views/oa/oaAppRenew/index.vue create mode 100644 src/views/oa/oaAppUrl/components/oaAppUrlEdit.vue create mode 100644 src/views/oa/oaAppUrl/components/search.vue create mode 100644 src/views/oa/oaAppUrl/index.vue create mode 100644 src/views/oa/oaAppUser/components/oaAppUserEdit.vue create mode 100644 src/views/oa/oaAppUser/components/search.vue create mode 100644 src/views/oa/oaAppUser/index.vue create mode 100644 src/views/oa/oaAssets/components/extra.vue create mode 100644 src/views/oa/oaAssets/components/oaAssetsEdit.vue create mode 100644 src/views/oa/oaAssets/components/search.vue create mode 100644 src/views/oa/oaAssets/index.vue create mode 100644 src/views/oa/oaAssetsCode/components/oaAssetsCodeEdit.vue create mode 100644 src/views/oa/oaAssetsCode/components/search.vue create mode 100644 src/views/oa/oaAssetsCode/index.vue create mode 100644 src/views/oa/oaAssetsDomain/components/oaAssetsDomainEdit.vue create mode 100644 src/views/oa/oaAssetsDomain/components/search.vue create mode 100644 src/views/oa/oaAssetsDomain/index.vue create mode 100644 src/views/oa/oaAssetsEmail/components/oaAssetsEmailEdit.vue create mode 100644 src/views/oa/oaAssetsEmail/components/search.vue create mode 100644 src/views/oa/oaAssetsEmail/index.vue create mode 100644 src/views/oa/oaAssetsMysql/components/oaAssetsMysqlEdit.vue create mode 100644 src/views/oa/oaAssetsMysql/components/search.vue create mode 100644 src/views/oa/oaAssetsMysql/index.vue create mode 100644 src/views/oa/oaAssetsServer/components/oaAssetsServerEdit.vue create mode 100644 src/views/oa/oaAssetsServer/components/search.vue create mode 100644 src/views/oa/oaAssetsServer/index.vue create mode 100644 src/views/oa/oaAssetsSite/components/oaAssetsSiteEdit.vue create mode 100644 src/views/oa/oaAssetsSite/components/search.vue create mode 100644 src/views/oa/oaAssetsSite/index.vue create mode 100644 src/views/oa/oaAssetsSoftwareCert/components/oaAssetsSoftwareCertEdit.vue create mode 100644 src/views/oa/oaAssetsSoftwareCert/components/search.vue create mode 100644 src/views/oa/oaAssetsSoftwareCert/index.vue create mode 100644 src/views/oa/oaAssetsSsl/components/oaAssetsSslEdit.vue create mode 100644 src/views/oa/oaAssetsSsl/components/search.vue create mode 100644 src/views/oa/oaAssetsSsl/index.vue create mode 100644 src/views/oa/oaAssetsTrademark/components/oaAssetsTrademarkEdit.vue create mode 100644 src/views/oa/oaAssetsTrademark/components/search.vue create mode 100644 src/views/oa/oaAssetsTrademark/index.vue create mode 100644 src/views/oa/oaAssetsUser/components/oaAssetsUserEdit.vue create mode 100644 src/views/oa/oaAssetsUser/components/search.vue create mode 100644 src/views/oa/oaAssetsUser/index.vue create mode 100644 src/views/oa/oaAssetsVhost/components/oaAssetsVhostEdit.vue create mode 100644 src/views/oa/oaAssetsVhost/components/search.vue create mode 100644 src/views/oa/oaAssetsVhost/index.vue create mode 100644 src/views/oa/oaCompany/components/oaCompanyEdit.vue create mode 100644 src/views/oa/oaCompany/components/search.vue create mode 100644 src/views/oa/oaCompany/index.vue create mode 100644 src/views/oa/oaCompanyField/components/oaCompanyFieldEdit.vue create mode 100644 src/views/oa/oaCompanyField/components/search.vue create mode 100644 src/views/oa/oaCompanyField/index.vue create mode 100644 src/views/oa/oaCompanyUser/components/oaCompanyUserEdit.vue create mode 100644 src/views/oa/oaCompanyUser/components/search.vue create mode 100644 src/views/oa/oaCompanyUser/index.vue create mode 100644 src/views/oa/oaLink/components/oaLinkEdit.vue create mode 100644 src/views/oa/oaLink/components/search.vue create mode 100644 src/views/oa/oaLink/index.vue create mode 100644 src/views/oa/oaTask/components/oaTaskEdit.vue create mode 100644 src/views/oa/oaTask/components/search.vue create mode 100644 src/views/oa/oaTask/index.vue create mode 100644 src/views/oa/oaTaskCount/components/oaTaskCountEdit.vue create mode 100644 src/views/oa/oaTaskCount/components/search.vue create mode 100644 src/views/oa/oaTaskCount/index.vue create mode 100644 src/views/oa/oaTaskRecord/components/oaTaskRecordEdit.vue create mode 100644 src/views/oa/oaTaskRecord/components/search.vue create mode 100644 src/views/oa/oaTaskRecord/index.vue create mode 100644 src/views/oa/oaTaskUser/components/oaTaskUserEdit.vue create mode 100644 src/views/oa/oaTaskUser/components/search.vue create mode 100644 src/views/oa/oaTaskUser/index.vue create mode 100644 src/views/passport/dealer/register.vue create mode 100644 src/views/passport/login/components/register/step/components/step-confirm.vue create mode 100644 src/views/passport/login/components/register/step/components/step-edit.vue create mode 100644 src/views/passport/login/components/register/step/components/step-success.vue create mode 100644 src/views/passport/login/components/register/step/index.vue create mode 100644 src/views/passport/login/components/register/step/model/index.ts create mode 100644 src/views/passport/login/components/wx-work.vue create mode 100644 src/views/passport/login/index.vue create mode 100644 src/views/passport/loginToken/index.vue create mode 100644 src/views/passport/qrConfirm/index.vue create mode 100644 src/views/passport/register/index.vue create mode 100644 src/views/passport/register2/index.vue create mode 100644 src/views/project/project/components/extra.vue create mode 100644 src/views/project/project/components/projectEdit.vue create mode 100644 src/views/project/project/components/search.vue create mode 100644 src/views/project/project/index.vue create mode 100644 src/views/project/projectCollection/components/projectCollectionEdit.vue create mode 100644 src/views/project/projectCollection/components/search.vue create mode 100644 src/views/project/projectCollection/index.vue create mode 100644 src/views/project/projectDetail/components/app-about-edit.vue create mode 100644 src/views/project/projectDetail/components/app-about.vue create mode 100644 src/views/project/projectDetail/components/app-annex-edit.vue create mode 100644 src/views/project/projectDetail/components/app-annex.vue create mode 100644 src/views/project/projectDetail/components/app-field-edit.vue create mode 100644 src/views/project/projectDetail/components/app-field-search.vue create mode 100644 src/views/project/projectDetail/components/app-field.vue create mode 100644 src/views/project/projectDetail/components/app-info-edit.vue create mode 100644 src/views/project/projectDetail/components/app-info.vue create mode 100644 src/views/project/projectDetail/components/app-order-edit.vue create mode 100644 src/views/project/projectDetail/components/app-order-search.vue create mode 100644 src/views/project/projectDetail/components/app-order.vue create mode 100644 src/views/project/projectDetail/components/app-photo-edit.vue create mode 100644 src/views/project/projectDetail/components/app-photo.vue create mode 100644 src/views/project/projectDetail/components/app-profile-edit.vue create mode 100644 src/views/project/projectDetail/components/app-profile.vue create mode 100644 src/views/project/projectDetail/components/app-secret-form.vue create mode 100644 src/views/project/projectDetail/components/app-task-search.vue create mode 100644 src/views/project/projectDetail/components/app-task.vue create mode 100644 src/views/project/projectDetail/components/app-url-edit.vue create mode 100644 src/views/project/projectDetail/components/app-url-search.vue create mode 100644 src/views/project/projectDetail/components/app-url.vue create mode 100644 src/views/project/projectDetail/components/app-users.vue create mode 100644 src/views/project/projectDetail/index.vue create mode 100644 src/views/project/projectField/components/projectFieldEdit.vue create mode 100644 src/views/project/projectField/components/search.vue create mode 100644 src/views/project/projectField/index.vue create mode 100644 src/views/project/projectNoRenew/components/expirationTimeEdit.vue create mode 100644 src/views/project/projectNoRenew/components/projectRenewEdit.vue create mode 100644 src/views/project/projectNoRenew/components/search.vue create mode 100644 src/views/project/projectNoRenew/index.vue create mode 100644 src/views/project/projectRenew/components/expirationTimeEdit.vue create mode 100644 src/views/project/projectRenew/components/projectRenewEdit.vue create mode 100644 src/views/project/projectRenew/components/search.vue create mode 100644 src/views/project/projectRenew/index.vue create mode 100644 src/views/project/projectRenewLog/components/projectRenewEdit.vue create mode 100644 src/views/project/projectRenewLog/components/search.vue create mode 100644 src/views/project/projectRenewLog/index.vue create mode 100644 src/views/project/projectUrl/components/projectUrlEdit.vue create mode 100644 src/views/project/projectUrl/components/search.vue create mode 100644 src/views/project/projectUrl/index.vue create mode 100644 src/views/project/projectUser/components/projectUserEdit.vue create mode 100644 src/views/project/projectUser/components/search.vue create mode 100644 src/views/project/projectUser/index.vue create mode 100644 src/views/pwl/count/index.vue create mode 100644 src/views/pwl/pwlProject/components/Import.vue create mode 100644 src/views/pwl/pwlProject/components/extra.vue create mode 100644 src/views/pwl/pwlProject/components/pwlProjectEdit.vue create mode 100644 src/views/pwl/pwlProject/components/search.vue create mode 100644 src/views/pwl/pwlProject/index.vue create mode 100644 src/views/pwl/pwlProjectLibrary/components/pwlProjectLibraryEdit.vue create mode 100644 src/views/pwl/pwlProjectLibrary/components/search.vue create mode 100644 src/views/pwl/pwlProjectLibrary/index.vue create mode 100644 src/views/result/fail/index.vue create mode 100644 src/views/result/success/index.vue create mode 100644 src/views/shop/dashboard/components/search.vue create mode 100644 src/views/shop/dashboard/components/websiteEdit.vue create mode 100644 src/views/shop/dashboard/index.vue create mode 100644 src/views/shop/shopAdmin/components/invitation-modal.vue create mode 100644 src/views/shop/shopAdmin/components/org-select.vue create mode 100644 src/views/shop/shopAdmin/components/search.vue create mode 100644 src/views/shop/shopAdmin/components/super-admin.vue create mode 100644 src/views/shop/shopAdmin/components/user-edit.vue create mode 100644 src/views/shop/shopAdmin/components/user-import.vue create mode 100644 src/views/shop/shopAdmin/index.vue create mode 100644 src/views/shop/shopCoupon/components/search.vue create mode 100644 src/views/shop/shopCoupon/components/shopCouponEdit.vue create mode 100644 src/views/shop/shopCoupon/index.vue create mode 100644 src/views/shop/shopDealerApply/components/search.vue create mode 100644 src/views/shop/shopDealerApply/components/shopDealerApplyEdit.vue create mode 100644 src/views/shop/shopDealerApply/index.vue create mode 100644 src/views/shop/shopDealerCapital/components/search.vue create mode 100644 src/views/shop/shopDealerCapital/components/shopDealerCapitalEdit.vue create mode 100644 src/views/shop/shopDealerCapital/index.vue create mode 100644 src/views/shop/shopDealerOrder/components/Import.vue create mode 100644 src/views/shop/shopDealerOrder/components/search.vue create mode 100644 src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue create mode 100644 src/views/shop/shopDealerOrder/index.vue create mode 100644 src/views/shop/shopDealerPoster/index.vue create mode 100644 src/views/shop/shopDealerReferee/components/search.vue create mode 100644 src/views/shop/shopDealerReferee/components/shopDealerRefereeEdit.vue create mode 100644 src/views/shop/shopDealerReferee/index.vue create mode 100644 src/views/shop/shopDealerSetting/components/search.vue create mode 100644 src/views/shop/shopDealerSetting/components/shopDealerSettingEdit.vue create mode 100644 src/views/shop/shopDealerSetting/index.vue create mode 100644 src/views/shop/shopDealerUser/components/Import.vue create mode 100644 src/views/shop/shopDealerUser/components/search.vue create mode 100644 src/views/shop/shopDealerUser/components/shopDealerUserEdit.vue create mode 100644 src/views/shop/shopDealerUser/index.vue create mode 100644 src/views/shop/shopDealerWithdraw/components/search.vue create mode 100644 src/views/shop/shopDealerWithdraw/components/shopDealerWithdrawEdit.vue create mode 100644 src/views/shop/shopDealerWithdraw/index.vue create mode 100644 src/views/shop/shopExpress/components/search.vue create mode 100644 src/views/shop/shopExpress/components/shopExpressEdit.vue create mode 100644 src/views/shop/shopExpress/index.vue create mode 100644 src/views/shop/shopExpressTemplate/components/search.vue create mode 100644 src/views/shop/shopExpressTemplate/components/shopExpressTemplateEdit.vue create mode 100644 src/views/shop/shopExpressTemplate/index.vue create mode 100644 src/views/shop/shopExpressTemplateDetail/components/search.vue create mode 100644 src/views/shop/shopExpressTemplateDetail/components/shopExpressTemplateDetailEdit.vue create mode 100644 src/views/shop/shopExpressTemplateDetail/index.vue create mode 100644 src/views/shop/shopGift/components/makeCard.vue create mode 100644 src/views/shop/shopGift/components/search.vue create mode 100644 src/views/shop/shopGift/components/shopGiftEdit.vue create mode 100644 src/views/shop/shopGift/index.vue create mode 100644 src/views/shop/shopGoods/components/extra.vue create mode 100644 src/views/shop/shopGoods/components/search.vue create mode 100644 src/views/shop/shopGoods/components/shopGoodsEdit.vue create mode 100644 src/views/shop/shopGoods/index.vue create mode 100644 src/views/shop/shopGoodsCoupon/components/search.vue create mode 100644 src/views/shop/shopGoodsCoupon/components/shopGoodsCouponEdit.vue create mode 100644 src/views/shop/shopGoodsCoupon/index.vue create mode 100644 src/views/shop/shopGoodsSku/components/search.vue create mode 100644 src/views/shop/shopGoodsSku/components/shopGoodsSkuEdit.vue create mode 100644 src/views/shop/shopGoodsSku/index.vue create mode 100644 src/views/shop/shopGoodsSpec/components/search.vue create mode 100644 src/views/shop/shopGoodsSpec/components/shopGoodsSpecEdit.vue create mode 100644 src/views/shop/shopGoodsSpec/index.vue create mode 100644 src/views/shop/shopMerchant/components/search.vue create mode 100644 src/views/shop/shopMerchant/components/shopMerchantEdit.vue create mode 100644 src/views/shop/shopMerchant/index.vue create mode 100644 src/views/shop/shopOrder/components/deliveryModal.vue create mode 100644 src/views/shop/shopOrder/components/expressSettingModal.vue create mode 100644 src/views/shop/shopOrder/components/orderInfo.vue create mode 100644 src/views/shop/shopOrder/components/search.vue create mode 100644 src/views/shop/shopOrder/index.vue create mode 100644 src/views/shop/shopOrderGoods/components/search.vue create mode 100644 src/views/shop/shopOrderGoods/components/shopOrderGoodsEdit.vue create mode 100644 src/views/shop/shopOrderGoods/index.vue create mode 100644 src/views/shop/shopSpec/components/search.vue create mode 100644 src/views/shop/shopSpec/components/shopSpecEdit.vue create mode 100644 src/views/shop/shopSpec/index.vue create mode 100644 src/views/shop/shopSpecValue/components/search.vue create mode 100644 src/views/shop/shopSpecValue/components/shopSpecValueEdit.vue create mode 100644 src/views/shop/shopSpecValue/index.vue create mode 100644 src/views/shop/shopUser/components/org-select.vue create mode 100644 src/views/shop/shopUser/components/search.vue create mode 100644 src/views/shop/shopUser/components/user-edit.vue create mode 100644 src/views/shop/shopUser/components/user-import.vue create mode 100644 src/views/shop/shopUser/index.vue create mode 100644 src/views/shop/shopUserCoupon/components/search.vue create mode 100644 src/views/shop/shopUserCoupon/components/shopUserCouponEdit.vue create mode 100644 src/views/shop/shopUserCoupon/index.vue create mode 100644 src/views/shop/shopUserReferee/components/search.vue create mode 100644 src/views/shop/shopUserReferee/components/shopUserRefereeEdit.vue create mode 100644 src/views/shop/shopUserReferee/index.vue create mode 100644 src/views/system/access-key/components/accesskey-edit.vue create mode 100644 src/views/system/access-key/index.vue create mode 100644 src/views/system/admin/components/org-select.vue create mode 100644 src/views/system/admin/components/role-select.vue create mode 100644 src/views/system/admin/components/search.vue create mode 100644 src/views/system/admin/components/sex-select.vue create mode 100644 src/views/system/admin/components/user-edit.vue create mode 100644 src/views/system/admin/components/user-import.vue create mode 100644 src/views/system/admin/components/user-info.vue create mode 100644 src/views/system/admin/components/user-search.vue create mode 100644 src/views/system/admin/components/userEdit.vue create mode 100644 src/views/system/admin/details/index.vue create mode 100644 src/views/system/admin/index.vue create mode 100644 src/views/system/cache/components/cache-edit.vue create mode 100644 src/views/system/cache/components/send-sms.vue create mode 100644 src/views/system/cache/index.vue create mode 100644 src/views/system/chatConversation/components/chatConversationEdit.vue create mode 100644 src/views/system/chatConversation/components/search.vue create mode 100644 src/views/system/chatConversation/index.vue create mode 100644 src/views/system/chatMessage/components/chatMessageEdit.vue create mode 100644 src/views/system/chatMessage/components/search.vue create mode 100644 src/views/system/chatMessage/index.vue create mode 100644 src/views/system/demo/index.vue create mode 100644 src/views/system/developer/components/CodeInfo.vue create mode 100644 src/views/system/developer/components/ParamInfo.vue create mode 100644 src/views/system/developer/components/ServerInfo.vue create mode 100644 src/views/system/developer/components/TenantInfo.vue create mode 100644 src/views/system/developer/index.vue create mode 100644 src/views/system/dict/components/dict-data-edit.vue create mode 100644 src/views/system/dict/components/dict-data-search.vue create mode 100644 src/views/system/dict/components/dict-data.vue create mode 100644 src/views/system/dict/components/dict-edit.vue create mode 100644 src/views/system/dict/index.vue create mode 100644 src/views/system/dict/list.vue create mode 100644 src/views/system/dictionary/components/dict-data-edit.vue create mode 100644 src/views/system/dictionary/components/dict-data-search.vue create mode 100644 src/views/system/dictionary/components/dict-data.vue create mode 100644 src/views/system/dictionary/components/dict-edit.vue create mode 100644 src/views/system/dictionary/index.vue create mode 100644 src/views/system/dictionary/list.vue create mode 100644 src/views/system/domain/components/domainEdit.vue create mode 100644 src/views/system/domain/components/search.vue create mode 100644 src/views/system/domain/index.vue create mode 100644 src/views/system/exception/403/index.vue create mode 100644 src/views/system/exception/404/index.vue create mode 100644 src/views/system/exception/500/index.vue create mode 100644 src/views/system/field/components/edit.vue create mode 100644 src/views/system/field/components/search.vue create mode 100644 src/views/system/field/index.vue create mode 100644 src/views/system/file/components/file-search.vue create mode 100644 src/views/system/file/index.vue create mode 100644 src/views/system/grade/components/grade-edit.vue create mode 100644 src/views/system/grade/components/search.vue create mode 100644 src/views/system/grade/index.vue create mode 100644 src/views/system/login-record/components/login-record-search.vue create mode 100644 src/views/system/login-record/index.vue create mode 100644 src/views/system/menu/components/Import.vue create mode 100644 src/views/system/menu/components/clone.vue create mode 100644 src/views/system/menu/components/delete.vue create mode 100644 src/views/system/menu/components/menu-edit.vue create mode 100644 src/views/system/menu/components/menu-plug.vue create mode 100644 src/views/system/menu/components/menu-search-original.vue create mode 100644 src/views/system/menu/components/menu-search.vue create mode 100644 src/views/system/menu/index.vue create mode 100644 src/views/system/modules/components/modules-edit.vue create mode 100644 src/views/system/modules/components/modules-search.vue create mode 100644 src/views/system/modules/index.vue create mode 100644 src/views/system/operation-record/components/operation-record-detail.vue create mode 100644 src/views/system/operation-record/components/operation-record-search.vue create mode 100644 src/views/system/operation-record/components/text-ellipsis.vue create mode 100644 src/views/system/operation-record/index.vue create mode 100644 src/views/system/order/components/order-edit.vue create mode 100644 src/views/system/order/components/orderEdit.vue create mode 100644 src/views/system/order/components/search.vue create mode 100644 src/views/system/order/index.vue create mode 100644 src/views/system/organization/components/org-edit.vue create mode 100644 src/views/system/organization/components/org-select.vue create mode 100644 src/views/system/organization/components/org-type-select.vue create mode 100644 src/views/system/organization/components/org-user-edit.vue create mode 100644 src/views/system/organization/components/org-user-list.vue create mode 100644 src/views/system/organization/components/org-user-search.vue create mode 100644 src/views/system/organization/components/role-select.vue create mode 100644 src/views/system/organization/components/sex-select.vue create mode 100644 src/views/system/organization/index.vue create mode 100644 src/views/system/payment/components/paymentEdit.vue create mode 100644 src/views/system/payment/components/search.vue create mode 100644 src/views/system/payment/index.vue create mode 100644 src/views/system/plug/components/companyEdit.vue create mode 100644 src/views/system/plug/components/menu-edit.vue create mode 100644 src/views/system/plug/components/menu-search.vue create mode 100644 src/views/system/plug/components/plug-edit.vue create mode 100644 src/views/system/plug/components/plug-search.vue create mode 100644 src/views/system/plug/components/plug.vue create mode 100644 src/views/system/plug/components/search.vue create mode 100644 src/views/system/plug/components/tenant.vue create mode 100644 src/views/system/plug/create/components/clone.vue create mode 100644 src/views/system/plug/create/components/plug-edit.vue create mode 100644 src/views/system/plug/create/components/plug-search.vue create mode 100644 src/views/system/plug/create/index.vue create mode 100644 src/views/system/plug/detail/index.vue create mode 100644 src/views/system/plug/index.vue create mode 100644 src/views/system/plug/list/index.vue create mode 100644 src/views/system/plug/search/index.vue create mode 100644 src/views/system/profile/components/field.vue create mode 100644 src/views/system/profile/components/sex-select.vue create mode 100644 src/views/system/profile/components/version.vue create mode 100644 src/views/system/profile/index.vue create mode 100644 src/views/system/role/components/role-auth.vue create mode 100644 src/views/system/role/components/role-edit.vue create mode 100644 src/views/system/role/components/role-search.vue create mode 100644 src/views/system/role/index.vue create mode 100644 src/views/system/setting/components/basic.vue create mode 100644 src/views/system/setting/components/clear.vue create mode 100644 src/views/system/setting/components/developer.vue create mode 100644 src/views/system/setting/components/mp-weixin.vue create mode 100644 src/views/system/setting/components/payment.vue create mode 100644 src/views/system/setting/components/printer.vue create mode 100644 src/views/system/setting/components/privacy.vue create mode 100644 src/views/system/setting/components/register.vue create mode 100644 src/views/system/setting/components/role-select.vue create mode 100644 src/views/system/setting/components/sms.vue create mode 100644 src/views/system/setting/components/upload.vue create mode 100644 src/views/system/setting/components/website.vue create mode 100644 src/views/system/setting/components/wx-official.vue create mode 100644 src/views/system/setting/components/wx-work.vue create mode 100644 src/views/system/setting/index.vue create mode 100644 src/views/system/user-group/components/category-select.vue create mode 100644 src/views/system/user-group/components/group-edit.vue create mode 100644 src/views/system/user-group/components/search.vue create mode 100644 src/views/system/user-group/index.vue create mode 100644 src/views/system/user-info/index.vue create mode 100644 src/views/system/user/components/Extra.vue create mode 100644 src/views/system/user/components/org-select.vue create mode 100644 src/views/system/user/components/role-select.vue create mode 100644 src/views/system/user/components/search.vue create mode 100644 src/views/system/user/components/sex-select.vue create mode 100644 src/views/system/user/components/user-edit.vue create mode 100644 src/views/system/user/components/user-import.vue create mode 100644 src/views/system/user/components/user-info.vue create mode 100644 src/views/system/user/components/user-search.vue create mode 100644 src/views/system/user/components/userEdit.vue create mode 100644 src/views/system/user/details/index.vue create mode 100644 src/views/system/user/index.vue create mode 100644 src/views/system/userOauth/components/search.vue create mode 100644 src/views/system/userOauth/components/userOauthEdit.vue create mode 100644 src/views/system/userOauth/index.vue create mode 100644 src/views/system/userVerify/components/search.vue create mode 100644 src/views/system/userVerify/components/userVerifyEdit.vue create mode 100644 src/views/system/userVerify/index.vue create mode 100644 src/views/system/userVerify2/components/search.vue create mode 100644 src/views/system/userVerify2/components/userVerifyEdit.vue create mode 100644 src/views/system/userVerify2/index.vue create mode 100644 src/views/system/version/components/version-edit.vue create mode 100644 src/views/system/version/index.vue create mode 100644 src/views/system/white-domain/components/search.vue create mode 100644 src/views/system/white-domain/components/white-domain-edit.vue create mode 100644 src/views/system/white-domain/index.vue create mode 100644 src/views/user/chat-conversation/components/chatConversationEdit.vue create mode 100644 src/views/user/chat-conversation/components/search.vue create mode 100644 src/views/user/chat-conversation/index.vue create mode 100644 src/views/user/chat-message/components/chatMessageEdit.vue create mode 100644 src/views/user/chat-message/components/search.vue create mode 100644 src/views/user/chat-message/index.vue create mode 100644 src/views/user/profile/components/sex-select.vue create mode 100644 src/views/user/profile/index.vue create mode 100644 src/vite-env.d.ts create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 version.json create mode 100644 vite.config.ts create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..b8ccd8b --- /dev/null +++ b/.env.development @@ -0,0 +1,6 @@ +VITE_APP_NAME=后台管理(开发环境) +#VITE_API_URL=http://127.0.0.1:9200/api +#VITE_SERVER_API_URL=http://127.0.0.1:8000/api + + +#VITE_API_URL=https://cms-api.s209.websoft.top/api diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..22b3547 --- /dev/null +++ b/.env.example @@ -0,0 +1,40 @@ +# 应用名称 +VITE_APP_NAME=网宿软件 + +# API 配置 +VITE_API_URL=https://your-api.com/api +VITE_SERVER_API_URL=https://your-server.com/api +VITE_DOMAIN=https://your-domain.com +VITE_FILE_SERVER=https://your-file-server.com + +# 租户配置 +VITE_TENANT_ID=your_tenant_id +VITE_TEMPLATE_ID=10411 + +# 应用密钥 +VITE_APP_SECRET=your_app_secret + +# 智能端口管理配置 +VITE_PORT_STRATEGY=auto +VITE_BASE_PORT=3000 +VITE_PORT_RANGE_START=3000 +VITE_PORT_RANGE_END=9999 +VITE_TENANT_PORT_OFFSET=10 +VITE_ENVIRONMENT_PORT_OFFSET=1000 +VITE_PORT_AUTO_DETECT=true +VITE_PORT_STRICT_MODE=false +VITE_PORT_CACHE_ENABLED=true +VITE_PORT_CACHE_EXPIRY=86400000 + +# 开发服务器配置 +VITE_DEV_HOST=localhost +VITE_DEV_OPEN_BROWSER=true +VITE_DEV_CORS_ENABLED=true +VITE_DEV_HTTPS_ENABLED=false + +# 高德地图配置 (请到高德地图官网申请) +VITE_MAP_KEY=your_map_key +VITE_MAP_CODE=your_map_security_code + +# WebSoftAdmin 授权码 (请联系官方获取) +VITE_LICENSE_CODE=your_license_code diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..46b1426 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +public +src/assets +dist +node_modules diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..3f64efc --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,78 @@ +// @ts-check +const { defineConfig } = require('eslint-define-config'); + +module.exports = defineConfig({ + root: true, + env: { + browser: true, + node: true, + es6: true + }, + parser: 'vue-eslint-parser', + extends: [ + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:prettier/recommended' + ], + parserOptions: { + parser: '@typescript-eslint/parser', + ecmaVersion: 2020, + sourceType: 'module', + jsxPragma: 'React', + ecmaFeatures: { + jsx: true + } + }, + rules: { + 'vue/script-setup-uses-vars': 'error', + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-var-requires': 'off', + '@typescript-eslint/no-empty-function': 'off', + 'vue/custom-event-name-casing': 'off', + 'no-use-before-define': 'off', + '@typescript-eslint/no-use-before-define': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_' + } + ], + 'no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_' + } + ], + 'space-before-function-paren': 'off', + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/require-default-prop': 'off', + 'vue/html-self-closing': [ + 'error', + { + html: { + void: 'always', + normal: 'never', + component: 'always' + }, + svg: 'always', + math: 'always' + } + ], + 'vue/v-on-event-hyphenation': 'off', + 'vue/multi-word-component-names': 'off' + } +}); diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..293f797 --- /dev/null +++ b/.gitignore @@ -0,0 +1,33 @@ +.DS_Store +node_modules +/node_modules +dist +/dist +/dist-ssr + +# 环境变量文件 +.env +.env.local +.env.*.local +.env.production + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +.pnpm-debug.log +.eslintcache + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# 配置文件备份 +config/setting.backup.ts +/java/ diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..f7e39e6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +/dist/* +.local +.output.js +/node_modules/** + +**/*.svg +**/*.sh + +/public/* diff --git a/README.md b/README.md new file mode 100644 index 0000000..4597550 --- /dev/null +++ b/README.md @@ -0,0 +1,186 @@ +
+

🌐 WebSoftAdmin

+

基于 Vue 3 + Ant Design Vue 的企业级后台管理系统

+ +

+ Vue + Ant Design Vue + TypeScript + Vite + License +

+
+ +## 📖 项目简介 + +WebSoftAdmin 是一个基于 **Vue 3 + Ant Design Vue** 构建的现代化企业级后台管理系统,采用最新的前端技术栈: + +- **前端框架**:Vue 3 + TypeScript + Vite +- **UI 组件库**:Ant Design Vue 3.x +- **富文本编辑器**:TinyMCE(支持图片/视频上传、一键排版) +- **图表库**:ECharts + G2 +- **工具库**:Lodash、Day.js、CryptoJS + + + +## 项目演示 +| 后台管理系统 | https://mp.websoft.top | +|--------|-------------------------------------------------------------------------------------------------------------------------------------| +| 账号密码 | [立即注册](https://mp.websoft.top/register/?inviteCode=github) | +| 关注公众号 | ![输入图片说明](https://oss.wsdns.cn/20240327/f1175cc5aae741d3af05484747270bd5.jpeg?x-oss-process=image/resize,m_fixed,w_150/quality,Q_90) | + + + + +## 🛠️ 技术栈 + +### 核心技术 +| 技术 | 版本 | 说明 | +|------|------|------| +| Vue | 3.x | 渐进式 JavaScript 框架 | +| TypeScript | 4.x | JavaScript 的超集 | +| Vite | 4.x | 下一代前端构建工具 | +| Ant Design Vue | 3.2.11 | 企业级 UI 设计语言 | +| EleAdmin Pro | 1.10.1 | 企业级组件库 | + +### 功能组件 +- **TinyMCE** - 富文本编辑器,支持图片/视频上传 +- **ECharts** - 数据可视化图表库 +- **CropperJS** - 图片裁剪组件 +- **ExcelJS** - Excel 文件处理 +- **Ali OSS** - 阿里云对象存储 + +## 📋 环境要求 + +### 基础环境 +- 🟢 **Node.js 16+** +- 📦 **npm 8+ / yarn 1.22+** +- 🌐 **现代浏览器**(Chrome 63+、Firefox、Safari、Edge) + +### 开发工具 +- **推荐**:VS Code / WebStorm +- **插件**:Vetur / Volar(Vue 3 支持) + +## 🚀 快速开始 + +### 1. 克隆项目 +```bash +git clone https://github.com/websoft-top/mp-vue.git +cd mp-vue +``` + +### 2. 安装依赖 +```bash +# 使用 npm +npm install + +# 或使用 yarn +yarn install +``` + +### 3. 配置环境变量 +```bash +# 复制环境变量示例文件 +cp .env.example .env + +# 编辑 .env 文件,填入您的配置信息 +# 注意:请不要将 .env 文件提交到版本控制系统 +``` + +### 4. 启动开发服务器 +```bash +# 开发模式 +npm run dev + +# 或 +yarn dev +``` + +访问 `http://localhost:3000` 即可看到管理后台。 + +### 5. 构建生产版本 +```bash +# 生产构建 +npm run build + +# 预览构建结果 +npm run serve +``` + +## ⚙️ 环境变量配置 + +项目使用环境变量来管理敏感信息和配置。请按照以下步骤配置: + +### 必需配置 +```bash +# API 配置 +VITE_API_URL=https://your-api.com/api # 后端 API 地址 +VITE_SERVER_API_URL=https://your-server.com/api # 服务端 API 地址 +VITE_FILE_SERVER=https://your-file-server.com # 文件服务器地址 + +# 应用配置 +VITE_APP_SECRET=your_app_secret # 应用密钥 +VITE_TENANT_ID=your_tenant_id # 租户 ID +``` + +### 可选配置 +```bash +# 高德地图 (如需使用地图功能) +VITE_MAP_KEY=your_map_key # 高德地图 Key +VITE_MAP_CODE=your_map_security_code # 高德地图安全密钥 + +# WebSoftAdmin 授权 (商业版功能) +VITE_LICENSE_CODE=your_license_code # 授权码 +``` + +### 获取配置信息 +- **高德地图密钥**:访问 [高德开放平台](https://lbs.amap.com/) 申请 +- **WebSoftAdmin 授权码**:联系 [官方网站](https://websoft.top/) 获取 +- **其他 API 配置**:根据您的后端服务配置 + +## 🎯 核心功能 + +### 📝 内容管理系统 +- **文章管理**:支持富文本编辑、图片/视频上传 +- **一键排版**:智能文章格式优化,包含10种专业排版样式 +- **媒体库**:图片/视频文件管理,支持分组和搜索 +- **首行缩进**:中文段落格式智能切换 + +### 🛒 商城管理 +- **商品管理**:商品信息编辑、规格设置 +- **订单管理**:订单流程跟踪 +- **库存管理**:商品库存监控 + +### 👥 用户权限 +- **用户管理**:用户信息维护 +- **角色权限**:基于角色的访问控制 +- **菜单管理**:动态菜单配置 + +## 🎨 富文本编辑器特色功能 + +### 📸 媒体上传 +- **图片上传**:支持拖拽、粘贴、文件选择 +- **视频上传**:支持多种视频格式 +- **媒体库**:统一的媒体文件管理 +- **OSS 存储**:阿里云对象存储集成 + +### ✨ 智能排版 +- **一键排版**:10种专业排版优化 +- **首行缩进**:中文段落格式切换 +- **样式优化**:标题、段落、列表、表格等元素美化 +- **响应式**:适配不同屏幕尺寸 + +## 🏗️ 项目结构 + +``` +src/ +├── components/ # 公共组件 +├── views/ # 页面组件 +│ ├── cms/ # 内容管理 +│ ├── shop/ # 商城管理 +│ └── system/ # 系统管理 +├── router/ # 路由配置 +├── store/ # 状态管理 +├── utils/ # 工具函数 +└── assets/ # 静态资源 +``` \ No newline at end of file diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..6429be2 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,2 @@ +import 'ant-design-vue/typings/global'; +import 'ele-admin-pro/typings/global'; diff --git a/index.html b/index.html new file mode 100644 index 0000000..e45f55e --- /dev/null +++ b/index.html @@ -0,0 +1,68 @@ + + + + + + + 网宿软件 + + + +
+
+ + + + +
+
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2f4d057 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19250 @@ +{ + "name": "mp-vue-template", + "version": "1.10.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "mp-vue-template", + "version": "1.10.1", + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@antv/g2": "^5.1.22", + "@bytemd/plugin-gfm": "^1.17.2", + "@bytemd/plugin-highlight": "^1.17.4", + "@bytemd/plugin-highlight-ssr": "^1.20.2", + "@wecom/jssdk": "^1.3.1", + "ali-oss": "^6.18.0", + "ant-design-vue": "^3.2.11", + "axios": "^0.27.2", + "bytemd": "^1.17.2", + "countup.js": "^2.3.2", + "cropperjs": "^1.5.12", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.5", + "docx": "^9.5.0", + "echarts": "^5.3.3", + "echarts-wordcloud": "^2.0.0", + "ele-admin-pro": "^1.10.1", + "exceljs": "^4.3.0", + "file-saver": "^2.0.5", + "github-markdown-css": "^5.1.0", + "js-cookie": "^3.0.5", + "js-md5": "^0.7.3", + "jsbarcode": "^3.11.5", + "lodash-es": "^4.17.21", + "md-editor-v3": "^5.2.3", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.0.21", + "qrcode": "^1.5.4", + "socket.io-client": "^4.7.1", + "sortablejs": "^1.15.0", + "tinymce": "^5.10.5", + "vue": "3.5.3", + "vue-echarts": "^6.2.3", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.5", + "vuedraggable": "^4.1.0", + "xgplayer": "^2.31.7", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/file-saver": "^2.0.7", + "@types/lodash-es": "^4.17.6", + "@types/node": "^18.7.14", + "@types/nprogress": "^0.2.0", + "@types/qrcode": "^1.5.5", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", + "@vitejs/plugin-legacy": "^2.0.1", + "@vitejs/plugin-vue": "^3.0.3", + "@vue/compiler-sfc": "^3.2.38", + "autoprefixer": "^10.4.19", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-define-config": "^1.7.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-vue": "^9.4.0", + "less": "^4.1.3", + "postcss": "^8.4.39", + "prettier": "^2.7.1", + "rimraf": "^3.0.2", + "rollup-plugin-visualizer": "^5.9.2", + "tailwindcss": "^3.4.6", + "terser": "^5.15.0", + "typescript": "^4.8.2", + "unplugin-vue-components": "^0.22.4", + "vite": "^3.0.9", + "vite-plugin-compression": "^0.5.1", + "vue-eslint-parser": "^9.0.3", + "vue-tsc": "^0.40.5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "node_modules/@ant-design/colors": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "dependencies": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "node_modules/@ant-design/icons-svg": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", + "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" + }, + "node_modules/@ant-design/icons-vue": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz", + "integrity": "sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==", + "dependencies": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-svg": "^4.2.1" + }, + "peerDependencies": { + "vue": ">=3.0.3" + } + }, + "node_modules/@antfu/utils": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz", + "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==", + "dev": true + }, + "node_modules/@antv/component": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@antv/component/-/component-2.0.1.tgz", + "integrity": "sha512-VldsSv2O/JNjZYenFIzmtLeC+KD2RcpNARsCLKpi04Iz26joQ3uMtnwxM5W4bd/SCJYKp+eeQeMHMAbwaNR1pw==", + "license": "MIT", + "dependencies": { + "@antv/g": "^6.0.5", + "@antv/scale": "^0.4.3", + "@antv/util": "^3.3.5", + "svg-path-parser": "^1.1.0" + } + }, + "node_modules/@antv/coord": { + "version": "0.4.7", + "resolved": "https://registry.npmmirror.com/@antv/coord/-/coord-0.4.7.tgz", + "integrity": "sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA==", + "license": "MIT", + "dependencies": { + "@antv/scale": "^0.4.12", + "@antv/util": "^2.0.13", + "gl-matrix": "^3.4.3" + } + }, + "node_modules/@antv/coord/node_modules/@antv/util": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz", + "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "license": "ISC", + "dependencies": { + "csstype": "^3.0.8", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/event-emitter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz", + "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==", + "license": "MIT" + }, + "node_modules/@antv/g": { + "version": "6.0.10", + "resolved": "https://registry.npmmirror.com/@antv/g/-/g-6.0.10.tgz", + "integrity": "sha512-VH45ddgHQhEzWZ4aDpHHcu6f77vIVKhfEMgHZzUL9bnMTmJ2P4qf0DtarhP6BKvxcHlFFpJcSyYSxTurNHvW5w==", + "license": "MIT", + "dependencies": { + "@antv/g-camera-api": "2.0.9", + "@antv/g-dom-mutation-observer-api": "2.0.6", + "@antv/g-lite": "2.0.6", + "@antv/g-web-animations-api": "2.0.7" + } + }, + "node_modules/@antv/g-camera-api": { + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/@antv/g-camera-api/-/g-camera-api-2.0.9.tgz", + "integrity": "sha512-ixeF5lypyNqZ6Btua6FC7w3YvGi+WnmtDIAalByaM8lGDlYroZNYQTsOeVE4JsS15kjQwEe+GYs+e0jWgdXpeg==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-camera-api/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-canvas": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-2.0.8.tgz", + "integrity": "sha512-XyzFGq3xqIRxEnIIU310FyOyuNAuUKyh93plgkRkF2dOCpS3RAVQRRxD1vnG47NShwjfo3Pn0qiIKTSyxGXQZg==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/g-plugin-canvas-path-generator": "2.0.6", + "@antv/g-plugin-canvas-picker": "2.0.7", + "@antv/g-plugin-canvas-renderer": "2.0.7", + "@antv/g-plugin-dom-interaction": "2.0.6", + "@antv/g-plugin-html-renderer": "2.0.7", + "@antv/g-plugin-image-loader": "2.0.6", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-canvas/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-dom-mutation-observer-api": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-dom-mutation-observer-api/-/g-dom-mutation-observer-api-2.0.6.tgz", + "integrity": "sha512-VIdXYxaIa82oqxLu2si+zaMq+UCU4CZS1sdtE4oROEe9uhA4vlZsynfnoOD+nw5RcTwKWx9nu1IxI/xsjFXUvw==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6" + } + }, + "node_modules/@antv/g-lite": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-lite/-/g-lite-2.0.6.tgz", + "integrity": "sha512-7lYAtxrNHqtQIsBYCub6HLrMNm0828dzBed9Kge1hZtLbTL0weCmZBq/te/0lpdNDVeP/XqwYmT6toIi3sc0Ew==", + "license": "MIT", + "dependencies": { + "@antv/g-math": "3.0.0", + "@antv/util": "^3.3.5", + "d3-color": "^3.1.0", + "eventemitter3": "^5.0.1", + "gl-matrix": "^3.4.3", + "rbush": "^3.0.1", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-lite/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/@antv/g-lite/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-math": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@antv/g-math/-/g-math-3.0.0.tgz", + "integrity": "sha512-AkmiNIEL1vgqTPeGY2wtsMdBBqKFwF7SKSgs+D1iOS/rqYMsXdhp/HvtuQ5tx/HdawE/ZzTiicIYopc520ADZw==", + "license": "MIT", + "dependencies": { + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-math/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-canvas-path-generator": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-canvas-path-generator/-/g-plugin-canvas-path-generator-2.0.6.tgz", + "integrity": "sha512-wMRUPowlyp1t7u3aalBZM0gQXCrOVNqNpodOOwFPqe+M0qBpHmh9gUF1AtXyg3m84i4HCUFgmupJ9YZVCnZ2lg==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/g-math": "3.0.0", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-canvas-path-generator/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-canvas-picker": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-canvas-picker/-/g-plugin-canvas-picker-2.0.7.tgz", + "integrity": "sha512-c1igCBXG4ZBvzxrTQ9DNxhYdA1gkzNv6JbTmT2ZDIBMxkLi1sD9jjEF00vc1+d2OHS3bpqmfpLkIniZCtAN3kA==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/g-math": "3.0.0", + "@antv/g-plugin-canvas-path-generator": "2.0.6", + "@antv/g-plugin-canvas-renderer": "2.0.7", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-canvas-picker/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-canvas-renderer": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-canvas-renderer/-/g-plugin-canvas-renderer-2.0.7.tgz", + "integrity": "sha512-GcfAyCXrsBCOUWPx8MnyMN3TJ/ocb9APg6gO1LeN5F8YN0fpkKqxuhfHTtc5D1dCG0+8VQWSyI3HdkbOOhA3vA==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/g-math": "3.0.0", + "@antv/g-plugin-canvas-path-generator": "2.0.6", + "@antv/g-plugin-image-loader": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-canvas-renderer/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-dom-interaction": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-dom-interaction/-/g-plugin-dom-interaction-2.0.6.tgz", + "integrity": "sha512-tu9+PNPSc7JOO+rZ/Q7tTuPMbMXRsXg9AVVaB+PzwGuYYQmCfRuudtPa5+lVWzXaFc6wlThb4v9qeA2AerqeNw==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-dom-interaction/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-dragndrop": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-dragndrop/-/g-plugin-dragndrop-2.0.6.tgz", + "integrity": "sha512-qMrDbrGEnM66Qg/vwI+zNdhFNoN+pjzyZtO3MD+CjNQnEGpQqy1W9PNLpWcFE43BU5Z/JkoUtu6Oy5C/WKHBbQ==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-dragndrop/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-html-renderer": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-html-renderer/-/g-plugin-html-renderer-2.0.7.tgz", + "integrity": "sha512-j5zuVJ3cBm0VfJBTAtMa5GB159HSInBBXO3Nup4UVaKjl7JSL0Qkz5vZCvRX6rv6UD19+vH483v7JtQ+JXcgHA==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-html-renderer/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-plugin-image-loader": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-image-loader/-/g-plugin-image-loader-2.0.6.tgz", + "integrity": "sha512-lyJ157fDqH0iFBYwFGUxZNUOxN0vRV5hF7e0iK9ElvSEc2ovqpLi0UVwjAbA67eJwpd5Y771Go1sRfx0XJo87Q==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-plugin-image-loader/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g-web-animations-api": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-web-animations-api/-/g-web-animations-api-2.0.7.tgz", + "integrity": "sha512-BpP86sTRAgNAWHDNajOhoM0YC2eL95iUFGcRftulrZ/8sqnTXF/M/I319vcznylwKNS37tzVmEppn76vS35UmQ==", + "license": "MIT", + "dependencies": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + } + }, + "node_modules/@antv/g-web-animations-api/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@antv/g2": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/@antv/g2/-/g2-5.2.1.tgz", + "integrity": "sha512-Kb3e1ohkLxGEd0+yjc/2ff2hAzIUzUoSR+PP0riI1Pp+c6CobLiK68ji6aoCmfndQMDknvLYAZHSOL8OXc7ChA==", + "license": "MIT", + "dependencies": { + "@antv/component": "^2.0.0", + "@antv/coord": "^0.4.6", + "@antv/event-emitter": "^0.1.3", + "@antv/g": "^6.0.0", + "@antv/g-canvas": "^2.0.0", + "@antv/g-plugin-dragndrop": "^2.0.0", + "@antv/path-util": "^3.0.1", + "@antv/scale": "^0.4.12", + "@antv/util": "^3.3.5", + "d3-array": "^3.2.4", + "d3-dsv": "^3.0.1", + "d3-force": "^3.0.0", + "d3-format": "^3.1.0", + "d3-geo": "^3.1.0", + "d3-hierarchy": "^3.1.2", + "d3-path": "^3.1.0", + "d3-scale-chromatic": "^3.0.0", + "d3-shape": "^3.2.0", + "d3-voronoi": "^1.1.4", + "flru": "^1.0.2", + "fmin": "^0.0.2", + "pdfast": "^0.2.0" + } + }, + "node_modules/@antv/path-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@antv/path-util/-/path-util-3.0.1.tgz", + "integrity": "sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q==", + "license": "MIT", + "dependencies": { + "gl-matrix": "^3.1.0", + "lodash-es": "^4.17.21", + "tslib": "^2.0.3" + } + }, + "node_modules/@antv/scale": { + "version": "0.4.16", + "resolved": "https://registry.npmmirror.com/@antv/scale/-/scale-0.4.16.tgz", + "integrity": "sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==", + "license": "MIT", + "dependencies": { + "@antv/util": "^3.3.7", + "color-string": "^1.5.5", + "fecha": "^4.2.1" + } + }, + "node_modules/@antv/util": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/@antv/util/-/util-3.3.7.tgz", + "integrity": "sha512-qqPg7rIPCsJyl7N56jAC25v/99mJ3ApVkgBsGijhiWrEeKvzXBPk1r5P77Pm9nCljpnn+hH8Z3t5AivbEoTJMg==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "gl-matrix": "^3.3.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@antv/util/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.9", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/standalone": { + "version": "7.18.13", + "resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.18.13.tgz", + "integrity": "sha512-5hjvvFkaXyfQri+s4CAZtx6FTKclfTNd2QN2RwgzCVJhnYYgKh4YFBCnNJSxurzvpSKD2NmpCkoWAkMc+j9y+g==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.9", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bytemd/plugin-gfm": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-gfm/-/plugin-gfm-1.17.2.tgz", + "integrity": "sha512-u3DBMdPTcRMIRvzc582ylZhvrFumnoGjWNnUO3aXQH0mJ98XyGXxdWYAh7jow+XevhApp966ks5bvDAbYjzRTQ==", + "dependencies": { + "@icon-park/svg": "^1.4.2", + "remark-gfm": "^3.0.1" + }, + "peerDependencies": { + "bytemd": "^1.5.0" + } + }, + "node_modules/@bytemd/plugin-highlight": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight/-/plugin-highlight-1.20.2.tgz", + "integrity": "sha512-OBm0SkH4ecKyRC+h7CPUQhbp9dDus/WIpTlialhZ3ueKk/PRwRcstiuzQNXwYDBjgUQPBapmCukITN7oFliZBg==", + "dependencies": { + "highlight.js": "^11.7.0" + }, + "peerDependencies": { + "bytemd": "^1.5.0" + } + }, + "node_modules/@bytemd/plugin-highlight-ssr": { + "version": "1.21.0", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight-ssr/-/plugin-highlight-ssr-1.21.0.tgz", + "integrity": "sha512-iUf94WgFRH4o6eUJ00Y7lIUUkPWu+uk422n5uMXmhTOmg60YlS9EpiEMjOL81Xe5xjSFwDnxZJTHzHq8eW4gkQ==", + "dependencies": { + "rehype-highlight": "^6.0.0" + }, + "peerDependencies": { + "bytemd": "^1.5.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.18.6", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", + "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.8.0.tgz", + "integrity": "sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-angular": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-angular/-/lang-angular-0.1.3.tgz", + "integrity": "sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.3" + } + }, + "node_modules/@codemirror/lang-cpp": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz", + "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/cpp": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-css/-/lang-css-6.3.1.tgz", + "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.1.7" + } + }, + "node_modules/@codemirror/lang-go": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-go/-/lang-go-6.0.1.tgz", + "integrity": "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/go": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.9", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "node_modules/@codemirror/lang-java": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-java/-/lang-java-6.0.1.tgz", + "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/java": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.3.tgz", + "integrity": "sha512-8PR3vIWg7pSu7ur8A07pGiYHgy3hHj+mRYRCSG8q+mPIrl0F02rgpGv+DsQTHRTc30rydOsf5PZ7yjKFg2Ackw==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-json": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz", + "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-less": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-less/-/lang-less-6.0.2.tgz", + "integrity": "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-liquid": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-liquid/-/lang-liquid-6.2.2.tgz", + "integrity": "sha512-7Dm841fk37+JQW6j2rI1/uGkJyESrjzyhiIkaLjbbR0U6aFFQvMrJn35WxQreRMADMhzkyVkZM4467OR7GR8nQ==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "node_modules/@codemirror/lang-markdown": { + "version": "6.3.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-markdown/-/lang-markdown-6.3.2.tgz", + "integrity": "sha512-c/5MYinGbFxYl4itE9q/rgN/sMTjOr8XL5OWnC+EaRMLfCbVUmmubTJfdgpfcSS2SCaT7b+Q+xi3l6CgoE+BsA==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.7.1", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.3.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/markdown": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-php": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-php/-/lang-php-6.0.1.tgz", + "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/php": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-python": { + "version": "6.1.7", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-python/-/lang-python-6.1.7.tgz", + "integrity": "sha512-mZnFTsL4lW5p9ch8uKNKeRU3xGGxr1QpESLilfON2E3fQzOa/OygEMkaDvERvXDJWJA9U9oN/D4w0ZuUzNO4+g==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.8.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/python": "^1.1.4" + } + }, + "node_modules/@codemirror/lang-rust": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", + "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/rust": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sass": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", + "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/sass": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sql": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz", + "integrity": "sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-vue": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz", + "integrity": "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "node_modules/@codemirror/lang-wast": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz", + "integrity": "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-xml": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz", + "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/xml": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-yaml": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz", + "integrity": "sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.2.0", + "@lezer/lr": "^1.0.0", + "@lezer/yaml": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.8", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.10.8.tgz", + "integrity": "sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/language-data": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/@codemirror/language-data/-/language-data-6.5.1.tgz", + "integrity": "sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-angular": "^0.1.0", + "@codemirror/lang-cpp": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-go": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-java": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/lang-json": "^6.0.0", + "@codemirror/lang-less": "^6.0.0", + "@codemirror/lang-liquid": "^6.0.0", + "@codemirror/lang-markdown": "^6.0.0", + "@codemirror/lang-php": "^6.0.0", + "@codemirror/lang-python": "^6.0.0", + "@codemirror/lang-rust": "^6.0.0", + "@codemirror/lang-sass": "^6.0.0", + "@codemirror/lang-sql": "^6.0.0", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/lang-wast": "^6.0.0", + "@codemirror/lang-xml": "^6.0.0", + "@codemirror/lang-yaml": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/legacy-modes": "^6.4.0" + } + }, + "node_modules/@codemirror/legacy-modes": { + "version": "6.4.3", + "resolved": "https://registry.npmmirror.com/@codemirror/legacy-modes/-/legacy-modes-6.4.3.tgz", + "integrity": "sha512-s1g+q4bil8Cs4O+ueIiKIhz9MQOGcRyxJglma8BYIWc/oEJLo13S3LYSWKaqhKwXGgt1GgZ66hCploHZD9Sstw==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.8.4", + "resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz", + "integrity": "sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.10", + "resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.5.10.tgz", + "integrity": "sha512-RMdPdmsrUf53pb2VwflKGHEe1XVM07hI7vV2ntgw1dmqhimpatSJKva4VA9h4TLUDOD4EIF02201oZurpnEFsg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "license": "MIT", + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.36.4", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.36.4.tgz", + "integrity": "sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.5.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.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" + } + }, + "node_modules/@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@fast-csv/format/node_modules/@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + }, + "node_modules/@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "dependencies": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/@fast-csv/parse/node_modules/@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@icon-park/svg": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@icon-park/svg/-/svg-1.4.2.tgz", + "integrity": "sha512-1X0DA+1e0R0liYvw+Nb2BQmF1oEo/wS3o/JYkQYifPJXCGYij2vN9sJf/NNhbzDsJWTg4W2bbzZjJvC7Q4w4oQ==", + "engines": { + "node": ">= 8.0.0", + "npm": ">= 5.0.0" + } + }, + "node_modules/@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "dependencies": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "dependencies": { + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "dependencies": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "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.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "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.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "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.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@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.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==", + "license": "MIT" + }, + "node_modules/@lezer/cpp": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@lezer/cpp/-/cpp-1.1.2.tgz", + "integrity": "sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/css": { + "version": "1.1.10", + "resolved": "https://registry.npmmirror.com/@lezer/css/-/css-1.1.10.tgz", + "integrity": "sha512-V5/89eDapjeAkWPBpWEfQjZ1Hag3aYUUJOL8213X0dFRuXJ4BXa5NKl9USzOnaLod4AOpmVCkduir2oKwZYZtg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/go": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@lezer/go/-/go-1.0.0.tgz", + "integrity": "sha512-co9JfT3QqX1YkrMmourYw2Z8meGC50Ko4d54QEcQbEYpvdUvN4yb0NBZdn/9ertgvjsySxHsKzH3lbm3vqJ4Jw==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.10", + "resolved": "https://registry.npmmirror.com/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/java": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@lezer/java/-/java-1.1.3.tgz", + "integrity": "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.21", + "resolved": "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.21.tgz", + "integrity": "sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/json": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@lezer/json/-/json-1.0.3.tgz", + "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/markdown": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.4.2.tgz", + "integrity": "sha512-iYewCigG/517D0xJPQd7RGaCjZAFwROiH8T9h7OTtz0bRVtkxzFhGBFJ9JGKgBBs4uuo1cvxzyQ5iKhDLMcLUQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@lezer/php": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/php/-/php-1.0.2.tgz", + "integrity": "sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.1.0" + } + }, + "node_modules/@lezer/python": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/@lezer/python/-/python-1.1.15.tgz", + "integrity": "sha512-aVQ43m2zk4FZYedCqL0KHPEUsqZOrmAvRhkhHlVPnDD1HODDyyQv5BRIuod4DadkgBEZd53vQOtXTonNbEgjrQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/rust": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/rust/-/rust-1.0.2.tgz", + "integrity": "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/sass": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@lezer/sass/-/sass-1.0.7.tgz", + "integrity": "sha512-8HLlOkuX/SMHOggI2DAsXUw38TuURe+3eQ5hiuk9QmYOUyC55B1dYEIMkav5A4IELVaW4e1T4P9WRiI5ka4mdw==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/xml": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@lezer/xml/-/xml-1.0.6.tgz", + "integrity": "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/yaml": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@lezer/yaml/-/yaml-1.0.3.tgz", + "integrity": "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.4.0" + } + }, + "node_modules/@ljharb/resumer": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/@ljharb/resumer/-/resumer-0.0.1.tgz", + "integrity": "sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==", + "license": "MIT", + "dependencies": { + "@ljharb/through": "^2.3.9" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@ljharb/through": { + "version": "2.3.13", + "resolved": "https://registry.npmmirror.com/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@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.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@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/@simonwep/pickr": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz", + "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==", + "dependencies": { + "core-js": "^3.15.1", + "nanopop": "^2.1.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "node_modules/@types/codemirror": { + "version": "5.60.5", + "resolved": "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/@types/file-saver": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", + "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.14.184", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz", + "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/markdown-it/node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + }, + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "node_modules/@types/node": { + "version": "18.7.14", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", + "dev": true + }, + "node_modules/@types/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==", + "dev": true + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + }, + "node_modules/@types/qrcode": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", + "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sortablejs": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.13.0.tgz", + "integrity": "sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==", + "dev": true + }, + "node_modules/@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmmirror.com/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz", + "integrity": "sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/type-utils": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "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/parser": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz", + "integrity": "sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", + "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz", + "integrity": "sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.36.1.tgz", + "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", + "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1", + "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" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.36.1.tgz", + "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.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/@typescript-eslint/visitor-keys": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", + "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.1", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@vavt/util": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@vavt/util/-/util-2.1.0.tgz", + "integrity": "sha512-YIfAvArSFVXmWvoF+DEGD0FhkhVNcCtVWWkfYtj76eSrwHh/wuEEFhiEubg1XLNM3tChO8FH8xJCT/hnizjgFQ==", + "license": "MIT" + }, + "node_modules/@vitejs/plugin-legacy": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-2.0.1.tgz", + "integrity": "sha512-kKC56rfsXwebApzyuZqdQlGmqTyH1ugy0l0rY58gx5OXzq4/t5/DCqGUoz53Db51OqfjRqsHfqmvq9or6w9k/Q==", + "dev": true, + "dependencies": { + "@babel/standalone": "^7.18.12", + "core-js": "^3.24.1", + "magic-string": "^0.26.2", + "regenerator-runtime": "^0.13.9", + "systemjs": "^6.12.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "terser": "^5.4.0", + "vite": "^3.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz", + "integrity": "sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^3.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/code-gen": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.40.5.tgz", + "integrity": "sha512-M3D/2pmvjyGYalmldcyvTqVXhUnDxMYA2HtThmdQ8pVsTW4BVVzqrjnJAvHKNfM/zU0XA+fzIh1tfJ4Cssoe5w==", + "dev": true, + "dependencies": { + "@volar/source-map": "0.40.5" + } + }, + "node_modules/@volar/source-map": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.40.5.tgz", + "integrity": "sha512-HNO+svbNHXmJtDs82muusI1ErWnMpmNPDpz0Hmex5XDEa+q3NlWFXPMAxCflg294fkCfdOizyCxXYqh3UKz3VA==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.2.37" + } + }, + "node_modules/@volar/source-map/node_modules/@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.37" + } + }, + "node_modules/@volar/source-map/node_modules/@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", + "dev": true + }, + "node_modules/@volar/typescript-faster": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/typescript-faster/-/typescript-faster-0.40.5.tgz", + "integrity": "sha512-DfIVkQawbesz+8ghbYS1NnlIQjfMIDsSJY/bumIJk98M/tM/2Fykhiil3GDfTr6ju/fAqDpfF8VF8XpYDWPc7w==", + "dev": true, + "dependencies": { + "semver": "^7.3.7" + } + }, + "node_modules/@volar/vue-language-core": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-0.40.5.tgz", + "integrity": "sha512-4EpMQdLaORWg3EBZtgqzgkNRm1+qvyvCyLbnWHT2SPkUuHObPcbyA3giXbOEnPB0pnQpr2nVTv+tRLWvksXdyA==", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.40.5", + "@volar/source-map": "0.40.5", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "node_modules/@volar/vue-typescript": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.40.5.tgz", + "integrity": "sha512-6OHJ87e8A3Z0xuWmBg72X5aYbW/EatogB168827j/OL371eiy3dExqa5y2+eJuWYjDiRJOmlHzhUElN+OEQRZQ==", + "dev": true, + "dependencies": { + "@volar/code-gen": "0.40.5", + "@volar/typescript-faster": "0.40.5", + "@volar/vue-language-core": "0.40.5" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.3.tgz", + "integrity": "sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.3", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz", + "integrity": "sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.3.tgz", + "integrity": "sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.3", + "@vue/compiler-dom": "3.5.3", + "@vue/compiler-ssr": "3.5.3", + "@vue/shared": "3.5.3", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.44", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.3.tgz", + "integrity": "sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "node_modules/@vue/reactivity": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.3.tgz", + "integrity": "sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.3" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.3.tgz", + "integrity": "sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.3.tgz", + "integrity": "sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.3", + "@vue/runtime-core": "3.5.3", + "@vue/shared": "3.5.3", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.3.tgz", + "integrity": "sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.3", + "@vue/shared": "3.5.3" + }, + "peerDependencies": { + "vue": "3.5.3" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.3.tgz", + "integrity": "sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==", + "license": "MIT" + }, + "node_modules/@wecom/jssdk": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz", + "integrity": "sha512-lfqMeLrINX2JaYqFuWfdfSJbz8VEqcaGqeodtphpI/Vk690pa2nEnBxtiJndxa+7pE4ZKucTMkYbN5ET8iksYg==" + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/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/address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/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" + } + }, + "node_modules/ali-oss": { + "version": "6.18.1", + "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.18.1.tgz", + "integrity": "sha512-VsptD0jX3JNc3AjiLs5a9oTP0ArfT9IYhBuY6G/SpuY6LMuiwfqywrAosY65BlHKODAdYy8VWL6kmt0mO7BUGA==", + "dependencies": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "2.41.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ali-oss/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ant-design-vue": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.11.tgz", + "integrity": "sha512-QKCAcOY5EJF0PepiVGA4X5PzUetYUvG5qALmA+2TON40pc2+brOEiVTwr3kjF9N+f7q4MpyiLPu4pIErwoajOQ==", + "dependencies": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@babel/runtime": "^7.10.5", + "@ctrl/tinycolor": "^3.4.0", + "@simonwep/pickr": "~1.8.0", + "array-tree-filter": "^2.1.0", + "async-validator": "^4.0.0", + "dayjs": "^1.10.5", + "dom-align": "^1.12.1", + "dom-scroll-into-view": "^2.0.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.15", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.25", + "shallow-equal": "^1.0.0", + "vue-types": "^3.0.0", + "warning": "^4.0.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "peerDependencies": { + "vue": ">=3.2.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "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/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/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/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/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.23.2", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "node_modules/bytemd": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/bytemd/-/bytemd-1.17.2.tgz", + "integrity": "sha512-t8TljTgRU1+OPPbxBPjvnvh8Nti9FAirmKQhgSDYMQnXs9SGw6tTRJy3f8ZZoD+rnYt8hyf035ADDfU1/bTJhQ==", + "dependencies": { + "@icon-park/svg": "^1.4.2", + "@popperjs/core": "^2.11.5", + "@types/codemirror": "^5.60.5", + "@types/hast": "^2.3.4", + "@types/lodash-es": "^4.17.6", + "@types/mdast": "^3.0.10", + "codemirror-ssr": "^0.65.0", + "hast-util-sanitize": "^4.0.0", + "lodash-es": "^4.17.21", + "rehype-raw": "^6.1.1", + "rehype-sanitize": "^5.0.1", + "rehype-stringify": "^9.0.3", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.1.0", + "select-files": "^1.0.1", + "tippy.js": "^6.3.7", + "unified": "^10.1.2", + "unist-util-visit": "^4.1.0", + "vfile": "^5.3.4", + "word-count": "^0.2.2" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001702", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", + "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", + "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" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" + }, + "node_modules/center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "license": "MIT", + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/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" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "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.npmmirror.com/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/cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "license": "ISC", + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/codemirror-ssr": { + "version": "0.65.0", + "resolved": "https://registry.npmmirror.com/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz", + "integrity": "sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g==", + "peerDependencies": { + "@types/codemirror": "^5.0.0" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/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/comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/contour_plot": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/contour_plot/-/contour_plot-0.0.1.tgz", + "integrity": "sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==", + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + } + }, + "node_modules/copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/core-js": { + "version": "3.25.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.25.0.tgz", + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==", + "hasInstallScript": true + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/countup.js": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/countup.js/-/countup.js-2.3.2.tgz", + "integrity": "sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q==" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/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/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/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/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==", + "license": "BSD-3-Clause" + }, + "node_modules/danmu.js": { + "version": "0.5.10", + "resolved": "https://registry.npmmirror.com/danmu.js/-/danmu.js-0.5.10.tgz", + "integrity": "sha512-zLpSd5Yi+fxVVd0GHjrf5lZA45KKpbvc4Q8BbSVO3OdmCBkoB2vlDCGnVn18cnKpTNqi8Soy7AnzUw1YcqtzUA==", + "dependencies": { + "event-emitter": "^0.3.5" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", + "engines": { + "node": "*" + } + }, + "node_modules/dayjs": { + "version": "1.11.5", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dependencies": { + "character-entities": "^2.0.0" + } + }, + "node_modules/deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + "dependencies": { + "os-name": "~1.0.3" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defined": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/digest-header": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz", + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/docx": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/docx/-/docx-9.5.0.tgz", + "integrity": "sha512-WZggg9vVujFcTyyzfIVBBIxlCk51QvhLWl87wtI2zuBdz8C8C0mpRhEVwA2DZd7dXyY0AVejcEVDT9vn7Xm9FA==", + "license": "MIT", + "dependencies": { + "@types/node": "^22.7.5", + "hash.js": "^1.1.7", + "jszip": "^3.10.1", + "nanoid": "^5.1.3", + "xml": "^1.0.1", + "xml-js": "^1.6.8" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/docx/node_modules/@types/node": { + "version": "22.15.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", + "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/docx/node_modules/nanoid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", + "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/dom-align": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.3.tgz", + "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" + }, + "node_modules/dom-scroll-into-view": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz", + "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==" + }, + "node_modules/dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/downloadjs": { + "version": "1.4.7", + "resolved": "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz", + "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==" + }, + "node_modules/draggabilly": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/draggabilly/-/draggabilly-2.4.1.tgz", + "integrity": "sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A==", + "dependencies": { + "get-size": "^2.0.2", + "unidragger": "^2.4.0" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/echarts": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz", + "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.3.2" + } + }, + "node_modules/echarts-wordcloud": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz", + "integrity": "sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g==", + "peerDependencies": { + "echarts": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/ele-admin-pro": { + "version": "1.10.1", + "resolved": "https://registry.npmmirror.com/ele-admin-pro/-/ele-admin-pro-1.10.1.tgz", + "integrity": "sha512-EiNJcfGGA/4F20cuHlz7bxr2UJ1RdQGM3+MA7dsiNOp7DxLpP3dOo8wgg+MKyMUZUM2dcpp+Dmz94Q5VDpr44Q==", + "peerDependencies": { + "ant-design-vue": ">=3.1.0", + "vue": ">=3.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.828", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz", + "integrity": "sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/end-or-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz", + "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==", + "engines": { + "node": ">= 0.11.14" + } + }, + "node_modules/engine.io-client": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.1.tgz", + "integrity": "sha512-hE5wKXH8Ru4L19MbM1GgYV/2Qo54JSMh1rlJbfpa40bEWkCKNo3ol2eOtGmowcr+ysgbI7+SGL+by42Q3pt/Ng==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.1.0", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", + "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.14.54", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-define-config": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.7.0.tgz", + "integrity": "sha512-13zk8z8eKO4tpPMvAGV0sa6ok0XuMeu7Zhcizu2bLwcLy1fbNt7/h8PU1wbp9IoIgQETggZJozU0nPXUXOao2g==", + "dev": true, + "engines": { + "node": ">= 14.6.0", + "npm": ">= 6.0.0", + "pnpm": ">= 7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/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.4.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.4.0.tgz", + "integrity": "sha512-Nzz2QIJ8FG+rtJaqT/7/ru5ie2XgT9KCudkbN0y3uFYhQ41nuHEaboLAiqwMcK006hZPQv/rVMRhUIwEGhIvfQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "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-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/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-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/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/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/exceljs": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz", + "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", + "dependencies": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=8.3.0" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "dependencies": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/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.npmmirror.com/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.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "dependencies": { + "format": "^0.2.0" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/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/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/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" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/flru": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/flru/-/flru-1.0.2.tgz", + "integrity": "sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/fmin": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/fmin/-/fmin-0.0.2.tgz", + "integrity": "sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==", + "license": "BSD-3-Clause", + "dependencies": { + "contour_plot": "^0.0.1", + "json2module": "^0.0.3", + "rollup": "^0.25.8", + "tape": "^4.5.1", + "uglify-js": "^2.6.2" + } + }, + "node_modules/fmin/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fmin/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fmin/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "license": "MIT", + "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/fmin/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fmin/node_modules/rollup": { + "version": "0.25.8", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-0.25.8.tgz", + "integrity": "sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==", + "license": "MIT", + "dependencies": { + "chalk": "^1.1.1", + "minimist": "^1.2.0", + "source-map-support": "^0.3.2" + }, + "bin": { + "rollup": "bin/rollup" + } + }, + "node_modules/fmin/node_modules/source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fmin/node_modules/source-map-support": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.3.3.tgz", + "integrity": "sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==", + "license": "MIT", + "dependencies": { + "source-map": "0.1.32" + } + }, + "node_modules/fmin/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fmin/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/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/format": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/formstream": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz", + "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==", + "dependencies": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "pause-stream": "~0.0.11" + } + }, + "node_modules/formstream/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/fstream/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-source-map": { + "version": "0.0.5", + "resolved": "https://registry.npmmirror.com/generate-source-map/-/generate-source-map-0.0.5.tgz", + "integrity": "sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg==", + "dependencies": { + "esprima": "~1.2.2", + "source-map": "~0.1.34" + } + }, + "node_modules/generate-source-map/node_modules/source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-ready": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz", + "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==" + }, + "node_modules/get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/github-markdown-css": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.1.0.tgz", + "integrity": "sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==" + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/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": "13.17.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/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" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "license": "MIT", + "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.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz", + "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==", + "dependencies": { + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^5.0.0", + "web-namespaces": "^2.0.0" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + } + }, + "node_modules/hast-util-is-element": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "dependencies": { + "@types/hast": "^2.0.0" + } + }, + "node_modules/hast-util-raw": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/hast-util-raw/-/hast-util-raw-7.2.2.tgz", + "integrity": "sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "node_modules/hast-util-sanitize": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", + "dependencies": { + "@types/hast": "^2.0.0" + } + }, + "node_modules/hast-util-to-html": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", + "dependencies": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz", + "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-to-hyperscript": "^10.0.0", + "property-information": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "node_modules/hast-util-to-text": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz", + "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "unist-util-find-after": "^4.0.0" + } + }, + "node_modules/hast-util-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" + }, + "node_modules/hastscript": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, + "node_modules/highlight.js": { + "version": "11.8.0", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/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" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/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-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-class-hotfix": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==" + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/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-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-type-of": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz", + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + "dependencies": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + }, + "node_modules/js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==", + "engines": { + "node": ">=14" + } + }, + "node_modules/js-md5": { + "version": "0.7.3", + "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz", + "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/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/jsbarcode": { + "version": "3.11.5", + "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.5.tgz", + "integrity": "sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA==", + "bin": { + "auto.js": "bin/barcodes/CODE128/auto.js", + "Barcode.js": "bin/barcodes/Barcode.js", + "barcodes": "bin/barcodes", + "canvas.js": "bin/renderers/canvas.js", + "checksums.js": "bin/barcodes/MSI/checksums.js", + "codabar": "bin/barcodes/codabar", + "CODE128": "bin/barcodes/CODE128", + "CODE128_AUTO.js": "bin/barcodes/CODE128/CODE128_AUTO.js", + "CODE128.js": "bin/barcodes/CODE128/CODE128.js", + "CODE128A.js": "bin/barcodes/CODE128/CODE128A.js", + "CODE128B.js": "bin/barcodes/CODE128/CODE128B.js", + "CODE128C.js": "bin/barcodes/CODE128/CODE128C.js", + "CODE39": "bin/barcodes/CODE39", + "constants.js": "bin/barcodes/ITF/constants.js", + "defaults.js": "bin/options/defaults.js", + "EAN_UPC": "bin/barcodes/EAN_UPC", + "EAN.js": "bin/barcodes/EAN_UPC/EAN.js", + "EAN13.js": "bin/barcodes/EAN_UPC/EAN13.js", + "EAN2.js": "bin/barcodes/EAN_UPC/EAN2.js", + "EAN5.js": "bin/barcodes/EAN_UPC/EAN5.js", + "EAN8.js": "bin/barcodes/EAN_UPC/EAN8.js", + "encoder.js": "bin/barcodes/EAN_UPC/encoder.js", + "ErrorHandler.js": "bin/exceptions/ErrorHandler.js", + "exceptions": "bin/exceptions", + "exceptions.js": "bin/exceptions/exceptions.js", + "fixOptions.js": "bin/help/fixOptions.js", + "GenericBarcode": "bin/barcodes/GenericBarcode", + "getOptionsFromElement.js": "bin/help/getOptionsFromElement.js", + "getRenderProperties.js": "bin/help/getRenderProperties.js", + "help": "bin/help", + "index.js": "bin/renderers/index.js", + "index.tmp.js": "bin/barcodes/index.tmp.js", + "ITF": "bin/barcodes/ITF", + "ITF.js": "bin/barcodes/ITF/ITF.js", + "ITF14.js": "bin/barcodes/ITF/ITF14.js", + "JsBarcode.js": "bin/JsBarcode.js", + "linearizeEncodings.js": "bin/help/linearizeEncodings.js", + "merge.js": "bin/help/merge.js", + "MSI": "bin/barcodes/MSI", + "MSI.js": "bin/barcodes/MSI/MSI.js", + "MSI10.js": "bin/barcodes/MSI/MSI10.js", + "MSI1010.js": "bin/barcodes/MSI/MSI1010.js", + "MSI11.js": "bin/barcodes/MSI/MSI11.js", + "MSI1110.js": "bin/barcodes/MSI/MSI1110.js", + "object.js": "bin/renderers/object.js", + "options": "bin/options", + "optionsFromStrings.js": "bin/help/optionsFromStrings.js", + "pharmacode": "bin/barcodes/pharmacode", + "renderers": "bin/renderers", + "shared.js": "bin/renderers/shared.js", + "svg.js": "bin/renderers/svg.js", + "UPC.js": "bin/barcodes/EAN_UPC/UPC.js", + "UPCE.js": "bin/barcodes/EAN_UPC/UPCE.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json2module": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/json2module/-/json2module-0.0.3.tgz", + "integrity": "sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==", + "license": "BSD-3-Clause", + "dependencies": { + "rw": "^1.3.2" + }, + "bin": { + "json2module": "bin/json2module" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/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/jstoxml": { + "version": "2.2.9", + "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz", + "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==" + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kind-of/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "license": "MIT" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/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/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "node_modules/local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/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" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowlight": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/lowlight/-/lowlight-2.9.0.tgz", + "integrity": "sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==", + "dependencies": { + "@types/hast": "^2.0.0", + "fault": "^2.0.0", + "highlight.js": "~11.8.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/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/lucide-vue-next": { + "version": "0.453.0", + "resolved": "https://registry.npmmirror.com/lucide-vue-next/-/lucide-vue-next-0.453.0.tgz", + "integrity": "sha512-5zmv83vxAs9SVoe22veDBi8Dw0Fh2F+oTngWgKnKOkrZVbZjceXLQ3tescV2boB0zlaf9R2Sd9RuUP2766xvsQ==", + "license": "ISC", + "peerDependencies": { + "vue": ">=3.0.1" + } + }, + "node_modules/magic-string": { + "version": "0.26.3", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.3.tgz", + "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/markdown-it-image-figures": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/markdown-it-image-figures/-/markdown-it-image-figures-2.1.1.tgz", + "integrity": "sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "markdown-it": "*" + } + }, + "node_modules/markdown-it-sub": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/markdown-it-sub/-/markdown-it-sub-2.0.0.tgz", + "integrity": "sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==", + "license": "MIT" + }, + "node_modules/markdown-it-sup": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/markdown-it-sup/-/markdown-it-sup-2.0.0.tgz", + "integrity": "sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==", + "license": "MIT" + }, + "node_modules/markdown-it/node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" + }, + "node_modules/md-editor-v3": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/md-editor-v3/-/md-editor-v3-5.3.2.tgz", + "integrity": "sha512-O3gV4X3+x8QZava2pzJfVb06dqO1Y1UrmUpHS0E7htblqq0MQ67yrLLkTkVYIxF04Tj8Ub67pc8fypR3uT8FUA==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-markdown": "^6.3.0", + "@codemirror/language-data": "^6.5.1", + "@types/markdown-it": "^14.0.1", + "@vavt/util": "^2.1.0", + "codemirror": "^6.0.1", + "copy-to-clipboard": "^3.3.3", + "lru-cache": "^11.0.1", + "lucide-vue-next": "^0.453.0", + "markdown-it": "^14.0.0", + "markdown-it-image-figures": "^2.1.1", + "markdown-it-sub": "^2.0.0", + "markdown-it-sup": "^2.0.0", + "medium-zoom": "^1.1.0", + "xss": "^1.0.15" + }, + "peerDependencies": { + "vue": "^3.5.3" + } + }, + "node_modules/md-editor-v3/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/mdast-util-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", + "dependencies": { + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "12.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.1.tgz", + "integrity": "sha512-dyindR2P7qOqXO1hQirZeGtVbiX7xlNQbw7gGaAwN4A1dh4+X8xU/JyYmRoyB8Fu1uPXzp7mlL5QwW7k+knvgA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", + "mdurl": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/medium-zoom": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/medium-zoom/-/medium-zoom-1.1.0.tgz", + "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "dependencies": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" + }, + "node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/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": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/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/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mock-property": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/mock-property/-/mock-property-1.0.3.tgz", + "integrity": "sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.1", + "functions-have-names": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "hasown": "^2.0.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mock-property/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanopop": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz", + "integrity": "sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/needle": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/node-releases": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.17.tgz", + "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + "dependencies": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + }, + "bin": { + "os-name": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + "dependencies": { + "minimist": "^1.1.0" + }, + "bin": { + "osx-release": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/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" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/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/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/pdfast": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/pdfast/-/pdfast-0.2.0.tgz", + "integrity": "sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinia": { + "version": "2.0.21", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.21.tgz", + "integrity": "sha512-6ol04PtL29O0Z6JHI47O3JUSoyOJ7Og0rstXrHVMZSP4zAldsQBXJCNF0i/H7m8vp/Hjd/CSmuPl7C5QAwpeWQ==", + "dependencies": { + "@vue/devtools-api": "^6.2.1", + "vue-demi": "*" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.2.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/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" + }, + "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.npmmirror.com/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/platform": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/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" + } + ], + "license": "MIT", + "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.1.2", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "license": "MIT", + "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-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/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.7.1", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/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/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/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==", + "license": "MIT" + }, + "node_modules/qrcode/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/qrcode/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", + "license": "ISC" + }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "license": "MIT", + "dependencies": { + "quickselect": "^2.0.0" + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/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.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/rehype-highlight": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/rehype-highlight/-/rehype-highlight-6.0.0.tgz", + "integrity": "sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-text": "^3.0.0", + "lowlight": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "node_modules/rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + } + }, + "node_modules/rehype-sanitize": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz", + "integrity": "sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-sanitize": "^4.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/resize-detector": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz", + "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==" + }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "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.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/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/right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "license": "MIT", + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz", + "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^4.0.2", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "rolldown": "1.x", + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rollup-plugin-visualizer/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, + "license": "MIT" + }, + "node_modules/rollup-plugin-visualizer/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/rollup-plugin-visualizer/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/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, + "license": "MIT", + "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/rollup-plugin-visualizer/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rollup-plugin-visualizer/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "2.2.29", + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", + "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", + "dependencies": { + "compute-scroll-into-view": "^1.0.17" + } + }, + "node_modules/sdk-base": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz", + "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==", + "dependencies": { + "get-ready": "~1.0.0" + } + }, + "node_modules/select-files": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/select-files/-/select-files-1.0.1.tgz", + "integrity": "sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ==" + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/socket.io-client": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.1.tgz", + "integrity": "sha512-Qk3Xj8ekbnzKu3faejo4wk2MzXA029XppiXtTF/PkbTg+fcwaTw1PlDrTrrrU4mKoYC4dvlApOnSeyLCKwek2w==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/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/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "node_modules/space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" + }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-wormhole": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz", + "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==", + "license": "MIT" + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmmirror.com/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "license": "MIT", + "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/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/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/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/svg-path-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/svg-path-parser/-/svg-path-parser-1.1.0.tgz", + "integrity": "sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==", + "license": "MIT" + }, + "node_modules/systemjs": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.12.6.tgz", + "integrity": "sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==", + "dev": true + }, + "node_modules/tailwindcss": { + "version": "3.4.6", + "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.6.tgz", + "integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==", + "dev": true, + "license": "MIT", + "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.21.0", + "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/tape": { + "version": "4.17.0", + "resolved": "https://registry.npmmirror.com/tape/-/tape-4.17.0.tgz", + "integrity": "sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==", + "license": "MIT", + "dependencies": { + "@ljharb/resumer": "~0.0.1", + "@ljharb/through": "~2.3.9", + "call-bind": "~1.0.2", + "deep-equal": "~1.1.1", + "defined": "~1.0.1", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "glob": "~7.2.3", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.1.4", + "minimist": "~1.2.8", + "mock-property": "~1.0.0", + "object-inspect": "~1.12.3", + "resolve": "~1.22.6", + "string.prototype.trim": "~1.2.8" + }, + "bin": { + "tape": "bin/tape" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tape/node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tinymce": { + "version": "5.10.5", + "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.5.tgz", + "integrity": "sha512-nFKtLhmoRtExBxUfv06JlkbQWux5D+d115vxSRAqUmccZdrtpFvOIYwZmikvulLdM9pfEpvO0B+RQ2qFV/+R7w==" + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmmirror.com/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/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/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "engines": { + "node": "*" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" + }, + "node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/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.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "license": "BSD-2-Clause", + "dependencies": { + "source-map": "~0.5.1", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "license": "MIT", + "optional": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unescape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz", + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + "dependencies": { + "extend-shallow": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unidragger": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unidragger/-/unidragger-2.4.0.tgz", + "integrity": "sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w==", + "dependencies": { + "unipointer": "^2.4.0" + } + }, + "node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmmirror.com/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "node_modules/unipointer": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unipointer/-/unipointer-2.4.0.tgz", + "integrity": "sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw==", + "dependencies": { + "ev-emitter": "^1.0.1" + } + }, + "node_modules/unist-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "dependencies": { + "@types/unist": "^2.0.0" + } + }, + "node_modules/unist-util-find-after": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz", + "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "node_modules/unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" + }, + "node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, + "node_modules/unist-util-position": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "dependencies": { + "@types/unist": "^2.0.0" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", + "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", + "dependencies": { + "@types/unist": "^2.0.0" + } + }, + "node_modules/unist-util-visit": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "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-vue-components": { + "version": "0.22.4", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz", + "integrity": "sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ==", + "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.2", + "magic-string": "^0.26.2", + "minimatch": "^5.1.0", + "resolve": "^1.22.1", + "unplugin": "^0.9.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@babel/parser": "^7.15.8", + "vue": "2 || 3" + }, + "peerDependenciesMeta": { + "@babel/parser": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-components/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/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.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "dependencies": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + } + }, + "node_modules/unzipper/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/unzipper/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/unzipper/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "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" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urllib": { + "version": "2.41.0", + "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz", + "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==", + "dependencies": { + "any-promise": "^1.3.0", + "content-type": "^1.0.2", + "debug": "^2.6.9", + "default-user-agent": "^1.0.0", + "digest-header": "^1.0.0", + "ee-first": "~1.1.1", + "formstream": "^1.1.0", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.4.15", + "ip": "^1.1.5", + "pump": "^3.0.0", + "qs": "^6.4.0", + "statuses": "^1.3.1", + "utility": "^1.16.1" + }, + "engines": { + "node": ">= 0.10.0" + }, + "peerDependencies": { + "proxy-agent": "^5.0.0" + }, + "peerDependenciesMeta": { + "proxy-agent": { + "optional": true + } + } + }, + "node_modules/urllib/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/urllib/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/urllib/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utility": { + "version": "1.18.0", + "resolved": "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz", + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + "dependencies": { + "copy-to": "^2.0.1", + "escape-html": "^1.0.3", + "mkdirp": "^0.5.1", + "mz": "^2.7.0", + "unescape": "^1.0.1" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, + "bin": { + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/vfile": { + "version": "5.3.4", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "dependencies": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "node_modules/vfile-message": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.2.tgz", + "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.47", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-compression": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", + "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.0.0" + } + }, + "node_modules/vue": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.3.tgz", + "integrity": "sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.3", + "@vue/compiler-sfc": "3.5.3", + "@vue/runtime-dom": "3.5.3", + "@vue/server-renderer": "3.5.3", + "@vue/shared": "3.5.3" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-echarts": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.2.3.tgz", + "integrity": "sha512-xHzUvgsgk/asJTcNa8iVVwoovZU3iEUHvmBa3bzbiP3Y6OMxM1YXsoWOKVmVVaUusGs4ob4pSwjwNy2FemAz9w==", + "hasInstallScript": true, + "dependencies": { + "resize-detector": "^0.3.0", + "vue-demi": "^0.13.2" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.5", + "echarts": "^5.1.2", + "vue": "^2.6.12 || ^3.1.1" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-echarts/node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/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" + }, + "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.0.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "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" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "dependencies": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.5.tgz", + "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==", + "dependencies": { + "@vue/devtools-api": "^6.1.4" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.40.5.tgz", + "integrity": "sha512-rQPyyqrQiDzc8a3YpAYUb27VQbU+NDewOJ7GJBiEIEcaSugMjDc6dtJijTHK32t8IgGPl6ybsJ9LIU9sZvixLA==", + "dev": true, + "dependencies": { + "@volar/vue-language-core": "0.40.5", + "@volar/vue-typescript": "0.40.5" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/vue-types": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz", + "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==", + "dependencies": { + "is-plain-object": "3.0.1" + }, + "engines": { + "node": ">=10.15.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/vuedraggable/node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/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.4", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz", + "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==", + "dev": true + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/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/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + "dependencies": { + "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/win-release/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word-count": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/word-count/-/word-count-0.2.2.tgz", + "integrity": "sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA==" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", + "license": "MIT/X11", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "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/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "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.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xgplayer": { + "version": "2.31.7", + "resolved": "https://registry.npmmirror.com/xgplayer/-/xgplayer-2.31.7.tgz", + "integrity": "sha512-Wksoj/+BQgsDD7hVsd0d8jICHWWL7SGV6c6V01kH3LfLS6JgwVKyNnr4rRHZFFztlr/kOgBnqPqlV3Fiefmviw==", + "dependencies": { + "chalk": "^2.3.2", + "commander": "^2.15.1", + "danmu.js": "^0.5.9", + "downloadjs": "1.4.7", + "draggabilly": "^2.2.0", + "event-emitter": "^0.3.5", + "fs-extra": "^5.0.0", + "xgplayer-subtitles": "^1.0.19" + }, + "bin": { + "xgplayer": "bin/xgplayer.js" + } + }, + "node_modules/xgplayer-subtitles": { + "version": "1.0.22", + "resolved": "https://registry.npmmirror.com/xgplayer-subtitles/-/xgplayer-subtitles-1.0.22.tgz", + "integrity": "sha512-+m1fo+FFynL+2ymO4UQBUSnJAz3WuIthpJFCrKBjd+ukcLRoy3vTcsylXEOo5AZN1xT28fpHmxvZQKEIEYA+6w==", + "dependencies": { + "eventemitter3": "^4.0.7", + "generate-source-map": "0.0.5" + } + }, + "node_modules/xgplayer/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/xgplayer/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/xgplayer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/xgplayer/node_modules/fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/xgplayer/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/xgplayer/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/xgplayer/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "license": "MIT" + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/xss": { + "version": "1.0.15", + "resolved": "https://registry.npmmirror.com/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "license": "MIT", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "license": "MIT", + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zrender": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz", + "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" + } + }, + "dependencies": { + "@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true + }, + "@amap/amap-jsapi-loader": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz", + "integrity": "sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==" + }, + "@ant-design/colors": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz", + "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", + "requires": { + "@ctrl/tinycolor": "^3.4.0" + } + }, + "@ant-design/icons-svg": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.2.1.tgz", + "integrity": "sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==" + }, + "@ant-design/icons-vue": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz", + "integrity": "sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==", + "requires": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-svg": "^4.2.1" + } + }, + "@antfu/utils": { + "version": "0.5.2", + "resolved": "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz", + "integrity": "sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==", + "dev": true + }, + "@antv/component": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@antv/component/-/component-2.0.1.tgz", + "integrity": "sha512-VldsSv2O/JNjZYenFIzmtLeC+KD2RcpNARsCLKpi04Iz26joQ3uMtnwxM5W4bd/SCJYKp+eeQeMHMAbwaNR1pw==", + "requires": { + "@antv/g": "^6.0.5", + "@antv/scale": "^0.4.3", + "@antv/util": "^3.3.5", + "svg-path-parser": "^1.1.0" + } + }, + "@antv/coord": { + "version": "0.4.7", + "resolved": "https://registry.npmmirror.com/@antv/coord/-/coord-0.4.7.tgz", + "integrity": "sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA==", + "requires": { + "@antv/scale": "^0.4.12", + "@antv/util": "^2.0.13", + "gl-matrix": "^3.4.3" + }, + "dependencies": { + "@antv/util": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/@antv/util/-/util-2.0.17.tgz", + "integrity": "sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==", + "requires": { + "csstype": "^3.0.8", + "tslib": "^2.0.3" + } + } + } + }, + "@antv/event-emitter": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz", + "integrity": "sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==" + }, + "@antv/g": { + "version": "6.0.10", + "resolved": "https://registry.npmmirror.com/@antv/g/-/g-6.0.10.tgz", + "integrity": "sha512-VH45ddgHQhEzWZ4aDpHHcu6f77vIVKhfEMgHZzUL9bnMTmJ2P4qf0DtarhP6BKvxcHlFFpJcSyYSxTurNHvW5w==", + "requires": { + "@antv/g-camera-api": "2.0.9", + "@antv/g-dom-mutation-observer-api": "2.0.6", + "@antv/g-lite": "2.0.6", + "@antv/g-web-animations-api": "2.0.7" + } + }, + "@antv/g-camera-api": { + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/@antv/g-camera-api/-/g-camera-api-2.0.9.tgz", + "integrity": "sha512-ixeF5lypyNqZ6Btua6FC7w3YvGi+WnmtDIAalByaM8lGDlYroZNYQTsOeVE4JsS15kjQwEe+GYs+e0jWgdXpeg==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-canvas": { + "version": "2.0.8", + "resolved": "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-2.0.8.tgz", + "integrity": "sha512-XyzFGq3xqIRxEnIIU310FyOyuNAuUKyh93plgkRkF2dOCpS3RAVQRRxD1vnG47NShwjfo3Pn0qiIKTSyxGXQZg==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/g-plugin-canvas-path-generator": "2.0.6", + "@antv/g-plugin-canvas-picker": "2.0.7", + "@antv/g-plugin-canvas-renderer": "2.0.7", + "@antv/g-plugin-dom-interaction": "2.0.6", + "@antv/g-plugin-html-renderer": "2.0.7", + "@antv/g-plugin-image-loader": "2.0.6", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-dom-mutation-observer-api": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-dom-mutation-observer-api/-/g-dom-mutation-observer-api-2.0.6.tgz", + "integrity": "sha512-VIdXYxaIa82oqxLu2si+zaMq+UCU4CZS1sdtE4oROEe9uhA4vlZsynfnoOD+nw5RcTwKWx9nu1IxI/xsjFXUvw==", + "requires": { + "@antv/g-lite": "2.0.6" + } + }, + "@antv/g-lite": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-lite/-/g-lite-2.0.6.tgz", + "integrity": "sha512-7lYAtxrNHqtQIsBYCub6HLrMNm0828dzBed9Kge1hZtLbTL0weCmZBq/te/0lpdNDVeP/XqwYmT6toIi3sc0Ew==", + "requires": { + "@antv/g-math": "3.0.0", + "@antv/util": "^3.3.5", + "d3-color": "^3.1.0", + "eventemitter3": "^5.0.1", + "gl-matrix": "^3.4.3", + "rbush": "^3.0.1", + "tslib": "^2.5.3" + }, + "dependencies": { + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-math": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/@antv/g-math/-/g-math-3.0.0.tgz", + "integrity": "sha512-AkmiNIEL1vgqTPeGY2wtsMdBBqKFwF7SKSgs+D1iOS/rqYMsXdhp/HvtuQ5tx/HdawE/ZzTiicIYopc520ADZw==", + "requires": { + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-canvas-path-generator": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-canvas-path-generator/-/g-plugin-canvas-path-generator-2.0.6.tgz", + "integrity": "sha512-wMRUPowlyp1t7u3aalBZM0gQXCrOVNqNpodOOwFPqe+M0qBpHmh9gUF1AtXyg3m84i4HCUFgmupJ9YZVCnZ2lg==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/g-math": "3.0.0", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-canvas-picker": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-canvas-picker/-/g-plugin-canvas-picker-2.0.7.tgz", + "integrity": "sha512-c1igCBXG4ZBvzxrTQ9DNxhYdA1gkzNv6JbTmT2ZDIBMxkLi1sD9jjEF00vc1+d2OHS3bpqmfpLkIniZCtAN3kA==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/g-math": "3.0.0", + "@antv/g-plugin-canvas-path-generator": "2.0.6", + "@antv/g-plugin-canvas-renderer": "2.0.7", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-canvas-renderer": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-canvas-renderer/-/g-plugin-canvas-renderer-2.0.7.tgz", + "integrity": "sha512-GcfAyCXrsBCOUWPx8MnyMN3TJ/ocb9APg6gO1LeN5F8YN0fpkKqxuhfHTtc5D1dCG0+8VQWSyI3HdkbOOhA3vA==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/g-math": "3.0.0", + "@antv/g-plugin-canvas-path-generator": "2.0.6", + "@antv/g-plugin-image-loader": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-dom-interaction": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-dom-interaction/-/g-plugin-dom-interaction-2.0.6.tgz", + "integrity": "sha512-tu9+PNPSc7JOO+rZ/Q7tTuPMbMXRsXg9AVVaB+PzwGuYYQmCfRuudtPa5+lVWzXaFc6wlThb4v9qeA2AerqeNw==", + "requires": { + "@antv/g-lite": "2.0.6", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-dragndrop": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-dragndrop/-/g-plugin-dragndrop-2.0.6.tgz", + "integrity": "sha512-qMrDbrGEnM66Qg/vwI+zNdhFNoN+pjzyZtO3MD+CjNQnEGpQqy1W9PNLpWcFE43BU5Z/JkoUtu6Oy5C/WKHBbQ==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-html-renderer": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-html-renderer/-/g-plugin-html-renderer-2.0.7.tgz", + "integrity": "sha512-j5zuVJ3cBm0VfJBTAtMa5GB159HSInBBXO3Nup4UVaKjl7JSL0Qkz5vZCvRX6rv6UD19+vH483v7JtQ+JXcgHA==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-plugin-image-loader": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@antv/g-plugin-image-loader/-/g-plugin-image-loader-2.0.6.tgz", + "integrity": "sha512-lyJ157fDqH0iFBYwFGUxZNUOxN0vRV5hF7e0iK9ElvSEc2ovqpLi0UVwjAbA67eJwpd5Y771Go1sRfx0XJo87Q==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "gl-matrix": "^3.4.3", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g-web-animations-api": { + "version": "2.0.7", + "resolved": "https://registry.npmmirror.com/@antv/g-web-animations-api/-/g-web-animations-api-2.0.7.tgz", + "integrity": "sha512-BpP86sTRAgNAWHDNajOhoM0YC2eL95iUFGcRftulrZ/8sqnTXF/M/I319vcznylwKNS37tzVmEppn76vS35UmQ==", + "requires": { + "@antv/g-lite": "2.0.6", + "@antv/util": "^3.3.5", + "tslib": "^2.5.3" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@antv/g2": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/@antv/g2/-/g2-5.2.1.tgz", + "integrity": "sha512-Kb3e1ohkLxGEd0+yjc/2ff2hAzIUzUoSR+PP0riI1Pp+c6CobLiK68ji6aoCmfndQMDknvLYAZHSOL8OXc7ChA==", + "requires": { + "@antv/component": "^2.0.0", + "@antv/coord": "^0.4.6", + "@antv/event-emitter": "^0.1.3", + "@antv/g": "^6.0.0", + "@antv/g-canvas": "^2.0.0", + "@antv/g-plugin-dragndrop": "^2.0.0", + "@antv/path-util": "^3.0.1", + "@antv/scale": "^0.4.12", + "@antv/util": "^3.3.5", + "d3-array": "^3.2.4", + "d3-dsv": "^3.0.1", + "d3-force": "^3.0.0", + "d3-format": "^3.1.0", + "d3-geo": "^3.1.0", + "d3-hierarchy": "^3.1.2", + "d3-path": "^3.1.0", + "d3-scale-chromatic": "^3.0.0", + "d3-shape": "^3.2.0", + "d3-voronoi": "^1.1.4", + "flru": "^1.0.2", + "fmin": "^0.0.2", + "pdfast": "^0.2.0" + } + }, + "@antv/path-util": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/@antv/path-util/-/path-util-3.0.1.tgz", + "integrity": "sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q==", + "requires": { + "gl-matrix": "^3.1.0", + "lodash-es": "^4.17.21", + "tslib": "^2.0.3" + } + }, + "@antv/scale": { + "version": "0.4.16", + "resolved": "https://registry.npmmirror.com/@antv/scale/-/scale-0.4.16.tgz", + "integrity": "sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==", + "requires": { + "@antv/util": "^3.3.7", + "color-string": "^1.5.5", + "fecha": "^4.2.1" + } + }, + "@antv/util": { + "version": "3.3.7", + "resolved": "https://registry.npmmirror.com/@antv/util/-/util-3.3.7.tgz", + "integrity": "sha512-qqPg7rIPCsJyl7N56jAC25v/99mJ3ApVkgBsGijhiWrEeKvzXBPk1r5P77Pm9nCljpnn+hH8Z3t5AivbEoTJMg==", + "requires": { + "fast-deep-equal": "^3.1.3", + "gl-matrix": "^3.3.0", + "tslib": "^2.3.1" + }, + "dependencies": { + "tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + } + } + }, + "@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" + }, + "@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" + }, + "@babel/parser": { + "version": "7.26.9", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", + "requires": { + "@babel/types": "^7.26.9" + } + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/standalone": { + "version": "7.18.13", + "resolved": "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.18.13.tgz", + "integrity": "sha512-5hjvvFkaXyfQri+s4CAZtx6FTKclfTNd2QN2RwgzCVJhnYYgKh4YFBCnNJSxurzvpSKD2NmpCkoWAkMc+j9y+g==", + "dev": true + }, + "@babel/types": { + "version": "7.26.9", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", + "requires": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + } + }, + "@bytemd/plugin-gfm": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-gfm/-/plugin-gfm-1.17.2.tgz", + "integrity": "sha512-u3DBMdPTcRMIRvzc582ylZhvrFumnoGjWNnUO3aXQH0mJ98XyGXxdWYAh7jow+XevhApp966ks5bvDAbYjzRTQ==", + "requires": { + "@icon-park/svg": "^1.4.2", + "remark-gfm": "^3.0.1" + } + }, + "@bytemd/plugin-highlight": { + "version": "1.20.2", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight/-/plugin-highlight-1.20.2.tgz", + "integrity": "sha512-OBm0SkH4ecKyRC+h7CPUQhbp9dDus/WIpTlialhZ3ueKk/PRwRcstiuzQNXwYDBjgUQPBapmCukITN7oFliZBg==", + "requires": { + "highlight.js": "^11.7.0" + } + }, + "@bytemd/plugin-highlight-ssr": { + "version": "1.21.0", + "resolved": "https://registry.npmmirror.com/@bytemd/plugin-highlight-ssr/-/plugin-highlight-ssr-1.21.0.tgz", + "integrity": "sha512-iUf94WgFRH4o6eUJ00Y7lIUUkPWu+uk422n5uMXmhTOmg60YlS9EpiEMjOL81Xe5xjSFwDnxZJTHzHq8eW4gkQ==", + "requires": { + "rehype-highlight": "^6.0.0" + } + }, + "@codemirror/autocomplete": { + "version": "6.18.6", + "resolved": "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz", + "integrity": "sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + } + }, + "@codemirror/commands": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.8.0.tgz", + "integrity": "sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ==", + "requires": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.27.0", + "@lezer/common": "^1.1.0" + } + }, + "@codemirror/lang-angular": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-angular/-/lang-angular-0.1.3.tgz", + "integrity": "sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w==", + "requires": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.3" + } + }, + "@codemirror/lang-cpp": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz", + "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==", + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/cpp": "^1.0.0" + } + }, + "@codemirror/lang-css": { + "version": "6.3.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-css/-/lang-css-6.3.1.tgz", + "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.1.7" + } + }, + "@codemirror/lang-go": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-go/-/lang-go-6.0.1.tgz", + "integrity": "sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/go": "^1.0.0" + } + }, + "@codemirror/lang-html": { + "version": "6.4.9", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-html/-/lang-html-6.4.9.tgz", + "integrity": "sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "@codemirror/lang-java": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-java/-/lang-java-6.0.1.tgz", + "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/java": "^1.0.0" + } + }, + "@codemirror/lang-javascript": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.3.tgz", + "integrity": "sha512-8PR3vIWg7pSu7ur8A07pGiYHgy3hHj+mRYRCSG8q+mPIrl0F02rgpGv+DsQTHRTc30rydOsf5PZ7yjKFg2Ackw==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "@codemirror/lang-json": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz", + "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/json": "^1.0.0" + } + }, + "@codemirror/lang-less": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-less/-/lang-less-6.0.2.tgz", + "integrity": "sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==", + "requires": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@codemirror/lang-liquid": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-liquid/-/lang-liquid-6.2.2.tgz", + "integrity": "sha512-7Dm841fk37+JQW6j2rI1/uGkJyESrjzyhiIkaLjbbR0U6aFFQvMrJn35WxQreRMADMhzkyVkZM4467OR7GR8nQ==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "@codemirror/lang-markdown": { + "version": "6.3.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-markdown/-/lang-markdown-6.3.2.tgz", + "integrity": "sha512-c/5MYinGbFxYl4itE9q/rgN/sMTjOr8XL5OWnC+EaRMLfCbVUmmubTJfdgpfcSS2SCaT7b+Q+xi3l6CgoE+BsA==", + "requires": { + "@codemirror/autocomplete": "^6.7.1", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.3.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/markdown": "^1.0.0" + } + }, + "@codemirror/lang-php": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-php/-/lang-php-6.0.1.tgz", + "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==", + "requires": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/php": "^1.0.0" + } + }, + "@codemirror/lang-python": { + "version": "6.1.7", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-python/-/lang-python-6.1.7.tgz", + "integrity": "sha512-mZnFTsL4lW5p9ch8uKNKeRU3xGGxr1QpESLilfON2E3fQzOa/OygEMkaDvERvXDJWJA9U9oN/D4w0ZuUzNO4+g==", + "requires": { + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.8.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.1", + "@lezer/python": "^1.1.4" + } + }, + "@codemirror/lang-rust": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", + "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/rust": "^1.0.0" + } + }, + "@codemirror/lang-sass": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", + "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", + "requires": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/sass": "^1.0.0" + } + }, + "@codemirror/lang-sql": { + "version": "6.8.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz", + "integrity": "sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@codemirror/lang-vue": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz", + "integrity": "sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==", + "requires": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "@codemirror/lang-wast": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz", + "integrity": "sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==", + "requires": { + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@codemirror/lang-xml": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz", + "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/xml": "^1.0.0" + } + }, + "@codemirror/lang-yaml": { + "version": "6.1.2", + "resolved": "https://registry.npmmirror.com/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz", + "integrity": "sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.2.0", + "@lezer/lr": "^1.0.0", + "@lezer/yaml": "^1.0.0" + } + }, + "@codemirror/language": { + "version": "6.10.8", + "resolved": "https://registry.npmmirror.com/@codemirror/language/-/language-6.10.8.tgz", + "integrity": "sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "@codemirror/language-data": { + "version": "6.5.1", + "resolved": "https://registry.npmmirror.com/@codemirror/language-data/-/language-data-6.5.1.tgz", + "integrity": "sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==", + "requires": { + "@codemirror/lang-angular": "^0.1.0", + "@codemirror/lang-cpp": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-go": "^6.0.0", + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-java": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/lang-json": "^6.0.0", + "@codemirror/lang-less": "^6.0.0", + "@codemirror/lang-liquid": "^6.0.0", + "@codemirror/lang-markdown": "^6.0.0", + "@codemirror/lang-php": "^6.0.0", + "@codemirror/lang-python": "^6.0.0", + "@codemirror/lang-rust": "^6.0.0", + "@codemirror/lang-sass": "^6.0.0", + "@codemirror/lang-sql": "^6.0.0", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/lang-wast": "^6.0.0", + "@codemirror/lang-xml": "^6.0.0", + "@codemirror/lang-yaml": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/legacy-modes": "^6.4.0" + } + }, + "@codemirror/legacy-modes": { + "version": "6.4.3", + "resolved": "https://registry.npmmirror.com/@codemirror/legacy-modes/-/legacy-modes-6.4.3.tgz", + "integrity": "sha512-s1g+q4bil8Cs4O+ueIiKIhz9MQOGcRyxJglma8BYIWc/oEJLo13S3LYSWKaqhKwXGgt1GgZ66hCploHZD9Sstw==", + "requires": { + "@codemirror/language": "^6.0.0" + } + }, + "@codemirror/lint": { + "version": "6.8.4", + "resolved": "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz", + "integrity": "sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.35.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/search": { + "version": "6.5.10", + "resolved": "https://registry.npmmirror.com/@codemirror/search/-/search-6.5.10.tgz", + "integrity": "sha512-RMdPdmsrUf53pb2VwflKGHEe1XVM07hI7vV2ntgw1dmqhimpatSJKva4VA9h4TLUDOD4EIF02201oZurpnEFsg==", + "requires": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "@codemirror/state": { + "version": "6.5.2", + "resolved": "https://registry.npmmirror.com/@codemirror/state/-/state-6.5.2.tgz", + "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", + "requires": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "@codemirror/view": { + "version": "6.36.4", + "resolved": "https://registry.npmmirror.com/@codemirror/view/-/view-6.36.4.tgz", + "integrity": "sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA==", + "requires": { + "@codemirror/state": "^6.5.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, + "@ctrl/tinycolor": { + "version": "3.4.1", + "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz", + "integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==" + }, + "@esbuild/linux-loong64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz", + "integrity": "sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.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" + } + }, + "@fast-csv/format": { + "version": "4.3.5", + "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz", + "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isequal": "^4.5.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + } + } + }, + "@fast-csv/parse": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz", + "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==", + "requires": { + "@types/node": "^14.0.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.groupby": "^4.6.0", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0", + "lodash.isundefined": "^3.0.1", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "@types/node": { + "version": "14.18.48", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz", + "integrity": "sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg==" + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@icon-park/svg": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@icon-park/svg/-/svg-1.4.2.tgz", + "integrity": "sha512-1X0DA+1e0R0liYvw+Nb2BQmF1oEo/wS3o/JYkQYifPJXCGYij2vN9sJf/NNhbzDsJWTg4W2bbzZjJvC7Q4w4oQ==" + }, + "@intlify/core-base": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz", + "integrity": "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==", + "requires": { + "@intlify/devtools-if": "9.2.2", + "@intlify/message-compiler": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2" + } + }, + "@intlify/devtools-if": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz", + "integrity": "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==", + "requires": { + "@intlify/shared": "9.2.2" + } + }, + "@intlify/message-compiler": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz", + "integrity": "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==", + "requires": { + "@intlify/shared": "9.2.2", + "source-map": "0.6.1" + } + }, + "@intlify/shared": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz", + "integrity": "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==" + }, + "@intlify/vue-devtools": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz", + "integrity": "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==", + "requires": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2" + } + }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@lezer/common": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz", + "integrity": "sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==" + }, + "@lezer/cpp": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/@lezer/cpp/-/cpp-1.1.2.tgz", + "integrity": "sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/css": { + "version": "1.1.10", + "resolved": "https://registry.npmmirror.com/@lezer/css/-/css-1.1.10.tgz", + "integrity": "sha512-V5/89eDapjeAkWPBpWEfQjZ1Hag3aYUUJOL8213X0dFRuXJ4BXa5NKl9USzOnaLod4AOpmVCkduir2oKwZYZtg==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/go": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@lezer/go/-/go-1.0.0.tgz", + "integrity": "sha512-co9JfT3QqX1YkrMmourYw2Z8meGC50Ko4d54QEcQbEYpvdUvN4yb0NBZdn/9ertgvjsySxHsKzH3lbm3vqJ4Jw==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/highlight": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz", + "integrity": "sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/html": { + "version": "1.3.10", + "resolved": "https://registry.npmmirror.com/@lezer/html/-/html-1.3.10.tgz", + "integrity": "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/java": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/@lezer/java/-/java-1.1.3.tgz", + "integrity": "sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/javascript": { + "version": "1.4.21", + "resolved": "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.21.tgz", + "integrity": "sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "@lezer/json": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@lezer/json/-/json-1.0.3.tgz", + "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/lr": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz", + "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", + "requires": { + "@lezer/common": "^1.0.0" + } + }, + "@lezer/markdown": { + "version": "1.4.2", + "resolved": "https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.4.2.tgz", + "integrity": "sha512-iYewCigG/517D0xJPQd7RGaCjZAFwROiH8T9h7OTtz0bRVtkxzFhGBFJ9JGKgBBs4uuo1cvxzyQ5iKhDLMcLUQ==", + "requires": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "@lezer/php": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/php/-/php-1.0.2.tgz", + "integrity": "sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.1.0" + } + }, + "@lezer/python": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/@lezer/python/-/python-1.1.15.tgz", + "integrity": "sha512-aVQ43m2zk4FZYedCqL0KHPEUsqZOrmAvRhkhHlVPnDD1HODDyyQv5BRIuod4DadkgBEZd53vQOtXTonNbEgjrQ==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/rust": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@lezer/rust/-/rust-1.0.2.tgz", + "integrity": "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/sass": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@lezer/sass/-/sass-1.0.7.tgz", + "integrity": "sha512-8HLlOkuX/SMHOggI2DAsXUw38TuURe+3eQ5hiuk9QmYOUyC55B1dYEIMkav5A4IELVaW4e1T4P9WRiI5ka4mdw==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/xml": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@lezer/xml/-/xml-1.0.6.tgz", + "integrity": "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "@lezer/yaml": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/@lezer/yaml/-/yaml-1.0.3.tgz", + "integrity": "sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==", + "requires": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.4.0" + } + }, + "@ljharb/resumer": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/@ljharb/resumer/-/resumer-0.0.1.tgz", + "integrity": "sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==", + "requires": { + "@ljharb/through": "^2.3.9" + } + }, + "@ljharb/through": { + "version": "2.3.13", + "resolved": "https://registry.npmmirror.com/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "requires": { + "call-bind": "^1.0.7" + } + }, + "@marijn/find-cluster-break": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", + "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==" + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, + "@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, + "@simonwep/pickr": { + "version": "1.8.2", + "resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz", + "integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==", + "requires": { + "core-js": "^3.15.1", + "nanopop": "^2.1.0" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" + }, + "@types/codemirror": { + "version": "5.60.5", + "resolved": "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz", + "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==", + "requires": { + "@types/tern": "*" + } + }, + "@types/debug": { + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/@types/debug/-/debug-4.1.7.tgz", + "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "requires": { + "@types/ms": "*" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "@types/file-saver": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz", + "integrity": "sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==", + "dev": true + }, + "@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmmirror.com/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "requires": { + "@types/unist": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==" + }, + "@types/lodash": { + "version": "4.14.184", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz", + "integrity": "sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q==" + }, + "@types/lodash-es": { + "version": "4.17.6", + "resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz", + "integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==", + "requires": { + "@types/lodash": "*" + } + }, + "@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmmirror.com/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "requires": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + }, + "dependencies": { + "@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==" + } + } + }, + "@types/mdast": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/@types/mdast/-/mdast-3.0.10.tgz", + "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "requires": { + "@types/unist": "*" + } + }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + }, + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + }, + "@types/node": { + "version": "18.7.14", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.7.14.tgz", + "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", + "dev": true + }, + "@types/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==", + "dev": true + }, + "@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + }, + "@types/qrcode": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", + "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sortablejs": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.13.0.tgz", + "integrity": "sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==", + "dev": true + }, + "@types/tern": { + "version": "0.23.4", + "resolved": "https://registry.npmmirror.com/@types/tern/-/tern-0.23.4.tgz", + "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==", + "requires": { + "@types/estree": "*" + } + }, + "@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz", + "integrity": "sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/type-utils": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz", + "integrity": "sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz", + "integrity": "sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz", + "integrity": "sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.36.1", + "@typescript-eslint/utils": "5.36.1", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.36.1.tgz", + "integrity": "sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz", + "integrity": "sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/visitor-keys": "5.36.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.36.1.tgz", + "integrity": "sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.1", + "@typescript-eslint/types": "5.36.1", + "@typescript-eslint/typescript-estree": "5.36.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.36.1", + "resolved": "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz", + "integrity": "sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.1", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@vavt/util": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@vavt/util/-/util-2.1.0.tgz", + "integrity": "sha512-YIfAvArSFVXmWvoF+DEGD0FhkhVNcCtVWWkfYtj76eSrwHh/wuEEFhiEubg1XLNM3tChO8FH8xJCT/hnizjgFQ==" + }, + "@vitejs/plugin-legacy": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-2.0.1.tgz", + "integrity": "sha512-kKC56rfsXwebApzyuZqdQlGmqTyH1ugy0l0rY58gx5OXzq4/t5/DCqGUoz53Db51OqfjRqsHfqmvq9or6w9k/Q==", + "dev": true, + "requires": { + "@babel/standalone": "^7.18.12", + "core-js": "^3.24.1", + "magic-string": "^0.26.2", + "regenerator-runtime": "^0.13.9", + "systemjs": "^6.12.1" + } + }, + "@vitejs/plugin-vue": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.0.3.tgz", + "integrity": "sha512-U4zNBlz9mg+TA+i+5QPc3N5lQvdUXENZLO2h0Wdzp56gI1MWhqJOv+6R+d4kOzoaSSq6TnGPBdZAXKOe4lXy6g==", + "dev": true, + "requires": {} + }, + "@volar/code-gen": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.40.5.tgz", + "integrity": "sha512-M3D/2pmvjyGYalmldcyvTqVXhUnDxMYA2HtThmdQ8pVsTW4BVVzqrjnJAvHKNfM/zU0XA+fzIh1tfJ4Cssoe5w==", + "dev": true, + "requires": { + "@volar/source-map": "0.40.5" + } + }, + "@volar/source-map": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.40.5.tgz", + "integrity": "sha512-HNO+svbNHXmJtDs82muusI1ErWnMpmNPDpz0Hmex5XDEa+q3NlWFXPMAxCflg294fkCfdOizyCxXYqh3UKz3VA==", + "dev": true, + "requires": { + "@vue/reactivity": "3.2.37" + }, + "dependencies": { + "@vue/reactivity": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz", + "integrity": "sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A==", + "dev": true, + "requires": { + "@vue/shared": "3.2.37" + } + }, + "@vue/shared": { + "version": "3.2.37", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz", + "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", + "dev": true + } + } + }, + "@volar/typescript-faster": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/typescript-faster/-/typescript-faster-0.40.5.tgz", + "integrity": "sha512-DfIVkQawbesz+8ghbYS1NnlIQjfMIDsSJY/bumIJk98M/tM/2Fykhiil3GDfTr6ju/fAqDpfF8VF8XpYDWPc7w==", + "dev": true, + "requires": { + "semver": "^7.3.7" + } + }, + "@volar/vue-language-core": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-0.40.5.tgz", + "integrity": "sha512-4EpMQdLaORWg3EBZtgqzgkNRm1+qvyvCyLbnWHT2SPkUuHObPcbyA3giXbOEnPB0pnQpr2nVTv+tRLWvksXdyA==", + "dev": true, + "requires": { + "@volar/code-gen": "0.40.5", + "@volar/source-map": "0.40.5", + "@vue/compiler-core": "^3.2.37", + "@vue/compiler-dom": "^3.2.37", + "@vue/compiler-sfc": "^3.2.37", + "@vue/reactivity": "^3.2.37", + "@vue/shared": "^3.2.37" + } + }, + "@volar/vue-typescript": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.40.5.tgz", + "integrity": "sha512-6OHJ87e8A3Z0xuWmBg72X5aYbW/EatogB168827j/OL371eiy3dExqa5y2+eJuWYjDiRJOmlHzhUElN+OEQRZQ==", + "dev": true, + "requires": { + "@volar/code-gen": "0.40.5", + "@volar/typescript-faster": "0.40.5", + "@volar/vue-language-core": "0.40.5" + } + }, + "@vue/compiler-core": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.3.tgz", + "integrity": "sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==", + "requires": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.3", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "@vue/compiler-dom": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz", + "integrity": "sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==", + "requires": { + "@vue/compiler-core": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "@vue/compiler-sfc": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.3.tgz", + "integrity": "sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==", + "requires": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.3", + "@vue/compiler-dom": "3.5.3", + "@vue/compiler-ssr": "3.5.3", + "@vue/shared": "3.5.3", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.44", + "source-map-js": "^1.2.0" + }, + "dependencies": { + "magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "requires": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + } + } + }, + "@vue/compiler-ssr": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.3.tgz", + "integrity": "sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==", + "requires": { + "@vue/compiler-dom": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "@vue/devtools-api": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz", + "integrity": "sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==" + }, + "@vue/reactivity": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.3.tgz", + "integrity": "sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==", + "requires": { + "@vue/shared": "3.5.3" + } + }, + "@vue/runtime-core": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.3.tgz", + "integrity": "sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw==", + "requires": { + "@vue/reactivity": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "@vue/runtime-dom": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.3.tgz", + "integrity": "sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg==", + "requires": { + "@vue/reactivity": "3.5.3", + "@vue/runtime-core": "3.5.3", + "@vue/shared": "3.5.3", + "csstype": "^3.1.3" + } + }, + "@vue/server-renderer": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.3.tgz", + "integrity": "sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q==", + "requires": { + "@vue/compiler-ssr": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "@vue/shared": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.3.tgz", + "integrity": "sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==" + }, + "@wecom/jssdk": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz", + "integrity": "sha512-lfqMeLrINX2JaYqFuWfdfSJbz8VEqcaGqeodtphpI/Vk690pa2nEnBxtiJndxa+7pE4ZKucTMkYbN5ET8iksYg==" + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "address": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==" + }, + "adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==" + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ali-oss": { + "version": "6.18.1", + "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.18.1.tgz", + "integrity": "sha512-VsptD0jX3JNc3AjiLs5a9oTP0ArfT9IYhBuY6G/SpuY6LMuiwfqywrAosY65BlHKODAdYy8VWL6kmt0mO7BUGA==", + "requires": { + "address": "^1.2.2", + "agentkeepalive": "^3.4.1", + "bowser": "^1.6.0", + "copy-to": "^2.0.1", + "dateformat": "^2.0.0", + "debug": "^4.3.4", + "destroy": "^1.0.4", + "end-or-error": "^1.0.1", + "get-ready": "^1.0.0", + "humanize-ms": "^1.2.0", + "is-type-of": "^1.4.0", + "js-base64": "^2.5.2", + "jstoxml": "^2.0.0", + "merge-descriptors": "^1.0.1", + "mime": "^2.4.5", + "platform": "^1.3.1", + "pump": "^3.0.0", + "sdk-base": "^2.0.1", + "stream-http": "2.8.2", + "stream-wormhole": "^1.0.4", + "urllib": "2.41.0", + "utility": "^1.18.0", + "xml2js": "^0.6.2" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + } + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "ant-design-vue": { + "version": "3.2.11", + "resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-3.2.11.tgz", + "integrity": "sha512-QKCAcOY5EJF0PepiVGA4X5PzUetYUvG5qALmA+2TON40pc2+brOEiVTwr3kjF9N+f7q4MpyiLPu4pIErwoajOQ==", + "requires": { + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@babel/runtime": "^7.10.5", + "@ctrl/tinycolor": "^3.4.0", + "@simonwep/pickr": "~1.8.0", + "array-tree-filter": "^2.1.0", + "async-validator": "^4.0.0", + "dayjs": "^1.10.5", + "dom-align": "^1.12.1", + "dom-scroll-into-view": "^2.0.0", + "lodash": "^4.17.21", + "lodash-es": "^4.17.15", + "resize-observer-polyfill": "^1.5.1", + "scroll-into-view-if-needed": "^2.2.25", + "shallow-equal": "^1.0.0", + "vue-types": "^3.0.0", + "warning": "^4.0.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "requires": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + } + }, + "archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "requires": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, + "array-tree-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz", + "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "dev": true, + "requires": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, + "axios": { + "version": "0.27.2", + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "requires": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==" + }, + "binary": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "requires": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + } + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "bowser": { + "version": "1.9.4", + "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz", + "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.23.2", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-indexof-polyfill": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", + "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" + }, + "buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==" + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "bytemd": { + "version": "1.17.2", + "resolved": "https://registry.npmmirror.com/bytemd/-/bytemd-1.17.2.tgz", + "integrity": "sha512-t8TljTgRU1+OPPbxBPjvnvh8Nti9FAirmKQhgSDYMQnXs9SGw6tTRJy3f8ZZoD+rnYt8hyf035ADDfU1/bTJhQ==", + "requires": { + "@icon-park/svg": "^1.4.2", + "@popperjs/core": "^2.11.5", + "@types/codemirror": "^5.60.5", + "@types/hast": "^2.3.4", + "@types/lodash-es": "^4.17.6", + "@types/mdast": "^3.0.10", + "codemirror-ssr": "^0.65.0", + "hast-util-sanitize": "^4.0.0", + "lodash-es": "^4.17.21", + "rehype-raw": "^6.1.1", + "rehype-sanitize": "^5.0.1", + "rehype-stringify": "^9.0.3", + "remark-parse": "^10.0.1", + "remark-rehype": "^10.1.0", + "select-files": "^1.0.1", + "tippy.js": "^6.3.7", + "unified": "^10.1.2", + "unist-util-visit": "^4.1.0", + "vfile": "^5.3.4", + "word-count": "^0.2.2" + } + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==" + }, + "camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001702", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", + "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", + "dev": true + }, + "ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, + "cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "requires": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + } + }, + "chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "requires": { + "traverse": ">=0.3.0 <0.4" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" + }, + "character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" + }, + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "requires": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "codemirror-ssr": { + "version": "0.65.0", + "resolved": "https://registry.npmmirror.com/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz", + "integrity": "sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g==", + "requires": {} + }, + "codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==" + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "requires": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + } + }, + "compute-scroll-into-view": { + "version": "1.0.17", + "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz", + "integrity": "sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" + }, + "contour_plot": { + "version": "0.0.1", + "resolved": "https://registry.npmmirror.com/contour_plot/-/contour_plot-0.0.1.tgz", + "integrity": "sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==" + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-to": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz", + "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==" + }, + "copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "requires": { + "toggle-selection": "^1.0.6" + } + }, + "core-js": { + "version": "3.25.0", + "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.25.0.tgz", + "integrity": "sha512-CVU1xvJEfJGhyCpBrzzzU1kjCfgsGUxhEvwUV2e/cOedYWHdmluamx+knDnmhqALddMG16fZvIqvs9aijsHHaA==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "countup.js": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/countup.js/-/countup.js-2.3.2.tgz", + "integrity": "sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q==" + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" + }, + "crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "requires": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + } + }, + "crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmmirror.com/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==" + }, + "csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + } + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "danmu.js": { + "version": "0.5.10", + "resolved": "https://registry.npmmirror.com/danmu.js/-/danmu.js-0.5.10.tgz", + "integrity": "sha512-zLpSd5Yi+fxVVd0GHjrf5lZA45KKpbvc4Q8BbSVO3OdmCBkoB2vlDCGnVn18cnKpTNqi8Soy7AnzUw1YcqtzUA==", + "requires": { + "event-emitter": "^0.3.5" + } + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "dateformat": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz", + "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==" + }, + "dayjs": { + "version": "1.11.5", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" + }, + "decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "requires": { + "character-entities": "^2.0.0" + } + }, + "deep-equal": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", + "requires": { + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.5.1" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-user-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz", + "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==", + "requires": { + "os-name": "~1.0.3" + } + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "requires": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "defined": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" + }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==" + }, + "digest-header": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz", + "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==" + }, + "dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "docx": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/docx/-/docx-9.5.0.tgz", + "integrity": "sha512-WZggg9vVujFcTyyzfIVBBIxlCk51QvhLWl87wtI2zuBdz8C8C0mpRhEVwA2DZd7dXyY0AVejcEVDT9vn7Xm9FA==", + "requires": { + "@types/node": "^22.7.5", + "hash.js": "^1.1.7", + "jszip": "^3.10.1", + "nanoid": "^5.1.3", + "xml": "^1.0.1", + "xml-js": "^1.6.8" + }, + "dependencies": { + "@types/node": { + "version": "22.15.29", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz", + "integrity": "sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==", + "requires": { + "undici-types": "~6.21.0" + } + }, + "nanoid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", + "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==" + } + } + }, + "dom-align": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.3.tgz", + "integrity": "sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==" + }, + "dom-scroll-into-view": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz", + "integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==" + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "requires": { + "minimatch": "^3.0.4" + } + }, + "downloadjs": { + "version": "1.4.7", + "resolved": "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz", + "integrity": "sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==" + }, + "draggabilly": { + "version": "2.4.1", + "resolved": "https://registry.npmmirror.com/draggabilly/-/draggabilly-2.4.1.tgz", + "integrity": "sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A==", + "requires": { + "get-size": "^2.0.2", + "unidragger": "^2.4.0" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "requires": { + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "echarts": { + "version": "5.3.3", + "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.3.3.tgz", + "integrity": "sha512-BRw2serInRwO5SIwRviZ6Xgm5Lb7irgz+sLiFMmy/HOaf4SQ+7oYqxKzRHAKp4xHQ05AuHw1xvoQWJjDQq/FGw==", + "requires": { + "tslib": "2.3.0", + "zrender": "5.3.2" + } + }, + "echarts-wordcloud": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz", + "integrity": "sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g==", + "requires": {} + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "ele-admin-pro": { + "version": "1.10.1", + "resolved": "https://registry.npmmirror.com/ele-admin-pro/-/ele-admin-pro-1.10.1.tgz", + "integrity": "sha512-EiNJcfGGA/4F20cuHlz7bxr2UJ1RdQGM3+MA7dsiNOp7DxLpP3dOo8wgg+MKyMUZUM2dcpp+Dmz94Q5VDpr44Q==", + "requires": {} + }, + "electron-to-chromium": { + "version": "1.4.828", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz", + "integrity": "sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw==", + "dev": true + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "end-or-error": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz", + "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==" + }, + "engine.io-client": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.1.tgz", + "integrity": "sha512-hE5wKXH8Ru4L19MbM1GgYV/2Qo54JSMh1rlJbfpa40bEWkCKNo3ol2eOtGmowcr+ysgbI7+SGL+by42Q3pt/Ng==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.1.0", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "engine.io-parser": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz", + "integrity": "sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w==" + }, + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.62", + "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz", + "integrity": "sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA==", + "dev": true, + "requires": { + "@esbuild/linux-loong64": "0.14.54", + "esbuild-android-64": "0.14.54", + "esbuild-android-arm64": "0.14.54", + "esbuild-darwin-64": "0.14.54", + "esbuild-darwin-arm64": "0.14.54", + "esbuild-freebsd-64": "0.14.54", + "esbuild-freebsd-arm64": "0.14.54", + "esbuild-linux-32": "0.14.54", + "esbuild-linux-64": "0.14.54", + "esbuild-linux-arm": "0.14.54", + "esbuild-linux-arm64": "0.14.54", + "esbuild-linux-mips64le": "0.14.54", + "esbuild-linux-ppc64le": "0.14.54", + "esbuild-linux-riscv64": "0.14.54", + "esbuild-linux-s390x": "0.14.54", + "esbuild-netbsd-64": "0.14.54", + "esbuild-openbsd-64": "0.14.54", + "esbuild-sunos-64": "0.14.54", + "esbuild-windows-32": "0.14.54", + "esbuild-windows-64": "0.14.54", + "esbuild-windows-arm64": "0.14.54" + } + }, + "esbuild-android-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz", + "integrity": "sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz", + "integrity": "sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz", + "integrity": "sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz", + "integrity": "sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz", + "integrity": "sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz", + "integrity": "sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz", + "integrity": "sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz", + "integrity": "sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz", + "integrity": "sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz", + "integrity": "sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz", + "integrity": "sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz", + "integrity": "sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz", + "integrity": "sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz", + "integrity": "sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz", + "integrity": "sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz", + "integrity": "sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz", + "integrity": "sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz", + "integrity": "sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz", + "integrity": "sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.54", + "resolved": "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz", + "integrity": "sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "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.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "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.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-define-config": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.7.0.tgz", + "integrity": "sha512-13zk8z8eKO4tpPMvAGV0sa6ok0XuMeu7Zhcizu2bLwcLy1fbNt7/h8PU1wbp9IoIgQETggZJozU0nPXUXOao2g==", + "dev": true + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-vue": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.4.0.tgz", + "integrity": "sha512-Nzz2QIJ8FG+rtJaqT/7/ru5ie2XgT9KCudkbN0y3uFYhQ41nuHEaboLAiqwMcK006hZPQv/rVMRhUIwEGhIvfQ==", + "dev": true, + "requires": { + "eslint-utils": "^3.0.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.0.1", + "postcss-selector-parser": "^6.0.9", + "semver": "^7.3.5", + "vue-eslint-parser": "^9.0.1", + "xml-name-validator": "^4.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmmirror.com/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/esprima/-/esprima-1.2.5.tgz", + "integrity": "sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==" + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "ev-emitter": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/ev-emitter/-/ev-emitter-1.1.1.tgz", + "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "exceljs": { + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz", + "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==", + "requires": { + "archiver": "^5.0.0", + "dayjs": "^1.8.34", + "fast-csv": "^4.3.1", + "jszip": "^3.5.0", + "readable-stream": "^3.6.0", + "saxes": "^5.0.1", + "tmp": "^0.2.0", + "unzipper": "^0.10.11", + "uuid": "^8.3.0" + } + }, + "ext": { + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "resolved": "https://registry.npmmirror.com/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fast-csv": { + "version": "4.3.6", + "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz", + "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==", + "requires": { + "@fast-csv/format": "4.3.5", + "@fast-csv/parse": "4.3.6" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fault": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "requires": { + "format": "^0.2.0" + } + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "flru": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/flru/-/flru-1.0.2.tgz", + "integrity": "sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==" + }, + "fmin": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/fmin/-/fmin-0.0.2.tgz", + "integrity": "sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==", + "requires": { + "contour_plot": "^0.0.1", + "json2module": "^0.0.3", + "rollup": "^0.25.8", + "tape": "^4.5.1", + "uglify-js": "^2.6.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "requires": { + "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" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "rollup": { + "version": "0.25.8", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-0.25.8.tgz", + "integrity": "sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==", + "requires": { + "chalk": "^1.1.1", + "minimist": "^1.2.0", + "source-map-support": "^0.3.2" + } + }, + "source-map": { + "version": "0.1.32", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.1.32.tgz", + "integrity": "sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==", + "requires": { + "amdefine": ">=0.0.4" + } + }, + "source-map-support": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.3.3.tgz", + "integrity": "sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==", + "requires": { + "source-map": "0.1.32" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" + } + } + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==" + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, + "foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==" + }, + "formstream": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz", + "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==", + "requires": { + "destroy": "^1.0.4", + "mime": "^2.5.2", + "pause-stream": "~0.0.11" + }, + "dependencies": { + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + } + } + }, + "frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==" + }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true + }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "generate-source-map": { + "version": "0.0.5", + "resolved": "https://registry.npmmirror.com/generate-source-map/-/generate-source-map-0.0.5.tgz", + "integrity": "sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg==", + "requires": { + "esprima": "~1.2.2", + "source-map": "~0.1.34" + }, + "dependencies": { + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-ready": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz", + "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==" + }, + "get-size": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/get-size/-/get-size-2.0.3.tgz", + "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" + }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "github-markdown-css": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/github-markdown-css/-/github-markdown-css-5.1.0.tgz", + "integrity": "sha512-QLtORwHHtUHhPMHu7i4GKfP6Vx5CWZn+NKQXe+cBhslY1HEt0CTEkP4d/vSROKV0iIJSpl4UtlQ16AD8C6lMug==" + }, + "gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "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" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "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" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "hast-to-hyperscript": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/hast-to-hyperscript/-/hast-to-hyperscript-10.0.1.tgz", + "integrity": "sha512-dhIVGoKCQVewFi+vz3Vt567E4ejMppS1haBRL6TEmeLeJVB1i/FJIIg/e6s1Bwn0g5qtYojHEKvyGA+OZuyifw==", + "requires": { + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^5.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-from-parse5": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz", + "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + } + }, + "hast-util-is-element": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } + }, + "hast-util-parse-selector": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz", + "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==", + "requires": { + "@types/hast": "^2.0.0" + } + }, + "hast-util-raw": { + "version": "7.2.2", + "resolved": "https://registry.npmmirror.com/hast-util-raw/-/hast-util-raw-7.2.2.tgz", + "integrity": "sha512-0x3BhhdlBcqRIKyc095lBSDvmQNMY3Eulj2PLsT5XCyKYrxssI5yr3P4Kv/PBo1s/DMkZy2voGkMXECnFCZRLQ==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "hast-util-sanitize": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", + "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", + "requires": { + "@types/hast": "^2.0.0" + } + }, + "hast-util-to-html": { + "version": "8.0.3", + "resolved": "https://registry.npmmirror.com/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", + "requires": { + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" + } + }, + "hast-util-to-parse5": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-to-parse5/-/hast-util-to-parse5-7.0.0.tgz", + "integrity": "sha512-YHiS6aTaZ3N0Q3nxaY/Tj98D6kM8QX5Q8xqgg8G45zR7PvWnPGPP0vcKCgb/moIydEJ/QWczVrX0JODCVeoV7A==", + "requires": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-to-hyperscript": "^10.0.0", + "property-information": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + } + }, + "hast-util-to-text": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz", + "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==", + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "unist-util-find-after": "^4.0.0" + } + }, + "hast-util-whitespace": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" + }, + "hastscript": { + "version": "7.0.2", + "resolved": "https://registry.npmmirror.com/hastscript/-/hastscript-7.0.2.tgz", + "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==", + "requires": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + } + }, + "highlight.js": { + "version": "11.8.0", + "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==" + }, + "html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, + "ip": { + "version": "1.1.8", + "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" + }, + "is-class-hotfix": { + "version": "0.0.6", + "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz", + "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==" + }, + "is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "requires": { + "hasown": "^2.0.2" + } + }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "requires": { + "is-typed-array": "^1.1.13" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" + }, + "is-plain-object": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz", + "integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==" + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "requires": { + "call-bind": "^1.0.7" + } + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-type-of": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz", + "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==", + "requires": { + "core-util-is": "^1.0.2", + "is-class-hotfix": "~0.0.6", + "isstream": "~0.1.2" + } + }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "requires": { + "which-typed-array": "^1.1.14" + } + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" + }, + "js-cookie": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz", + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, + "js-md5": { + "version": "0.7.3", + "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz", + "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbarcode": { + "version": "3.11.5", + "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.5.tgz", + "integrity": "sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json2module": { + "version": "0.0.3", + "resolved": "https://registry.npmmirror.com/json2module/-/json2module-0.0.3.tgz", + "integrity": "sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==", + "requires": { + "rw": "^1.3.2" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jstoxml": { + "version": "2.2.9", + "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz", + "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==" + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "requires": { + "is-buffer": "^1.1.5" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + } + } + }, + "kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==" + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==" + }, + "lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "requires": { + "readable-stream": "^2.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmmirror.com/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "requires": { + "uc.micro": "^2.0.0" + } + }, + "listenercount": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz", + "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==" + }, + "local-pkg": { + "version": "0.4.2", + "resolved": "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz", + "integrity": "sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + }, + "lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==" + }, + "lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" + }, + "lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==" + }, + "lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isundefined": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", + "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==" + }, + "longest-streak": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.0.1.tgz", + "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==" + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowlight": { + "version": "2.9.0", + "resolved": "https://registry.npmmirror.com/lowlight/-/lowlight-2.9.0.tgz", + "integrity": "sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==", + "requires": { + "@types/hast": "^2.0.0", + "fault": "^2.0.0", + "highlight.js": "~11.8.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "lucide-vue-next": { + "version": "0.453.0", + "resolved": "https://registry.npmmirror.com/lucide-vue-next/-/lucide-vue-next-0.453.0.tgz", + "integrity": "sha512-5zmv83vxAs9SVoe22veDBi8Dw0Fh2F+oTngWgKnKOkrZVbZjceXLQ3tescV2boB0zlaf9R2Sd9RuUP2766xvsQ==", + "requires": {} + }, + "magic-string": { + "version": "0.26.3", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.3.tgz", + "integrity": "sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + } + } + }, + "markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "requires": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "dependencies": { + "mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + } + } + }, + "markdown-it-image-figures": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/markdown-it-image-figures/-/markdown-it-image-figures-2.1.1.tgz", + "integrity": "sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g==", + "requires": {} + }, + "markdown-it-sub": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/markdown-it-sub/-/markdown-it-sub-2.0.0.tgz", + "integrity": "sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==" + }, + "markdown-it-sup": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/markdown-it-sup/-/markdown-it-sup-2.0.0.tgz", + "integrity": "sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==" + }, + "markdown-table": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.2.tgz", + "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==" + }, + "md-editor-v3": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/md-editor-v3/-/md-editor-v3-5.3.2.tgz", + "integrity": "sha512-O3gV4X3+x8QZava2pzJfVb06dqO1Y1UrmUpHS0E7htblqq0MQ67yrLLkTkVYIxF04Tj8Ub67pc8fypR3uT8FUA==", + "requires": { + "@codemirror/lang-markdown": "^6.3.0", + "@codemirror/language-data": "^6.5.1", + "@types/markdown-it": "^14.0.1", + "@vavt/util": "^2.1.0", + "codemirror": "^6.0.1", + "copy-to-clipboard": "^3.3.3", + "lru-cache": "^11.0.1", + "lucide-vue-next": "^0.453.0", + "markdown-it": "^14.0.0", + "markdown-it-image-figures": "^2.1.1", + "markdown-it-sub": "^2.0.0", + "markdown-it-sup": "^2.0.0", + "medium-zoom": "^1.1.0", + "xss": "^1.0.15" + }, + "dependencies": { + "lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==" + } + } + }, + "mdast-util-definitions": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", + "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "mdast-util-find-and-replace": { + "version": "2.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", + "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", + "requires": { + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==" + } + } + }, + "mdast-util-from-markdown": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", + "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + } + }, + "mdast-util-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", + "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", + "requires": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-gfm-autolink-literal": "^1.0.0", + "mdast-util-gfm-footnote": "^1.0.0", + "mdast-util-gfm-strikethrough": "^1.0.0", + "mdast-util-gfm-table": "^1.0.0", + "mdast-util-gfm-task-list-item": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + } + }, + "mdast-util-gfm-autolink-literal": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", + "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", + "requires": { + "@types/mdast": "^3.0.0", + "ccount": "^2.0.0", + "mdast-util-find-and-replace": "^2.0.0", + "micromark-util-character": "^1.0.0" + } + }, + "mdast-util-gfm-footnote": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", + "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0", + "micromark-util-normalize-identifier": "^1.0.0" + } + }, + "mdast-util-gfm-strikethrough": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", + "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-gfm-table": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.4.tgz", + "integrity": "sha512-aEuoPwZyP4iIMkf2cLWXxx3EQ6Bmh2yKy9MVCg4i6Sd3cX80dcLEfXO/V4ul3pGH9czBK4kp+FAl+ZHmSUt9/w==", + "requires": { + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-gfm-task-list-item": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", + "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-to-markdown": "^1.3.0" + } + }, + "mdast-util-to-hast": { + "version": "12.2.1", + "resolved": "https://registry.npmmirror.com/mdast-util-to-hast/-/mdast-util-to-hast-12.2.1.tgz", + "integrity": "sha512-dyindR2P7qOqXO1hQirZeGtVbiX7xlNQbw7gGaAwN4A1dh4+X8xU/JyYmRoyB8Fu1uPXzp7mlL5QwW7k+knvgA==", + "requires": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", + "mdurl": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "trim-lines": "^3.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "mdast-util-to-markdown": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", + "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + } + }, + "mdast-util-to-string": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", + "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==" + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "medium-zoom": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/medium-zoom/-/medium-zoom-1.1.0.tgz", + "integrity": "sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==" + }, + "merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromark": { + "version": "3.0.10", + "resolved": "https://registry.npmmirror.com/micromark/-/micromark-3.0.10.tgz", + "integrity": "sha512-ryTDy6UUunOXy2HPjelppgJ2sNfcPz1pLlMdA6Rz9jPzhLikWXv/irpWV/I2jd68Uhmny7hHxAlAhk4+vWggpg==", + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-core-commonmark": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", + "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", + "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", + "requires": { + "micromark-extension-gfm-autolink-literal": "^1.0.0", + "micromark-extension-gfm-footnote": "^1.0.0", + "micromark-extension-gfm-strikethrough": "^1.0.0", + "micromark-extension-gfm-table": "^1.0.0", + "micromark-extension-gfm-tagfilter": "^1.0.0", + "micromark-extension-gfm-task-list-item": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-extension-gfm-autolink-literal": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", + "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-footnote": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", + "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", + "requires": { + "micromark-core-commonmark": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-strikethrough": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", + "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-table": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", + "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-extension-gfm-tagfilter": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", + "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-extension-gfm-task-list-item": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", + "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-destination": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", + "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-label": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", + "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-space": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", + "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-factory-title": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", + "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-factory-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", + "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", + "requires": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-character": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-character/-/micromark-util-character-1.1.0.tgz", + "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", + "requires": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-chunked": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", + "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-classify-character": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", + "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-combine-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", + "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-decode-numeric-character-reference": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", + "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-decode-string": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", + "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", + "requires": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-encode": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", + "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==" + }, + "micromark-util-html-tag-name": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", + "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==" + }, + "micromark-util-normalize-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", + "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", + "requires": { + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-resolve-all": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", + "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", + "requires": { + "micromark-util-types": "^1.0.0" + } + }, + "micromark-util-sanitize-uri": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.0.0.tgz", + "integrity": "sha512-cCxvBKlmac4rxCGx6ejlIviRaMKZc0fWm5HdCHEeDWRSkn44l6NdYVRyU+0nT1XC72EQJMZV8IPHF+jTr56lAg==", + "requires": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "micromark-util-subtokenize": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", + "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", + "requires": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "micromark-util-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", + "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==" + }, + "micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "mock-property": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/mock-property/-/mock-property-1.0.3.tgz", + "integrity": "sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==", + "requires": { + "define-data-property": "^1.1.1", + "functions-have-names": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "hasown": "^2.0.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==" + }, + "nanopop": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz", + "integrity": "sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "needle": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz", + "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node-releases": { + "version": "2.0.17", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.17.tgz", + "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "os-name": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz", + "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==", + "requires": { + "osx-release": "^1.0.0", + "win-release": "^1.0.0" + } + }, + "osx-release": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz", + "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==", + "requires": { + "minimist": "^1.1.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + } + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "requires": { + "through": "~2.3" + } + }, + "pdfast": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/pdfast/-/pdfast-0.2.0.tgz", + "integrity": "sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==" + }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "pinia": { + "version": "2.0.21", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.21.tgz", + "integrity": "sha512-6ol04PtL29O0Z6JHI47O3JUSoyOJ7Og0rstXrHVMZSP4zAldsQBXJCNF0i/H7m8vp/Hjd/CSmuPl7C5QAwpeWQ==", + "requires": { + "@vue/devtools-api": "^6.2.1", + "vue-demi": "*" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, + "platform": { + "version": "1.3.6", + "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz", + "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" + }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, + "postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "requires": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + } + }, + "postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmmirror.com/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "requires": { + "camelcase-css": "^2.0.1" + } + }, + "postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "dependencies": { + "lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true + } + } + }, + "postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.11" + } + }, + "postcss-selector-parser": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" + }, + "qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "requires": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "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==" + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "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==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + } + } + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "requires": { + "quickselect": "^2.0.0" + } + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "requires": { + "minimatch": "^5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + }, + "regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "requires": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "rehype-highlight": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/rehype-highlight/-/rehype-highlight-6.0.0.tgz", + "integrity": "sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-to-text": "^3.0.0", + "lowlight": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit": "^4.0.0" + } + }, + "rehype-raw": { + "version": "6.1.1", + "resolved": "https://registry.npmmirror.com/rehype-raw/-/rehype-raw-6.1.1.tgz", + "integrity": "sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-raw": "^7.2.0", + "unified": "^10.0.0" + } + }, + "rehype-sanitize": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz", + "integrity": "sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-sanitize": "^4.0.0", + "unified": "^10.0.0" + } + }, + "rehype-stringify": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/rehype-stringify/-/rehype-stringify-9.0.3.tgz", + "integrity": "sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==", + "requires": { + "@types/hast": "^2.0.0", + "hast-util-to-html": "^8.0.0", + "unified": "^10.0.0" + } + }, + "remark-gfm": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/remark-gfm/-/remark-gfm-3.0.1.tgz", + "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-gfm": "^2.0.0", + "micromark-extension-gfm": "^2.0.0", + "unified": "^10.0.0" + } + }, + "remark-parse": { + "version": "10.0.1", + "resolved": "https://registry.npmmirror.com/remark-parse/-/remark-parse-10.0.1.tgz", + "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", + "requires": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + } + }, + "remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmmirror.com/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "requires": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "resize-detector": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/resize-detector/-/resize-detector-0.3.0.tgz", + "integrity": "sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==" + }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmmirror.com/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "requires": { + "align-text": "^0.1.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "rollup": { + "version": "2.77.3", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz", + "integrity": "sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-visualizer": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz", + "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==", + "dev": true, + "requires": { + "open": "^8.4.0", + "picomatch": "^4.0.2", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "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 + }, + "picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true + }, + "source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "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, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmmirror.com/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "requires": { + "mri": "^1.1.0" + } + }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, + "scroll-into-view-if-needed": { + "version": "2.2.29", + "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz", + "integrity": "sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==", + "requires": { + "compute-scroll-into-view": "^1.0.17" + } + }, + "sdk-base": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz", + "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==", + "requires": { + "get-ready": "~1.0.0" + } + }, + "select-files": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/select-files/-/select-files-1.0.1.tgz", + "integrity": "sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ==" + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "shallow-equal": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz", + "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "socket.io-client": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.1.tgz", + "integrity": "sha512-Qk3Xj8ekbnzKu3faejo4wk2MzXA029XppiXtTF/PkbTg+fcwaTw1PlDrTrrrU4mKoYC4dvlApOnSeyLCKwek2w==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.1", + "socket.io-parser": "~4.2.4" + } + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" + }, + "ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "requires": { + "frac": "~1.1.2" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==" + }, + "stream-http": { + "version": "2.8.2", + "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-wormhole": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz", + "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + } + }, + "stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "requires": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-mod": { + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/style-mod/-/style-mod-4.1.2.tgz", + "integrity": "sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==" + }, + "style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "requires": { + "inline-style-parser": "0.1.1" + } + }, + "sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmmirror.com/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "requires": { + "@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" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg-path-parser": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/svg-path-parser/-/svg-path-parser-1.1.0.tgz", + "integrity": "sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==" + }, + "systemjs": { + "version": "6.12.6", + "resolved": "https://registry.npmmirror.com/systemjs/-/systemjs-6.12.6.tgz", + "integrity": "sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw==", + "dev": true + }, + "tailwindcss": { + "version": "3.4.6", + "resolved": "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.6.tgz", + "integrity": "sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==", + "dev": true, + "requires": { + "@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.21.0", + "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" + } + }, + "tape": { + "version": "4.17.0", + "resolved": "https://registry.npmmirror.com/tape/-/tape-4.17.0.tgz", + "integrity": "sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==", + "requires": { + "@ljharb/resumer": "~0.0.1", + "@ljharb/through": "~2.3.9", + "call-bind": "~1.0.2", + "deep-equal": "~1.1.1", + "defined": "~1.0.1", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "glob": "~7.2.3", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.1.4", + "minimist": "~1.2.8", + "mock-property": "~1.0.0", + "object-inspect": "~1.12.3", + "resolve": "~1.22.6", + "string.prototype.trim": "~1.2.8" + }, + "dependencies": { + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" + } + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "terser": { + "version": "5.15.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "tinymce": { + "version": "5.10.5", + "resolved": "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.5.tgz", + "integrity": "sha512-nFKtLhmoRtExBxUfv06JlkbQWux5D+d115vxSRAqUmccZdrtpFvOIYwZmikvulLdM9pfEpvO0B+RQ2qFV/+R7w==" + }, + "tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmmirror.com/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "requires": { + "@popperjs/core": "^2.9.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" + }, + "traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==" + }, + "trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==" + }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==" + }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmmirror.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "tslib": { + "version": "2.3.0", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==" + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, + "typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "devOptional": true + }, + "uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==" + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "requires": { + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "optional": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + }, + "unescape": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz", + "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", + "requires": { + "extend-shallow": "^2.0.1" + } + }, + "unidragger": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unidragger/-/unidragger-2.4.0.tgz", + "integrity": "sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w==", + "requires": { + "unipointer": "^2.4.0" + } + }, + "unified": { + "version": "10.1.2", + "resolved": "https://registry.npmmirror.com/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "unipointer": { + "version": "2.4.0", + "resolved": "https://registry.npmmirror.com/unipointer/-/unipointer-2.4.0.tgz", + "integrity": "sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw==", + "requires": { + "ev-emitter": "^1.0.1" + } + }, + "unist-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-find-after": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz", + "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "unist-util-generated": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" + }, + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, + "unist-util-position": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/unist-util-position/-/unist-util-position-4.0.3.tgz", + "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-stringify-position": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", + "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit/-/unist-util-visit-4.1.1.tgz", + "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + } + }, + "unist-util-visit-parents": { + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", + "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "unplugin": { + "version": "0.9.5", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-0.9.5.tgz", + "integrity": "sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.4.4" + } + }, + "unplugin-vue-components": { + "version": "0.22.4", + "resolved": "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz", + "integrity": "sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ==", + "dev": true, + "requires": { + "@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.2", + "magic-string": "^0.26.2", + "minimatch": "^5.1.0", + "resolve": "^1.22.1", + "unplugin": "^0.9.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "unzipper": { + "version": "0.10.14", + "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz", + "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "requires": { + "big-integer": "^1.6.17", + "binary": "~0.3.0", + "bluebird": "~3.4.1", + "buffer-indexof-polyfill": "~1.0.0", + "duplexer2": "~0.1.4", + "fstream": "^1.0.12", + "graceful-fs": "^4.2.2", + "listenercount": "~1.0.1", + "readable-stream": "~2.3.6", + "setimmediate": "~1.0.4" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "requires": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urllib": { + "version": "2.41.0", + "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz", + "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==", + "requires": { + "any-promise": "^1.3.0", + "content-type": "^1.0.2", + "debug": "^2.6.9", + "default-user-agent": "^1.0.0", + "digest-header": "^1.0.0", + "ee-first": "~1.1.1", + "formstream": "^1.1.0", + "humanize-ms": "^1.2.0", + "iconv-lite": "^0.4.15", + "ip": "^1.1.5", + "pump": "^3.0.0", + "qs": "^6.4.0", + "statuses": "^1.3.1", + "utility": "^1.16.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "utility": { + "version": "1.18.0", + "resolved": "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz", + "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==", + "requires": { + "copy-to": "^2.0.1", + "escape-html": "^1.0.3", + "mkdirp": "^0.5.1", + "mz": "^2.7.0", + "unescape": "^1.0.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmmirror.com/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "requires": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + } + }, + "vfile": { + "version": "5.3.4", + "resolved": "https://registry.npmmirror.com/vfile/-/vfile-5.3.4.tgz", + "integrity": "sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==", + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-location": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/vfile-location/-/vfile-location-4.0.1.tgz", + "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==", + "requires": { + "@types/unist": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "vfile-message": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/vfile-message/-/vfile-message-3.1.2.tgz", + "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "vite": { + "version": "3.0.9", + "resolved": "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz", + "integrity": "sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw==", + "dev": true, + "requires": { + "esbuild": "^0.14.47", + "fsevents": "~2.3.2", + "postcss": "^8.4.16", + "resolve": "^1.22.1", + "rollup": ">=2.75.6 <2.77.0 || ~2.77.0" + } + }, + "vite-plugin-compression": { + "version": "0.5.1", + "resolved": "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz", + "integrity": "sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "debug": "^4.3.3", + "fs-extra": "^10.0.0" + } + }, + "vue": { + "version": "3.5.3", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.3.tgz", + "integrity": "sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==", + "requires": { + "@vue/compiler-dom": "3.5.3", + "@vue/compiler-sfc": "3.5.3", + "@vue/runtime-dom": "3.5.3", + "@vue/server-renderer": "3.5.3", + "@vue/shared": "3.5.3" + } + }, + "vue-echarts": { + "version": "6.2.3", + "resolved": "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.2.3.tgz", + "integrity": "sha512-xHzUvgsgk/asJTcNa8iVVwoovZU3iEUHvmBa3bzbiP3Y6OMxM1YXsoWOKVmVVaUusGs4ob4pSwjwNy2FemAz9w==", + "requires": { + "resize-detector": "^0.3.0", + "vue-demi": "^0.13.2" + }, + "dependencies": { + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} + } + } + }, + "vue-eslint-parser": { + "version": "9.0.3", + "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-9.0.3.tgz", + "integrity": "sha512-yL+ZDb+9T0ELG4VIFo/2anAOz8SvBdlqEnQnvJ3M7Scq56DvtjY0VY88bByRZB0D4J0u8olBcfrXTVONXsh4og==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "vue-i18n": { + "version": "9.2.2", + "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz", + "integrity": "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==", + "requires": { + "@intlify/core-base": "9.2.2", + "@intlify/shared": "9.2.2", + "@intlify/vue-devtools": "9.2.2", + "@vue/devtools-api": "^6.2.1" + } + }, + "vue-router": { + "version": "4.1.5", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.5.tgz", + "integrity": "sha512-IsvoF5D2GQ/EGTs/Th4NQms9gd2NSqV+yylxIyp/OYp8xOwxmU8Kj/74E9DTSYAyH5LX7idVUngN3JSj1X4xcQ==", + "requires": { + "@vue/devtools-api": "^6.1.4" + } + }, + "vue-tsc": { + "version": "0.40.5", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.40.5.tgz", + "integrity": "sha512-rQPyyqrQiDzc8a3YpAYUb27VQbU+NDewOJ7GJBiEIEcaSugMjDc6dtJijTHK32t8IgGPl6ybsJ9LIU9sZvixLA==", + "dev": true, + "requires": { + "@volar/vue-language-core": "0.40.5", + "@volar/vue-typescript": "0.40.5" + } + }, + "vue-types": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz", + "integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==", + "requires": { + "is-plain-object": "3.0.1" + } + }, + "vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "requires": { + "sortablejs": "1.14.0" + }, + "dependencies": { + "sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + } + } + }, + "w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==" + }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==" + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "webpack-virtual-modules": { + "version": "0.4.4", + "resolved": "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.4.tgz", + "integrity": "sha512-h9atBP/bsZohWpHnr+2sic8Iecb60GxftXsWNLLLSqewgIsGzByd2gcIID4nXcG+3tNe4GQG3dLcff3kXupdRA==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, + "win-release": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", + "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==", + "requires": { + "semver": "^5.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==" + }, + "wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" + }, + "word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==" + }, + "word-count": { + "version": "0.2.2", + "resolved": "https://registry.npmmirror.com/word-count/-/word-count-0.2.2.tgz", + "integrity": "sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmmirror.com/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==" + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "requires": {} + }, + "xgplayer": { + "version": "2.31.7", + "resolved": "https://registry.npmmirror.com/xgplayer/-/xgplayer-2.31.7.tgz", + "integrity": "sha512-Wksoj/+BQgsDD7hVsd0d8jICHWWL7SGV6c6V01kH3LfLS6JgwVKyNnr4rRHZFFztlr/kOgBnqPqlV3Fiefmviw==", + "requires": { + "chalk": "^2.3.2", + "commander": "^2.15.1", + "danmu.js": "^0.5.9", + "downloadjs": "1.4.7", + "draggabilly": "^2.2.0", + "event-emitter": "^0.3.5", + "fs-extra": "^5.0.0", + "xgplayer-subtitles": "^1.0.19" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "xgplayer-subtitles": { + "version": "1.0.22", + "resolved": "https://registry.npmmirror.com/xgplayer-subtitles/-/xgplayer-subtitles-1.0.22.tgz", + "integrity": "sha512-+m1fo+FFynL+2ymO4UQBUSnJAz3WuIthpJFCrKBjd+ukcLRoy3vTcsylXEOo5AZN1xT28fpHmxvZQKEIEYA+6w==", + "requires": { + "eventemitter3": "^4.0.7", + "generate-source-map": "0.0.5" + } + }, + "xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "requires": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + } + }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" + }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "requires": { + "sax": "^1.2.4" + } + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==" + }, + "xss": { + "version": "1.0.15", + "resolved": "https://registry.npmmirror.com/xss/-/xss-1.0.15.tgz", + "integrity": "sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==", + "requires": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "2.4.5", + "resolved": "https://registry.npmmirror.com/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmmirror.com/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "requires": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "requires": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + } + }, + "zrender": { + "version": "5.3.2", + "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.3.2.tgz", + "integrity": "sha512-8IiYdfwHj2rx0UeIGZGGU4WEVSDEdeVCaIg/fomejg1Xu6OifAL1GVzIPHg2D+MyUkbNgPWji90t0a8IDk+39w==", + "requires": { + "tslib": "2.3.0" + } + }, + "zwitch": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.2.tgz", + "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2d0547f --- /dev/null +++ b/package.json @@ -0,0 +1,91 @@ +{ + "name": "mp-vue-template", + "version": "1.10.1", + "private": true, + "scripts": { + "dev": "vite", + "serve": "vite build && vite preview", + "build": "vite build", + "lint:eslint": "eslint --cache --max-warnings 0 \"src/**/*.{vue,ts}\" --fix", + "clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite/", + "clean:lib": "rimraf node_modules", + "build-css": "tailwindcss -o ./dist/tailwind.css --minify" + }, + "dependencies": { + "@amap/amap-jsapi-loader": "^1.0.1", + "@ant-design/colors": "^6.0.0", + "@ant-design/icons-vue": "^6.1.0", + "@antv/g2": "^5.1.22", + "@bytemd/plugin-gfm": "^1.17.2", + "@bytemd/plugin-highlight": "^1.17.4", + "@bytemd/plugin-highlight-ssr": "^1.20.2", + "@wecom/jssdk": "^1.3.1", + "ali-oss": "^6.18.0", + "ant-design-vue": "^3.2.11", + "axios": "^0.27.2", + "bytemd": "^1.17.2", + "countup.js": "^2.3.2", + "cropperjs": "^1.5.12", + "crypto-js": "^4.2.0", + "dayjs": "^1.11.5", + "docx": "^9.5.0", + "echarts": "^5.3.3", + "echarts-wordcloud": "^2.0.0", + "ele-admin-pro": "^1.10.1", + "exceljs": "^4.3.0", + "file-saver": "^2.0.5", + "github-markdown-css": "^5.1.0", + "js-cookie": "^3.0.5", + "js-md5": "^0.7.3", + "jsbarcode": "^3.11.5", + "lodash-es": "^4.17.21", + "md-editor-v3": "^5.2.3", + "mitt": "^3.0.1", + "nprogress": "^0.2.0", + "pinia": "^2.0.21", + "qrcode": "^1.5.4", + "socket.io-client": "^4.7.1", + "sortablejs": "^1.15.0", + "tinymce": "^5.10.5", + "vue": "3.5.3", + "vue-echarts": "^6.2.3", + "vue-i18n": "^9.2.2", + "vue-router": "^4.1.5", + "vuedraggable": "^4.1.0", + "xgplayer": "^2.31.7", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/file-saver": "^2.0.7", + "@types/lodash-es": "^4.17.6", + "@types/node": "^18.7.14", + "@types/nprogress": "^0.2.0", + "@types/qrcode": "^1.5.5", + "@types/sortablejs": "^1.13.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", + "@vitejs/plugin-legacy": "^2.0.1", + "@vitejs/plugin-vue": "^3.0.3", + "@vue/compiler-sfc": "^3.2.38", + "autoprefixer": "^10.4.19", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-define-config": "^1.7.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-vue": "^9.4.0", + "highlight.js": "^11.11.1", + "less": "^4.1.3", + "postcss": "^8.4.39", + "prettier": "^2.7.1", + "rimraf": "^3.0.2", + "rollup-plugin-visualizer": "^5.9.2", + "tailwindcss": "^3.4.6", + "terser": "^5.15.0", + "typescript": "^4.8.2", + "unplugin-vue-components": "^0.22.4", + "vite": "^3.0.9", + "vite-plugin-compression": "^0.5.1", + "vue-eslint-parser": "^9.0.3", + "vue-tsc": "^0.40.5" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..a7c01d7 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7589 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@amap/amap-jsapi-loader': + specifier: ^1.0.1 + version: 1.0.1 + '@ant-design/colors': + specifier: ^6.0.0 + version: 6.0.0 + '@ant-design/icons-vue': + specifier: ^6.1.0 + version: 6.1.0(vue@3.5.3(typescript@4.9.5)) + '@antv/g2': + specifier: ^5.1.22 + version: 5.4.1 + '@bytemd/plugin-gfm': + specifier: ^1.17.2 + version: 1.22.0(bytemd@1.22.0) + '@bytemd/plugin-highlight': + specifier: ^1.17.4 + version: 1.22.0(bytemd@1.22.0) + '@bytemd/plugin-highlight-ssr': + specifier: ^1.20.2 + version: 1.22.0(bytemd@1.22.0) + '@wecom/jssdk': + specifier: ^1.3.1 + version: 1.4.5 + ali-oss: + specifier: ^6.18.0 + version: 6.23.0 + ant-design-vue: + specifier: ^3.2.11 + version: 3.2.20(vue@3.5.3(typescript@4.9.5)) + axios: + specifier: ^0.27.2 + version: 0.27.2 + bytemd: + specifier: ^1.17.2 + version: 1.22.0 + countup.js: + specifier: ^2.3.2 + version: 2.9.0 + cropperjs: + specifier: ^1.5.12 + version: 1.6.2 + crypto-js: + specifier: ^4.2.0 + version: 4.2.0 + dayjs: + specifier: ^1.11.5 + version: 1.11.18 + docx: + specifier: ^9.5.0 + version: 9.5.1 + echarts: + specifier: ^5.3.3 + version: 5.6.0 + echarts-wordcloud: + specifier: ^2.0.0 + version: 2.1.0(echarts@5.6.0) + ele-admin-pro: + specifier: ^1.10.1 + version: 1.11.1(ant-design-vue@3.2.20(vue@3.5.3(typescript@4.9.5)))(vue@3.5.3(typescript@4.9.5)) + exceljs: + specifier: ^4.3.0 + version: 4.4.0 + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + github-markdown-css: + specifier: ^5.1.0 + version: 5.8.1 + js-cookie: + specifier: ^3.0.5 + version: 3.0.5 + js-md5: + specifier: ^0.7.3 + version: 0.7.3 + jsbarcode: + specifier: ^3.11.5 + version: 3.12.1 + lodash-es: + specifier: ^4.17.21 + version: 4.17.21 + md-editor-v3: + specifier: ^5.2.3 + version: 5.8.5(vue@3.5.3(typescript@4.9.5)) + mitt: + specifier: ^3.0.1 + version: 3.0.1 + nprogress: + specifier: ^0.2.0 + version: 0.2.0 + pinia: + specifier: ^2.0.21 + version: 2.3.1(typescript@4.9.5)(vue@3.5.3(typescript@4.9.5)) + qrcode: + specifier: ^1.5.4 + version: 1.5.4 + socket.io-client: + specifier: ^4.7.1 + version: 4.8.1 + sortablejs: + specifier: ^1.15.0 + version: 1.15.6 + tinymce: + specifier: ^5.10.5 + version: 5.10.9 + vue: + specifier: 3.5.3 + version: 3.5.3(typescript@4.9.5) + vue-echarts: + specifier: ^6.2.3 + version: 6.7.3(@vue/runtime-core@3.5.3)(echarts@5.6.0)(vue@3.5.3(typescript@4.9.5)) + vue-i18n: + specifier: ^9.2.2 + version: 9.14.5(vue@3.5.3(typescript@4.9.5)) + vue-router: + specifier: ^4.1.5 + version: 4.6.0(vue@3.5.3(typescript@4.9.5)) + vuedraggable: + specifier: ^4.1.0 + version: 4.1.0(vue@3.5.3(typescript@4.9.5)) + xgplayer: + specifier: ^2.31.7 + version: 2.32.6 + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + devDependencies: + '@types/file-saver': + specifier: ^2.0.7 + version: 2.0.7 + '@types/lodash-es': + specifier: ^4.17.6 + version: 4.17.12 + '@types/node': + specifier: ^18.7.14 + version: 18.19.130 + '@types/nprogress': + specifier: ^0.2.0 + version: 0.2.3 + '@types/qrcode': + specifier: ^1.5.5 + version: 1.5.5 + '@types/sortablejs': + specifier: ^1.13.0 + version: 1.15.8 + '@typescript-eslint/eslint-plugin': + specifier: ^5.36.1 + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': + specifier: ^5.36.1 + version: 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@vitejs/plugin-legacy': + specifier: ^2.0.1 + version: 2.3.1(terser@5.44.0)(vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0)) + '@vitejs/plugin-vue': + specifier: ^3.0.3 + version: 3.2.0(vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0))(vue@3.5.3(typescript@4.9.5)) + '@vue/compiler-sfc': + specifier: ^3.2.38 + version: 3.5.22 + autoprefixer: + specifier: ^10.4.19 + version: 10.4.21(postcss@8.5.6) + eslint: + specifier: ^8.23.0 + version: 8.57.1 + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.10.2(eslint@8.57.1) + eslint-define-config: + specifier: ^1.7.0 + version: 1.24.1 + eslint-plugin-prettier: + specifier: ^4.2.1 + version: 4.2.5(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8) + eslint-plugin-vue: + specifier: ^9.4.0 + version: 9.33.0(eslint@8.57.1) + highlight.js: + specifier: ^11.11.1 + version: 11.11.1 + less: + specifier: ^4.1.3 + version: 4.4.2 + postcss: + specifier: ^8.4.39 + version: 8.5.6 + prettier: + specifier: ^2.7.1 + version: 2.8.8 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + rollup-plugin-visualizer: + specifier: ^5.9.2 + version: 5.14.0(rollup@2.79.2) + tailwindcss: + specifier: ^3.4.6 + version: 3.4.18 + terser: + specifier: ^5.15.0 + version: 5.44.0 + typescript: + specifier: ^4.8.2 + version: 4.9.5 + unplugin-vue-components: + specifier: ^0.22.4 + version: 0.22.12(@babel/parser@7.28.4)(rollup@2.79.2)(vue@3.5.3(typescript@4.9.5)) + vite: + specifier: ^3.0.9 + version: 3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0) + vite-plugin-compression: + specifier: ^0.5.1 + version: 0.5.1(vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0)) + vue-eslint-parser: + specifier: ^9.0.3 + version: 9.4.3(eslint@8.57.1) + vue-tsc: + specifier: ^0.40.5 + version: 0.40.13(typescript@4.9.5) + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@amap/amap-jsapi-loader@1.0.1': + resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==} + + '@ant-design/colors@6.0.0': + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} + + '@ant-design/icons-svg@4.4.2': + resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} + + '@ant-design/icons-vue@6.1.0': + resolution: {integrity: sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==} + peerDependencies: + vue: '>=3.0.3' + + '@antfu/utils@0.7.10': + resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} + + '@antv/component@2.1.7': + resolution: {integrity: sha512-vuSuSjKFsWZBD77ZjMoP9c+FhMQvkJvPJb0dFR8Ym5kr44gfc437QE9rhuemlcjN8KEpPtMZtnUk/p6WB5qdOQ==} + + '@antv/coord@0.4.7': + resolution: {integrity: sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA==} + + '@antv/event-emitter@0.1.3': + resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} + + '@antv/expr@1.0.2': + resolution: {integrity: sha512-vrfdmPHkTuiS5voVutKl2l06w1ihBh9A8SFdQPEE+2KMVpkymzGOF1eWpfkbGZ7tiFE15GodVdhhHomD/hdIwg==} + + '@antv/g-camera-api@2.0.43': + resolution: {integrity: sha512-vgmO1l9zs3mQZgyByB7TV6NR+LteTQku1yqXWz4MxLERn/En0MlM/o4C+5fNRaLcotjv7rGmWJTb8XwdiQHjQA==} + + '@antv/g-canvas@2.0.50': + resolution: {integrity: sha512-7VuE96ikuYCSt3CO+nby3RM9V7U2toKOhKI0CdqdyzgGSLXphfz2ieYAbSiTlVhykUk5UzEVNLVERSk3dwKs7w==} + + '@antv/g-dom-mutation-observer-api@2.0.40': + resolution: {integrity: sha512-uDhqry550+F6EHDht/qCWVfZRHRkptS/4s0JhfFpwvj2pFcWjO90uoNjgH9ecbl6lQ03S0gcsMuHe5c2G6+pDA==} + + '@antv/g-lite@2.4.1': + resolution: {integrity: sha512-e3lw1QEvJGzVS8AcoiAsuRV9J4AILvvvdLfWRYxw7quanSxxWZ4DS+iirs3afIhR6pCegm9Hcrz1EaYEwKai2Q==} + + '@antv/g-math@3.0.1': + resolution: {integrity: sha512-FvkDBNRpj+HsLINunrL2PW0OlG368MlpHuihbxleuajGim5kra8tgISwCLmAf8Yz2b1CgZ9PvpohqiLzHS7HLg==} + + '@antv/g-plugin-canvas-path-generator@2.1.24': + resolution: {integrity: sha512-8QF77eysi/D+KUNfbPhm+3eubChw4jCmq5OUh2TipJXYtWfnjTrSS5Q6vdDhTZHj3s+XnNGzOwxcEWxzcsEMJg==} + + '@antv/g-plugin-canvas-picker@2.2.1': + resolution: {integrity: sha512-49edAFhJQmbyqymyLr5yUL/wAIhh/YiGICQRv8CZQwgiztOjVgXsQ69L8obQIb6WMvJgx9cxXIEl6vlxgAixwQ==} + + '@antv/g-plugin-canvas-renderer@2.4.1': + resolution: {integrity: sha512-mMRoVqc9D59tQIUAtT/bRU4Bz596NmlBL0AQF+76Q7YTcc8VJdndAY8gCsJeon+84c5Saf8SDamc+1B2erGHmg==} + + '@antv/g-plugin-dom-interaction@2.1.29': + resolution: {integrity: sha512-njmMBY1CjFdPrsKF1SzSZK6s7IVjhFbaSueB+Y9v68mIHPBl7/Hf0JLpeFcZ6Sgmi/LV1t31p8MwQ8t5pcWtvg==} + + '@antv/g-plugin-dragndrop@2.0.40': + resolution: {integrity: sha512-aGC7AGW7E3xPHApLiWDGUSV9kmpVpETBwaRbajM6hfnEy0OijLhOp/P1TkUvieYEiKMKxFeqB1AGb8RSNvx+DA==} + + '@antv/g-plugin-html-renderer@2.2.1': + resolution: {integrity: sha512-zMK9i6Oo4qFOsKfzrhxrxwOF9P8MVDdDigeNwtAYPSGYEUM+xU7+mzAEv0yHdOn3XvrQYp4onU2Oz7oO+msHiQ==} + + '@antv/g-plugin-image-loader@2.2.1': + resolution: {integrity: sha512-ZWHjKrsFcWvBq9U0Bn3Oldcp8IFaZZdHlFvx/WIVVpIlHbqpkpx/rEGsUmYsaoawOwdDRkOK8UGaUFlhsGSn2g==} + + '@antv/g-web-animations-api@2.1.30': + resolution: {integrity: sha512-IW75RG4sWXNEVYkeB3MOymwo8Qf33kFhCqFN4YFrpi76l5KeiTigw08PVNPlYYQimOg1SfCFo6QB367QQgM/Rw==} + + '@antv/g2@5.4.1': + resolution: {integrity: sha512-G6wJDqipFT79uU5pNYfm5itH+9XD6KWhlMufvUjFX7W4Dm+VWt6JtANFqumS7NiECAdqHPcJTLF/Xxm8AxzYeA==} + + '@antv/g@6.1.30': + resolution: {integrity: sha512-H4kfbzils+R8b6JKR3c3jdgl57ba2bpYz/zLAUlEXL3118A97O+2AQ3FV1+OLo+0NeUtCwETmnHI9NpAc+tiJA==} + + '@antv/scale@0.4.16': + resolution: {integrity: sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw==} + + '@antv/scale@0.5.2': + resolution: {integrity: sha512-rTHRAwvpHWC5PGZF/mJ2ZuTDqwwvVBDRph0Uu5PV9BXwzV7K8+9lsqGJ+XHVLxe8c6bKog5nlzvV/dcYb0d5Ow==} + + '@antv/util@2.0.17': + resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + + '@antv/util@3.3.11': + resolution: {integrity: sha512-FII08DFM4ABh2q5rPYdr0hMtKXRgeZazvXaFYCs7J7uTcWDHUhczab2qOCJLNDugoj8jFag1djb7wS9ehaRYBg==} + + '@antv/vendor@1.0.11': + resolution: {integrity: sha512-LmhPEQ+aapk3barntaiIxJ5VHno/Tyab2JnfdcPzp5xONh/8VSfed4bo/9xKo5HcUAEydko38vYLfj6lJliLiw==} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@babel/standalone@7.28.4': + resolution: {integrity: sha512-Qc1BNCfuJZBKs2SC5lqRmSYOw7Ka0X7urZQ7oVsGIax4eGDUIHX+CDg752N4jDxC2rbBh3li098ReGOtjT0x4g==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + engines: {node: '>=6.9.0'} + + '@bytemd/plugin-gfm@1.22.0': + resolution: {integrity: sha512-ICmDwK5pCKrsoM2btNUo11R2Cpvaaz8dF/BAVrZ/w7mdY8985f7l8zIc7yX3tO5i3KYVvxBKhTCmerOS4xAcig==} + peerDependencies: + bytemd: ^1.5.0 + + '@bytemd/plugin-highlight-ssr@1.22.0': + resolution: {integrity: sha512-xUbCzxkvAQj6EWoZz0lYxVivaeTzCYY8ssJpbfg+uamNAdzAeIJtD2L9r05/izylEnRzjN+tZYieFXNDLkkrHg==} + peerDependencies: + bytemd: ^1.5.0 + + '@bytemd/plugin-highlight@1.22.0': + resolution: {integrity: sha512-fMLEvsY8KQrVrtokIWeBFu8/JGGSX0V3Hf6Fhbdn9Q8vsz6u/WuI+wo78xRX7OWhUHpx99UxUcwEy/Hq4+NbpQ==} + peerDependencies: + bytemd: ^1.5.0 + + '@codemirror/autocomplete@6.19.0': + resolution: {integrity: sha512-61Hfv3cF07XvUxNeC3E7jhG8XNi1Yom1G0lRC936oLnlF+jrbrv8rc/J98XlYzcsAoTVupfsf5fLej1aI8kyIg==} + + '@codemirror/commands@6.9.0': + resolution: {integrity: sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==} + + '@codemirror/lang-angular@0.1.4': + resolution: {integrity: sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g==} + + '@codemirror/lang-cpp@6.0.3': + resolution: {integrity: sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA==} + + '@codemirror/lang-css@6.3.1': + resolution: {integrity: sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==} + + '@codemirror/lang-go@6.0.1': + resolution: {integrity: sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==} + + '@codemirror/lang-html@6.4.11': + resolution: {integrity: sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==} + + '@codemirror/lang-java@6.0.2': + resolution: {integrity: sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ==} + + '@codemirror/lang-javascript@6.2.4': + resolution: {integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==} + + '@codemirror/lang-json@6.0.2': + resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==} + + '@codemirror/lang-less@6.0.2': + resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==} + + '@codemirror/lang-liquid@6.3.0': + resolution: {integrity: sha512-fY1YsUExcieXRTsCiwX/bQ9+PbCTA/Fumv7C7mTUZHoFkibfESnaXwpr2aKH6zZVwysEunsHHkaIpM/pl3xETQ==} + + '@codemirror/lang-markdown@6.4.0': + resolution: {integrity: sha512-ZeArR54seh4laFbUTVy0ZmQgO+C/cxxlW4jEoQMhL3HALScBpZBeZcLzrQmJsTEx4is9GzOe0bFAke2B1KZqeA==} + + '@codemirror/lang-php@6.0.2': + resolution: {integrity: sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==} + + '@codemirror/lang-python@6.2.1': + resolution: {integrity: sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==} + + '@codemirror/lang-rust@6.0.2': + resolution: {integrity: sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA==} + + '@codemirror/lang-sass@6.0.2': + resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==} + + '@codemirror/lang-sql@6.10.0': + resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==} + + '@codemirror/lang-vue@0.1.3': + resolution: {integrity: sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==} + + '@codemirror/lang-wast@6.0.2': + resolution: {integrity: sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q==} + + '@codemirror/lang-xml@6.1.0': + resolution: {integrity: sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==} + + '@codemirror/lang-yaml@6.1.2': + resolution: {integrity: sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==} + + '@codemirror/language-data@6.5.1': + resolution: {integrity: sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==} + + '@codemirror/language@6.11.3': + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} + + '@codemirror/legacy-modes@6.5.2': + resolution: {integrity: sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==} + + '@codemirror/lint@6.9.0': + resolution: {integrity: sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==} + + '@codemirror/search@6.5.11': + resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} + + '@codemirror/state@6.5.2': + resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} + + '@codemirror/view@6.38.6': + resolution: {integrity: sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==} + + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@eslint-community/eslint-utils@4.9.0': + resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@fast-csv/format@4.3.5': + resolution: {integrity: sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==} + + '@fast-csv/parse@4.3.6': + resolution: {integrity: sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==} + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@intlify/core-base@9.14.5': + resolution: {integrity: sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA==} + engines: {node: '>= 16'} + + '@intlify/message-compiler@9.14.5': + resolution: {integrity: sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ==} + engines: {node: '>= 16'} + + '@intlify/shared@9.14.5': + resolution: {integrity: sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ==} + engines: {node: '>= 16'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.11': + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + + '@lezer/cpp@1.1.3': + resolution: {integrity: sha512-ykYvuFQKGsRi6IcE+/hCSGUhb/I4WPjd3ELhEblm2wS2cOznDFzO+ubK2c+ioysOnlZ3EduV+MVQFCPzAIoY3w==} + + '@lezer/css@1.3.0': + resolution: {integrity: sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==} + + '@lezer/go@1.0.1': + resolution: {integrity: sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ==} + + '@lezer/highlight@1.2.1': + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + + '@lezer/html@1.3.12': + resolution: {integrity: sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw==} + + '@lezer/java@1.1.3': + resolution: {integrity: sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==} + + '@lezer/javascript@1.5.4': + resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==} + + '@lezer/json@1.0.3': + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} + + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + + '@lezer/markdown@1.4.3': + resolution: {integrity: sha512-kfw+2uMrQ/wy/+ONfrH83OkdFNM0ye5Xq96cLlaCy7h5UT9FO54DU4oRoIc0CSBh5NWmWuiIJA7NGLMJbQ+Oxg==} + + '@lezer/php@1.0.5': + resolution: {integrity: sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==} + + '@lezer/python@1.1.18': + resolution: {integrity: sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg==} + + '@lezer/rust@1.0.2': + resolution: {integrity: sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg==} + + '@lezer/sass@1.1.0': + resolution: {integrity: sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ==} + + '@lezer/xml@1.0.6': + resolution: {integrity: sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==} + + '@lezer/yaml@1.0.3': + resolution: {integrity: sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA==} + + '@marijn/find-cluster-break@1.0.2': + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@simonwep/pickr@1.8.2': + resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@types/codemirror@5.60.16': + resolution: {integrity: sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/file-saver@2.0.7': + resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/hast@2.3.10': + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + + '@types/lodash@4.17.20': + resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdast@3.0.15': + resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@14.18.63': + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} + + '@types/node@18.19.130': + resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} + + '@types/node@24.7.2': + resolution: {integrity: sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==} + + '@types/nprogress@0.2.3': + resolution: {integrity: sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==} + + '@types/parse5@6.0.3': + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + + '@types/qrcode@1.5.5': + resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + + '@types/sortablejs@1.15.8': + resolution: {integrity: sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==} + + '@types/tern@0.23.9': + resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} + + '@types/unist@2.0.11': + resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + + '@vavt/copy2clipboard@1.0.3': + resolution: {integrity: sha512-HtG48r2FBYp9eRvGB3QGmtRBH1zzRRAVvFbGgFstOwz4/DDaNiX0uZc3YVKPydqgOav26pibr9MtoCaWxn7aeA==} + + '@vavt/util@2.1.0': + resolution: {integrity: sha512-YIfAvArSFVXmWvoF+DEGD0FhkhVNcCtVWWkfYtj76eSrwHh/wuEEFhiEubg1XLNM3tChO8FH8xJCT/hnizjgFQ==} + + '@vitejs/plugin-legacy@2.3.1': + resolution: {integrity: sha512-J5KaGBlSt2tEYPVjM/C8dA6DkRzkFkbPe+Xb4IX5G+XOV5OGbVAfkMjKywdrkO3gGynO8S98i71Lmsff4cWkCQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + terser: ^5.4.0 + vite: ^3.0.0 + + '@vitejs/plugin-vue@3.2.0': + resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 + vue: ^3.2.25 + + '@volar/code-gen@0.40.13': + resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==} + + '@volar/source-map@0.40.13': + resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==} + + '@volar/typescript-faster@0.40.13': + resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==} + + '@volar/vue-language-core@0.40.13': + resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==} + + '@volar/vue-typescript@0.40.13': + resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==} + deprecated: 'WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.' + + '@vue/compiler-core@3.5.22': + resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==} + + '@vue/compiler-core@3.5.3': + resolution: {integrity: sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==} + + '@vue/compiler-dom@3.5.22': + resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==} + + '@vue/compiler-dom@3.5.3': + resolution: {integrity: sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==} + + '@vue/compiler-sfc@3.5.22': + resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==} + + '@vue/compiler-sfc@3.5.3': + resolution: {integrity: sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==} + + '@vue/compiler-ssr@3.5.22': + resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==} + + '@vue/compiler-ssr@3.5.3': + resolution: {integrity: sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/reactivity@3.2.38': + resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} + + '@vue/reactivity@3.5.22': + resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==} + + '@vue/reactivity@3.5.3': + resolution: {integrity: sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==} + + '@vue/runtime-core@3.5.3': + resolution: {integrity: sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw==} + + '@vue/runtime-dom@3.5.3': + resolution: {integrity: sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg==} + + '@vue/server-renderer@3.5.3': + resolution: {integrity: sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q==} + peerDependencies: + vue: 3.5.3 + + '@vue/shared@3.2.38': + resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} + + '@vue/shared@3.5.22': + resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==} + + '@vue/shared@3.5.3': + resolution: {integrity: sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==} + + '@wecom/jssdk@1.4.5': + resolution: {integrity: sha512-1SSmcDUid7QOQNNFaM4d884NXJQYuoO+oLZtM9TRO5uMXYj2s69hmuAoPUr3D3br6VDgv4H+tbIG5A5A+uB9lA==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + + address@1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + agentkeepalive@3.5.3: + resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==} + engines: {node: '>= 4.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ali-oss@6.23.0: + resolution: {integrity: sha512-FipRmyd16Pr/tEey/YaaQ/24Pc3HEpLM9S1DRakEuXlSLXNIJnu1oJtHM53eVYpvW3dXapSjrip3xylZUTIZVQ==} + engines: {node: '>=8'} + + amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + ant-design-vue@3.2.20: + resolution: {integrity: sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg==} + engines: {node: '>=12.22.0'} + peerDependencies: + vue: '>=3.2.0' + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + archiver-utils@2.1.0: + resolution: {integrity: sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==} + engines: {node: '>= 6'} + + archiver-utils@3.0.4: + resolution: {integrity: sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==} + engines: {node: '>= 10'} + + archiver@5.3.2: + resolution: {integrity: sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==} + engines: {node: '>= 10'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-tree-filter@2.1.0: + resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + async-validator@4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.8.16: + resolution: {integrity: sha512-OMu3BGQ4E7P1ErFsIPpbJh0qvDudM/UuJeHgkAvfWe+0HFJCXh+t/l8L6fVLR55RI/UbKrVLnAXZSVwd9ysWYw==} + hasBin: true + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bluebird@3.4.7: + resolution: {integrity: sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + bowser@1.9.4: + resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-indexof-polyfill@1.0.2: + resolution: {integrity: sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==} + engines: {node: '>=0.10'} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + + builtin-status-codes@3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + + bytemd@1.22.0: + resolution: {integrity: sha512-2vmegXnnsOxNufRrrQGHYKwgTmx6H+h40ZZs3DAw/SS5O4mBzO9evc1HD39CqW9wglGNBJxMg257pv9pgAGl+A==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001750: + resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + + chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + codemirror-ssr@0.65.0: + resolution: {integrity: sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g==} + peerDependencies: + '@types/codemirror': ^5.0.0 + + codemirror@6.0.2: + resolution: {integrity: sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==} + + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + compress-commons@4.1.2: + resolution: {integrity: sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==} + engines: {node: '>= 10'} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + + copy-to@2.0.1: + resolution: {integrity: sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w==} + + core-js@3.46.0: + resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + countup.js@2.9.0: + resolution: {integrity: sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@4.0.3: + resolution: {integrity: sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==} + engines: {node: '>= 10'} + + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + + cropperjs@1.6.2: + resolution: {integrity: sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssfilter@0.0.10: + resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-binarytree@1.0.2: + resolution: {integrity: sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw==} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force-3d@3.0.6: + resolution: {integrity: sha512-4tsKHUPLOVkyfEffZo1v6sFHvGFwAIIjt/W8IThbp08DYAsXZck+2pSHEG5W1+gQgEvFLdZkYvmJAbRM2EzMnA==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo-projection@4.0.0: + resolution: {integrity: sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg==} + engines: {node: '>=12'} + hasBin: true + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-octree@1.1.0: + resolution: {integrity: sha512-F8gPlqpP+HwRPMO/8uOu5wjH110+6q4cgJvgJT6vlpy3BEaDIKlTZrgHKZSp/i1InRpVfh4puY/kvL6MxK930A==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-regression@1.3.10: + resolution: {integrity: sha512-PF8GWEL70cHHWpx2jUQXc68r1pyPHIA+St16muk/XRokETzlegj5LriNKg7o4LR0TySug4nHYPJNNRz/W+/Niw==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + danmu.js@1.1.13: + resolution: {integrity: sha512-knFd0/cB2HA4FFWiA7eB2suc5vCvoHdqio33FyyCSfP7C+1A+zQcTvnvwfxaZhrxsGj4qaQI2I8XiTqedRaVmg==} + + dateformat@2.2.0: + resolution: {integrity: sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==} + + dayjs@1.11.18: + resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-named-character-reference@1.2.0: + resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-user-agent@1.0.0: + resolution: {integrity: sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==} + engines: {node: '>= 0.10.0'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + digest-header@1.1.0: + resolution: {integrity: sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg==} + engines: {node: '>= 8.0.0'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + docx@9.5.1: + resolution: {integrity: sha512-ABDI7JEirFD2+bHhOBlsGZxaG1UgZb2M/QMKhLSDGgVNhxDesTCDcP+qoDnDGjZ4EOXTRfUjUgwHVuZ6VSTfWQ==} + engines: {node: '>=10'} + + dom-align@1.12.4: + resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} + + dom-scroll-into-view@2.0.1: + resolution: {integrity: sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==} + + downloadjs@1.4.7: + resolution: {integrity: sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q==} + + draggabilly@2.4.1: + resolution: {integrity: sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + echarts-wordcloud@2.1.0: + resolution: {integrity: sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==} + peerDependencies: + echarts: ^5.0.1 + + echarts@5.6.0: + resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ele-admin-pro@1.11.1: + resolution: {integrity: sha512-3gTCTrQ6XCnfMP8nNZZFXaoRcNpOMLpK2mEsu+21f3w5ID/BFhyOxWSngJL/LMPelwSpK+PwRclp0r3Wu16J7Q==} + peerDependencies: + ant-design-vue: '>=3.1.0' + vue: '>=3.1.0' + + electron-to-chromium@1.5.236: + resolution: {integrity: sha512-Yi43booTJp2VteesVja4xdcDrAcVFItkD6RrxhMSuGx1kShh+raMwnKyIGNOTl68reqSxPPls6bB8LgIcrK9Gg==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + end-or-error@1.0.1: + resolution: {integrity: sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ==} + engines: {node: '>= 0.11.14'} + + engine.io-client@6.6.3: + resolution: {integrity: sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + eslint-config-prettier@8.10.2: + resolution: {integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-define-config@1.24.1: + resolution: {integrity: sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg==} + engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + eslint-plugin-prettier@4.2.5: + resolution: {integrity: sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + + eslint-plugin-vue@9.33.0: + resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@1.2.5: + resolution: {integrity: sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + ev-emitter@1.1.1: + resolution: {integrity: sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + exceljs@4.4.0: + resolution: {integrity: sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg==} + engines: {node: '>=8.3.0'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + fast-csv@4.3.6: + resolution: {integrity: sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==} + engines: {node: '>=10.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fault@2.0.1: + resolution: {integrity: sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==} + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-saver@2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + flru@1.0.2: + resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} + engines: {node: '>=6'} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + format@0.2.2: + resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} + engines: {node: '>=0.4.x'} + + formstream@1.5.2: + resolution: {integrity: sha512-NASf0lgxC1AyKNXQIrXTEYkiX99LhCEXTkiGObXAkpBui86a4u8FjH1o2bGb3PpqI3kafC+yw4zWeK6l6VHTgg==} + + frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@5.0.0: + resolution: {integrity: sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fstream@1.0.12: + resolution: {integrity: sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==} + engines: {node: '>=0.6'} + deprecated: This package is no longer supported. + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + generate-source-map@0.0.5: + resolution: {integrity: sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-ready@1.0.0: + resolution: {integrity: sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw==} + + get-size@2.0.3: + resolution: {integrity: sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==} + + github-markdown-css@5.8.1: + resolution: {integrity: sha512-8G+PFvqigBQSWLQjyzgpa2ThD9bo7+kDsriUIidGcRhXgmcaAWUIpCZf8DavJgc+xifjbCG+GvMyWr0XMXmc7g==} + engines: {node: '>=10'} + + gl-matrix@3.4.4: + resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + + hast-util-is-element@2.1.3: + resolution: {integrity: sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==} + + hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + + hast-util-raw@7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + + hast-util-sanitize@4.1.0: + resolution: {integrity: sha512-Hd9tU0ltknMGRDv+d6Ro/4XKzBqQnP/EZrpiTbpFYfXv/uOhWeKc+2uajcbEvAEH98VZd7eII2PiXm13RihnLw==} + + hast-util-to-html@8.0.4: + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + + hast-util-to-parse5@7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + + hast-util-to-text@3.1.2: + resolution: {integrity: sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==} + + hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + + hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + + highlight.js@11.11.1: + resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} + engines: {node: '>=12.0.0'} + + highlight.js@11.8.0: + resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==} + engines: {node: '>=12.0.0'} + + html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + + is-class-hotfix@0.0.6: + resolution: {integrity: sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ==} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + + is-type-of@1.4.0: + resolution: {integrity: sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==} + + is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + js-base64@2.6.4: + resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} + + js-cookie@3.0.5: + resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} + engines: {node: '>=14'} + + js-md5@0.7.3: + resolution: {integrity: sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbarcode@3.12.1: + resolution: {integrity: sha512-QZQSqIknC2Rr/YOUyOkCBqsoiBAOTYK+7yNN3JsqfoUtJtkazxNw1dmPpxuv7VVvqW13kA3/mKiLq+s/e3o9hQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} + + jstoxml@2.2.9: + resolution: {integrity: sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw==} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + less@4.4.2: + resolution: {integrity: sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==} + engines: {node: '>=14'} + hasBin: true + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + + listenercount@1.0.1: + resolution: {integrity: sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==} + + local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash.defaults@4.2.0: + resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + + lodash.flatten@4.4.0: + resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} + + lodash.groupby@4.6.0: + resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} + + lodash.isboolean@3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + + lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + lodash.isnil@4.0.0: + resolution: {integrity: sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isundefined@3.0.1: + resolution: {integrity: sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.union@4.6.0: + resolution: {integrity: sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lowlight@2.9.0: + resolution: {integrity: sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.2.2: + resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + engines: {node: 20 || >=22} + + lucide-vue-next@0.453.0: + resolution: {integrity: sha512-5zmv83vxAs9SVoe22veDBi8Dw0Fh2F+oTngWgKnKOkrZVbZjceXLQ3tescV2boB0zlaf9R2Sd9RuUP2766xvsQ==} + peerDependencies: + vue: '>=3.0.1' + + magic-string@0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} + engines: {node: '>=12'} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + markdown-it-image-figures@2.1.1: + resolution: {integrity: sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g==} + engines: {node: '>=12.0.0'} + peerDependencies: + markdown-it: '*' + + markdown-it-sub@2.0.0: + resolution: {integrity: sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA==} + + markdown-it-sup@2.0.0: + resolution: {integrity: sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA==} + + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md-editor-v3@5.8.5: + resolution: {integrity: sha512-NsqAmmAx/ykA1AcwxcHH4Hkn4VAPkqMX7Hd6Lv4FcwQoMQ70wWmJfs/mokyPGkqr4oYqqn8LRMBTqFNfoP0O0A==} + peerDependencies: + vue: ^3.5.3 + + mdast-util-definitions@5.1.2: + resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} + + mdast-util-find-and-replace@2.2.2: + resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} + + mdast-util-from-markdown@1.3.1: + resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} + + mdast-util-gfm-autolink-literal@1.0.3: + resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} + + mdast-util-gfm-footnote@1.0.2: + resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} + + mdast-util-gfm-strikethrough@1.0.3: + resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} + + mdast-util-gfm-table@1.0.7: + resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} + + mdast-util-gfm-task-list-item@1.0.2: + resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} + + mdast-util-gfm@2.0.2: + resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} + + mdast-util-phrasing@3.0.1: + resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} + + mdast-util-to-hast@12.3.0: + resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} + + mdast-util-to-markdown@1.5.0: + resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} + + mdast-util-to-string@3.2.0: + resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + + medium-zoom@1.1.0: + resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} + + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromark-core-commonmark@1.1.0: + resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} + + micromark-extension-gfm-autolink-literal@1.0.5: + resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} + + micromark-extension-gfm-footnote@1.1.2: + resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} + + micromark-extension-gfm-strikethrough@1.0.7: + resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} + + micromark-extension-gfm-table@1.0.7: + resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} + + micromark-extension-gfm-tagfilter@1.0.2: + resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} + + micromark-extension-gfm-task-list-item@1.0.5: + resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} + + micromark-extension-gfm@2.0.3: + resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} + + micromark-factory-destination@1.1.0: + resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} + + micromark-factory-label@1.1.0: + resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} + + micromark-factory-space@1.1.0: + resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} + + micromark-factory-title@1.1.0: + resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} + + micromark-factory-whitespace@1.1.0: + resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} + + micromark-util-character@1.2.0: + resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} + + micromark-util-chunked@1.1.0: + resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} + + micromark-util-classify-character@1.1.0: + resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} + + micromark-util-combine-extensions@1.1.0: + resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} + + micromark-util-decode-numeric-character-reference@1.1.0: + resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} + + micromark-util-decode-string@1.1.0: + resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} + + micromark-util-encode@1.1.0: + resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} + + micromark-util-html-tag-name@1.2.0: + resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} + + micromark-util-normalize-identifier@1.1.0: + resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} + + micromark-util-resolve-all@1.1.0: + resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} + + micromark-util-sanitize-uri@1.2.0: + resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} + + micromark-util-subtokenize@1.1.0: + resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} + + micromark-util-symbol@1.1.0: + resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} + + micromark-util-types@1.1.0: + resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} + + micromark@3.2.0: + resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} + engines: {node: ^18 || >=20} + hasBin: true + + nanopop@2.4.2: + resolution: {integrity: sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + node-hex@1.0.1: + resolution: {integrity: sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ==} + engines: {node: '>=8.0.0'} + + node-releases@2.0.23: + resolution: {integrity: sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + nprogress@0.2.0: + resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + os-name@1.0.3: + resolution: {integrity: sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==} + engines: {node: '>=0.10.0'} + hasBin: true + + osx-release@1.1.0: + resolution: {integrity: sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==} + engines: {node: '>=0.10.0'} + hasBin: true + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + pdfast@0.2.0: + resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinia@2.3.1: + resolution: {integrity: sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==} + peerDependencies: + typescript: '>=4.4.4' + vue: ^2.7.0 || ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + property-information@6.5.0: + resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + pump@3.0.3: + resolution: {integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==} + + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + rehype-highlight@6.0.0: + resolution: {integrity: sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw==} + + rehype-raw@6.1.1: + resolution: {integrity: sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ==} + + rehype-sanitize@5.0.1: + resolution: {integrity: sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A==} + + rehype-stringify@9.0.4: + resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} + + remark-gfm@3.0.1: + resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} + + remark-parse@10.0.2: + resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} + + remark-rehype@10.1.0: + resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resize-detector@0.3.0: + resolution: {integrity: sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + sdk-base@2.0.1: + resolution: {integrity: sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==} + + select-files@1.0.1: + resolution: {integrity: sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + shallow-equal@1.2.1: + resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + socket.io-client@4.8.1: + resolution: {integrity: sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + sortablejs@1.14.0: + resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} + + sortablejs@1.15.6: + resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.1.43: + resolution: {integrity: sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==} + engines: {node: '>=0.8.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + stream-http@2.8.2: + resolution: {integrity: sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==} + + stream-wormhole@1.1.0: + resolution: {integrity: sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew==} + engines: {node: '>=4.0.0'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} + engines: {node: '>=12'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-path-parser@1.1.0: + resolution: {integrity: sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A==} + + systemjs@6.15.1: + resolution: {integrity: sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA==} + + tailwindcss@3.4.18: + resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + terser@5.44.0: + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} + engines: {node: '>=10'} + hasBin: true + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinymce@5.10.9: + resolution: {integrity: sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg==} + + tippy.js@6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} + engines: {node: '>=14.14'} + + to-arraybuffer@1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} + + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + 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' + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@7.14.0: + resolution: {integrity: sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==} + + unescape@1.0.1: + resolution: {integrity: sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==} + engines: {node: '>=0.10.0'} + + unidragger@2.4.0: + resolution: {integrity: sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w==} + + unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + + unipointer@2.4.0: + resolution: {integrity: sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw==} + + unist-util-find-after@4.0.1: + resolution: {integrity: sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==} + + unist-util-generated@2.0.1: + resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} + + unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + + unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + + unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + + unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + + unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unplugin-vue-components@0.22.12: + resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/parser': ^7.15.8 + vue: 2 || 3 + peerDependenciesMeta: + '@babel/parser': + optional: true + + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} + engines: {node: '>=14.0.0'} + + unzipper@0.10.14: + resolution: {integrity: sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urllib@2.44.0: + resolution: {integrity: sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A==} + engines: {node: '>= 0.10.0'} + peerDependencies: + proxy-agent: ^5.0.0 + peerDependenciesMeta: + proxy-agent: + optional: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utility@1.18.0: + resolution: {integrity: sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==} + engines: {node: '>= 0.12.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uvu@0.5.6: + resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} + engines: {node: '>=8'} + hasBin: true + + vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + + vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + + vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + + vite-plugin-compression@0.5.1: + resolution: {integrity: sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==} + peerDependencies: + vite: '>=2.0.0' + + vite@3.2.11: + resolution: {integrity: sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + 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 + + vue-demi@0.13.11: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-demi@0.14.10: + resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + + vue-echarts@6.7.3: + resolution: {integrity: sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA==} + 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 + + vue-eslint-parser@9.4.3: + resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + vue-i18n@9.14.5: + resolution: {integrity: sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g==} + engines: {node: '>= 16'} + peerDependencies: + vue: ^3.0.0 + + vue-router@4.6.0: + resolution: {integrity: sha512-YRrWLi4ayHe1d6zyH6sMPwF/WwcDY8XgUOfQGa0Kx4kmugSorLavD1ExrM/Y83B4X2NQMXYpJFSq2pbZh9ildQ==} + peerDependencies: + vue: ^3.5.0 + + vue-tsc@0.40.13: + resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==} + hasBin: true + peerDependencies: + typescript: '*' + + vue-types@3.0.2: + resolution: {integrity: sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==} + engines: {node: '>=10.15.0'} + peerDependencies: + vue: ^3.0.0 + + vue@3.5.3: + resolution: {integrity: sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + vuedraggable@4.1.0: + resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} + peerDependencies: + vue: ^3.0.1 + + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + win-release@1.1.1: + resolution: {integrity: sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==} + engines: {node: '>=0.10.0'} + + wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + + word-count@0.2.2: + resolution: {integrity: sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA==} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xgplayer-subtitles@1.0.19: + resolution: {integrity: sha512-ITvMTgnHD0uytWUYYoS3Qtz10T0o8W0YW3J7/GbfipeJQs4IiFyzhnvTXYB2KnZ6wRXLO6LrNhK9esY9iISJWA==} + + xgplayer@2.32.6: + resolution: {integrity: sha512-ESwYYcG8SQciPaN43tZkN3r0dS/jQ5RtyxyGbxn2+qcKgZQ861M899xq8Cab/z6qVVX+/4eIsxDbm3lfYGYzvA==} + hasBin: true + + xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + + xml-js@1.6.11: + resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} + hasBin: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml2js@0.6.2: + resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} + engines: {node: '>=4.0.0'} + + xml@1.0.1: + resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest-ssl@2.1.2: + resolution: {integrity: sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==} + engines: {node: '>=0.4.0'} + + xss@1.0.15: + resolution: {integrity: sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg==} + engines: {node: '>= 0.10.0'} + hasBin: true + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zip-stream@4.1.1: + resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==} + engines: {node: '>= 10'} + + zrender@5.6.1: + resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@amap/amap-jsapi-loader@1.0.1': {} + + '@ant-design/colors@6.0.0': + dependencies: + '@ctrl/tinycolor': 3.6.1 + + '@ant-design/icons-svg@4.4.2': {} + + '@ant-design/icons-vue@6.1.0(vue@3.5.3(typescript@4.9.5))': + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-svg': 4.4.2 + vue: 3.5.3(typescript@4.9.5) + + '@antfu/utils@0.7.10': {} + + '@antv/component@2.1.7': + dependencies: + '@antv/g': 6.1.30 + '@antv/scale': 0.4.16 + '@antv/util': 3.3.11 + svg-path-parser: 1.1.0 + + '@antv/coord@0.4.7': + dependencies: + '@antv/scale': 0.4.16 + '@antv/util': 2.0.17 + gl-matrix: 3.4.4 + + '@antv/event-emitter@0.1.3': {} + + '@antv/expr@1.0.2': {} + + '@antv/g-camera-api@2.0.43': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-canvas@2.0.50': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/g-plugin-canvas-path-generator': 2.1.24 + '@antv/g-plugin-canvas-picker': 2.2.1 + '@antv/g-plugin-canvas-renderer': 2.4.1 + '@antv/g-plugin-dom-interaction': 2.1.29 + '@antv/g-plugin-html-renderer': 2.2.1 + '@antv/g-plugin-image-loader': 2.2.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + tslib: 2.8.1 + + '@antv/g-dom-mutation-observer-api@2.0.40': + dependencies: + '@antv/g-lite': 2.4.1 + '@babel/runtime': 7.28.4 + + '@antv/g-lite@2.4.1': + dependencies: + '@antv/g-math': 3.0.1 + '@antv/util': 3.3.11 + '@antv/vendor': 1.0.11 + '@babel/runtime': 7.28.4 + eventemitter3: 5.0.1 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-math@3.0.1': + dependencies: + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-plugin-canvas-path-generator@2.1.24': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/g-math': 3.0.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + tslib: 2.8.1 + + '@antv/g-plugin-canvas-picker@2.2.1': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/g-math': 3.0.1 + '@antv/g-plugin-canvas-path-generator': 2.1.24 + '@antv/g-plugin-canvas-renderer': 2.4.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-plugin-canvas-renderer@2.4.1': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/g-math': 3.0.1 + '@antv/g-plugin-canvas-path-generator': 2.1.24 + '@antv/g-plugin-image-loader': 2.2.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-plugin-dom-interaction@2.1.29': + dependencies: + '@antv/g-lite': 2.4.1 + '@babel/runtime': 7.28.4 + tslib: 2.8.1 + + '@antv/g-plugin-dragndrop@2.0.40': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + tslib: 2.8.1 + + '@antv/g-plugin-html-renderer@2.2.1': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-plugin-image-loader@2.2.1': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/g-web-animations-api@2.1.30': + dependencies: + '@antv/g-lite': 2.4.1 + '@antv/util': 3.3.11 + '@babel/runtime': 7.28.4 + tslib: 2.8.1 + + '@antv/g2@5.4.1': + dependencies: + '@antv/component': 2.1.7 + '@antv/coord': 0.4.7 + '@antv/event-emitter': 0.1.3 + '@antv/expr': 1.0.2 + '@antv/g': 6.1.30 + '@antv/g-canvas': 2.0.50 + '@antv/g-plugin-dragndrop': 2.0.40 + '@antv/scale': 0.5.2 + '@antv/util': 3.3.11 + '@antv/vendor': 1.0.11 + flru: 1.0.2 + pdfast: 0.2.0 + + '@antv/g@6.1.30': + dependencies: + '@antv/g-camera-api': 2.0.43 + '@antv/g-dom-mutation-observer-api': 2.0.40 + '@antv/g-lite': 2.4.1 + '@antv/g-web-animations-api': 2.1.30 + '@babel/runtime': 7.28.4 + + '@antv/scale@0.4.16': + dependencies: + '@antv/util': 3.3.11 + color-string: 1.9.1 + fecha: 4.2.3 + + '@antv/scale@0.5.2': + dependencies: + '@antv/util': 3.3.11 + color-string: 1.9.1 + fecha: 4.2.3 + + '@antv/util@2.0.17': + dependencies: + csstype: 3.1.3 + tslib: 2.8.1 + + '@antv/util@3.3.11': + dependencies: + fast-deep-equal: 3.1.3 + gl-matrix: 3.4.4 + tslib: 2.8.1 + + '@antv/vendor@1.0.11': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-color': 3.1.3 + '@types/d3-dispatch': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-force-3d: 3.0.6 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-geo-projection: 4.0.0 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-regression: 1.3.10 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/parser@7.28.4': + dependencies: + '@babel/types': 7.28.4 + + '@babel/runtime@7.28.4': {} + + '@babel/standalone@7.28.4': {} + + '@babel/types@7.28.4': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bytemd/plugin-gfm@1.22.0(bytemd@1.22.0)': + dependencies: + bytemd: 1.22.0 + remark-gfm: 3.0.1 + transitivePeerDependencies: + - supports-color + + '@bytemd/plugin-highlight-ssr@1.22.0(bytemd@1.22.0)': + dependencies: + bytemd: 1.22.0 + rehype-highlight: 6.0.0 + + '@bytemd/plugin-highlight@1.22.0(bytemd@1.22.0)': + dependencies: + bytemd: 1.22.0 + highlight.js: 11.11.1 + + '@codemirror/autocomplete@6.19.0': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + + '@codemirror/commands@6.9.0': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + + '@codemirror/lang-angular@0.1.4': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-javascript': 6.2.4 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@codemirror/lang-cpp@6.0.3': + dependencies: + '@codemirror/language': 6.11.3 + '@lezer/cpp': 1.1.3 + + '@codemirror/lang-css@6.3.1': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/css': 1.3.0 + + '@codemirror/lang-go@6.0.1': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/go': 1.0.1 + + '@codemirror/lang-html@6.4.11': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/lang-css': 6.3.1 + '@codemirror/lang-javascript': 6.2.4 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/css': 1.3.0 + '@lezer/html': 1.3.12 + + '@codemirror/lang-java@6.0.2': + dependencies: + '@codemirror/language': 6.11.3 + '@lezer/java': 1.1.3 + + '@codemirror/lang-javascript@6.2.4': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/javascript': 1.5.4 + + '@codemirror/lang-json@6.0.2': + dependencies: + '@codemirror/language': 6.11.3 + '@lezer/json': 1.0.3 + + '@codemirror/lang-less@6.0.2': + dependencies: + '@codemirror/lang-css': 6.3.1 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@codemirror/lang-liquid@6.3.0': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@codemirror/lang-markdown@6.4.0': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/markdown': 1.4.3 + + '@codemirror/lang-php@6.0.2': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/php': 1.0.5 + + '@codemirror/lang-python@6.2.1': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/python': 1.1.18 + + '@codemirror/lang-rust@6.0.2': + dependencies: + '@codemirror/language': 6.11.3 + '@lezer/rust': 1.0.2 + + '@codemirror/lang-sass@6.0.2': + dependencies: + '@codemirror/lang-css': 6.3.1 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/sass': 1.1.0 + + '@codemirror/lang-sql@6.10.0': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@codemirror/lang-vue@0.1.3': + dependencies: + '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-javascript': 6.2.4 + '@codemirror/language': 6.11.3 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@codemirror/lang-wast@6.0.2': + dependencies: + '@codemirror/language': 6.11.3 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@codemirror/lang-xml@6.1.0': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/xml': 1.0.6 + + '@codemirror/lang-yaml@6.1.2': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + '@lezer/yaml': 1.0.3 + + '@codemirror/language-data@6.5.1': + dependencies: + '@codemirror/lang-angular': 0.1.4 + '@codemirror/lang-cpp': 6.0.3 + '@codemirror/lang-css': 6.3.1 + '@codemirror/lang-go': 6.0.1 + '@codemirror/lang-html': 6.4.11 + '@codemirror/lang-java': 6.0.2 + '@codemirror/lang-javascript': 6.2.4 + '@codemirror/lang-json': 6.0.2 + '@codemirror/lang-less': 6.0.2 + '@codemirror/lang-liquid': 6.3.0 + '@codemirror/lang-markdown': 6.4.0 + '@codemirror/lang-php': 6.0.2 + '@codemirror/lang-python': 6.2.1 + '@codemirror/lang-rust': 6.0.2 + '@codemirror/lang-sass': 6.0.2 + '@codemirror/lang-sql': 6.10.0 + '@codemirror/lang-vue': 0.1.3 + '@codemirror/lang-wast': 6.0.2 + '@codemirror/lang-xml': 6.1.0 + '@codemirror/lang-yaml': 6.1.2 + '@codemirror/language': 6.11.3 + '@codemirror/legacy-modes': 6.5.2 + + '@codemirror/language@6.11.3': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + + '@codemirror/legacy-modes@6.5.2': + dependencies: + '@codemirror/language': 6.11.3 + + '@codemirror/lint@6.9.0': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + crelt: 1.0.6 + + '@codemirror/search@6.5.11': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + crelt: 1.0.6 + + '@codemirror/state@6.5.2': + dependencies: + '@marijn/find-cluster-break': 1.0.2 + + '@codemirror/view@6.38.6': + dependencies: + '@codemirror/state': 6.5.2 + crelt: 1.0.6 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + + '@ctrl/tinycolor@3.6.1': {} + + '@esbuild/android-arm@0.15.18': + optional: true + + '@esbuild/linux-loong64@0.15.18': + optional: true + + '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.3 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@fast-csv/format@4.3.5': + dependencies: + '@types/node': 14.18.63 + lodash.escaperegexp: 4.1.2 + lodash.isboolean: 3.0.3 + lodash.isequal: 4.5.0 + lodash.isfunction: 3.0.9 + lodash.isnil: 4.0.0 + + '@fast-csv/parse@4.3.6': + dependencies: + '@types/node': 14.18.63 + lodash.escaperegexp: 4.1.2 + lodash.groupby: 4.6.0 + lodash.isfunction: 3.0.9 + lodash.isnil: 4.0.0 + lodash.isundefined: 3.0.1 + lodash.uniq: 4.5.0 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.3 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@intlify/core-base@9.14.5': + dependencies: + '@intlify/message-compiler': 9.14.5 + '@intlify/shared': 9.14.5 + + '@intlify/message-compiler@9.14.5': + dependencies: + '@intlify/shared': 9.14.5 + source-map-js: 1.2.1 + + '@intlify/shared@9.14.5': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.2 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/source-map@0.3.11': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@lezer/common@1.2.3': {} + + '@lezer/cpp@1.1.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/css@1.3.0': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/go@1.0.1': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/highlight@1.2.1': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/html@1.3.12': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/java@1.1.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/javascript@1.5.4': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/json@1.0.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/markdown@1.4.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + + '@lezer/php@1.0.5': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/python@1.1.18': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/rust@1.0.2': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/sass@1.1.0': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/xml@1.0.6': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/yaml@1.0.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@marijn/find-cluster-break@1.0.2': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@popperjs/core@2.11.8': {} + + '@rollup/pluginutils@5.3.0(rollup@2.79.2)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 + optionalDependencies: + rollup: 2.79.2 + + '@simonwep/pickr@1.8.2': + dependencies: + core-js: 3.46.0 + nanopop: 2.4.2 + + '@socket.io/component-emitter@3.1.2': {} + + '@types/codemirror@5.60.16': + dependencies: + '@types/tern': 0.23.9 + + '@types/d3-array@3.2.2': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree@1.0.8': {} + + '@types/file-saver@2.0.7': {} + + '@types/geojson@7946.0.16': {} + + '@types/hast@2.3.10': + dependencies: + '@types/unist': 2.0.11 + + '@types/json-schema@7.0.15': {} + + '@types/linkify-it@5.0.0': {} + + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.20 + + '@types/lodash@4.17.20': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdast@3.0.15': + dependencies: + '@types/unist': 2.0.11 + + '@types/mdurl@2.0.0': {} + + '@types/ms@2.1.0': {} + + '@types/node@14.18.63': {} + + '@types/node@18.19.130': + dependencies: + undici-types: 5.26.5 + + '@types/node@24.7.2': + dependencies: + undici-types: 7.14.0 + + '@types/nprogress@0.2.3': {} + + '@types/parse5@6.0.3': {} + + '@types/qrcode@1.5.5': + dependencies: + '@types/node': 18.19.130 + + '@types/semver@7.7.1': {} + + '@types/sortablejs@1.15.8': {} + + '@types/tern@0.23.9': + dependencies: + '@types/estree': 1.0.8 + + '@types/unist@2.0.11': {} + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + debug: 4.4.3 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.7.3 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + debug: 4.4.3 + eslint: 8.57.1 + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5) + debug: 4.4.3 + eslint: 8.57.1 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.4.3 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.7.3 + tsutils: 3.21.0(typescript@4.9.5) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.7.1 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.3.0': {} + + '@vavt/copy2clipboard@1.0.3': {} + + '@vavt/util@2.1.0': {} + + '@vitejs/plugin-legacy@2.3.1(terser@5.44.0)(vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0))': + dependencies: + '@babel/standalone': 7.28.4 + core-js: 3.46.0 + magic-string: 0.26.7 + regenerator-runtime: 0.13.11 + systemjs: 6.15.1 + terser: 5.44.0 + vite: 3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0) + + '@vitejs/plugin-vue@3.2.0(vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0))(vue@3.5.3(typescript@4.9.5))': + dependencies: + vite: 3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0) + vue: 3.5.3(typescript@4.9.5) + + '@volar/code-gen@0.40.13': + dependencies: + '@volar/source-map': 0.40.13 + + '@volar/source-map@0.40.13': + dependencies: + '@vue/reactivity': 3.2.38 + + '@volar/typescript-faster@0.40.13': + dependencies: + semver: 7.7.3 + + '@volar/vue-language-core@0.40.13': + dependencies: + '@volar/code-gen': 0.40.13 + '@volar/source-map': 0.40.13 + '@vue/compiler-core': 3.5.22 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-sfc': 3.5.22 + '@vue/reactivity': 3.5.22 + '@vue/shared': 3.5.22 + + '@volar/vue-typescript@0.40.13': + dependencies: + '@volar/code-gen': 0.40.13 + '@volar/typescript-faster': 0.40.13 + '@volar/vue-language-core': 0.40.13 + + '@vue/compiler-core@3.5.22': + dependencies: + '@babel/parser': 7.28.4 + '@vue/shared': 3.5.22 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.3': + dependencies: + '@babel/parser': 7.28.4 + '@vue/shared': 3.5.3 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.22': + dependencies: + '@vue/compiler-core': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/compiler-dom@3.5.3': + dependencies: + '@vue/compiler-core': 3.5.3 + '@vue/shared': 3.5.3 + + '@vue/compiler-sfc@3.5.22': + dependencies: + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.5.22 + '@vue/compiler-dom': 3.5.22 + '@vue/compiler-ssr': 3.5.22 + '@vue/shared': 3.5.22 + estree-walker: 2.0.2 + magic-string: 0.30.19 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-sfc@3.5.3': + dependencies: + '@babel/parser': 7.28.4 + '@vue/compiler-core': 3.5.3 + '@vue/compiler-dom': 3.5.3 + '@vue/compiler-ssr': 3.5.3 + '@vue/shared': 3.5.3 + estree-walker: 2.0.2 + magic-string: 0.30.19 + postcss: 8.5.6 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.22': + dependencies: + '@vue/compiler-dom': 3.5.22 + '@vue/shared': 3.5.22 + + '@vue/compiler-ssr@3.5.3': + dependencies: + '@vue/compiler-dom': 3.5.3 + '@vue/shared': 3.5.3 + + '@vue/devtools-api@6.6.4': {} + + '@vue/reactivity@3.2.38': + dependencies: + '@vue/shared': 3.2.38 + + '@vue/reactivity@3.5.22': + dependencies: + '@vue/shared': 3.5.22 + + '@vue/reactivity@3.5.3': + dependencies: + '@vue/shared': 3.5.3 + + '@vue/runtime-core@3.5.3': + dependencies: + '@vue/reactivity': 3.5.3 + '@vue/shared': 3.5.3 + + '@vue/runtime-dom@3.5.3': + dependencies: + '@vue/reactivity': 3.5.3 + '@vue/runtime-core': 3.5.3 + '@vue/shared': 3.5.3 + csstype: 3.1.3 + + '@vue/server-renderer@3.5.3(vue@3.5.3(typescript@4.9.5))': + dependencies: + '@vue/compiler-ssr': 3.5.3 + '@vue/shared': 3.5.3 + vue: 3.5.3(typescript@4.9.5) + + '@vue/shared@3.2.38': {} + + '@vue/shared@3.5.22': {} + + '@vue/shared@3.5.3': {} + + '@wecom/jssdk@1.4.5': {} + + acorn-jsx@5.3.2(acorn@8.15.0): + dependencies: + acorn: 8.15.0 + + acorn@8.15.0: {} + + address@1.2.2: {} + + adler-32@1.3.1: {} + + agentkeepalive@3.5.3: + dependencies: + humanize-ms: 1.2.1 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ali-oss@6.23.0: + dependencies: + address: 1.2.2 + agentkeepalive: 3.5.3 + bowser: 1.9.4 + copy-to: 2.0.1 + dateformat: 2.2.0 + debug: 4.4.3 + destroy: 1.2.0 + end-or-error: 1.0.1 + get-ready: 1.0.0 + humanize-ms: 1.2.1 + is-type-of: 1.4.0 + js-base64: 2.6.4 + jstoxml: 2.2.9 + lodash: 4.17.21 + merge-descriptors: 1.0.3 + mime: 2.6.0 + platform: 1.3.6 + pump: 3.0.3 + qs: 6.14.0 + sdk-base: 2.0.1 + stream-http: 2.8.2 + stream-wormhole: 1.1.0 + urllib: 2.44.0 + utility: 1.18.0 + xml2js: 0.6.2 + transitivePeerDependencies: + - proxy-agent + - supports-color + + amdefine@1.0.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + ant-design-vue@3.2.20(vue@3.5.3(typescript@4.9.5)): + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-vue': 6.1.0(vue@3.5.3(typescript@4.9.5)) + '@babel/runtime': 7.28.4 + '@ctrl/tinycolor': 3.6.1 + '@simonwep/pickr': 1.8.2 + array-tree-filter: 2.1.0 + async-validator: 4.2.5 + dayjs: 1.11.18 + dom-align: 1.12.4 + dom-scroll-into-view: 2.0.1 + lodash: 4.17.21 + lodash-es: 4.17.21 + resize-observer-polyfill: 1.5.1 + scroll-into-view-if-needed: 2.2.31 + shallow-equal: 1.2.1 + vue: 3.5.3(typescript@4.9.5) + vue-types: 3.0.2(vue@3.5.3(typescript@4.9.5)) + warning: 4.0.3 + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + archiver-utils@2.1.0: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 2.3.8 + + archiver-utils@3.0.4: + dependencies: + glob: 7.2.3 + graceful-fs: 4.2.11 + lazystream: 1.0.1 + lodash.defaults: 4.2.0 + lodash.difference: 4.5.0 + lodash.flatten: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.union: 4.6.0 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + + archiver@5.3.2: + dependencies: + archiver-utils: 2.1.0 + async: 3.2.6 + buffer-crc32: 0.2.13 + readable-stream: 3.6.2 + readdir-glob: 1.1.3 + tar-stream: 2.2.0 + zip-stream: 4.1.1 + + arg@5.0.2: {} + + argparse@2.0.1: {} + + array-tree-filter@2.1.0: {} + + array-union@2.1.0: {} + + async-validator@4.2.5: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + autoprefixer@10.4.21(postcss@8.5.6): + dependencies: + browserslist: 4.26.3 + caniuse-lite: 1.0.30001750 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + + axios@0.27.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + transitivePeerDependencies: + - debug + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.8.16: {} + + big-integer@1.6.52: {} + + binary-extensions@2.3.0: {} + + binary@0.3.0: + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bluebird@3.4.7: {} + + boolbase@1.0.0: {} + + bowser@1.9.4: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.2: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.26.3: + dependencies: + baseline-browser-mapping: 2.8.16 + caniuse-lite: 1.0.30001750 + electron-to-chromium: 1.5.236 + node-releases: 2.0.23 + update-browserslist-db: 1.1.3(browserslist@4.26.3) + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + + buffer-indexof-polyfill@1.0.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffers@0.1.1: {} + + builtin-status-codes@3.0.0: {} + + bytemd@1.22.0: + dependencies: + '@popperjs/core': 2.11.8 + '@types/codemirror': 5.60.16 + '@types/hast': 2.3.10 + '@types/lodash-es': 4.17.12 + '@types/mdast': 3.0.15 + codemirror-ssr: 0.65.0(@types/codemirror@5.60.16) + hast-util-sanitize: 4.1.0 + lodash-es: 4.17.21 + rehype-raw: 6.1.1 + rehype-sanitize: 5.0.1 + rehype-stringify: 9.0.4 + remark-parse: 10.0.2 + remark-rehype: 10.1.0 + select-files: 1.0.1 + tippy.js: 6.3.7 + unified: 10.1.2 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + word-count: 0.2.2 + transitivePeerDependencies: + - supports-color + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase-css@2.0.1: {} + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001750: {} + + ccount@2.0.1: {} + + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + + chainsaw@0.1.0: + dependencies: + traverse: 0.3.9 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + + character-entities@2.0.2: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + codemirror-ssr@0.65.0(@types/codemirror@5.60.16): + dependencies: + '@types/codemirror': 5.60.16 + + codemirror@6.0.2: + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/commands': 6.9.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.0 + '@codemirror/search': 6.5.11 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + + codepage@1.15.0: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + comma-separated-tokens@2.0.3: {} + + commander@2.20.3: {} + + commander@4.1.1: {} + + commander@7.2.0: {} + + compress-commons@4.1.2: + dependencies: + buffer-crc32: 0.2.13 + crc32-stream: 4.0.3 + normalize-path: 3.0.0 + readable-stream: 3.6.2 + + compute-scroll-into-view@1.0.20: {} + + concat-map@0.0.1: {} + + content-type@1.0.5: {} + + copy-anything@2.0.6: + dependencies: + is-what: 3.14.1 + + copy-to@2.0.1: {} + + core-js@3.46.0: {} + + core-util-is@1.0.3: {} + + countup.js@2.9.0: {} + + crc-32@1.2.2: {} + + crc32-stream@4.0.3: + dependencies: + crc-32: 1.2.2 + readable-stream: 3.6.2 + + crelt@1.0.6: {} + + cropperjs@1.6.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-js@4.2.0: {} + + cssesc@3.0.0: {} + + cssfilter@0.0.10: {} + + csstype@3.1.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-binarytree@1.0.2: {} + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force-3d@3.0.6: + dependencies: + d3-binarytree: 1.0.2 + d3-dispatch: 3.0.1 + d3-octree: 1.1.0 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo-projection@4.0.0: + dependencies: + commander: 7.2.0 + d3-array: 3.2.4 + d3-geo: 3.1.1 + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-octree@1.1.0: {} + + d3-path@3.1.0: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-regression@1.3.10: {} + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + danmu.js@1.1.13: + dependencies: + event-emitter: 0.3.5 + + dateformat@2.2.0: {} + + dayjs@1.11.18: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decamelize@1.2.0: {} + + decode-named-character-reference@1.2.0: + dependencies: + character-entities: 2.0.2 + + deep-is@0.1.4: {} + + default-user-agent@1.0.0: + dependencies: + os-name: 1.0.3 + + define-lazy-prop@2.0.0: {} + + delayed-stream@1.0.0: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + didyoumean@1.2.2: {} + + diff@5.2.0: {} + + digest-header@1.1.0: {} + + dijkstrajs@1.0.3: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dlv@1.1.3: {} + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + docx@9.5.1: + dependencies: + '@types/node': 24.7.2 + hash.js: 1.1.7 + jszip: 3.10.1 + nanoid: 5.1.6 + xml: 1.0.1 + xml-js: 1.6.11 + + dom-align@1.12.4: {} + + dom-scroll-into-view@2.0.1: {} + + downloadjs@1.4.7: {} + + draggabilly@2.4.1: + dependencies: + get-size: 2.0.3 + unidragger: 2.4.0 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer2@0.1.4: + dependencies: + readable-stream: 2.3.8 + + eastasianwidth@0.2.0: {} + + echarts-wordcloud@2.1.0(echarts@5.6.0): + dependencies: + echarts: 5.6.0 + + echarts@5.6.0: + dependencies: + tslib: 2.3.0 + zrender: 5.6.1 + + ee-first@1.1.1: {} + + ele-admin-pro@1.11.1(ant-design-vue@3.2.20(vue@3.5.3(typescript@4.9.5)))(vue@3.5.3(typescript@4.9.5)): + dependencies: + ant-design-vue: 3.2.20(vue@3.5.3(typescript@4.9.5)) + vue: 3.5.3(typescript@4.9.5) + + electron-to-chromium@1.5.236: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + end-or-error@1.0.1: {} + + engine.io-client@6.6.3: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-parser: 5.2.3 + ws: 8.17.1 + xmlhttprequest-ssl: 2.1.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + engine.io-parser@5.2.3: {} + + entities@4.5.0: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.15.18: + 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 + + escalade@3.2.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + eslint-config-prettier@8.10.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-define-config@1.24.1: {} + + eslint-plugin-prettier@4.2.5(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8): + dependencies: + eslint: 8.57.1 + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + optionalDependencies: + eslint-config-prettier: 8.10.2(eslint@8.57.1) + + eslint-plugin-vue@9.33.0(eslint@8.57.1): + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + eslint: 8.57.1 + globals: 13.24.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.3 + vue-eslint-parser: 9.4.3(eslint@8.57.1) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + 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.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + 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.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + espree@9.6.1: + dependencies: + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) + eslint-visitor-keys: 3.4.3 + + esprima@1.2.5: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + ev-emitter@1.1.1: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + eventemitter3@4.0.7: {} + + eventemitter3@5.0.1: {} + + exceljs@4.4.0: + dependencies: + archiver: 5.3.2 + dayjs: 1.11.18 + fast-csv: 4.3.6 + jszip: 3.10.1 + readable-stream: 3.6.2 + saxes: 5.0.1 + tmp: 0.2.5 + unzipper: 0.10.14 + uuid: 8.3.2 + + ext@1.7.0: + dependencies: + type: 2.7.3 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend@3.0.2: {} + + fast-csv@4.3.6: + dependencies: + '@fast-csv/format': 4.3.5 + '@fast-csv/parse': 4.3.6 + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fault@2.0.1: + dependencies: + format: 0.2.2 + + fecha@4.2.3: {} + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-saver@2.0.5: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + + flatted@3.3.3: {} + + flru@1.0.2: {} + + follow-redirects@1.15.11: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + format@0.2.2: {} + + formstream@1.5.2: + dependencies: + destroy: 1.2.0 + mime: 2.6.0 + node-hex: 1.0.1 + pause-stream: 0.0.11 + + frac@1.1.2: {} + + fraction.js@4.3.7: {} + + fs-constants@1.0.0: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.0 + universalify: 2.0.1 + + fs-extra@5.0.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + fstream@1.0.12: + dependencies: + graceful-fs: 4.2.11 + inherits: 2.0.4 + mkdirp: 0.5.6 + rimraf: 2.7.1 + + function-bind@1.1.2: {} + + generate-source-map@0.0.5: + dependencies: + esprima: 1.2.5 + source-map: 0.1.43 + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-ready@1.0.0: {} + + get-size@2.0.3: {} + + github-markdown-css@5.8.1: {} + + gl-matrix@3.4.4: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-from-parse5@7.1.2: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + hastscript: 7.2.0 + property-information: 6.5.0 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + + hast-util-is-element@2.1.3: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + + hast-util-parse-selector@3.1.1: + dependencies: + '@types/hast': 2.3.10 + + hast-util-raw@7.2.3: + dependencies: + '@types/hast': 2.3.10 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-sanitize@4.1.0: + dependencies: + '@types/hast': 2.3.10 + + hast-util-to-html@8.0.4: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 + html-void-elements: 2.0.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-to-parse5@7.1.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + + hast-util-to-text@3.1.2: + dependencies: + '@types/hast': 2.3.10 + '@types/unist': 2.0.11 + hast-util-is-element: 2.1.3 + unist-util-find-after: 4.0.1 + + hast-util-whitespace@2.0.1: {} + + hastscript@7.2.0: + dependencies: + '@types/hast': 2.3.10 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.5.0 + space-separated-tokens: 2.0.2 + + highlight.js@11.11.1: {} + + highlight.js@11.8.0: {} + + html-void-elements@2.0.1: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + image-size@0.5.5: + optional: true + + immediate@3.0.6: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + internmap@2.0.3: {} + + is-arrayish@0.3.4: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-buffer@2.0.5: {} + + is-class-hotfix@0.0.6: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + + is-extendable@0.1.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@3.0.1: {} + + is-type-of@1.4.0: + dependencies: + core-util-is: 1.0.3 + is-class-hotfix: 0.0.6 + isstream: 0.1.2 + + is-what@3.14.1: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isstream@0.1.2: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@1.21.7: {} + + js-base64@2.6.4: {} + + js-cookie@3.0.5: {} + + js-md5@0.7.3: {} + + js-tokens@4.0.0: {} + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbarcode@3.12.1: {} + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.2.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jstoxml@2.2.9: {} + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@4.1.5: {} + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + less@4.4.2: + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.8.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + + listenercount@1.0.1: {} + + local-pkg@0.4.3: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash-es@4.17.21: {} + + lodash.defaults@4.2.0: {} + + lodash.difference@4.5.0: {} + + lodash.escaperegexp@4.1.2: {} + + lodash.flatten@4.4.0: {} + + lodash.groupby@4.6.0: {} + + lodash.isboolean@3.0.3: {} + + lodash.isequal@4.5.0: {} + + lodash.isfunction@3.0.9: {} + + lodash.isnil@4.0.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isundefined@3.0.1: {} + + lodash.merge@4.6.2: {} + + lodash.union@4.6.0: {} + + lodash.uniq@4.5.0: {} + + lodash@4.17.21: {} + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lowlight@2.9.0: + dependencies: + '@types/hast': 2.3.10 + fault: 2.0.1 + highlight.js: 11.8.0 + + lru-cache@10.4.3: {} + + lru-cache@11.2.2: {} + + lucide-vue-next@0.453.0(vue@3.5.3(typescript@4.9.5)): + dependencies: + vue: 3.5.3(typescript@4.9.5) + + magic-string@0.26.7: + dependencies: + sourcemap-codec: 1.4.8 + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magic-string@0.30.19: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + optional: true + + markdown-it-image-figures@2.1.1(markdown-it@14.1.0): + dependencies: + markdown-it: 14.1.0 + + markdown-it-sub@2.0.0: {} + + markdown-it-sup@2.0.0: {} + + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + markdown-table@3.0.4: {} + + math-intrinsics@1.1.0: {} + + md-editor-v3@5.8.5(vue@3.5.3(typescript@4.9.5)): + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/commands': 6.9.0 + '@codemirror/lang-markdown': 6.4.0 + '@codemirror/language': 6.11.3 + '@codemirror/language-data': 6.5.1 + '@codemirror/search': 6.5.11 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/highlight': 1.2.1 + '@types/markdown-it': 14.1.2 + '@vavt/copy2clipboard': 1.0.3 + '@vavt/util': 2.1.0 + codemirror: 6.0.2 + lru-cache: 11.2.2 + lucide-vue-next: 0.453.0(vue@3.5.3(typescript@4.9.5)) + markdown-it: 14.1.0 + markdown-it-image-figures: 2.1.1(markdown-it@14.1.0) + markdown-it-sub: 2.0.0 + markdown-it-sup: 2.0.0 + medium-zoom: 1.1.0 + vue: 3.5.3(typescript@4.9.5) + xss: 1.0.15 + + mdast-util-definitions@5.1.2: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + unist-util-visit: 4.1.2 + + mdast-util-find-and-replace@2.2.2: + dependencies: + '@types/mdast': 3.0.15 + escape-string-regexp: 5.0.0 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + mdast-util-from-markdown@1.3.1: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + decode-named-character-reference: 1.2.0 + mdast-util-to-string: 3.2.0 + micromark: 3.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-decode-string: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + unist-util-stringify-position: 3.0.3 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@1.0.3: + dependencies: + '@types/mdast': 3.0.15 + ccount: 2.0.1 + mdast-util-find-and-replace: 2.2.2 + micromark-util-character: 1.2.0 + + mdast-util-gfm-footnote@1.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + micromark-util-normalize-identifier: 1.1.0 + + mdast-util-gfm-strikethrough@1.0.3: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + + mdast-util-gfm-table@1.0.7: + dependencies: + '@types/mdast': 3.0.15 + markdown-table: 3.0.4 + mdast-util-from-markdown: 1.3.1 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@1.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-to-markdown: 1.5.0 + + mdast-util-gfm@2.0.2: + dependencies: + mdast-util-from-markdown: 1.3.1 + mdast-util-gfm-autolink-literal: 1.0.3 + mdast-util-gfm-footnote: 1.0.2 + mdast-util-gfm-strikethrough: 1.0.3 + mdast-util-gfm-table: 1.0.7 + mdast-util-gfm-task-list-item: 1.0.2 + mdast-util-to-markdown: 1.5.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + unist-util-is: 5.2.1 + + mdast-util-to-hast@12.3.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-definitions: 5.1.2 + micromark-util-sanitize-uri: 1.2.0 + trim-lines: 3.0.1 + unist-util-generated: 2.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + + mdast-util-to-markdown@1.5.0: + dependencies: + '@types/mdast': 3.0.15 + '@types/unist': 2.0.11 + longest-streak: 3.1.0 + mdast-util-phrasing: 3.0.1 + mdast-util-to-string: 3.2.0 + micromark-util-decode-string: 1.1.0 + unist-util-visit: 4.1.2 + zwitch: 2.0.4 + + mdast-util-to-string@3.2.0: + dependencies: + '@types/mdast': 3.0.15 + + mdurl@2.0.0: {} + + medium-zoom@1.1.0: {} + + merge-descriptors@1.0.3: {} + + merge2@1.4.1: {} + + micromark-core-commonmark@1.1.0: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-factory-destination: 1.1.0 + micromark-factory-label: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-factory-title: 1.1.0 + micromark-factory-whitespace: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-html-tag-name: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-autolink-literal@1.0.5: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-extension-gfm-footnote@1.1.2: + dependencies: + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-strikethrough@1.0.7: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-classify-character: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-table@1.0.7: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm-tagfilter@1.0.2: + dependencies: + micromark-util-types: 1.1.0 + + micromark-extension-gfm-task-list-item@1.0.5: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-extension-gfm@2.0.3: + dependencies: + micromark-extension-gfm-autolink-literal: 1.0.5 + micromark-extension-gfm-footnote: 1.1.2 + micromark-extension-gfm-strikethrough: 1.0.7 + micromark-extension-gfm-table: 1.0.7 + micromark-extension-gfm-tagfilter: 1.0.2 + micromark-extension-gfm-task-list-item: 1.0.5 + micromark-util-combine-extensions: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-destination@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-label@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-factory-space@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-types: 1.1.0 + + micromark-factory-title@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-factory-whitespace@1.1.0: + dependencies: + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-character@1.2.0: + dependencies: + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-chunked@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-classify-character@1.1.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-combine-extensions@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-types: 1.1.0 + + micromark-util-decode-numeric-character-reference@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-decode-string@1.1.0: + dependencies: + decode-named-character-reference: 1.2.0 + micromark-util-character: 1.2.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-encode@1.1.0: {} + + micromark-util-html-tag-name@1.2.0: {} + + micromark-util-normalize-identifier@1.1.0: + dependencies: + micromark-util-symbol: 1.1.0 + + micromark-util-resolve-all@1.1.0: + dependencies: + micromark-util-types: 1.1.0 + + micromark-util-sanitize-uri@1.2.0: + dependencies: + micromark-util-character: 1.2.0 + micromark-util-encode: 1.1.0 + micromark-util-symbol: 1.1.0 + + micromark-util-subtokenize@1.1.0: + dependencies: + micromark-util-chunked: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + + micromark-util-symbol@1.1.0: {} + + micromark-util-types@1.1.0: {} + + micromark@3.2.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.3 + decode-named-character-reference: 1.2.0 + micromark-core-commonmark: 1.1.0 + micromark-factory-space: 1.1.0 + micromark-util-character: 1.2.0 + micromark-util-chunked: 1.1.0 + micromark-util-combine-extensions: 1.1.0 + micromark-util-decode-numeric-character-reference: 1.1.0 + micromark-util-encode: 1.1.0 + micromark-util-normalize-identifier: 1.1.0 + micromark-util-resolve-all: 1.1.0 + micromark-util-sanitize-uri: 1.2.0 + micromark-util-subtokenize: 1.1.0 + micromark-util-symbol: 1.1.0 + micromark-util-types: 1.1.0 + uvu: 0.5.6 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: + optional: true + + mime@2.6.0: {} + + minimalistic-assert@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.2 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.2 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mitt@3.0.1: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mri@1.2.0: {} + + ms@2.1.3: {} + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.11: {} + + nanoid@5.1.6: {} + + nanopop@2.4.2: {} + + natural-compare-lite@1.4.0: {} + + natural-compare@1.4.0: {} + + needle@3.3.1: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + + next-tick@1.1.0: {} + + node-hex@1.0.1: {} + + node-releases@2.0.23: {} + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + nprogress@0.2.0: {} + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + os-name@1.0.3: + dependencies: + osx-release: 1.1.0 + win-release: 1.1.1 + + osx-release@1.1.0: + dependencies: + minimist: 1.2.8 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + pako@1.0.11: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-node-version@1.0.1: {} + + parse5@6.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + + pdfast@0.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + pify@2.3.0: {} + + pify@4.0.1: + optional: true + + pinia@2.3.1(typescript@4.9.5)(vue@3.5.3(typescript@4.9.5)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.3(typescript@4.9.5) + vue-demi: 0.14.10(vue@3.5.3(typescript@4.9.5)) + optionalDependencies: + typescript: 4.9.5 + transitivePeerDependencies: + - '@vue/composition-api' + + pirates@4.0.7: {} + + platform@1.3.6: {} + + pngjs@5.0.0: {} + + postcss-import@15.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.10 + + postcss-js@4.1.0(postcss@8.5.6): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.6 + + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 1.21.7 + postcss: 8.5.6 + + postcss-nested@6.2.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@2.8.8: {} + + process-nextick-args@2.0.1: {} + + property-information@6.5.0: {} + + prr@1.0.1: + optional: true + + pump@3.0.3: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode.js@2.3.1: {} + + punycode@2.3.1: {} + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.6 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + regenerator-runtime@0.13.11: {} + + rehype-highlight@6.0.0: + dependencies: + '@types/hast': 2.3.10 + hast-util-to-text: 3.1.2 + lowlight: 2.9.0 + unified: 10.1.2 + unist-util-visit: 4.1.2 + + rehype-raw@6.1.1: + dependencies: + '@types/hast': 2.3.10 + hast-util-raw: 7.2.3 + unified: 10.1.2 + + rehype-sanitize@5.0.1: + dependencies: + '@types/hast': 2.3.10 + hast-util-sanitize: 4.1.0 + unified: 10.1.2 + + rehype-stringify@9.0.4: + dependencies: + '@types/hast': 2.3.10 + hast-util-to-html: 8.0.4 + unified: 10.1.2 + + remark-gfm@3.0.1: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-gfm: 2.0.2 + micromark-extension-gfm: 2.0.3 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-parse@10.0.2: + dependencies: + '@types/mdast': 3.0.15 + mdast-util-from-markdown: 1.3.1 + unified: 10.1.2 + transitivePeerDependencies: + - supports-color + + remark-rehype@10.1.0: + dependencies: + '@types/hast': 2.3.10 + '@types/mdast': 3.0.15 + mdast-util-to-hast: 12.3.0 + unified: 10.1.2 + + require-directory@2.1.1: {} + + require-main-filename@2.0.0: {} + + resize-detector@0.3.0: {} + + resize-observer-polyfill@1.5.1: {} + + resolve-from@4.0.0: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rollup-plugin-visualizer@5.14.0(rollup@2.79.2): + dependencies: + open: 8.4.2 + picomatch: 4.0.3 + source-map: 0.7.6 + yargs: 17.7.2 + optionalDependencies: + rollup: 2.79.2 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rw@1.3.3: {} + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + sax@1.4.1: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + sdk-base@2.0.1: + dependencies: + get-ready: 1.0.0 + + select-files@1.0.1: {} + + semver@5.7.2: {} + + semver@7.7.3: {} + + set-blocking@2.0.0: {} + + setimmediate@1.0.5: {} + + shallow-equal@1.2.1: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@4.1.0: {} + + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + + slash@3.0.0: {} + + socket.io-client@4.8.1: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + engine.io-client: 6.6.3 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + socket.io-parser@4.2.4: + dependencies: + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + sortablejs@1.14.0: {} + + sortablejs@1.15.6: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.1.43: + dependencies: + amdefine: 1.0.1 + + source-map@0.6.1: {} + + source-map@0.7.6: {} + + sourcemap-codec@1.4.8: {} + + space-separated-tokens@2.0.2: {} + + ssf@0.11.2: + dependencies: + frac: 1.1.2 + + statuses@1.5.0: {} + + stream-http@2.8.2: + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.8 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + + stream-wormhole@1.1.0: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.2 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.2: + dependencies: + ansi-regex: 6.2.2 + + strip-json-comments@3.1.1: {} + + style-mod@4.1.2: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-path-parser@1.1.0: {} + + systemjs@6.15.1: {} + + tailwindcss@3.4.18: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-import: 15.1.0(postcss@8.5.6) + postcss-js: 4.1.0(postcss@8.5.6) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6) + postcss-nested: 6.2.0(postcss@8.5.6) + postcss-selector-parser: 6.1.2 + resolve: 1.22.10 + sucrase: 3.35.0 + transitivePeerDependencies: + - tsx + - yaml + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + terser@5.44.0: + dependencies: + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + text-table@0.2.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + through@2.3.8: {} + + tinymce@5.10.9: {} + + tippy.js@6.3.7: + dependencies: + '@popperjs/core': 2.11.8 + + tmp@0.2.5: {} + + to-arraybuffer@1.0.1: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + traverse@0.3.9: {} + + trim-lines@3.0.1: {} + + trough@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + tslib@1.14.1: {} + + tslib@2.3.0: {} + + tslib@2.8.1: {} + + tsutils@3.21.0(typescript@4.9.5): + dependencies: + tslib: 1.14.1 + typescript: 4.9.5 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + type@2.7.3: {} + + typescript@4.9.5: {} + + uc.micro@2.1.0: {} + + undici-types@5.26.5: {} + + undici-types@7.14.0: {} + + unescape@1.0.1: + dependencies: + extend-shallow: 2.0.1 + + unidragger@2.4.0: + dependencies: + unipointer: 2.4.0 + + unified@10.1.2: + dependencies: + '@types/unist': 2.0.11 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 5.3.7 + + unipointer@2.4.0: + dependencies: + ev-emitter: 1.1.1 + + unist-util-find-after@4.0.1: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-generated@2.0.1: {} + + unist-util-is@5.2.1: + dependencies: + '@types/unist': 2.0.11 + + unist-util-position@4.0.4: + dependencies: + '@types/unist': 2.0.11 + + unist-util-stringify-position@3.0.3: + dependencies: + '@types/unist': 2.0.11 + + unist-util-visit-parents@5.1.3: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + + unist-util-visit@4.1.2: + dependencies: + '@types/unist': 2.0.11 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unplugin-vue-components@0.22.12(@babel/parser@7.28.4)(rollup@2.79.2)(vue@3.5.3(typescript@4.9.5)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.3.0(rollup@2.79.2) + chokidar: 3.6.0 + debug: 4.4.3 + fast-glob: 3.3.3 + local-pkg: 0.4.3 + magic-string: 0.27.0 + minimatch: 5.1.6 + resolve: 1.22.10 + unplugin: 1.16.1 + vue: 3.5.3(typescript@4.9.5) + optionalDependencies: + '@babel/parser': 7.28.4 + transitivePeerDependencies: + - rollup + - supports-color + + unplugin@1.16.1: + dependencies: + acorn: 8.15.0 + webpack-virtual-modules: 0.6.2 + + unzipper@0.10.14: + dependencies: + big-integer: 1.6.52 + binary: 0.3.0 + bluebird: 3.4.7 + buffer-indexof-polyfill: 1.0.2 + duplexer2: 0.1.4 + fstream: 1.0.12 + graceful-fs: 4.2.11 + listenercount: 1.0.1 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + update-browserslist-db@1.1.3(browserslist@4.26.3): + dependencies: + browserslist: 4.26.3 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urllib@2.44.0: + dependencies: + any-promise: 1.3.0 + content-type: 1.0.5 + default-user-agent: 1.0.0 + digest-header: 1.1.0 + ee-first: 1.1.1 + formstream: 1.5.2 + humanize-ms: 1.2.1 + iconv-lite: 0.6.3 + pump: 3.0.3 + qs: 6.14.0 + statuses: 1.5.0 + utility: 1.18.0 + + util-deprecate@1.0.2: {} + + utility@1.18.0: + dependencies: + copy-to: 2.0.1 + escape-html: 1.0.3 + mkdirp: 0.5.6 + mz: 2.7.0 + unescape: 1.0.1 + + uuid@8.3.2: {} + + uvu@0.5.6: + dependencies: + dequal: 2.0.3 + diff: 5.2.0 + kleur: 4.1.5 + sade: 1.8.1 + + vfile-location@4.1.0: + dependencies: + '@types/unist': 2.0.11 + vfile: 5.3.7 + + vfile-message@3.1.4: + dependencies: + '@types/unist': 2.0.11 + unist-util-stringify-position: 3.0.3 + + vfile@5.3.7: + dependencies: + '@types/unist': 2.0.11 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + + vite-plugin-compression@0.5.1(vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0)): + dependencies: + chalk: 4.1.2 + debug: 4.4.3 + fs-extra: 10.1.0 + vite: 3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0) + transitivePeerDependencies: + - supports-color + + vite@3.2.11(@types/node@18.19.130)(less@4.4.2)(terser@5.44.0): + dependencies: + esbuild: 0.15.18 + postcss: 8.5.6 + resolve: 1.22.10 + rollup: 2.79.2 + optionalDependencies: + '@types/node': 18.19.130 + fsevents: 2.3.3 + less: 4.4.2 + terser: 5.44.0 + + vue-demi@0.13.11(vue@3.5.3(typescript@4.9.5)): + dependencies: + vue: 3.5.3(typescript@4.9.5) + + vue-demi@0.14.10(vue@3.5.3(typescript@4.9.5)): + dependencies: + vue: 3.5.3(typescript@4.9.5) + + vue-echarts@6.7.3(@vue/runtime-core@3.5.3)(echarts@5.6.0)(vue@3.5.3(typescript@4.9.5)): + dependencies: + echarts: 5.6.0 + resize-detector: 0.3.0 + vue: 3.5.3(typescript@4.9.5) + vue-demi: 0.13.11(vue@3.5.3(typescript@4.9.5)) + optionalDependencies: + '@vue/runtime-core': 3.5.3 + + vue-eslint-parser@9.4.3(eslint@8.57.1): + dependencies: + debug: 4.4.3 + eslint: 8.57.1 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color + + vue-i18n@9.14.5(vue@3.5.3(typescript@4.9.5)): + dependencies: + '@intlify/core-base': 9.14.5 + '@intlify/shared': 9.14.5 + '@vue/devtools-api': 6.6.4 + vue: 3.5.3(typescript@4.9.5) + + vue-router@4.6.0(vue@3.5.3(typescript@4.9.5)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.3(typescript@4.9.5) + + vue-tsc@0.40.13(typescript@4.9.5): + dependencies: + '@volar/vue-language-core': 0.40.13 + '@volar/vue-typescript': 0.40.13 + typescript: 4.9.5 + + vue-types@3.0.2(vue@3.5.3(typescript@4.9.5)): + dependencies: + is-plain-object: 3.0.1 + vue: 3.5.3(typescript@4.9.5) + + vue@3.5.3(typescript@4.9.5): + dependencies: + '@vue/compiler-dom': 3.5.3 + '@vue/compiler-sfc': 3.5.3 + '@vue/runtime-dom': 3.5.3 + '@vue/server-renderer': 3.5.3(vue@3.5.3(typescript@4.9.5)) + '@vue/shared': 3.5.3 + optionalDependencies: + typescript: 4.9.5 + + vuedraggable@4.1.0(vue@3.5.3(typescript@4.9.5)): + dependencies: + sortablejs: 1.14.0 + vue: 3.5.3(typescript@4.9.5) + + w3c-keyname@2.2.8: {} + + warning@4.0.3: + dependencies: + loose-envify: 1.4.0 + + web-namespaces@2.0.1: {} + + webpack-virtual-modules@0.6.2: {} + + which-module@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + win-release@1.1.1: + dependencies: + semver: 5.7.2 + + wmf@1.0.2: {} + + word-count@0.2.2: {} + + word-wrap@1.2.5: {} + + word@0.3.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.1.2 + + wrappy@1.0.2: {} + + ws@8.17.1: {} + + xgplayer-subtitles@1.0.19: + dependencies: + eventemitter3: 4.0.7 + generate-source-map: 0.0.5 + + xgplayer@2.32.6: + dependencies: + chalk: 2.4.2 + commander: 2.20.3 + danmu.js: 1.1.13 + downloadjs: 1.4.7 + draggabilly: 2.4.1 + event-emitter: 0.3.5 + fs-extra: 5.0.0 + xgplayer-subtitles: 1.0.19 + + xlsx@0.18.5: + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + + xml-js@1.6.11: + dependencies: + sax: 1.4.1 + + xml-name-validator@4.0.0: {} + + xml2js@0.6.2: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xml@1.0.1: {} + + xmlbuilder@11.0.1: {} + + xmlchars@2.2.0: {} + + xmlhttprequest-ssl@2.1.2: {} + + xss@1.0.15: + dependencies: + commander: 2.20.3 + cssfilter: 0.0.10 + + xtend@4.0.2: {} + + y18n@4.0.3: {} + + y18n@5.0.8: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@21.1.1: {} + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + zip-stream@4.1.1: + dependencies: + archiver-utils: 3.0.4 + compress-commons: 4.1.2 + readable-stream: 3.6.2 + + zrender@5.6.1: + dependencies: + tslib: 2.3.0 + + zwitch@2.0.4: {} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..5cbc2c7 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/prettier.config.js b/prettier.config.js new file mode 100644 index 0000000..33ad45b --- /dev/null +++ b/prettier.config.js @@ -0,0 +1,19 @@ +module.exports = { + printWidth: 80, + tabWidth: 2, + useTabs: false, + semi: true, + singleQuote: true, + quoteProps: 'as-needed', + jsxSingleQuote: false, + trailingComma: 'none', + bracketSpacing: true, + bracketSameLine: false, + arrowParens: 'always', + requirePragma: false, + insertPragma: false, + proseWrap: 'never', + htmlWhitespaceSensitivity: 'strict', + vueIndentScriptAndStyle: true, + endOfLine: 'lf' +}; diff --git a/public/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg b/public/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg new file mode 100644 index 0000000..a7b3b75 --- /dev/null +++ b/public/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/bg-2.jpeg b/public/assets/bg-2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5ea2d426e7e226a0ac35c4a54a70f87f66158387 GIT binary patch literal 406999 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

w#*On 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

2l^TfcEqK>*Km|XpGxMXA4vS0-) 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�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�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 literal 0 HcmV?d00001 diff --git a/public/assets/logo.svg b/public/assets/logo.svg new file mode 100644 index 0000000..fb8e867 --- /dev/null +++ b/public/assets/logo.svg @@ -0,0 +1,15 @@ + + + + + background + + + + + + + Layer 1 + + + \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d2fb0f0ddb9f7d8b4b4b2d8b304e65b42fc30d94 GIT binary patch literal 1620 zcmV-a2CMl10096205C5A0000W06qo)02TlM0EtjeM-2)Z3IG5A4M|8uQUCw|FaQ7m zF9-$z005 z0Dy!50Qvv`0D$NK0Cg|`0P0`>06Lfe02gqax=}m;00q2BL_t(&fz4T4Y!p=({{FK| zOH1t*7ShtjZkr&8P-07=A|`-Z!52)7JoseL2SwIsBH0Kg5HyBFFy4?54UZ-U6A8g+ zV6BC4(-I&UsYt`fPXJ>b3cV>5Hc3b#fX3m`R|L6P8<)3pQI7BEc zn?ZEQw1D9GzDLA)r~a*i>>7l^au`H~c5ImWe2<6f8;PQJ>&phq0=mL7N<{AbRLVzP zrL?MwD3ZG`3kdZyC#Uyal<4Towd!;*WB0C=u61^7vI@}1Gc&fgakk=l!#6LuEH!S% zLK^u`|CIUQWE+(wz=uy~79z|tLj7_GcyQza;Kn_`e`t(D{k+$#jG?;g%*CU3G58?K zry|fK;PX%#U&9`F*vJFG=ci;^Fab;iJZ$6vAS!`Kl+#3{3FzvVZ4*b!9(JBl+`IbZ zuiCdX0ejBzq6y?=8}~*SBxseEPMZ|#4~ie5ds&ZeS&i`UCnZXxU3`S%8lgUS7 z+mw<5!qO`Bu8{`-cdY1@y9ryZS2QfDaMlZP7DVK7;=mtNlUR#9uRfvgm7U@2?N2^rNM!+_7sa zT~c7b4$*m&D{|y%ih0u&;az7H!R4`dzwM9wg;OCW^U1t4fs46kfOa6y!S*i$sd_oDB>$N7J)+0Ux@)$-_{(Q7}uT6!nBn)FHK|wyOcpD@~O~z zy1dw0dFt$yFA6vP0sy^3j6Hv4j?t;(_EI0?&JfTzlXRj2trC$@y^YaUQ_E|+q3W$D z0jf(0!=u24R^tGWd~Pagy&`@@;myzk8vH?tmQX_Etf_>>m3s32V1j%$T#YTU7gs7j z)uqbOWQ&8F0R8c~-9xQ;)77)R$7nVvR7?T72hDvnRRYCsedD!WG4{rcj$JEVv$b^G zN)yo+0dg23`!B+ubg)g@s%XlN1Jdh-y#v`h=_vV_1Q-sl_ zhc2XO$Jh1c1Z(#r6NhI_Mn+nI) zSUaEY6Omzfv~78M@X-6A>k{@cBQR^YBd0bJ; zL>_Q(Qx5>kTG>5sME*>Kl}_x9P+tx-*XW0AHu8W&0jaorhdpi=cLOvzAO09TSmO~H z_H+r1OR&7sE9=;e{Q%Y4GGxB*D-*UFVM3yPXTMw`Kqt)drR0X%sp6~?-~R&yhyfeZ SV8X=!0000I+dlW`9^1BU+qP}nwr$(CZO{E)=KYxDn_}&7Y)kha?Eis2lO{H`{qNA- z-qN%5t^cR$VsZM$FRM{f^%eP6R* zd*OcFl>2_~zI{W1ExGq%ZGE1x-$qY)-!^x@_df4lS9?I&E>9Q#I=DNZlsdhv`u%La z^1glae!Q^lyh~i{dOpwKcfIbj?R>r!-tKuHoBlqB;(MLKpXK+w?1$oee}Df&H1w!( z-Njv9OsDHot;DrC0qpqfEaZuHL3D`8a2vDFMvYGp(I?3j6(LD=`lwu39234t)MQ6& zUr5Fj?^Y4oAlUP&xTb)}`sTu9mjQ~|0S7uR*M;>tck2*g$7J6a9%F|XmsM@wsQk0n z+s&w;!Jn6ugho)Tga%NOV&lL?nwFqiJZPyK9v?fp z03IS*YbtoeCF_;IlOr-Qt_>hYt*RdHHHZ6ogDf z8zAO$ft%~LL$)aNxp`E2xYvo2l?+E+hsR7bC?^Ehk=uLA|0`nXk;-Vt4pgpl%nEV? zFNQ7aZKOtcs>nM-Hs+6i9;Cd4M0_sBd{QMGM~sT4_=k1`jGD$&K%;|$c+?&CbqubY z!8)uDirUT8ExdA1vgxwCG*Sn}FEU=^e&z)iU|h7|^`aaJNVB!+A_XyuT@SHc7S52v z3R)xYkR~cCP(_$p+dpX0hdX)$^RGp(+4iGTKl8KHYSa)tC_UERuj%pd?3yq6Zb3y`{a?k4Kr$oC?VDRD}TR< zwut>(IzGX52tHm-&Cn=TDq?a8NfbG0zxcCTk2@fSy^Hq;Hh=D|7%EwZB>#XrzwV12 zh&YFm8#0Wzj0`Vv1UGUbQ@lU!sA!?cWqwW6EJAu=RaFZR6y2;~ArcqF_ZD3-E*yD* z5Pvy=D6myPR7{U)gEOI@A;v;ZSTQY9M3ApWwBA{Za#IP~$RRLCk6GU!Ck{G}SgVU8 z#IU$O8SkQ>%~9I)*dJ7Izstg&yiQOtlb1lm(6<0g09UkMFRd0C>{DyAd?*j)0YK*AX5aK+JF{)@j0FfZ# zMZmy_?vl?c2nFX}2ngakz_J5#VdGWaaIvnkbr9S6B*Jw#-putrgcY^9?=`hc%h=}p zAa`+=H1&&gz_(8+iaeAl2hw!t3{{Q;@g7eSiSH9#)M=mxC@RS18j|2quwesL_2M zkz3fY>56tfy9t3b14jBT^UMOS!6&agzAtQydwjmTZ@WKA*N2|H zM#z2+$a~)pLUYrkVRA#JP~@(0eHSo?ujMoU%8kV@?4W*1zu$rlM6w2@W4bCDv8mpG zNgF+EO&4rCZB$im18hb&ZO3g|b#LQrNsnw-ZPCn*{iXfBnqdGuva*_iQOodT9iyE0~^5}8-@XJWc6%N)XZG~pdUmmFx{{yv7hZ02J6}))fX@B&Zw|J zgotm^hCCiIA3ljDT7J;R)tX#r`BW8~_Wx zb2n_4jVApB<)k%K2Nb3?bUQ^MOE~)T&eqWspv>%l*=lqJVcYAj`7?}@G26` zxnWk=lY|Hbfm!js@?O?cdC7J(?3^o-yx*<1TV`ZSVz89|0FKPY0)$#Q68 z@ZBi5rW-OP3NRqRG7r%E*!Z}$SFjW(2ErYHTL+jWF=MBd2q3_0LtCptqU}umhS!@) zd3dmEl)ZaU^`yIQy%@KjJ@Kz#LCsg(;gB$|b_qB~y z{VHY3oBO?j;BRdFR_3l#MS%UI$x1D`aM6|v*s%8fAnXGdX5Sk!QM2;=Z+ZUF-?2d- zZf!Wez6x3^;Uu5=GzV=YuyM#^F0EuWYI23DusqqZ6^OT7a-uWjhV(#2NTHCo3Jbda z<<+=1Q0NwgqgkB|y9Nvdw~(WwX6*nSlHcfycoe}DKw~F*g=3^S@xlpGVpV#B{qa86 z`;KWC_PMHR`dEdtUOaa5s$M1nQ|%pfsUdKhjiZ9D(pIxwuU}rD`%_+z$MM+ZvfyBV z6i_Nmr+Ci`l+LI9oiDpKbXN!B(YLVz9z9@%qm~50Bse>=1^#*Mw|jmB3bCwFOduI> z8V37G_Pt0kWHzqsrj$kbK4~lzV1PtZh$VYWjVU%<^0Bk7D8{1>I6UAH(D%u3mo7e7 z*M1m=z+RAs1mHtcX)nSqysyeoBr5<1Hrk`;N3Xa`h*?dsVq)ew5)g>sby%R;HYgBQ zmUmIJbf~31cMs>4V=TuZJ;y+jnWOOhcQFJJoWFAfGnfLX&cjheMIZ*}9OJi~lX?(C zn*f9O*@J~7{tkz818p^Q2obx;zrilf5+wWMw_R==$k0#cnM4a%@D;_6-TLqa`=D}_ z)zCuov_T4(K>B49@K`v+z-JwA*uX*kY(fvDeF#G~B!*b(9S)WeiPFEg_>Hd@k>G(X2pdS?jF0w~C?i8xR6iEtlDYl{!w|Uda4ae^5b`J;XblvQ0l48MbbMycP(t!{esB@%gaVAVUSKP! z5ZY!Uz#y58&_OnU-7|kf`OZLT5Zvh|FY81e7W;gViNGzbg1}^?3gjRO?}jK`0Vk~J z34}5rMCv6hdm`INF=`B5V7FxIX{_)*B5BggoY zr4>3+YjDs~+9i@!R6J{tN}BudxyixgO`H%2qw3nkNCb+8?dgjv6s5}H)>48=1?jTj z><@s+QD{Rjp`PQ0ju40h4TJj%NYhtj(=oxPJt>O>rn!S4(IBVc*D9S6L!LP=S^k&e)JX`Y9^i213D++Glu_=&nYZDiqnGb z5waLMy?#JDca(VNAq`=2QsjXVp2fRihMP@5@8)tSKk9lEtPc+b#Wy~=?zGxf3C!HLdRfgx4 zV+dXJD=JI#qT?BWVO-_+KLK{eUzoZDBqB7@whe{CoskWYze+84uq!yL78hmHiw#2NS$fCFXDUyP=VCzC zAyRGi6Br*}^HZd=R|Y%?2;lEv`vRFlxf({PKxNl(GW!Dh~wi_!gpmqkR-vL{+V75VWLCzRRO$z&gq3dOK5ukQ@# zUJ$YnoO_d>5!CHzfG3%w^JiYa7O~#IKZdztvbk~-M(mWC7fvGSE(aTiaN#mB1B5z# zsl#L#T*OBX5I3z4>4+~P#PF~98=A22X;|)%w*8bmX_-cR0poDEh~;*yBnevac=AO= zloCmWN5UctrCObt16@ul3*yS3*0KTM{jXfX2)6=pB0h)4Rsw(WGmCi>!^k>=N6{Lo2%yNy%zaBDE6ix z7&tF#15ez+tuvNc+M@hB%0w^-0;Lm2YN}e>2*gRW{zqJI@y9++X6Z+{svYfON*v_2 z1T`0WpZLWKkUGJj72ru!?G^F)`5}K#N9onP7K&+WR5t&N>~u%MO{7sR=@(98(=CiR z4D#J|p^C8Z_Y1{?HNi};^jwtu#+Xg#=rluCLJBbCV5aOl@W{D!b8ksBWFdF&$%EPSdab(9nyu#nsd$IGcf(W_x~`8h zx(%-9q~iF}91S|5XA}L)cjbOWPP$+^NY_<|q+>yP1YV#{-B$Ut-klp#@$>ek6!~@V z9o-_KKB z8Y+DWjd~kOGZhgFgSSheMI`h@m>a2$O}6=7{g$a%BXzD9GW}>SzN?iCfA?!MZp&5I zhrlRLC}6#1m2c0lD2}^JhhLZ8xx0Hx_X?T6b0&5dzp;t+$YHOB0#3)lXA?183I=6D z)*z8N%ZZ3|w#G3z{SC?8uY}^FX&R6v1Qy00hmyo~)*Y6w5IoqnilND9Hm5B)a3|LYynt8-<)0=U~b$Bci=o6B!`D zB5E49Ub|*UPGQ9S`nWqvI7RW2=5G@&`oM8Tdjy}ZMlc=<2H*_;&vZlc2M&WM-b*Ef}(YDZ&PmZ|U79mf|KdzG#eW523_@JGXU7lf? z799N)4HGPhl)8_WHS(b-Iq;T+Wr894ig7Q5A+-ZxI<81poBw%WDs|B1tTn(DW@U>p zC~1QB_6XaUPE~*qTw{Y^>Z#2x=7KcDlSrUd7<5zU zoML#ngkY67RY{>mv`61gijX}|bJt_nf(A!mW;qGQ8Mh%4KvGn6_vtx(4~a>{xJP5N zIGpk6Vj>|%c4Z56Rdi=7bxrhSn{-|DX1l$m>$@Sd${D(`0{I!cY1rDz=zDb^5rq0G z>)YJ$YM8c#_U`Nhj`|up?G|sy!K-_1fJSH`<$HtoefgaAd3rDPwI;)tz^yC&iw`xC z^@TK>LIt1cjhM;j_;5!z<&t^s@}{A^key)@>Mkz5c!FWv7A>H`{QxAAki;uiF16)P z7O{}<5Cdh;=s24QM_2OdZW0g(H+`!LvqWrqm>|WV_<(K#o_a`o1sJnQQw3acpa}u< z*g*mXSj?uv;{F0)#l58XOwcMr5XFv20t72wF7$@gmL0+u9Zy}Kp2XfK_LV*&;(lUA zCJ-#%3V{fZoR^s1UTznb1C=V&kSb_VfF>4MP}6uGj8RNpFuP}aMyE6YghV*+<;X>} zD@l~)#3H3-yiCR^2fm2^U zzS1>=2~@{tpTuljL0F~Uz-!DEL+Gax1rI$eaxF#vtC{RR-%cQVB1dD)L_HnTs18~T zY$h!9EP39K&{v+H&=b(|7-9m@h60}r6onkNyoISEXi{ZdTJwA>P=e|Z$mY5MV6hc( zPViF`XDBT}2dGn97*i|aCD4a9-@<0P7vZ+;Daej{AYeN~5doOcu-{CZBObcqNj!;l z4(l3A7VJys?+b6w+v~6X$W|Rm_tJ#>{6=}y7`EQ2rW3iid- zw|7tJ+AH%Hw{makV`0+o1QbLXFkmkM8R1qM)a)H5(8}OQ^x7LT;i!S3fsj+Q-(o!@ zFOZK|9}#3586Yv~UUkq_iXU(zqcIQvn6AQ|q zai0YZW1*RbB@{(1d8&BaArwkW$pE?27Lsv;STEaD+?+Titl3?|MSkDdgS3&Mv^aT2 zvTka>D#LM-*!C(GE3oqTmfK=PZR*UI!mGn6c?H;*-nBX9@cbesz)4hTi6@YU@_w6w z%Ivz_^}fcwmSV3jn!*JwG6R1%g?_otHQ74)=*b?s-MM4x6X%qsl}=64I$)a5zQ+XgJhq#)gs3zz&Pictg-q5!AilqCoSe0mbG0A`6aD|^ax0{g~d*8mc^ zI4US43H=RoNf}VeDs*IRI$Sh)SQh~SKFv0HY@iQ8z66Le6u^C=JY$ffXuktQ1b%@I zF+QsGbaFs$Qi6IbrPMeCN7Lz`r3^p6#zrR~s#%dYNHcyycZxg=YoQ{)8Wj5spaVsr zSPgL{&P6Ic!|SN(u;pf^-kYnsZ2p$`DHlAAA?3|8E7y_DnTW_VM^~5anZ8YR56(n- zgU{=zK2FQK_Z^SM&z)}m-JKy@+o#rNpsh_%8(h%BlEBxIAkW8v?tc9xkoiusSUC(W zF>EdKQ`zsARo|BrS>H2u7}PHzsc-$-oWKIxo!kz*m(msyXnFdOYVE7$$_e>v_bTqy=90mHB=sy+=mcB-2ph>G(DNP!N{k{nT``6Z zW}~<&7=;YY117Q95b-72Wh^qI)}rf_wdjUk{s=co67cgA^uz@^=kC+iT{ zyrS*FqpwHIFQRprXY}gT5MPjUID;0vnN#;-W0NXCZ~;}iNvZ(M;V%R*InN%!>p!}w zw!+8zlf-!j9M6b!Rnm-5t$quxRQo>5L+3B%iMg&o|{`nS%4hV;aL=(q*8f+1ASY#e9ttK8ha1) z{1i9-fknXnBit*R@x6Zedgpw3FZsQxX`O$mFwfISp;G?73}21vY8@dY5UH912Bs(c zsjI9LsG)r~iL#ZL3FZdIS)^?l`h!AOn?l)JXT2H40qvxuE|N&dC96|-qRyPZSqg9e9x{3znhNpOdUB=YCYFZcS#jfwY=i)8{#p z-sd6Hyq@JIBfWieR8yo^7cG`RAew-Hles*(5=w&E$z7 zL1jc`N~iF6$Xl`Aht;`d87GOp=?3Vl-ad&f>G82G7^{VCyX~sYJ}@|1<63&Wc{?7m`nxNh-(`3&DWF$! zHSlOo#+XOEgf}D!nHB0*mj~)KuOCY9_%9YGU#+4_w6Io~2g>ICzHsdV`#6LhD`ML~ zoO#?l9k_#@(#0caXtJv*k_S*=k<|eia5ML!A+WB?*YfjYthZ^0Bzn7WICcoN8cKTTV z01Va+4A>FS1TW~8m7klYuySvD7KZ8|7p6@S!>j2f|M%43Bw*4qsacxJTu&IwV~2Gi zlyO;rE|;&!US+Cff{Kwiavzw>3ThX_B>^3OJZYi6I>A_`KmDWZIE$%NR$8aZVe`uY z@iKXE(td#I`DTp5Zl@C#wt6g5{`MTqP@vB>EJ&EB(SbpxZbURff!OI1EavzYq2x_b zIj=h3L)6t&ZS|WTv6N@?th0rs)EDC1z|V56;)tzuB68gMinN;t=e7(T`^I^rhG>_! z8n$EW`_5b1tH=Q2SG~kwkV}pF*kw%Xezp$&^NUB)CW;i`CWw;^VSvsbWEdF;GM~Uu zf+VC9@Fs;Y3~9j4FJu;p-Ho9QWgusAA@X9U#|&Qby!`_g_0*RH5BoDs3y~e#H>@XW zBw~Op>aVSZN7!_5TL{LR+6^y?mQt#^8Y8+ZvP^>%S@>^Q_(Cm0}(1&zvL73@8eS0OpGn<=gPs@!+ zj!^kNYn4XCvBHr{Ck8u3$vRk--(5v*s5#jK6jWb-eN9CREh#TJ*g}(iQ{(oGf?xiy`-zbvE^3nEwmF5L|0L+iD0G0< zZTsBGjhgFofh~kiYvFKHlv7L-Qv?-xd+c7snC*Bx@UJG zGb22$hqA$Y1yrDS*_Coe>sg?>z)}bLkG|4P$JQARrf)u-#-)E0qcTZB+aY^Xm>1qr zx$~8pzOl1=S7O!0IMsnE=E{~W4gi z_oZbnGw+^P(cO$P@amPokSovCm%3)pIRGC^4rmGtK(PWr)MOp-DPBhBrirq+|DXyDs!8N~;NHX~Gr)d)5 zgR-d0EACS5*skZmCM9b7wqS|ogkd$YkPmqpGi@Plq%AtfguitnECb6iX>;=3xaR&0 z5SmKcab>Uk-ph(ivIY6Ts+iSy#gzjNa@@A5>#8|%)u8j@I(|~u<^iWAhU1^wEtQ)K zC?k|tT3ZC0AdcA?09kR`f6?2Ji6-fJP!wNe?7JP!y2=&qq7FCOfDL)gE4s=T@Lr;5 z2Z6u@tTU?emw;Gn=NLdt(fG7gBc<#j23Rs+n4tN8_H&BY6fr$J3}wTI+!F~p9cKGM z(lh?%HX3^eY{d=bele|7i;w<jnS+*fK(suZWpVDi+_wY-Nn7!~7+ zRt7@lVw~MF%a&z_`*O5Q@+RH7QBSFN-AvtRuQ1Yte__ac3@*hMJWBHG2gOtbn8lC8 zqJ(mgCcxJU^}K!N_P!76N@qkP874o!sKhUqEznencA{5J*p z+*G?B{&c<4_3+o~>hJ$ODOm8i6F3Jv7GV!F-9aUn8QadG9FJM0T1LH5nMiWc4o7Wx z%s~XYPu-%NPjtR!-3cn{b6IFE6>I8%e7$R!HV~T#Am`oco((Gc<971{y7Ar(NKdO* zYmL+D2Z?@n45Xqx)(wr}0T@fK_sJ~_>D1Nlr|nit8Ga!XaFA3TL`vfXIiVj=kY3$H zM$rd3=@ej)Q+-5E0|PY?dcz{3Pq?5`gMz{WS}e=&za*)w)Pv+)s|s78@w%{@$Kz62 zuq|ml=&_Y&;YxqKec@}{@Cj(GxZy}QnJLSwZN}g*#q^>~CF*JEdQ1ww;lA#w%5}FY zSj%(w9SG5nCJIpi%P%EBWH6(d!j~aA}pz zljG6V)RHWbqfs#Dy;^cBhIIal%N1EQ7Gmvky`w_*ccby-ei;1i!$@Lq;;+2W7xIEC zJ>+^G968m>I+e#jNA5K6?)Fn(>MrgN0acz9gKM@(-20TPwvo`Z!%wY4e~Bq4qGNIL zD+@kg6J-nRLo5UM`ZVeJo-L_4+-=*W%;O@1XgT05L8knA^9<%(_jPY-U=d41NuCxw zlC(Sf?0Ak(3n`<_mQ(vxb9IMA>4>r_KZMR#?}EtxwWWI?GZ=*jN46{QfVPYCD0VKwlXCpVDjYF5tz5{!)( zEkbBawnu_kwyLava13E}%e-Kxb|Am8`pirD2dGx<5`}S7adNtdE%w5 zr!2|eVbkBYlTu&i^7ggT&Zl+R`|F7};)F;$87^b97>m*J7)E!|v0-!NZsL<}0??ka zS}7iShop}8uC$lCS0uKzMS$Y#?owr{@9BH0;^!V>KdgNlBtBdtEU(P)JBMzY*e6}qp<>_SWgcHoXv5vb!t%&3OM z_VilWm0J^f?IKHm{%O6Y4eH;uhN&JUgpuE)l_ zSZSu<>xXt1&bK8E0z1~r+EOgmxU{9Iwz;Z7dbAHMbPR>UTkg1M84qO&ygg|T&2tkB zUXJAC4SqT?kex)Mu(6QDfHTfTL|`c^vFo3OKPnO3fHGvoz@R7uv8yTa@IXO|qeoB@ zvRNgR#Iij6b&kc<{I|W?W`Lo2njYC~3GOfjW(^*Bf#^vci~~L{^CURSj(4DYUJLH> z9JtEp;Vb3>HJp1r@gbYCXWyf3eLhBQc|J!e9q;BE9I~eD+shz6XthV@g4e#I`Y_kI zQwW46npj-3AGWhj8G&0JsMXl_4t^RCK31C!TcHBvv>3RkBm`<^Pn_&f$Xa` zmRltGGG|1Qk`u~y+q3;|2&*wxi9{Yj{>GoS}m>!#jriO`AJ;{2v*f7^6{3 zE8tZJ)zKqS@_A4UKAH|!?e*gFj6^B~Mvd9=dgknlnO}Ir$zCE8R|{r&Vl~i690U4$ zqa&?*Fk+j^j1e|ri1X-((eBilsu*G~;vErZy?fWhYvqRr9f=YeK6My#N_*ZWRk zxeoh$;kvH+(093BwySrwe+hUHL=Xei1QFub4$%0Wh@<>z3~mtjuRcm^ib{6Br^#)9 z_E&kPwPL8zq3G~ocW8P^>nUUM7GqqWkT=B|iQ8^k{sn`*FBNV(_L)}k${=}UR)M*h zJg0S2+%r8xBFG4|D|8p5(_LpB=$TWG-4-D!&4+DxAt4ShI(4pZI7qA8E}0Lq+&$?K zO~vg@cF-p|>EmJ=#NKd>jaL*rUhnB&hg z#HGeKpv1T%ZKd+fQv+CLEH{EBE79Z6Kj1*NAqVil_)7!3aR+w(=wDVM6w9{YNXCUj zKC0~{QI4@#zn3wXHXFADe5uBfc8Ujx9;H$XOqq*Ie0gyPXtbn1T<&UL2DE`Go-7q6v`{bsNYZMF`JqTODI(E#G@~*&8*eDON*ZNuEmk3?*JA#sj znJ~xC#!6LMtXrxORTIR(UnP`joExgmAeCeFm*}9bk!~M`vQtd#q=QAZ$x8t~#w8gK zRPut(;MM~ByYK!QJU2ZtMtP3Wx7KG?wA&tfGpz# z>?Y3xuolYCmPS#C0WwhF(}fa~aV1mYONA0whG`EAziYhu{v#>uYn3Hlq8?z>)V5wA zb=bWqznsmbEq6FxZ>I*b;Y5K`bj}EkJNuO^oNtPo!ULq``sC9ovuF{YwH;(nP;c0d z_qRLK^53_s_|$IC1OLvR&nN%G-eB+m0s#bzwE;x^F(L>nko{O%F{BWMoB0%40^|_u zmOU8+ppI}qQ79=m)5)Zp&$gdZUhl`t+s{TCD2zQ-lVi1oYKi+VByX+eywPNAi&y>~ z4j{zTZD)L#4m7ZC*g~){ep*Ahd$-!iEerC)j|tChSvg#k6ohMI5l_kmmD(nBmf&Pr zPxmDz7A4DkWx43)Wh>C+f9Kw+&UJlq5J)hwzPq?w5K>YF2q>-Qx}+Qqa>^V?Fe^X% zj7n3Z>PyfuuYCNRjsyw{PPbgjQABD05;;e~I&V1+WOQ~=lUjra$?W6P2_fjsrlkBT zbKlt(FMX zeqs%iJNj<=F|NX0s4!z{tyiNpv&uCg$QzLQ+T5`ix6*UdG&C1(XDfx_P_yx-3;x*i zk=3*&Vy+U%qLZ>pf7>h+->Le^iXvhj?>x>q=SQ|QwneE%P}d5-MC|U4S9A5OB#G~C zAox=VPZMxrW^XLc-}QcE%lo@*$`d47lN)UJP2|>PSnL*5Q#D5<%G6igEL|fsPnYH7 zas?tyzB|(xI7IB!ZNBX23~S6p&Fs3g4+Ah=Q;WuKAP~ui1CSvqs==d&mtVxpwR*XZ zXW(ubV?Uj-{JF(7z~G?USfl$W>+`m$`)fbGz#Tm2AbW{;-kgC zT7&NCc^rCSpy=b`{r%?a`}4|sZ-qpMsl2ncSssUfDP-DvZME2 z;L2U&xFIm@n1%dc;%fbVy=@5?WMoFq7e zrq1>R8501&e`GiRU64bC3IKrqzk(cd8zW~&CkJ<0BYh|R|5u80|4)wdUsOKDYT~v; zq9{G5rgkk#Hk)qgzHy#5#Q0=*l9=NXMMC4G5ko5`h-tV{{WgY%h9iRqu!61r_=!Hs z+ofN@T_Hj>K#Ri+rF4WnuR7kgwXeP&KW}z-pFOA94ILF#Zg4zbZN7W%r|&=D8sdCa z7wY#{-%sazhqa%)o;%&>KV2OiA0NJz%Er}1)n_Yt)>zsD6}nlm>=g>WpS1FwzSUCV zhfSFtBM+x*1hDCUsbBfL)ue_tDk0=LOXSnQu4>$PuD=6JV?{w8$HZ1&vNO9A-(7W) zZ(>?Y&~XPGWap&XGun89CDl@?^gCvv>Zom`8RB+etNNQ^_PjyY_L;Y`_qz!$Q`bk& z>*-lQ5I!q}p-C}qvWe@KL7&t2z-!5v6!)j4`W}~qe9}2;^We(KnRoS1Z&n4Jv2miK zD^RbH%1Y4N@M5WT>bIf?VTPdXyeWuLn{6Cch)UdHMX{)~r-(JPE(Fp}Btg^-28j*e z8dUaj`lhqjWu>JO#t&fh`KMKwh9X>zR~*6CN=*~>3^u}qvHu)>EWD2qnm56ZGuKaQ zk2Rm1lI+-cVv*zv?kC*S-Zy^P&s#VvpMi$4aJr?DCPVL{DV-M;RM})3>Z&TP18d7@C8Y4@O#TK^`;eM|_;=~!L zh}?HaufQCIKOumuj)!UWGV=)b8uCIzo^Q5y12q6`tL)dQ7mP+l)KD_7B_F(pEuE{6 z40(5e%Vqkr_V9H#JTs@xByDB{k{naMdWzggiNMr9&A@JaTp|{czqp9Ps^oZtSD8sf zZoA1Esh)$-<98~_RDSY{~KUR z!B#qrKpB&j(M@J4f{qBEO|o$?hF5r}w~HqWm%NnWAE8jmZRZa08U8p=F7dV ze&5B`)U#~CA-JYKwj8c$5dXnJZu5xBX$;#4@`>;LfV?;+uxHXE*$Qf?&8N6x6WKhS z+nlpGH1l!K#K;$Na$^Cm!OTX)(9!IDlio}F(l%zgGKa1>3SX8j+K8?RbE3UL?8O^} zT_u-w8;HwTeGsDEL4Z65WZy^}vWWp!jGgsv%pmNi9{vI}cpam*Ji-8jxp}Gsm z_RbD*2=X+cMU`D0TdKg#58x0+ossDd7e!vk)mNUK14gJqrozG#Pk0|l90=baiQmLB z8vjJd`%?M=sv(~a;!`(-3EDU?^j*n1Bn!(<7S}e6DNYt#$`P*cAvcR?LSnz`ERzTb zcH{My8B)oZV}#UA#EBZM_KYB;)wtY$kNiE2XhHgPj@i9W18D}PFKX@Rbb&&>=td?3 z(P0Z2GeygYgCriHl+HbP|8gi7azaJwqM~uui>lCAS3IgItVX!FqHf^x6cLLi7NzZ= zZGdvGJuu_Ks9_91CsxhcGKH64-}Q__ly`2H2h;PEmwy)#2wYJbh6{IC!kPR_zgDS zX@k_6v00bJ{mSQ+{y$8d+_Gmw3JL)5AHMzXOiWG!1c3IxOzdE6YHn-e_+NRz{@UT-0Np+9ZMQ<#s_e5MY5lxv~a14j2@(CbBkDN8L2De#adS#I^Tl}8a5w<38k z#o&LS?>a$BE@xi}+oRj{jDt@nE(=?pF_~ig-TZx9{dZ*k9`pV@>i$0K&Y#TZJ$~x` z9_#+j`u@)Te)3NBrlr46e&xQS|6cz7_}J37j2*Too?Rym^uRy76)>5dQe1r!jE-i?XU6PIz4FJ@+!h>@1$*Nkx!KV1Y?jvD z23q|bl)Z@P<-B?a6_zIRo03nwYOlQ_#&p!mn+^~BSpWR?dTmmy!rMQde2UyFutkJo z5A)=<$aAex%+uk@z_Utd*^Z?cFz5~%NiwEwP-u$IcXlFiZ&5fu8i=C2c*BKePre<5 z3@qX3;EX=QLn(G1v8RG$E?-jHa5Jt=>3-l~HJ#O#XB&Z8YpoYEut1yGw4V8u{inU; zC<_Pgx^QT{rBTAroLG@uwov@fcDy?D;WYGKx?7AZpBkIkr$R_&gC`ff^Fw|9cocRs zwIuSa&eU=JdNaM3XO4$X8_BGcS-4y%Z1_Cr7e>K<$S-pbdu>smvsv-J*U7^~U6bRp zMPNSDzG6MW5jL+gbm5AwG7~3y)t6{a^TUoiMI4DmEXPKu<`tJemR2&J8n+ZpR`|Z<6+U$ z`*W_~@@NA%6UW{^Yp6BoKk2+g% zk-7aq-5%iAK*8R*ulAkzYz}BIwg4UVm3Pd<)2@USCa!eF02KPEF^*`oiP z_fz=Og`*Gi;(ZG9*uL)*-S3sA=|YK-rZH;R_|67Dp75{)#Bxg(%A%>z(*t#5W30O> zd0siO%9_{?7amT);H=5ZJ4sI4SiE-`-0Y50%W^$^LbTj(6%}q@i{VOtPjV=FrDYkufK~fq-805O&0j> z0a<6sDA#)0=Gm z+d=8`YE3jqZ^P&Fq$gC(B19|Mc!$(^UGKW~k}H8nsrPJkK`&Fqs-%Ed8$u~oepzMK zmdaH>+>c8rbrv$9TAnum|52*cx)D00VM>bt#JC+<z z4(IPB!V|qn89Sr3r{D~$dY;nV(;)9>=4*Adx;?-p37E!UiZdHfSvJ}t=I61Bm85P|!MuE<%sA%nr(?KoxTbcV0Y zNluqK5_$D+nQX=BaVUKT7SK^oltLGo@|?SLi_@r?b&=_}U2tEodGRy}-CQm5LuDQV zi!Vt@m_qvERUX&#KfGLOsE`c0u@*`nd3AjBQTxX-OY8S_YI{=!@Y4I83fys2w5 zFUlX7@!yS>OrNH!CMuu4%hdPs7*eHxtRk1Q^5^k{gf%9Vhw)E15hy|w?If7?C#>fHMqs#88GUB8PV)os*C=uZeXSO>;U zRY?9 z9$h!d?K!J%ZQ})r>&0No749yLe=bv)z8M{pPbpmE|u1n^g-B~j_*A*Wu z^TnidUBVM#7-c~pmlJ+UJM1fSe0FuBD1LkXf+5r4`PmrBke>}w^Rt0NcK9iVV9JUJ zAWs_Aw#AFU6%hcTVARh`w9usCGEo%0-o*6ba^Ne6}5*(w9`s zg1ERLhBtxf)oqTfo@<{AOkKmr4GBv!n2roB4Hw-EQUGa0W2X!{*JM)%n5vT?^k(`L z>Qo)u(E;S?m5hx1Z<_0e@qwEj4j@Tq?k&k) zGuZbt#9&yYG=Mx^{IbJ5G=Zr=&f6{HE(MUzo6MMNdf|!xp7lJ6*4}bPq=?xXM9FCOOd&q7)(VQpPz;Y zZn7=Fj8D5E0V4)eL8We<-2ee3eWI&Z$yqYk5B;UaDWou!_j$Z!k?8>PK5^Z($OFjx z7z|(UkY4#XWgG^9O<$COHi+qh3owTD#f`$nq_a7aJotRC<9nliVd|Nn<9owWA#S_DNg9~Cs7C8mevtmqmr$)`{AzLu{eZk@V?yh87K)DeMg8v76H-U~D#;d(A4lMzS#^Xf7}{q4V3^F4G}F@tpak z3(+}Y9XsY9Q2;X55L_L5yFP!^433rB@KiiQQ;uIoKIiAI&3(+ z?aJltE?)?&9IjG}8p4JW2cgRs0xKkO5kSmP2viKCF3q!s1dkX@U77}V^G;#v-ejj2 z1PtTDHecT}kY|0Qw%W{$TDvk_+vIY<@Z)1e(#h^Bf$-yVPyQ$iKdvl)=F=w8ax>fC z;*eo#95Tc>W?+3b7ufwQP16 zOQwWS5+WAB#2@`P03qJExjadPB~Ox$Hx625mg)>4-|xX2+? z2gnZHaKpO-QyaPXG3e~Ds91<~1nr94`2?0Q@!JhD@g8Q**rpC4o;m9E%zT?=H`-i? zkMri@9L?`Xg*E&8IAJ=9IB0K5S~qpV9M*lbu^6{|pRifj2f6o({R~_a12l;ku>}GT4lF!o-KX@c6 zC{3vvAkv0)_CzT+Snxq zVhBOS@zR1^M%O3t;ZypoWbk4bExL|#2r)x*bi^Au{@xHaTwVFR7%9@%ul#xCM!78t z4j7ms)h$|i9PhIU(~Mtp9!Av*3RCyZ`}%lwM<%0LqT3>iMwD4Cqh>`WBXt_GPLb6{ zP9Ab+B8!LKXzPl+w~l0v^1q_>l9{&Q-mOgD;f0-&39W)Y4s#=`{`e*ZkJHn7u+x+F zClo`ixMq%7^H!rG+pJk2kktML^8;K*K^2}J<2r^Z+_YwWyt?TaCUb>C2)c@eWDgjA80gUJ-(Y?<{D1<_uV1E@f)2xe9v)vv9N$?q>STVO z&Z5?0`uOTtrIaRD*)0gM%B{W8iyNy9Ayz3YPZCcHAyye3tgr%s5Wz>`Qxh~diB z9JeNPxKhSuZ_O_4hTO_@YJrHTAK?=Wq(t~DbebWgSt<#~H_vVp9bg=^YQl9OyUhci z%#2($H!PhcuLJYMjI)0Jak!nI*D1}ueBoz7I3g3Qr{qERyaekhdC)zmz|Q4IFWeyT zfZy?R{)^X)BM2tt{>9%GPx?59dK^2OqyA~)IBF~O^N%EhJsfm%h#r##8{v+QKy6$W**$!u%X`SE8p5MQRSj>$tl_ zVVVPRWst_BXGraAJYJ3VDio#;!s`=bi_ir$3tXMP7*U5y>8ocJ?Wxa)_{`1Xf|!8m z%;_W7-0Ja5-dyREyF^9q#CfXDYvQ1nDktWloLF36n}h|^o=|rMRY~$tC(QgXF#tSA zC+zx;)Dd~86DEoScTPabL!Gek-aIKc@=&Zx_D=Oxj4Fl%&qfFy45mKzGkp2z1gSif z>>70Paq}mGY0JC!Ashy{8!Ze9lL#l)!c=^rabP@92GjQIVNIf|aG+V3b~AROts|mt zWRcoCK98<`agwwJYmWSyh&nK0kij}!Npo7KuUd>y_6biP82tFr;nBo%MTbX+ zzc%m;lqZ`*w}gJ6M<+#QLwO{*YEmC6A~n|3<(Am_858>Y302aolyZH(o!H zrJFkL0p@!|J;i+kR3RxFkD9{Nb}W~KeNJGS3~S!eO)?2gXEQ&)#vMc*2$m77_NI)x zjtJYDnKS1R99$qlmVd{cpXq}OB*;&#EcZJ>(xUT|@S-eC6VUQWzoxvot)tQUZwAwY zYrkg7sA&T_zStXd-SR>lHBdchwPjC_%OF?F0yUhFfG=D>7NhJ~q%zP>zuevis)45|Ki0m&xYQwI(!dEwXhVtF4UKyWKBl}VN zV)DVT0wc}%3Dev+V5AwJnr>dG7nNemGBHIBOrKxdgLfyBZed#AZ%>LJ-10Eb$_v9h zJ+g{wK|(g^gCyJqrq}ZPlYB2(p}>wBmX75pOdU$_gts@vMq{@94DePytM^?&H9=~l z@A@uoI&35h)12nxuhS5}N_$Gia+P6E{VE6&?!D4|Hv=xvr|1!Z>Gl8l_ucOSTEtCX zR0J3d1+PmEvr%ALy0f+zEx(XBr$uT3khw|Sq%)2_SYef^8_joC2i<7kTJ(z4D4p@a zZmRIru8XvyE>pp=Ftu&JQvRQr?y1MqjCKq}P59=X46Y9*$fi^uvB3ql$j-0P`fa+T zq7RQjY%UBSS9;S!Ve?Pz4hjq070X~MG~L-8&+k!~E^X)&-5(EC z!Of;i_@jD$R?5t^_8=f8Jh4wTK?jEAL+5VX%)@9{?=4{Mzm{kK_i;tG$Rx3%SRMJksJeK90z83W@BoeF(>}@<} zcYm;Dp)ae^T3d{C0-MpURZV2*2uz>FwHBeM3rycar85@Y@-SR>acf*a3R5@a+O9;^ z7)*trt_okY0-O?kp-J|#oqC~pZmf(2!8|us#zJZyYV2O#%cgM$QAf9gIx}~Y>L7a% zwu+X24_e)c)#D)Hw3zVEoWTmv%%0q2$%6$lyXIOax043}E*Ve~Ch#C6Wm_k>=8*>> zDdA!DK8RK5xx~APCUo-mgbw%j*!9vqh$(%Z=JB)Z5_qVT`uPg(CqYiMmm>n)7N#Xo z8-yG!FdfmnT%N@3-KC-BH7&n_D9#$74m62Bl^%2UoIumB#4*ZXBvM$c?pJBH+_-WW zRUIh>3sW2Opf3qkb1m1)X}bxSaL;F7MjXH(D%F%PV&etXx$;42N+tFQt#CBY2MZ+s za$A!27jpGceE2lYruBg9Ht|mxOjC?{+;V`b-Q4Toqeyq+4`=zLmb2O?)WO-T66Jk? zfvm#n=!LzgW>(4Jdh6713QTVt^GCPbgpTJ%gc5d*rw`Pq`#S2iaV@@`CXa&off@Y+ zatAvvyOEmH=OkJ+q^@&OCz!WL5SCpI|gDGOu?xx%l1g4kL z^G~9+WnoZ)_vIRcFEQ@!h?(?!2JS>^2N(}Kze3Xy2Ko|rJoFg>AGO|4#5^NpFB?rQ?wWc*<+5ZC(qek#gY~dQ%&7WC+29`bei^qeK66qj%NLx+)i!ncK~d`kC5OdHo;#|9%3VEm+#r4Ba`GHQqXUA6OU{0|m6@sVj!DoLR^ zNhS$W+k~uA(sP=YlvYMfN94i7rX|t##;CSVVLCiqVfHFEEg9duewhe3;u+-nNr%wX z;noiJsBkYAQpqWM^{|D7*x#$y6sE$5)rZmIg>898km@q%Tyje`qbKH5Igr5g;$2uJ zqG2BP#4s?T^5!``F;0&p(8yrAZnkVjZ}9#!%(bWLY^CF_8l1SU_oW07@z z1UH=~Fx_x&Bf4<}S3GPuU~VxYEb3vyfnonVYB-wj76yf4q-CjveK%@`y*xLmvbyQ; zs%5$mcCtb0j;ft~7S{HGVKZoNjvs#WdoHUvsLy7yJ4r}29j#lI&KDRIS(*7wLc-38 zkKHJb!1V2~E(RC>L48~u=SEw<$a2?YAW2ZKm*_34BQ=AMhVg#VD`P$EEfCjQawNF# z3cUrA?qf~#iE>+`K66=r`~}q><16M1{FtT<>S5b~_=5F6^sobfz+4eT4<-D~@*>rK z0@Iyi)=x%#W=83llsQ4aLXHU2X4K|{*WpYsl;X7(&80dqgp()O?GixffY>EK^tb6v ztXWE<&80+(6bkz`7NfNXb|3>oXqYoLX?rqIiC+aIAu&UksRkq=(X~A$3k^s@!?kCk z+G1gFCMWz+kp3wXNhc3Q<*oDriH#sVsCzS7|IPArf&_^SYPB1fW<>qnM-yS{xO-TM zuc&bkw4`x&XWEiP(WbR$$(p$12u!1257b!(HKy_0y7;6Frat?z7!@2%CeP7IH?}w( z9UaP%;EOHs5Cu9mMmn})CUHtS%LkH^RGP5+AJ|KAxfI1cbDQ9$3*q99533sBsxI8Q;ydw#Lue~ zrlOwG+1;r=_nmUQN|BuC7N&bKRL8|R3R6MlqZSFVTbSxQUTl*hDuL;q0hRlNaZ?uY z_~=ENtTPxmz2tuPvHH*0q$0J>U|OdBR`Ts`iH=385&rZQ7)-Zk=#dnvh5gV6RMMEJ z80FSc!Xok1-oD96Sb@M)R~2J8k^r~uIHP{8xhl2>$#0o28*OasRdy_9OX!7Gad;sHBjJlFxz@?%tRDjx)< zqZ*w%a$8!MI@o?4$8RJm@Y+|n>6D%aPo~lGTP)Myf~&X z^*!bt$@$-Gbh^cU?liRe2c1Ox%&xh7FBy3hN17!*?NWa zDkk5dvnA~k9~e!NJ*O}o=%|oPw}mMmr)dsiCj=xgJ|OD#fH z_mLQA*4S{xi6!~S3jA!9OUf@T5=2l*{fUJI`YT8b%ffVryq|;a9)ryWxc=NPoz>Z+ zM|zxQ&>#|mX6jnWIM>^oQ$8y&y+vA2){ZAIprw%_B;O%O8ehqEm3?GBMz;$jFY64!fHlChZplrb9`4TYPkMRj!!7 zbR~jh(=iKBTbMffYfGe}&%(gx`x-=mp(+3=RkAQ3=!(%uj0H#=#JS(oj0J3U(e4we zBnwlcvv5R>1*iiacAN4F1cqb-(qhW@u#-afXVjZ_M+ai}#`_yDR4GiSvCd>w5!kHe zlt^(^^1+RP{)5%@ERB6aZ-U>{GoJwm{`Hm~I5Q}9)sA{j5?f%f(Av~0#dZU^-;*X> z4ovs{x{0c7x*oybZq%l(N2nk(7b{(lP(fxqez!hUU{0x~%MiCPD8-=m9LC2RHR}4# z=whzut}Jc`8y)a|tNl?wt+R)HLOb7mY8TIdRFV1N=U)s4PA2PUVPX2SkCI@TczGlm zX)M(D;_}%2R35vJJodQqIAtLriG9#oXG4V~b_u5?z%-rzENVNFMi!<_t&L}KIvEUv z8reOFBzC#E$f1iQ_EF)Eg&lkdoew^WGKvHS+<`*m(vp0KQvTLpHoU{`?si0?7PpMU z?ta>2#}m@FrGE@7RPm9vEyYKT%k<>}?Jr*5;*uLMLMFDE4?_0y9VWI+n;TMaXxN)a zq~V6ZH08tGF~)*nFm;M8ow6GPna`u=3l=u=v74?LLSi-{30dl;?oP&C$jdVgFc|ZhN#Eud$8pYv-a-Bf4rnvZIGPr-UNlBRhJ~E(pz( zO)!KH&3G)Q^||pKcJ$T}KU8(JZ+JIH#OZuwAj{uBbR@Vf4B`Od1`(K}$yaqPSsz>V zwj1&Z45n#G1!<(l1`$N)+J{qj32>eZO+t+F9nP~E>lcUC=_5s1v=dxXv5ypG$(*>| z!+e*bock)^$Ipi1-tN}awFBJa*92oB13DsG{6&F_dsrhnA_CI|1y8N`#El{O5V$gi z%&6!_qUg?-AboXxhbG!BM$hENfXI-Tf38x9h3R)|eo02+lpulY zLqdtEQ=;9=QNGS%lt|YcS9XW{?6W}_?!Cyu;0~*Eet}*r!0L=EJ!&UHr%m~bZo>}? zQ&wkZMMPE^Ow+-hMAiPFo+#enBdt^pipG~ar-ii4k>2}&h(VAVF$jeQ^g{sMERBi8XafNX&@bGulvx0U>IO!b zuLAo6!D)fb>e!+iRR};UE_%CUmTds)aI*K`oWcu%=@YqA__7WD4X>u-0HgKtw0P3kFSzLT^ zVIYbZADs_c9Xi(9B_Ew^MrY^gV+}5OuPAjBbhx!wF279&2)y#!_Tb$mY6i&Dd8gwQM(eiITH@ZML{y0wfLA|wCufOaB93~LMdiXuHae#dYSvN8S zOXNMYhbweP`c=S=DcvW)^jCfC#jgu=ujzuaU(C`Jn6kqsw>Az?##u+3Q`V98g5ye= zPf-Tavn~G3y8L#yxRwCZyR4rR&y0N!_^o@ksY~kjXunkma@Ax0654egZdAF%g&?Pu z-w6iPbIV^RD}EBR=`&_dYLT>kLd&P-`Go?NiPv|dJ4b?CV2~#&5AR$DD8O>UxjB{^ z51@}!19x`vGC&{Q{lmo1yD=ZHSWQU@%_tw#<=BAGWaLYtUh6I-atfE`KHy%2L zX+bAeAZuZ2MXz4dZG<&>*AEgmbuDVh=pW~!WtK7vP;&gZoGz7ZpHRo^Kmw&q677kSA2o-7;?<(P9V-kFXhHeg32Q%j zxd1I_u0pgjEKHaFzQy%B3R5wV_8}`b3z6?rS{e4}AJttG3Y&bn=)RM~{{9yXM+X9U z`4tHfrH&3-CFVwO!?hvG1irrT&7`Auqpf{*VTDkPCm!pwTWT3%Sg!kb77{-@fZR_` zra1Mpp$+2YaXWnYb&xz84Tz~%*`|~U02@iB*3(zUTbl}V2Df^<5Nt#NWeg? zU-Q)p()z8M)MhZ4GNYR%zD0DEoq0`0dk(Q(w7mJBq3nrq+rv z2I$JuO~<94kmQR)DD5-$nFQtBqhFWynJbeqw?nAw6DKcW9YE0ZeVUmaB6Vo}h_3@j zvrw9|5f~&BcE)9wb{3*2;Cn;rhZszqs88E`9q48O(sPJj+8K{Xd@@*8kF~TmU@$NN zn1?Pfty+;!_yi}FOf&r^a5e$TDC4S^>m0vX3d z$k+h2lO+km`a}BU0Z;0%W(-_1dDwQLA3x8L0fIodTqh?KrqBF!VcIiT0ORO(eX}sd z*Y2P46$3G8b8@x$AkKoPIzOT0Cl8{gQ;iOC{D_05ndMV{C;?Au` z5bN=t`rHtJdc2+cB$zVL&yGi1j{Ka!&@W+R=Mc*F3~c;P8^wwE%}pO%-%P6On{mZ& zV1pxiaXW7Pcn5 z_vG)vdbykgH{2KXwF*-En58H(KnNM->p}}~zXv=|bNrvXCszgtA*1zMp7_q7gW9f4 zDKX6;A*4fd*%@$9YOBG;Y@`~o)6XnL}0pNqWSX0;>Q;S zIgOXADQ;W_to-4x^HI}jA}KIbzaVc3(ii;;#?{QAiGO|f)ocu5S~z!oxZb8PW#BYd z`7M^kep4(5oq?(fF|>*CB{1c~8DlsBrn{ruC%}9#OodX-VCp#P`Gw>gQ?s9tifz`1JlIX?vmsO$zsEkL11WRX22hlv881u8KfH(a#OOf z8E~KE36i7A0NqGTw>&c&w3jvc`|jvKDyxv=H-z@GqQ(V3Gk#z(mQ-#t7~VH@(}E&P zqsBbx4A70n^9w{--NH2QcQt81X7#2OkAuL}{*gG{A^ikxZgmbs&zP3pWE@|yoZc70 zKB0WY%Xz+Hpr+;~$KQ1pOsUn;2iwH6=x~pJ9aET&cd~x07N){s(wLLYiuM(S<@dhF zV4%EFBmK=ROkI@sXQUgog@Nt`4`gOg31oEQpXbGZMoVkS%~vkkp*`evq*G!$+Ja~#Ri=RE37yqi$sTC=c1nJ z9_v}`M`8t6&GKb5M&nRkhdDqrCY?GMPZY6BkH)R6@dltN8N_a z7N$}H`R7SPM`yW!Ov>9*w3R9dnuUm&JVC60EKoW`QnkaDiw`{pPxu7;(E6w;f0x13 zX4<)rD{SVVZtG%?QTwtGrW4t?ip$#0LYOYDFMOTXIMz_Nb$TU*MX6&Q;MU})r4G}L z4om!egMN;Ur6icz!DeWd`m6*h3l&>((RAqR>BLj_fD2D#A$}#y%tER&k%joxSZuDf=62GIp--2W?E%{cGh#G^bz`X$d33eQ4> zGyd3;cIm0>Ku0*`3Az%YW8>2<-}TV3(fsj8H?xuj?cwMq&uA}MC&<~1%dSzJMIOWP zCgYH0A-tA&!vo#Hoc?qj=^L{P zVJA7n&7NObbx#&_kwxE;Vm1v%zC%M+r5s@6CW0A$UUv-|lO&HKCGipp0gJy>{c|CV@bkIz6K=|mO zGSB_|ls;Zr2$~J^PttAH`E1myIb0nUyY7pEUd?FhN+kIhOpT5i8XCUMV*TXN&2afH z{d-)F2qBnev3|17?RpF)b@oSjH^7pGP|_&B%j|0?P!y+Uy`26r+Vz#|o1INqptyUP zV0%H?p4?KOEmD%-0Qd*XeDi=_uTa#OL2h7LueZTy3Rx%uly@ZQwk#9@ju)R;AUBKZ zzsCPz#~#!His&Re_6$sS(s5InfA7U|Co-37@ILv%5ta&zbQddS~YLkuF0} zvgy4|39M&P)W$qPm!YOvFfo=ah_Q$$EAvfIN20UB-pwvkpDNokG{>apu36Nqm(T;Fnny{C2jY2)^XnuW4wO@9|ab+d0 z-(lNVyQ$`W9M#;qx-68dj`D88D~q+No163+g<4fBXXqBlW}#L!S~;f}l@v2}>prp2 zXF^DdHMtCI7Rp}Z?)}u=284pguv85Z=EoiQGuzkHb!5Y)uv{l)^@bLEkvZ$K?F98Z9h#0QL|y<5v3nzjcVEb6vr!UTS78no(9wjmbvm`K`ReO67mK59r7N+g+8xlyeFtuzC zYs5*nFkqm_1TvW74jBib=4eD)SVpe}-euMzl{5X1eBZwT2xYP660M~L2kaA|+(v># z7N#ugi;k@Rq;&%VAha^u!qhO`wuku*(u&lI+F&Ciw|3X++NeXUa!S^XW-^cGPDWKn z($>P1-BruQHHWBUVW^{9bJz?PrnS{-qq#-*d=F+Y%hN2SOSjl3)B>NICzqs!K`B7= z=EUDEOxN#}(xzGGdg9kR`B?_jjRJELtY@$+e7f7`Q(*cMdORaWr-k8$cKIU~rZ)6> zk8oQoOwHemlWedU6~KG0ka&oN=}V}b1pA>!gHW(7O!+$R>k03#56k(*sI}%CNLkRB zN;zi0b25J2#cR4AmVF3|IJVeI4M5Q87jca(OkHGW4Zd8UBWSxsL|Fv}!K@0Qz*v|r zcyi1Ki%} zX$fOt>W;~u@#PG(|L!Zl|G?L&%}a8M!BqO?pdXz&-mbv({jv3H)MLgrjbej+d}s`>m(Xh;InvGIPD z_`DXT-RG0x8oL;NVDZ(s$owB*xwn`}qEk+BeV#i%I^|?cs-*J@GF>luA<($L2brmU zb?P+(T^_db{4$6BpRHwnOV2t?WH+~LVXAf8rXz)KF=`tb=Onj9VL#k2CI=v-rHt#5 zUg~R~P$&N5HoY@}eLeYM=S6{iJzlyb!D$OqvHcqsP!SjuPq#@*)51X1X|zKcq#Gb4 zx!#||SW6up9UO^8KHecESeUZO7JKwQoYBFNX!|$mSSc_M%`$dU&tM>{l&GNxI!)#NdK8%qZln`FwYNb zXk2%8%vYXvIHmJg0!-PL*V`nMC@@Eki{;l05U8U4i>ccee9o5~b=g5LR)h!Lk^+Hg z9o>&3>W)JWP6%HKFbpd(OrTdFA85$Il{(Sg28HQn3zvNFhS0>dD%SynDMMxciC#$B zFBOTEPm*TxoN2$*yduAc!IR9r#&u%bqC%}XB)8ZIfHLQCA33b>qbr zpSBE~rB#0UgLKyQPpRZ(Fy()>`+TvVA zkC_#ECuLDHW3qEI|8&juxIp^_DZ+9^?}ZOn#WbR2cT+ zgb?;EOm|VvvCGqgOrm_vv7;|!VJaPF^@SKrhqszPlVDhyK!uVlQjbZF6ku7H3i#|_ z4EN~>&tPZiYd6axFcl5$E{%&$0}u<#>Q(mD4ENsvgu1itl4u*Gt{6xW+9wE^&?3>g zy*TBAu2Y1A*2cK#G^nvKbtv!6C;S?6JJ`+aK_OUleHX2~l4I2S3w@6H=sc}7!#<&| ztj*=(1_5C?sLN+&WD?sy+NV?+ zva>H~qUld5#@}eCBu7@osZq2@wNNNGP+%ZXUzS*zyX>^mZ1l0m!lE81&Bmu+VqMMx z)#mc(W@(Cx<6$A!4J+`oFm)Z?vtHH~mW5w))c^zr@tY%2mUL%D+rh$EBzCZe60-dY zGjKgD%bd-;(4yn$< z0(galBM!PoZ>^-O+1n?;Xp!)l`vyAE5$9K#Ya6%DQvAwTj$t=x?Z#z0XT@zm~8UH1O}0l-}IV- z1jVqlLrQinOn>$ni+OpNc{po)^=CquI#ZfINv~Q9Q?_%Z7k4-4SkIvCEP_j^V?Bem zGap3IK`mX5ugIZ`&80h+e5{>DAVinf!gQer>xOP&S|8(_g;_jMY8f5WiMG6jW%Yna z(**+4XGo_@Hxu?md%PV!H0jI%F><$+UNvc-@bC%Z07HT$I?hR{qx(G$?U3H8GeA3R zuCf4y2dNnOH9B)3eDU(dFL7Wxt@rA?20Lj8KF#}b$xq*>&L-R}V! zTf0B$?T&BhL5=MELwxx0k3G6^^p92gcAEU^=4WQypK->|gZf%?u1$_=fa!y>O9Q?F zQ%m5jNg97!m~KIMWnPcMGI|xWl)1q433wyzdKpZIE3dyqn_vQF|AKBx#rR^;9TEdm zN6SZ<^n9=|?Jzw|%p-*9Q2)(ov{H^wUxk46_fq~IY;(x_ermAINAmtb|MTuleL^cX z6i0jRA>yOh()B~scgg!c1lyu|W8B%JFts$^=R^X6z@RtLy=Wj4m?Nm~HifY;Ee~5_ z2b_mxI%<7ckIp)PR`v@oQ`dox zRYu#JM9a>?Kw?^aY68>e%;r&avCm-oOka56qZ0zBrDl*6=DQ!wV9IDcS&2$+fsT(o zs+y-nlHJ18itpaA0tp}DnYIpu!<4?rSw4QeQFbDEL?0oKw-aB`Srd>=H@Eh*H38Xl z`vfbY@`30rp$WIgxWM$XD3n+l#RsDI#h(SH zhx_?ns2uK2)$v9tM{X1OMFWKHQD#f0_Rg_SfUn8I_CCZ0rB4hA+WJ5qx4lZ3Ap}jP zo^zz*v4ts%pywuxe4@;h08{(#Vv(qtT9`Uu&5h$We-oIVwx$FE>3o2q`TMzX)`kbE zi5?$&LVb2|a>rWpxIbr(v=0%aHXoMPSd_}gK7~)jC3rtUVeVJ!Xe280)7n@Te2|mOv&E-Zd zMT}c+Y#aBJ!9ZJbfgW}k-mI2~zgz;X58+K&iEg34g()lcI5)g?`Zik_s%Vmm0w2_` zg{Q)NE>OQVUrKL#P`{QF$yMeS7zCA;{*g1*K%l0WA(=M85G*ad(i0XXi&oy^S~Kpt zHKjg;RgD$M=NOsVG}G!sSk;(n!7Yl#!ak^9%l6&M4|gDwi<1q0_}rYF4ylt3tdchCx+*ZxFn<(kwfoZ0psK!1 z{aA>vj(RmlbMPU)8h2Jm|2qp)+w}cJIyWnfqBw71Sf~eZ>1i zFVW>GOE3nY_%i6`C-<5I1I?f>bNt@`1oq|Gt5nLTE*Bk$whUkQbPFI59lxw4!PIgo z)e~Ua>b=`w=4=2#X0aE^St+pZ_spx9KaxOm36Ir8AsB$?f!q85HstDcn-MGD-00rikw7ko6C6fRG z_Y#Ir)rqxFsI%|3_(inFAJ!}LNa7<5rksV<9ex=ES}JOFN5uFT3>vn7{ThBYG@yJw zh_0LIpB>^N;R`rKr6wXOZ(+*#=%4drDAa`ek17j>2rSSr#tIXdI{SJ{GS>u#<>PUW z6>|p=*d2V7rbyt(6MB0uGoMFbc+=4r)$~xYeR>?GdLy-ROvO!LD!2dZ_)B98KO00m zp3kO`6$1!~j`n`@+17MPaf<0@Yax0$^WWW|Ux1nw+cnbI-oi8^f9|VgF~Zb7{S;nd zF!gTp53~WY0Rls%T}tl+Y@g79!Rx5P)($jqEYtdn0EnSc3yVNy*H0tJgYg#XZY)hQ6B@;?0(PFiv^i+#?K;&yZ|FNb93X8TUHoA`C3BzlNzr4KZ)6zJj#K_={t`eIN*KQ6L9dIHnO zTyaHyjeQL0O4l2c@LKZ6fUdNG)9=yQ@L}_pShMbng08gjHb{Yf0LAK~{wXUK4xm_F zS`sI~bb_c%TbUUk_(I2xX?6xwgA1IFj?Q08M4OZ!22kcLs@wF8fCfJ1HIG@zNH7C- zQ)_wBqbd1&AV=KdHunsaz!+nG#SJ+M48Dh@S_BrtY#Z2BH9p!-4`|G2zOFpDbu{&n zto}e&{Ayr2Z@2M0Av`!R4_<%@tpqdLT#~ZsJTWl5zX0|~4d)PI-^PWTa`uN%$KF0> z`X2_SPbKriB)2CpwTo|F>AnlKvU7a;>x*v#qZ2|tZ2NIa;$NOn-*bCF*J%h8(d|dN zp+d-qZ9mfO8G^aAcrMg$0@KNxV)g50K^Sx&NQi=l(0-+}6Tei`M@Jht5|yT-1N2X` z5m?+Z#MPZgU|A$1)PPcp?Q91Y~v7f4QCC$4j|WHU~VH~f$2SaMhSo+q$K3m2-zhBZv5Ez ziBB#sEkt_!=@wrE+D|mFxYkTf-OD4o8$yod;c-U6%qv6+W4NVRm>3 zLKo4pZ9~IgTCu;$*9R!;)ml<&!(fW6JWq9pLJ)m7uEc1u92J(*R-0DY8@(*C)S7|m zR`u-$lSCDmvJtoT8Sh14YAen^nyom6ArxX$<;%ONhgJY$zN`FJ(kYZt<(02CU2q|F zOeAj;Vo}4!mb|Gu1W?p)xS`N`C;0{`8>iRM%Y-1yJmW-uU_ zt;cih+{l2cO_|e`opn%K-MjD6;7)N1?gTIHPI1@Z(BfL$t+-R9(Bj1@PH`!&L5jP( zJ2&r{^UnP4nS1{@E0fIHnao<5?7i2@TF>+Seki0MxeM*Nt>Y4bW5N>EnpEkeMC~dK z7VLXe#vbCVfwi3j#mMzcSsa>sNFt{UuRjDefuP5~f|{JI#@oe(w`={rH1z&axO0SP z!V-AYZbEt4J~T)6LEa(#ZBivpKS!+5gOl0daIV>Z&WHIcHakiyaVHk%gA)2h{B#I|$+)#{3Bwo`i{``4?|BN5$@ z8+8FoOb_JLmjKIl-zFD)f> zvlO)Sn|TVgV_SrEGV#{$)EA!e=n?o4yBd&USw8QFAJjg0aQ#8Hgbo zP@-3u$W6MNN1ODfg-alHsQFRqH*Z{TF3BBw@HuNv_eaM=8gc3`d{`wSAz9|a6eQ-; zRjw8}&)3=^P*DA4SetZE)AE_dAHrnM%^uD_fE3S!CiOG~1(01+tA+g;6AfbQeh&#p zI;Q%Mwic51mEr`gAOVz*Z5H1+?wGBMOttVx(1vQ$W-e$O!+D*%i~ZGdSv}J= z6zyzOb3|Ord0}MaVml&3<#PG7cdJ(3oiS-eTAnfkC*vH?lxW4pPz*u z^dZm@l`Xu>&*6PQ-_2%owyLPsHje*`6Y84%A`P=Wm8_=sAv^)G8Kv2Cl13P@R2HPc5ENRcV4}HoBCbl9M?`tVyo`s*4p64Q1bJYkLV&)oa-RH zevB^dK2UC`ZnLw5Vu?o-&5-y|ou6-!rz#M9jK^IgWK=!e{KBFE#4u$RP6z-ds$Nhi8!rn})-cr;Li`mK2C~lndvw5oC2`Pl3Tf-dfmY zeXZXr$SQ!_L;#S{qCNU(CWxS>Kt#}g#;Ze#0;`v~_-)1CT*;6~`o2(SHQdh7=iW!@ z5`&<)<jfho8VG;tvzgF@q?~9n>$&nXoQans{{1y9W<1W6 zwr4l-llbBDvk)EMORj|H!C$^J4==|35K`66IP$a(ox4;xH%$1IEe@jMy|Lgsohf>c z%*6?jzJSvU12bxY+}kig(5=3R?*6q&^)aUJ5k4Rs*qh^PKhafb?zxn|*LNaSBJ*Sr zyl??G6CGs2>9}3!fGkB_+ePI6?CXK?$1DyX)_|y9MERaK*T85cdVIw{wtaVp&({U( zjJObv_4Nl)g{rGi3$n7!g6Gk(J2XiOn8Kb1H&fptBh;8ziAq*DCmcx29uscIRH6ZK zcPC|2b|~9r#`qGpFtMD2R$y&l+BSJ$dT|106OT@WbCVbIQDJYpuYIYiz#}_KJ>{Y z%7;7KG4?X+9gtl0-CsLWduXnl*WLhHJW)Y-8OmvgJU5=_{yusItO_}Kt^w~Vjl#Rg z1yMoAhN!y4uArLalud3gcOKqFd*TCv9cdADlQ~G30(^vai z0sq1!j33gppxI%mFGwrX%h*ryF)zA%n#do)Cms7m#VSA?GtVsq6(yUi@;)@eOr2kq z^26a>*ElW^Vu$x9!BWT1tS>*8-5sNH^9ph<)H8W6;VqY%I)0;)N$2*Yzgm{Lt3QRc z^3N^OihnX|rp+TCQw%<6b3NmC3#=)3(=tp}F-8ZVX5xOK&%-!4u(c9s-v;(ki~vS{ zNOGI|^^CP0LzE*HECgC@eth^oWAR|6@X8ok#yUSVtSb#8X6Q@ZbEa4+i&^XKx@jXt z+TfFvT56bSZF>d{X6ZT0Ck_wt3_RSvOQOLk6s4YT057QYpC4yyTxY8bT^)Af@GDUsY};KRG1Sh zi{jSjBWxi$CHqcE<#OVh`UE#tfD#FF0%5L^XB0-7TsSF#g$oJuS?w(ikWULrm5Gmm z%410L?yQhe(1+7>Eca@dV7;R|_t?D^jjp~S1lEq#=$%!u+eSG=^q&-jmTKniK9grG z*hpzxl#`oYnD$Qgk1>hV<%~NXFkNB$!ec${P5q*ApfsOZ8^UViK%IM$ zS9vin8Ak4E7u34OZ8r)lMdb!~3*eh8buJ`UM&fF%U8<+=8)%)<38?qlYNg;No_sSQ zy1`tDb&q=Sl51b(IU~qE8_%twDxUFc`jhTP@EJpQ(~*;i(d7ISDCRf7rHM!xX?r2Z zDp;sZ@!dJPTK0=8@&`ks#be5h)3QClY%cY&_=JQ*X+oo8gmL7!li4Ivdg3V?x{p+! zuDxgg6}R*kTq5P7h&iVeQ3(P2*J$S3K#*FNhfm?5=2YY|7;s?_{B8BnGkEt^QXuc1;k; z8vnP$eOp7tsLr3mul z;?~)4t*UWXO)DQ3`N|+opdCdIul?NhQ0Bwlv(iS@EJFk4+(k*b< zr2M;Qm`d^AzR4V_?OCOYS@`zMQ*=AOz4u`atokmdF9I&j29^pQTcE)Mr)V=V*&26X z%%DDAm>XiC%(@?nBiGmG9{%aJoMM+=nvD=iMaxRxqd`vPg=*%t^xrfJ7$C9d7ah!xO$DO)61b~0_>7VlKk1;Kj*x>byEUbW_ zaFkdyY7qAK-MyytEKZOHkD1w`A2{uTpcuEmpV_o6_?Foq<^muz0mnAkrZ_|l7pf67 zMZSa*j5$h{F0&ufUH|17)?*$W-SV@-N@RHWqis|+9ja!$F$d*JZ8o!-keQKB3~5FR zT@@o*!ETIxpSb?H1{2zLDxnElBuvQ;*zA5N~lV zqI&)UtdgR%@Uk)KcQMd8qIi)H?Y&PIDX0U-Fq(oHV^jL~rM~P|N7x(+sFOTTCqkeEv5~3) z@#Cwgz>LWDc3S*U@F{FISon?0wxl(ZLTAW}ov!`#=aNC;?Sal$%2Ttk$32$jHF&-$ z8DNL|uU(3{3NNR7*BL(b=g<9cY7~$PQVSbBQBrpf`Wr#J3U(~izXdmFR}X=&73|h+ z^wSE^Saj?yuHBf8*_Y&Jb=oXnxEcFCz9U6ekbSVwUpP$VlKj1*P{bu|u%?z9E|02l zh+zIFM=Xtgc2G$`+Itj=bJhyngin(`YCi08VTG>*NbSSd2MBEzEx?a%fzK7Kfb7mu zJ7FNw>kAr6xF@xK;oY5y{^sJ&Vu_+k&%KYcrN8L*XbsXOaKMm?R#&2o+)nvq4`NMp zi-UX>n~01Q|E)pO+x9{%ZkOQcK%&_6lI4#AJfwwrsWUbir%~f zEuDHfx1wD{=|8ipKf&!$jNhJiEa+Q@?e{2gF7ITB16*8{)+xg}Zaz$(4)*vhJ8vJ~ ztVgl)5$EcInL8oEbR^KI;4tEFk$T(*TC(3P*`e{I0{BEco{yJuE|@_Hx9(KOdv;H% zPYNlK%Nw58yb6?*Xjdy%U0}xSQ$D&zkO!HEu0B{EJj{H?Ge9^0LYPT%`s6L3RVhZC zrc!dIa>5;F65#KF+iN$tu7j=Xa1`aftFVGZ+>WJ_7i*(P54dJ&Q>u^`2OCVhTFB>c z1Rvm=Io@}v2vnNdoiYq0VP^`W9|=um&%{skK>Cctkb}Qx5* zWn!+`&)=J6Pjz=Xikf}q-MG7@I+#zDn;K*2hTJl?*BS+PL0H{ep;j4a_)DhA2F=dD znw{U?$k+A#3(&Cq;#rMy1xQyN|6q8I+W<>`z3nK`DF2E!Ej8OYaG!VP*bodl%_LP8 z9`6Y<{CL38Y}?{_|PdCA7cJuhb&y8{bxzFZm;t9g+43_2?jY5?04ua(Y2o zbdXe*1FP_IwFlzUY5Zl5CB;;w&D@{0=kwvPY^~Q-J>gTZfGB+~x!}u*l7}5Qy%jas zV)ie&*D@;&Ulpa;v$X;|B^=t;CTbq3LxXH(L+PPOuP6e6^hT(Wis+Y(uO3oxbE19N zfHMY{-ncIhL`bD~5k($=P^K2#(3lS>&J~v}(E$dRsR%^xsEwzkj-5EXXof`11AXmS zq#V_uhjtf){H$>=Ck}27jcE;5q?Bh#x6r&0^wI&5V(|r$+)Zl0LPy>c3D~^Yqwr(TL>#5Oz4FY@=a6N zLaR!T)?69)fAh@(pBaVoArkJqfi^Ww(S-`3!v|`=Js{TNS9E|3re#a?Rk?_6GW$L+l|MK+-C;c)N6GtRkfd2&R zz^!C>Ky^23J*#8Utzq(GXJa2x6}14 z!52cv%Nom{n>I0T8#;I28OrqW9I>z%bYFa)u{=dn%U|N1j+jrQJTN$aW zb*30~v-4ssI%h3Ve(oH&E96aL0V_J-H@2VCfwX zDFfZ7on`WZrbX_1kM_(#Kb=7+*MI@lHv6lG76fX!B|2tw^vu1FSq$J#Z|ED}A4(R? z1xCF-$0nQ(x=ZT*xNA}1CJM7FaBQ+Q3HGDC_V-(*xLG`SEk^QaU%`w?LRLnM8z*5s zX9P9CtvdaPGe*^9$)7R@x(0Wnf?KSD$6C2%!SYi{*4m!VqS~-C6S!B+2I4Cn*LP51 zVShIN-wwr$Js#Dd3%}+^uj*Ve41ugQm^*M<|B+u*8rFnrGFUA@Oc*>Oxio|uAR>wr3k^ZqgVdA4>qjx;BUDWUnyYtT6 zf~&|tpW-^?cgy$2P^97US&BHd&tUxDYx4Wa-R_4Ei~;T0kKYWC?T*gwduZv>pYyrk z;%0lPRRP6=RJr6N@2;#HDChi&VVU7IuhI(KU4zRKC7+zOFm)2JUOvaJ=;V@xSwnGb zx^MQx4}vNp%L2Tw-`isSCaa#_r{&6meHx6%XW&;Nrx$UxtFSY5WQ|@(xX93I)^TJe+%G%k~A!vS;q?ZA2hwTX~Ky(N%w-^bLf>EXJS%f*j6Bb$ z{xbRbD~%Yuxa}u1&b-Jq7n0^SdsM3t0)t1Nai=ZWWFoY-J9huMe2Pv@PbvJS!u z?s=r2xxpjCF4fx!>Jm?jPO3*N=E9m-k??hU-k?|vfrv!z%7}$_Lw0W52NW|AivjKr zx>_D_HoIs|FE_n83*Ok} zh4*_;SoyAm9Xaaj^9xxPK5WE?STns2hISfOT&11AwGl}vhbX25UFj^#36G~Q1XPCO zMrkO4T5K^}hy(&CRIXehAc$fPZ}1?Fqa6GlM9 zLC$H-0d78AJ_BYGqIGBny0NuNMcol6BK9$jUmA08Mkmd93!5O}2fZdW%D2uoHGawMAZ;&ZBZaK%@6LLalh& zDWdLoWfrn3SEd1ro163>DKHg-W<2UP@xux8Jb)@zH8z zPZX6xeC$;ittv&f14%o^?dgyzp*Zo}azgpowH}B=qA$6r0DpCO8CvVH5h6iBDN7aT zYyZAA7HhVJ*%!EFffz%~H97F3r-?^vhCwW*DPIg2E>2-7tS9sb&M(2PzjX zvntE5i<0einQMjjO5~L`7-SAVQoPU`?7+>a-!#eAA84H!W^z%Fni`eBmp|k{$?M+S zTa41#56g;2zrRX^+qMW80Y}hL1yd~j0f@Of09S4Yf(Y|M!(-OqXJ@lG4tfW!fp$6# zS_iY?_Qgtu?$lb-XQ~ZFwBGA)*}*uO>4L((iDIZgIJ6mH$n$+>{hzV-)3Yn{Wf8dh zf3#VahhbitPs=j_r*}bYOIFG9#P~h&6le;a5sJ-(@yL1MOioo3t-{u7Izr4ma*m!e zJrIO5$}6}2u{Ew(L6oebu&K#AnT8yMnFbXlT0ZI--&c+PY%a!CTC)kQ;J>jntJ2&@#B#sO z8W=0!b!mpEH<(ille$464vx%lGdN}AMX7?=MEl4M5i*gjNfKuCfAt-~??Zc(ciA7N zSKpwfsWUz~F(hJE&yz5o_0c+B^sX*Lc<|xDd7J5{8Bg~+S}?q!(>&H!@pmROYcS8} z6Aa7zlL5_SGS@P|Tyu7bred*BRKCzVJdO2q2}DvL0w40u0*r+8^CQrBdsq~91IZKL zds5AIxrKbS#Y_o{Wn{ESewhu6OzELu`~1ACHkBr1fsR5aU4)Ahj5gEP=~i~c1zpPt zlWEG+XXbUP9+8>nO?EesQEJM+hj?~O6C;OiG7JTAXWsTuM)1Fr^Tp}>AoR{!dDG7T zvD&|9#;vClgSM5BK<3xhVOLIkv?cdbDtrH8(l|MKal#&bS!DyrD(Y2`zA}Aqu3TcZkkksB%rvg>D( zV8S3bO@S^wDI<$)=CnNS{zL)lGY_-bjT*%?unE1UI3S5(ICPT?DkTw z2$P%;Slty>n3gIDp304o;v)PtOsROils)`qfF_iO_buGFVf^QUhM%*L(JE~%9aiP^ z_;9LxJ(5mYtWs|r;b(9fYC(eZs&I{Bq<2Xj1gcX@t{12QMUhP#A}VW?qsy~vf)r9f z`wAd+J9q><$miNT;q7g80G^hzLO1m_PyrC&TBf=Ug9t*E#JPBYxXQ%BGmr|AK-4-{G{=S^JlAhG7`{;nL0g%og#09 z#wv_A3;MxAxyG-W%E@+gL}bB#1jYq8eX7zXpy#7eteZikWupNwk~N2eN9Cz@4- z{-l?v?xBo&+m&K+ZpmZ7OfccS+rR;6{+d3;yX_1wV{!E2US;q_W|jn0UgrBJx#mj= zMAc?ER4)D6f3M}H@&54!?c%h`xpx|!*EDa}+>_Y%a3bpZ)^6p(!r^=a0zgG)h>l7& z$W(DUmf@|F_xEp3m>Wkf80|?#S_z~juVGc*!MZ9cG}Ua|bLB=UmYHsRi$1Y^RI=g^ z@D8n!{`p=L(EpY7g>KeN+=bpPFIlCL7~iH2#NV(drQFjcKVgW5#;XjSm6T2I=Dn!@ zTrkmSi7J`A#batd#a>_kf|5Nts_5Gh{kE?(($QVUuwzR^3u*X9nx0bL9;Ny^#`aFx$u z9HGYHE=4!$V>>Vp`D#p(p1G%tsy?q)HC;;;>P#5VzH+Y@r4n&>558JU8ON*!Rv}?M z0}^)zmbA#YKePDsyC{zac6tKllf3%ruIA_4>9<-BQU>zCf2tysy`#^}o+UAl2Q^&q3MaDl9 zzJ4qP)mI1jKYj5_D;Z!k5l+xCn&A$bdp8h|>o4u)i!d0-##8X>{n&O0QLVqF0u(<1 zvfh|mYD?lRcTuL*t!dPYVC2hPeQ$C#XoKy>b**&Y567Vi>UO>2hbU*&ef5|0{~esN zZVls2tv}>Q9v)uC8plaA#ES=G%I$cq$HNFSY<+!kpN29p0r)NnWO`M6v(NRwZND6r zaX;a~CZxSDOz@kB)mCSX4VS}lqi!tBhC&CwMBJ){(gcQG`__D^@B)A89hr4~YYD4EL)G^_*8N*ZZN7G2F zyzxnDnL%07OBBS{R(W)mY5wd8;&>nCrianl_Fk&wW+H+yXh(^wwCoq66(H~DYy#q? z)0EmjNIX(#TeDP(>=j-S}V*il_#}C zjezC-`&t@-nN68(b-9)}{(@{On^P~7*kW3^QrX{PWyA6^@u^j<`eH6sv32-n?Q15& zJP$&i+j$2&5~8nfDUaxCD$N5{Z!vI=G*I*;05C}%KZ2)`3E#`bt@~mOUi`7-ouJsh zKP;jmUdl|QA6)5N>lS>$UBJ~`Fz;~c1(CPx~M zJQ);s$#Rg*#g)`&?$DRXnvHNJWBi2*6IczA!CiEXzkEwViwoa;!VXf0#3ov<5X|)} zk*Ful%sRf^PemT>L?mKzMj)yq)`F~9h*Clj0wv`m`$(}W}7<)B@{Ba2Z@h~ z_p6tA3}USqIv7f9ZT-mo&1SnA`&~2U-Zps&t1KmJ&_v`i){N}@xwEek?Y!8&12K`h zLp|sn&hqDUv~C9js7IF-s(EX2?>`MW=?es)4HHZGkobrauH zz;b)>+Q0t7bRdbj?#$ve}v^Xh($3PD=pYZfH%6r`%Do0;Q!-H1wNU6jw_8 z95eRKXsG)w!9aAI@;7)lrsTK;=5}UJ>eSv&6=DPf(L<)f^3spSTDX(as5FUHXs_yW zSGeP}i?uX6TyGboGInQWEl5B}df{YwE25RiJR@KyHCp4W=kpAQ6>;$M-&=k48z&bU zJo%bYev%S^Nly~js{y2DZ8^jmTt*K5t?#zUtx6pf(3rMDn^~2GFZOBD#Ijeg ze2k>*o>S~W{&()*&Mu6Tn5xv4PedBz;ze)OwMSprqAxAfLu?XEN`yd4R7Iyre-dwTAU$&P#9_$`5I=#2z3se

6M9M8#4O2~bpjD(!Yv=8P2z(TzE;U!YlmM0w?SCksx5u6 zs)m(H?{RX!d)e;!O!ZLN3v{H#wC$HnOAMbpjv41N!5Wuq{@fuaVRpRDX`HjV9sN$F z1e4aC8uB=a6^LJquI)TZKYyJfZXg>7-0qr^xu!Z(P6ytF4Cl`mx%@Kw3JgI#iy8P% z==Ffl*^>34_Tx{!!3DJvD*8(22pGVh%ri=bOUWSe+Wtn6?ROE8)i`BS4ZN7S#QOHPXU?E}ikJpCOx7p~G?FmLg> zew<8oE>(%HI7K9RO^zGGGR)6WytLW3BwLOLGo9V;Z(4O~FsYG{T5U{?q~JqF%1;*S z7jE|VPpVfHg)DDhJ-KfUlJ4d^u+;4+$SDQvV=+b&<<=MsG3gWsz~JL>V0O2A39Q|y zjM?yZiCEt)S0>lPi3N%qD3kjAsR>#rOK2G+?62T)O7EY^1G?-yGr=Sg;v$}Nc{{b| z<*JobhqB_Z+57%faVh!Hjk-76`;WYQe)rWwwHbRmbf(Yn|6u%v$;KxvoM2%7f%T~= z!NTFgj|5f?#7epw?@85DF@lWleo0B7lwiX5q(mxngL+JDWfm8jrNn{vg znBo{y{r}{*lK)4Og~3w)HfdpN=V->}?CRuc=V)Q&#%^Qf^na6E|3ARM|Jl`l0t){D z!v0$dgCS6W?0 + + + + + + + + + diff --git a/public/mp-logo.png b/public/mp-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..395881a647d0e9ce27a95738846da6d79ba0c192 GIT binary patch literal 5238 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 literal 0 HcmV?d00001 diff --git a/public/oa.png b/public/oa.png new file mode 100644 index 0000000000000000000000000000000000000000..103e3bc40e4bf37f63e74c9e1fe1f2d66304d5de GIT binary patch literal 55378 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 literal 0 HcmV?d00001 diff --git a/public/tinymce/langs/zh_CN.js b/public/tinymce/langs/zh_CN.js new file mode 100644 index 0000000..2a784f5 --- /dev/null +++ b/public/tinymce/langs/zh_CN.js @@ -0,0 +1,462 @@ +tinymce.addI18n('zh_CN',{ +"Redo": "\u91cd\u505a", +"Undo": "\u64a4\u9500", +"Cut": "\u526a\u5207", +"Copy": "\u590d\u5236", +"Paste": "\u7c98\u8d34", +"Select all": "\u5168\u9009", +"New document": "\u65b0\u6587\u4ef6", +"Ok": "\u786e\u5b9a", +"Cancel": "\u53d6\u6d88", +"Visual aids": "\u7f51\u683c\u7ebf", +"Bold": "\u7c97\u4f53", +"Italic": "\u659c\u4f53", +"Underline": "\u4e0b\u5212\u7ebf", +"Strikethrough": "\u5220\u9664\u7ebf", +"Superscript": "\u4e0a\u6807", +"Subscript": "\u4e0b\u6807", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Align left": "\u5de6\u8fb9\u5bf9\u9f50", +"Align center": "\u4e2d\u95f4\u5bf9\u9f50", +"Align right": "\u53f3\u8fb9\u5bf9\u9f50", +"Justify": "\u4e24\u7aef\u5bf9\u9f50", +"Bullet list": "\u9879\u76ee\u7b26\u53f7", +"Numbered list": "\u7f16\u53f7\u5217\u8868", +"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", +"Increase indent": "\u589e\u52a0\u7f29\u8fdb", +"Close": "\u5173\u95ed", +"Formats": "\u683c\u5f0f", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002", +"Headers": "\u6807\u9898", +"Header 1": "\u6807\u98981", +"Header 2": "\u6807\u98982", +"Header 3": "\u6807\u98983", +"Header 4": "\u6807\u98984", +"Header 5": "\u6807\u98985", +"Header 6": "\u6807\u98986", +"Headings": "\u6807\u9898", +"Heading 1": "\u6807\u98981", +"Heading 2": "\u6807\u98982", +"Heading 3": "\u6807\u98983", +"Heading 4": "\u6807\u98984", +"Heading 5": "\u6807\u98985", +"Heading 6": "\u6807\u98986", +"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684", +"Div": "Div", +"Pre": "Pre", +"Code": "\u4ee3\u7801", +"Paragraph": "\u6bb5\u843d", +"Blockquote": "\u5f15\u6587\u533a\u5757", +"Inline": "\u6587\u672c", +"Blocks": "\u57fa\u5757", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", +"Fonts": "\u5b57\u4f53", +"Font Sizes": "\u5b57\u53f7", +"Class": "\u7c7b\u578b", +"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf", +"OR": "\u6216", +"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64", +"Upload": "\u4e0a\u4f20", +"Block": "\u5757", +"Align": "\u5bf9\u9f50", +"Default": "\u9ed8\u8ba4", +"Circle": "\u7a7a\u5fc3\u5706", +"Disc": "\u5b9e\u5fc3\u5706", +"Square": "\u65b9\u5757", +"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", +"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Anchor...": "\u951a\u70b9...", +"Name": "\u540d\u79f0", +"Id": "\u6807\u8bc6\u7b26", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002", +"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", +"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", +"Special character...": "\u7279\u6b8a\u5b57\u7b26...", +"Source code": "\u6e90\u4ee3\u7801", +"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b", +"Language": "\u8bed\u8a00", +"Code sample...": "\u793a\u4f8b\u4ee3\u7801...", +"Color Picker": "\u9009\u8272\u5668", +"R": "R", +"G": "G", +"B": "B", +"Left to right": "\u4ece\u5de6\u5230\u53f3", +"Right to left": "\u4ece\u53f3\u5230\u5de6", +"Emoticons": "\u8868\u60c5", +"Emoticons...": "\u8868\u60c5\u7b26\u53f7...", +"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027", +"Title": "\u6807\u9898", +"Keywords": "\u5173\u952e\u8bcd", +"Description": "\u63cf\u8ff0", +"Robots": "\u673a\u5668\u4eba", +"Author": "\u4f5c\u8005", +"Encoding": "\u7f16\u7801", +"Fullscreen": "\u5168\u5c4f", +"Action": "\u64cd\u4f5c", +"Shortcut": "\u5feb\u6377\u952e", +"Help": "\u5e2e\u52a9", +"Address": "\u5730\u5740", +"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f", +"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f", +"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84", +"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355", +"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)", +"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):", +"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a", +"Learn more...": "\u4e86\u89e3\u66f4\u591a...", +"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}", +"Plugins": "\u63d2\u4ef6", +"Handy Shortcuts": "\u5feb\u6377\u952e", +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", +"Alternative description": "\u66ff\u4ee3\u63cf\u8ff0", +"Accessibility": "\u8f85\u52a9\u529f\u80fd", +"Image is decorative": "\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684", +"Source": "\u5730\u5740", +"Dimensions": "\u5927\u5c0f", +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", +"General": "\u666e\u901a", +"Advanced": "\u9ad8\u7ea7", +"Style": "\u6837\u5f0f", +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", +"Border": "\u8fb9\u6846", +"Insert image": "\u63d2\u5165\u56fe\u7247", +"Image...": "\u56fe\u7247...", +"Image list": "\u56fe\u7247\u5217\u8868", +"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c", +"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c", +"Edit image": "\u7f16\u8f91\u56fe\u7247", +"Image options": "\u56fe\u7247\u9009\u9879", +"Zoom in": "\u653e\u5927", +"Zoom out": "\u7f29\u5c0f", +"Crop": "\u88c1\u526a", +"Resize": "\u8c03\u6574\u5927\u5c0f", +"Orientation": "\u65b9\u5411", +"Brightness": "\u4eae\u5ea6", +"Sharpen": "\u9510\u5316", +"Contrast": "\u5bf9\u6bd4\u5ea6", +"Color levels": "\u989c\u8272\u5c42\u6b21", +"Gamma": "\u4f3d\u9a6c\u503c", +"Invert": "\u53cd\u8f6c", +"Apply": "\u5e94\u7528", +"Back": "\u540e\u9000", +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", +"Date\/time": "\u65e5\u671f\/\u65f6\u95f4", +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Text to display": "\u663e\u793a\u6587\u5b57", +"Url": "\u5730\u5740", +"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...", +"Current window": "\u5f53\u524d\u7a97\u53e3", +"None": "\u65e0", +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", +"Open link": "\u6253\u5f00\u94fe\u63a5", +"Remove link": "\u5220\u9664\u94fe\u63a5", +"Anchors": "\u951a\u70b9", +"Link...": "\u94fe\u63a5...", +"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:\/\/ \u524d\u7f00\u5417\uff1f", +"Link list": "\u94fe\u63a5\u5217\u8868", +"Insert video": "\u63d2\u5165\u89c6\u9891", +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", +"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53", +"Alternative source": "\u955c\u50cf", +"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740", +"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)", +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", +"Embed": "\u5185\u5d4c", +"Media...": "\u591a\u5a92\u4f53...", +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", +"Page break": "\u5206\u9875\u7b26", +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", +"Preview": "\u9884\u89c8", +"Print...": "\u6253\u5370...", +"Save": "\u4fdd\u5b58", +"Find": "\u67e5\u627e", +"Replace with": "\u66ff\u6362\u4e3a", +"Replace": "\u66ff\u6362", +"Replace all": "\u5168\u90e8\u66ff\u6362", +"Previous": "\u4e0a\u4e00\u4e2a", +"Next": "\u4e0b\u4e00\u4e2a", +"Find and Replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...", +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", +"Match case": "\u533a\u5206\u5927\u5c0f\u5199", +"Find whole words only": "\u5168\u5b57\u5339\u914d", +"Find in selection": "\u5728\u9009\u533a\u4e2d\u67e5\u627e", +"Spellcheck": "\u62fc\u5199\u68c0\u67e5", +"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00", +"No misspellings found.": "\u6ca1\u6709\u53d1\u73b0\u62fc\u5199\u9519\u8bef", +"Ignore": "\u5ffd\u7565", +"Ignore all": "\u5168\u90e8\u5ffd\u7565", +"Finish": "\u5b8c\u6210", +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Table properties": "\u8868\u683c\u5c5e\u6027", +"Delete table": "\u5220\u9664\u8868\u683c", +"Cell": "\u5355\u5143\u683c", +"Row": "\u884c", +"Column": "\u5217", +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", +"Split cell": "\u62c6\u5206\u5355\u5143\u683c", +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", +"Delete row": "\u5220\u9664\u884c", +"Row properties": "\u884c\u5c5e\u6027", +"Cut row": "\u526a\u5207\u884c", +"Copy row": "\u590d\u5236\u884c", +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", +"Delete column": "\u5220\u9664\u5217", +"Cols": "\u5217", +"Rows": "\u884c", +"Width": "\u5bbd", +"Height": "\u9ad8", +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", +"Caption": "\u6807\u9898", +"Show caption": "\u663e\u793a\u6807\u9898", +"Left": "\u5de6\u5bf9\u9f50", +"Center": "\u5c45\u4e2d", +"Right": "\u53f3\u5bf9\u9f50", +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", +"Scope": "\u8303\u56f4", +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", +"H Align": "\u6c34\u5e73\u5bf9\u9f50", +"V Align": "\u5782\u76f4\u5bf9\u9f50", +"Top": "\u9876\u90e8\u5bf9\u9f50", +"Middle": "\u5782\u76f4\u5c45\u4e2d", +"Bottom": "\u5e95\u90e8\u5bf9\u9f50", +"Header cell": "\u8868\u5934\u5355\u5143\u683c", +"Row group": "\u884c\u7ec4", +"Column group": "\u5217\u7ec4", +"Row type": "\u884c\u7c7b\u578b", +"Header": "\u8868\u5934", +"Body": "\u8868\u4f53", +"Footer": "\u8868\u5c3e", +"Border color": "\u8fb9\u6846\u989c\u8272", +"Insert template...": "\u63d2\u5165\u6a21\u677f...", +"Templates": "\u6a21\u677f", +"Template": "\u6a21\u677f", +"Text color": "\u6587\u5b57\u989c\u8272", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u81ea\u5b9a\u4e49...", +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", +"No color": "\u65e0", +"Remove color": "\u79fb\u9664\u989c\u8272", +"Table of Contents": "\u5185\u5bb9\u5217\u8868", +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", +"Word count": "\u5b57\u6570", +"Count": "\u8ba1\u6570", +"Document": "\u6587\u6863", +"Selection": "\u9009\u62e9", +"Words": "\u5355\u8bcd", +"Words: {0}": "\u5b57\u6570\uff1a{0}", +"{0} words": "{0} \u5b57", +"File": "\u6587\u4ef6", +"Edit": "\u7f16\u8f91", +"Insert": "\u63d2\u5165", +"View": "\u89c6\u56fe", +"Format": "\u683c\u5f0f", +"Table": "\u8868\u683c", +"Tools": "\u5de5\u5177", +"Powered by {0}": "\u7531{0}\u9a71\u52a8", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", +"Image title": "\u56fe\u7247\u6807\u9898", +"Border width": "\u8fb9\u6846\u5bbd\u5ea6", +"Border style": "\u8fb9\u6846\u6837\u5f0f", +"Error": "\u9519\u8bef", +"Warn": "\u8b66\u544a", +"Valid": "\u6709\u6548", +"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846", +"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002", +"System Font": "\u7cfb\u7edf\u5b57\u4f53", +"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}", +"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}", +"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}", +"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}", +"example": "\u793a\u4f8b", +"Search": "\u641c\u7d22", +"All": "\u5168\u90e8", +"Currency": "\u8d27\u5e01", +"Text": "\u6587\u5b57", +"Quotations": "\u5f15\u7528", +"Mathematical": "\u6570\u5b66", +"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145", +"Symbols": "\u7b26\u53f7", +"Arrows": "\u7bad\u5934", +"User Defined": "\u81ea\u5b9a\u4e49", +"dollar sign": "\u7f8e\u5143\u7b26\u53f7", +"currency sign": "\u8d27\u5e01\u7b26\u53f7", +"euro-currency sign": "\u6b27\u5143\u7b26\u53f7", +"colon sign": "\u5192\u53f7", +"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7", +"french franc sign": "\u6cd5\u90ce\u7b26\u53f7", +"lira sign": "\u91cc\u62c9\u7b26\u53f7", +"mill sign": "\u5bc6\u5c14\u7b26\u53f7", +"naira sign": "\u5948\u62c9\u7b26\u53f7", +"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7", +"rupee sign": "\u5362\u6bd4\u7b26\u53f7", +"won sign": "\u97e9\u5143\u7b26\u53f7", +"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7", +"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7", +"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7", +"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7", +"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7", +"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7", +"peso sign": "\u6bd4\u7d22\u7b26\u53f7", +"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7", +"austral sign": "\u6fb3\u5143\u7b26\u53f7", +"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7", +"cedi sign": "\u585e\u5730\u7b26\u53f7", +"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7", +"spesmilo sign": "spesmilo\u7b26\u53f7", +"tenge sign": "\u575a\u6208\u7b26\u53f7", +"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4", +"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9", +"nordic mark sign": "\u5317\u6b27\u9a6c\u514b", +"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7", +"ruble sign": "\u5362\u5e03\u7b26\u53f7", +"yen character": "\u65e5\u5143\u5b57\u6837", +"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837", +"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09", +"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09", +"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...", +"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7", +"People": "\u4eba\u7c7b", +"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136", +"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1", +"Activity": "\u6d3b\u52a8", +"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9", +"Objects": "\u7269\u4ef6", +"Flags": "\u65d7\u5e1c", +"Characters": "\u5b57\u7b26", +"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)", +"{0} characters": "{0} \u4e2a\u5b57\u7b26", +"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002", +"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002", +"Update": "\u66f4\u65b0", +"Color swatch": "\u989c\u8272\u6837\u672c", +"Turquoise": "\u9752\u7eff\u8272", +"Green": "\u7eff\u8272", +"Blue": "\u84dd\u8272", +"Purple": "\u7d2b\u8272", +"Navy Blue": "\u6d77\u519b\u84dd", +"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272", +"Dark Green": "\u6df1\u7eff\u8272", +"Medium Blue": "\u4e2d\u84dd\u8272", +"Medium Purple": "\u4e2d\u7d2b\u8272", +"Midnight Blue": "\u6df1\u84dd\u8272", +"Yellow": "\u9ec4\u8272", +"Orange": "\u6a59\u8272", +"Red": "\u7ea2\u8272", +"Light Gray": "\u6d45\u7070\u8272", +"Gray": "\u7070\u8272", +"Dark Yellow": "\u6697\u9ec4\u8272", +"Dark Orange": "\u6df1\u6a59\u8272", +"Dark Red": "\u6df1\u7ea2\u8272", +"Medium Gray": "\u4e2d\u7070\u8272", +"Dark Gray": "\u6df1\u7070\u8272", +"Light Green": "\u6d45\u7eff\u8272", +"Light Yellow": "\u6d45\u9ec4\u8272", +"Light Red": "\u6d45\u7ea2\u8272", +"Light Purple": "\u6d45\u7d2b\u8272", +"Light Blue": "\u6d45\u84dd\u8272", +"Dark Purple": "\u6df1\u7d2b\u8272", +"Dark Blue": "\u6df1\u84dd\u8272", +"Black": "\u9ed1\u8272", +"White": "\u767d\u8272", +"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f", +"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846", +"history": "\u5386\u53f2", +"styles": "\u6837\u5f0f", +"formatting": "\u683c\u5f0f\u5316", +"alignment": "\u5bf9\u9f50", +"indentation": "\u7f29\u8fdb", +"Font": "\u5b57\u4f53", +"Size": "\u5b57\u53f7", +"More...": "\u66f4\u591a...", +"Select...": "\u9009\u62e9...", +"Preferences": "\u9996\u9009\u9879", +"Yes": "\u662f", +"No": "\u5426", +"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15", +"Version": "\u7248\u672c", +"Code view": "\u4ee3\u7801\u89c6\u56fe", +"Open popup menu for split buttons": "\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae", +"List Properties": "\u5217\u8868\u5c5e\u6027", +"List properties...": "\u6807\u9898\u5b57\u4f53\u5c5e\u6027", +"Start list at number": "\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868", +"Line height": "\u884c\u9ad8", +"comments": "\u5907\u6ce8", +"Format Painter": "\u683c\u5f0f\u5237", +"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6", +"Capitalization": "\u5927\u5199", +"lowercase": "\u5c0f\u5199", +"UPPERCASE": "\u5927\u5199", +"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199", +"permanent pen": "\u8bb0\u53f7\u7b14", +"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027", +"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...", +"case change": "\u6848\u4f8b\u66f4\u6539", +"page embed": "\u9875\u9762\u5d4c\u5165", +"Advanced sort...": "\u9ad8\u7ea7\u6392\u5e8f...", +"Advanced Sort": "\u9ad8\u7ea7\u6392\u5e8f", +"Sort table by column ascending": "\u6309\u5217\u5347\u5e8f\u8868", +"Sort table by column descending": "\u6309\u5217\u964d\u5e8f\u8868", +"Sort": "\u6392\u5e8f", +"Order": "\u6392\u5e8f", +"Sort by": "\u6392\u5e8f\u65b9\u5f0f", +"Ascending": "\u5347\u5e8f", +"Descending": "\u964d\u5e8f", +"Column {0}": "\u5217{0}", +"Row {0}": "\u884c{0}", +"Spellcheck...": "\u62fc\u5199\u68c0\u67e5...", +"Misspelled word": "\u62fc\u5199\u9519\u8bef\u7684\u5355\u8bcd", +"Suggestions": "\u5efa\u8bae", +"Change": "\u66f4\u6539", +"Finding word suggestions": "\u67e5\u627e\u5355\u8bcd\u5efa\u8bae", +"Success": "\u6210\u529f", +"Repair": "\u4fee\u590d", +"Issue {0} of {1}": "\u5171\u8ba1{1}\u95ee\u9898{0}", +"Images must be marked as decorative or have an alternative text description": "\u56fe\u50cf\u5fc5\u987b\u6807\u8bb0\u4e3a\u88c5\u9970\u6027\u6216\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0", +"Images must have an alternative text description. Decorative images are not allowed.": "\u56fe\u50cf\u5fc5\u987b\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0\u3002\u4e0d\u5141\u8bb8\u4f7f\u7528\u88c5\u9970\u56fe\u50cf\u3002", +"Or provide alternative text:": "\u6216\u63d0\u4f9b\u5907\u9009\u6587\u672c\uff1a", +"Make image decorative:": "\u4f7f\u56fe\u50cf\u88c5\u9970\uff1a", +"ID attribute must be unique": "ID \u5c5e\u6027\u5fc5\u987b\u662f\u552f\u4e00\u7684", +"Make ID unique": "\u4f7f ID \u72ec\u4e00\u65e0\u4e8c", +"Keep this ID and remove all others": "\u4fdd\u7559\u6b64 ID \u5e76\u5220\u9664\u6240\u6709\u5176\u4ed6", +"Remove this ID": "\u5220\u9664\u6b64 ID", +"Remove all IDs": "\u6e05\u9664\u5168\u90e8IDs", +"Checklist": "\u6e05\u5355", +"Anchor": "\u951a\u70b9", +"Special character": "\u7279\u6b8a\u7b26\u53f7", +"Code sample": "\u4ee3\u7801\u793a\u4f8b", +"Color": "\u989c\u8272", +"Document properties": "\u6587\u6863\u5c5e\u6027", +"Image description": "\u56fe\u7247\u63cf\u8ff0", +"Image": "\u56fe\u7247", +"Insert link": "\u63d2\u5165\u94fe\u63a5", +"Target": "\u6253\u5f00\u65b9\u5f0f", +"Link": "\u94fe\u63a5", +"Poster": "\u5c01\u9762", +"Media": "\u5a92\u4f53", +"Print": "\u6253\u5370", +"Prev": "\u4e0a\u4e00\u4e2a", +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Whole words": "\u5168\u5b57\u5339\u914d", +"Insert template": "\u63d2\u5165\u6a21\u677f" +}); \ No newline at end of file diff --git a/public/tinymce/langs/zh_TW.js b/public/tinymce/langs/zh_TW.js new file mode 100644 index 0000000..1987486 --- /dev/null +++ b/public/tinymce/langs/zh_TW.js @@ -0,0 +1,419 @@ +tinymce.addI18n('zh_TW',{ +"Redo": "\u91cd\u505a", +"Undo": "\u64a4\u92b7", +"Cut": "\u526a\u4e0b", +"Copy": "\u8907\u88fd", +"Paste": "\u8cbc\u4e0a", +"Select all": "\u5168\u9078", +"New document": "\u65b0\u6587\u4ef6", +"Ok": "\u78ba\u5b9a", +"Cancel": "\u53d6\u6d88", +"Visual aids": "\u5c0f\u5e6b\u624b", +"Bold": "\u7c97\u9ad4", +"Italic": "\u659c\u9ad4", +"Underline": "\u4e0b\u5283\u7dda", +"Strikethrough": "\u522a\u9664\u7dda", +"Superscript": "\u4e0a\u6a19", +"Subscript": "\u4e0b\u6a19", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Align left": "\u5de6\u908a\u5c0d\u9f4a", +"Align center": "\u4e2d\u9593\u5c0d\u9f4a", +"Align right": "\u53f3\u908a\u5c0d\u9f4a", +"Justify": "\u5de6\u53f3\u5c0d\u9f4a", +"Bullet list": "\u9805\u76ee\u6e05\u55ae", +"Numbered list": "\u6578\u5b57\u6e05\u55ae", +"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392", +"Increase indent": "\u589e\u52a0\u7e2e\u6392", +"Close": "\u95dc\u9589", +"Formats": "\u683c\u5f0f", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002", +"Headers": "\u6a19\u984c", +"Header 1": "\u6a19\u984c 1", +"Header 2": "\u6a19\u984c 2", +"Header 3": "\u6a19\u984c 3", +"Header 4": "\u6a19\u984c 4", +"Header 5": "\u6a19\u984c 5", +"Header 6": "\u6a19\u984c 6", +"Headings": "\u6a19\u984c", +"Heading 1": "\u6a19\u984c1", +"Heading 2": "\u6a19\u984c2", +"Heading 3": "\u6a19\u984c3", +"Heading 4": "\u6a19\u984c4", +"Heading 5": "\u6a19\u984c5", +"Heading 6": "\u6a19\u984c6", +"Preformatted": "\u9810\u5148\u683c\u5f0f\u5316\u7684", +"Div": "Div", +"Pre": "Pre", +"Code": "\u4ee3\u78bc", +"Paragraph": "\u6bb5\u843d", +"Blockquote": "\u5f15\u6587\u5340\u584a", +"Inline": "\u5167\u806f", +"Blocks": "\u57fa\u584a", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002", +"Fonts": "\u5b57\u578b", +"Font Sizes": "\u5b57\u578b\u5927\u5c0f", +"Class": "\u985e\u578b", +"Browse for an image": "\u5f9e\u5716\u7247\u4e2d\u700f\u89bd", +"OR": "\u6216", +"Drop an image here": "\u62d6\u66f3\u5716\u7247\u81f3\u6b64", +"Upload": "\u4e0a\u50b3", +"Block": "\u5340\u584a", +"Align": "\u5c0d\u9f4a", +"Default": "\u9810\u8a2d", +"Circle": "\u7a7a\u5fc3\u5713", +"Disc": "\u5be6\u5fc3\u5713", +"Square": "\u6b63\u65b9\u5f62", +"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd", +"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57", +"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57", +"Anchor...": "\u9328\u9ede...", +"Name": "\u540d\u7a31", +"Id": "Id", +"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id\u61c9\u4ee5\u5b57\u6bcd\u958b\u982d\uff0c\u5f8c\u9762\u63a5\u8457\u5b57\u6bcd\uff0c\u6578\u5b57\uff0c\u7834\u6298\u865f\uff0c\u9ede\u6578\uff0c\u5192\u865f\u6216\u4e0b\u5283\u7dda\u3002", +"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f", +"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f", +"Special character...": "\u7279\u6b8a\u5b57\u5143......", +"Source code": "\u539f\u59cb\u78bc", +"Insert\/Edit code sample": "\u63d2\u5165\/\u7de8\u8f2f \u7a0b\u5f0f\u78bc\u7bc4\u4f8b", +"Language": "\u8a9e\u8a00", +"Code sample...": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b...", +"Color Picker": "\u9078\u8272\u5668", +"R": "\u7d05", +"G": "\u7da0", +"B": "\u85cd", +"Left to right": "\u5f9e\u5de6\u5230\u53f3", +"Right to left": "\u5f9e\u53f3\u5230\u5de6", +"Emoticons...": "\u8868\u60c5\u7b26\u865f\u2026", +"Metadata and Document Properties": "\u5f8c\u8a2d\u8cc7\u6599\u8207\u6587\u4ef6\u5c6c\u6027", +"Title": "\u6a19\u984c", +"Keywords": "\u95dc\u9375\u5b57", +"Description": "\u63cf\u8ff0", +"Robots": "\u6a5f\u5668\u4eba", +"Author": "\u4f5c\u8005", +"Encoding": "\u7de8\u78bc", +"Fullscreen": "\u5168\u87a2\u5e55", +"Action": "\u52d5\u4f5c", +"Shortcut": "\u5feb\u901f\u9375", +"Help": "\u5e6b\u52a9", +"Address": "\u5730\u5740", +"Focus to menubar": "\u8df3\u81f3\u9078\u55ae\u5217", +"Focus to toolbar": "\u8df3\u81f3\u5de5\u5177\u5217", +"Focus to element path": "\u8df3\u81f3HTML\u5143\u7d20\u5217", +"Focus to contextual toolbar": "\u8df3\u81f3\u5feb\u6377\u9078\u55ae", +"Insert link (if link plugin activated)": "\u65b0\u589e\u6377\u5f91 (\u6377\u5f91\u5916\u639b\u555f\u7528\u6642)", +"Save (if save plugin activated)": "\u5132\u5b58 (\u5132\u5b58\u5916\u639b\u555f\u7528\u6642)", +"Find (if searchreplace plugin activated)": "\u5c0b\u627e (\u5c0b\u627e\u53d6\u4ee3\u5916\u639b\u555f\u7528\u6642)", +"Plugins installed ({0}):": "({0}) \u500b\u5916\u639b\u5df2\u5b89\u88dd\uff1a", +"Premium plugins:": "\u52a0\u503c\u5916\u639b\uff1a", +"Learn more...": "\u4e86\u89e3\u66f4\u591a...", +"You are using {0}": "\u60a8\u6b63\u5728\u4f7f\u7528 {0}", +"Plugins": "\u5916\u639b", +"Handy Shortcuts": "\u5feb\u901f\u9375", +"Horizontal line": "\u6c34\u5e73\u7dda", +"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247", +"Image description": "\u5716\u7247\u63cf\u8ff0", +"Source": "\u5716\u7247\u7db2\u5740", +"Dimensions": "\u5c3a\u5bf8", +"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e", +"General": "\u4e00\u822c", +"Advanced": "\u9032\u968e", +"Style": "\u6a23\u5f0f", +"Vertical space": "\u9ad8\u5ea6", +"Horizontal space": "\u5bec\u5ea6", +"Border": "\u908a\u6846", +"Insert image": "\u63d2\u5165\u5716\u7247", +"Image...": "\u5716\u7247......", +"Image list": "\u5716\u7247\u6e05\u55ae", +"Rotate counterclockwise": "\u9006\u6642\u91dd\u65cb\u8f49", +"Rotate clockwise": "\u9806\u6642\u91dd\u65cb\u8f49", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f49", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f49", +"Edit image": "\u7de8\u8f2f\u5716\u7247", +"Image options": "\u5716\u7247\u9078\u9805", +"Zoom in": "\u653e\u5927", +"Zoom out": "\u7e2e\u5c0f", +"Crop": "\u88c1\u526a", +"Resize": "\u8abf\u6574\u5927\u5c0f", +"Orientation": "\u65b9\u5411", +"Brightness": "\u4eae\u5ea6", +"Sharpen": "\u92b3\u5316", +"Contrast": "\u5c0d\u6bd4", +"Color levels": "\u984f\u8272\u5c64\u6b21", +"Gamma": "\u4f3d\u99ac\u503c", +"Invert": "\u53cd\u8f49", +"Apply": "\u61c9\u7528", +"Back": "\u5f8c\u9000", +"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593", +"Date\/time": "\u65e5\u671f\/\u6642\u9593", +"Insert\/Edit Link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50", +"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50", +"Text to display": "\u986f\u793a\u6587\u5b57", +"Url": "\u7db2\u5740", +"Open link in...": "\u958b\u555f\u9023\u7d50\u65bc...", +"Current window": "\u76ee\u524d\u8996\u7a97", +"None": "\u7121", +"New window": "\u53e6\u958b\u8996\u7a97", +"Remove link": "\u79fb\u9664\u9023\u7d50", +"Anchors": "\u52a0\u5165\u9328\u9ede", +"Link...": "\u9023\u7d50...", +"Paste or type a link": "\u8cbc\u4e0a\u6216\u8f38\u5165\u9023\u7d50", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u70ba\u96fb\u5b50\u90f5\u4ef6\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7db4\u55ce\uff1f", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u5c6c\u65bc\u5916\u90e8\u93c8\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7db4\u55ce\uff1f", +"Link list": "\u9023\u7d50\u6e05\u55ae", +"Insert video": "\u63d2\u5165\u5f71\u97f3", +"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3", +"Insert\/edit media": "\u63d2\u5165\/\u7de8\u8f2f \u5a92\u9ad4", +"Alternative source": "\u66ff\u4ee3\u5f71\u97f3", +"Alternative source URL": "\u66ff\u4ee3\u4f86\u6e90URL", +"Media poster (Image URL)": "\u5a92\u9ad4\u6d77\u5831\uff08\u5f71\u50cfImage URL\uff09", +"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:", +"Embed": "\u5d4c\u5165\u78bc", +"Media...": "\u5a92\u9ad4...", +"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c", +"Page break": "\u5206\u9801", +"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a", +"Preview": "\u9810\u89bd", +"Print...": "\u5217\u5370...", +"Save": "\u5132\u5b58", +"Find": "\u641c\u5c0b", +"Replace with": "\u66f4\u63db", +"Replace": "\u66ff\u63db", +"Replace all": "\u66ff\u63db\u5168\u90e8", +"Previous": "\u4e0a\u4e00\u500b", +"Next": "\u4e0b\u4e00\u500b", +"Find and replace...": "\u5c0b\u627e\u53ca\u53d6\u4ee3...", +"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32", +"Match case": "\u76f8\u5339\u914d\u6848\u4ef6", +"Find whole words only": "\u50c5\u627e\u51fa\u5b8c\u6574\u5b57\u532f", +"Spell check": "\u62fc\u5beb\u6aa2\u67e5", +"Ignore": "\u5ffd\u7565", +"Ignore all": "\u5ffd\u7565\u6240\u6709", +"Finish": "\u5b8c\u6210", +"Add to Dictionary": "\u52a0\u5165\u5b57\u5178\u4e2d", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Table properties": "\u8868\u683c\u5c6c\u6027", +"Delete table": "\u522a\u9664\u8868\u683c", +"Cell": "\u5132\u5b58\u683c", +"Row": "\u5217", +"Column": "\u884c", +"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027", +"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c", +"Split cell": "\u5206\u5272\u5132\u5b58\u683c", +"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d", +"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c", +"Delete row": "\u522a\u9664\u5217", +"Row properties": "\u5217\u5c6c\u6027", +"Cut row": "\u526a\u4e0b\u5217", +"Copy row": "\u8907\u88fd\u5217", +"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d", +"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c", +"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d", +"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c", +"Delete column": "\u522a\u9664\u884c", +"Cols": "\u6b04\u4f4d\u6bb5", +"Rows": "\u5217", +"Width": "\u5bec\u5ea6", +"Height": "\u9ad8\u5ea6", +"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd", +"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd", +"Show caption": "\u986f\u793a\u6a19\u984c", +"Left": "\u5de6\u908a", +"Center": "\u4e2d\u9593", +"Right": "\u53f3\u908a", +"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b", +"Scope": "\u7bc4\u570d", +"Alignment": "\u5c0d\u9f4a", +"H Align": "\u6c34\u5e73\u4f4d\u7f6e", +"V Align": "\u5782\u76f4\u4f4d\u7f6e", +"Top": "\u7f6e\u9802", +"Middle": "\u7f6e\u4e2d", +"Bottom": "\u7f6e\u5e95", +"Header cell": "\u6a19\u982d\u5132\u5b58\u683c", +"Row group": "\u5217\u7fa4\u7d44", +"Column group": "\u6b04\u4f4d\u7fa4\u7d44", +"Row type": "\u884c\u7684\u985e\u578b", +"Header": "\u6a19\u982d", +"Body": "\u4e3b\u9ad4", +"Footer": "\u9801\u5c3e", +"Border color": "\u908a\u6846\u984f\u8272", +"Insert template...": "\u63d2\u5165\u6a23\u7248...", +"Templates": "\u6a23\u7248", +"Template": "\u6a23\u677f", +"Text color": "\u6587\u5b57\u984f\u8272", +"Background color": "\u80cc\u666f\u984f\u8272", +"Custom...": "\u81ea\u8a02", +"Custom color": "\u81ea\u8a02\u984f\u8272", +"No color": "No color", +"Remove color": "\u79fb\u9664\u984f\u8272", +"Table of Contents": "\u76ee\u9304", +"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a", +"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143", +"Word count": "\u8a08\u7b97\u5b57\u6578", +"Count": "\u8a08\u7b97", +"Document": "\u6587\u4ef6", +"Selection": "\u9078\u9805", +"Words": "\u5b57\u6578", +"Words: {0}": "\u5b57\u6578\uff1a{0}", +"{0} words": "{0} \u5b57\u5143", +"File": "\u6a94\u6848", +"Edit": "\u7de8\u8f2f", +"Insert": "\u63d2\u5165", +"View": "\u6aa2\u8996", +"Format": "\u683c\u5f0f", +"Table": "\u8868\u683c", +"Tools": "\u5de5\u5177", +"Powered by {0}": "\u7531 {0} \u63d0\u4f9b", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9", +"Image title": "\u5716\u7247\u6a19\u984c", +"Border width": "\u6846\u7dda\u5bec\u5ea6", +"Border style": "\u6846\u7dda\u6a23\u5f0f", +"Error": "\u932f\u8aa4", +"Warn": "\u8b66\u544a", +"Valid": "\u6709\u6548", +"To open the popup, press Shift+Enter": "\u8981\u958b\u555f\u5f48\u51fa\u8996\u7a97\uff0c\u8acb\u6309Shift+Enter", +"Rich Text Area. Press ALT-0 for help.": "\u5bcc\u6587\u672c\u5340\u57df\u3002\u8acb\u6309ALT-0\u5c0b\u6c42\u5354\u52a9\u3002", +"System Font": "\u7cfb\u7d71\u5b57\u578b", +"Failed to upload image: {0}": "\u7121\u6cd5\u4e0a\u50b3\u5f71\u50cf\uff1a{0}", +"Failed to load plugin: {0} from url {1}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}\u81eaurl{1}", +"Failed to load plugin url: {0}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}", +"Failed to initialize plugin: {0}": "\u7121\u6cd5\u555f\u52d5\u63d2\u4ef6\uff1a{0}", +"example": "\u7bc4\u4f8b", +"Search": "\u641c\u7d22", +"All": "\u5168\u90e8", +"Currency": "\u8ca8\u5e63", +"Text": "\u6587\u672c", +"Quotations": "\u5f15\u7528", +"Mathematical": "\u6578\u5b78", +"Extended Latin": "\u62c9\u4e01\u5b57\u6bcd\u64f4\u5145", +"Symbols": "\u7b26\u865f", +"Arrows": "\u7bad\u982d", +"User Defined": "\u4f7f\u7528\u8005\u5df2\u5b9a\u7fa9", +"dollar sign": "\u7f8e\u5143\u7b26\u865f", +"currency sign": "\u8ca8\u5e63\u7b26\u865f", +"euro-currency sign": "\u6b50\u5143\u7b26\u865f", +"colon sign": "\u79d1\u6717\u7b26\u865f", +"cruzeiro sign": "\u514b\u9b6f\u8cfd\u7f85\u7b26\u865f", +"french franc sign": "\u6cd5\u6717\u7b26\u865f", +"lira sign": "\u91cc\u62c9\u7b26\u865f", +"mill sign": "\u6587\u7b26\u865f", +"naira sign": "\u5948\u62c9\u7b26\u865f", +"peseta sign": "\u6bd4\u585e\u5854\u7b26\u865f", +"rupee sign": "\u76e7\u6bd4\u7b26\u865f", +"won sign": "\u97d3\u571c\u7b26\u865f", +"new sheqel sign": "\u65b0\u8b1d\u514b\u723e\u7b26\u865f", +"dong sign": "\u8d8a\u5357\u76fe\u7b26\u865f", +"kip sign": "\u8001\u64be\u5e63\u7b26\u865f", +"tugrik sign": "\u8499\u53e4\u5e63\u7b26\u865f", +"drachma sign": "\u5fb7\u514b\u62c9\u99ac\u7b26\u865f", +"german penny symbol": "\u5fb7\u570b\u5206\u7b26\u865f", +"peso sign": "\u62ab\u7d22\u7b26\u865f", +"guarani sign": "\u5df4\u62c9\u572d\u5e63\u7b26\u865f", +"austral sign": "\u963f\u6839\u5ef7\u5e63\u7b26\u865f", +"hryvnia sign": "\u70cf\u514b\u862d\u5e63\u7b26\u865f", +"cedi sign": "\u8fe6\u7d0d\u5e63\u7b26\u865f", +"livre tournois sign": "\u91cc\u5f17\u723e\u7b26\u865f", +"spesmilo sign": "\u570b\u969b\u5e63\u7b26\u865f", +"tenge sign": "\u54c8\u85a9\u514b\u5e63\u7b26\u865f", +"indian rupee sign": "\u5370\u5ea6\u76e7\u6bd4\u7b26\u865f", +"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9\u7b26\u865f", +"nordic mark sign": "\u5317\u6b50\u99ac\u514b\u7b26\u865f", +"manat sign": "\u4e9e\u585e\u62dc\u7136\u5e63\u7b26\u865f", +"ruble sign": "\u76e7\u5e03\u7b26\u865f", +"yen character": "\u65e5\u5713\u7b26\u865f", +"yuan character": "\u4eba\u6c11\u5e63\u7b26\u865f", +"yuan character, in hong kong and taiwan": "\u6e2f\u5143\u8207\u53f0\u5e63\u7b26\u865f", +"yen\/yuan character variant one": "\u65e5\u5713\/\u4eba\u6c11\u5e63\u7b26\u865f\u8b8a\u5316\u578b", +"Loading emoticons...": "\u8f09\u5165\u8868\u60c5\u7b26\u865f\u2026", +"Could not load emoticons": "\u7121\u6cd5\u8f09\u5165\u8868\u60c5\u7b26\u865f", +"People": "\u4eba", +"Animals and Nature": "\u52d5\u7269\u8207\u81ea\u7136", +"Food and Drink": "\u98f2\u98df", +"Activity": "\u6d3b\u52d5", +"Travel and Places": "\u65c5\u884c\u8207\u5730\u9ede", +"Objects": "\u7269\u4ef6", +"Flags": "\u65d7\u6a19", +"Characters": "\u5b57\u5143", +"Characters (no spaces)": "\u5b57\u5143\uff08\u7121\u7a7a\u683c\uff09", +"{0} characters": "{0}\u5b57\u5143", +"Error: Form submit field collision.": "\u932f\u8aa4\uff1a\u8868\u683c\u905e\u4ea4\u6b04\u4f4d\u885d\u7a81\u3002", +"Error: No form element found.": "\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u8868\u683c\u5143\u7d20\u3002", +"Update": "\u66f4\u65b0", +"Color swatch": "\u8272\u5f69\u6a23\u672c", +"Turquoise": "\u571f\u8033\u5176\u85cd", +"Green": "\u7da0\u8272", +"Blue": "\u85cd\u8272", +"Purple": "\u7d2b\u8272", +"Navy Blue": "\u6df1\u85cd\u8272", +"Dark Turquoise": "\u6df1\u571f\u8033\u5176\u85cd", +"Dark Green": "\u6df1\u7da0\u8272", +"Medium Blue": "\u4e2d\u85cd\u8272", +"Medium Purple": "\u4e2d\u7d2b\u8272", +"Midnight Blue": "\u9ed1\u85cd\u8272", +"Yellow": "\u9ec3\u8272", +"Orange": "\u6a59\u8272", +"Red": "\u7d05\u8272", +"Light Gray": "\u6dfa\u7070\u8272", +"Gray": "\u7070\u8272", +"Dark Yellow": "\u6df1\u9ec3\u8272", +"Dark Orange": "\u6df1\u6a59\u8272", +"Dark Red": "\u6697\u7d05\u8272", +"Medium Gray": "\u4e2d\u7070\u8272", +"Dark Gray": "\u6df1\u7070\u8272", +"Light Green": "\u6de1\u7da0\u8272", +"Light Yellow": "\u6dfa\u9ec3\u8272", +"Light Red": "\u6dfa\u7d05\u8272", +"Light Purple": "\u6dfa\u7d2b\u8272", +"Light Blue": "\u6dfa\u85cd\u8272", +"Dark Purple": "\u6df1\u7d2b\u8272", +"Dark Blue": "\u6df1\u85cd\u8272", +"Black": "\u9ed1\u8272", +"White": "\u767d\u8272", +"Switch to or from fullscreen mode": "\u8f49\u63db\u81ea\/\u81f3\u5168\u87a2\u5e55\u6a21\u5f0f", +"Open help dialog": "\u958b\u555f\u5354\u52a9\u5c0d\u8a71", +"history": "\u6b77\u53f2", +"styles": "\u6a23\u5f0f", +"formatting": "\u683c\u5f0f", +"alignment": "\u5c0d\u9f4a", +"indentation": "\u7e2e\u6392", +"permanent pen": "\u6c38\u4e45\u6027\u7b46", +"comments": "\u8a3b\u89e3", +"Format Painter": "\u8907\u88fd\u683c\u5f0f", +"Insert\/edit iframe": "\u63d2\u5165\/\u7de8\u8f2fiframe", +"Capitalization": "\u5927\u5beb", +"lowercase": "\u5c0f\u5beb", +"UPPERCASE": "\u5927\u5beb", +"Title Case": "\u5b57\u9996\u5927\u5beb", +"Permanent Pen Properties": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027", +"Permanent pen properties...": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027......", +"Font": "\u5b57\u578b", +"Size": "\u5b57\u5f62\u5927\u5c0f", +"More...": "\u66f4\u591a\u8cc7\u8a0a......", +"Spellcheck Language": "\u62fc\u5beb\u8a9e\u8a00", +"Select...": "\u9078\u64c7......", +"Preferences": "\u9996\u9078\u9805", +"Yes": "\u662f", +"No": "\u5426", +"Keyboard Navigation": "\u9375\u76e4\u5c0e\u822a", +"Version": "\u7248\u672c", +"Anchor": "\u52a0\u5165\u9328\u9ede", +"Special character": "\u7279\u6b8a\u5b57\u5143", +"Code sample": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b", +"Color": "\u984f\u8272", +"Emoticons": "\u8868\u60c5", +"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027", +"Image": "\u5716\u7247", +"Insert link": "\u63d2\u5165\u9023\u7d50", +"Target": "\u958b\u555f\u65b9\u5f0f", +"Link": "\u9023\u7d50", +"Poster": "\u9810\u89bd\u5716\u7247", +"Media": "\u5a92\u9ad4", +"Print": "\u5217\u5370", +"Prev": "\u4e0a\u4e00\u500b", +"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3", +"Whole words": "\u6574\u500b\u55ae\u5b57", +"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5", +"Caption": "\u8868\u683c\u6a19\u984c", +"Insert template": "\u63d2\u5165\u6a23\u7248" +}); \ No newline at end of file diff --git a/public/tinymce/skins/content/dark/content.css b/public/tinymce/skins/content/dark/content.css new file mode 100644 index 0000000..bae7923 --- /dev/null +++ b/public/tinymce/skins/content/dark/content.css @@ -0,0 +1,72 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body { + background-color: #2f3742; + color: #dfe0e4; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + margin: 1rem; +} +a { + color: #4099ff; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #6d737b; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #8a8f97; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #6d737b; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #6d737b; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #6d737b; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #6d737b; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/dark/content.min.css b/public/tinymce/skins/content/dark/content.min.css new file mode 100644 index 0000000..07d40c2 --- /dev/null +++ b/public/tinymce/skins/content/dark/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/content/default/content.css b/public/tinymce/skins/content/default/content.css new file mode 100644 index 0000000..40dca50 --- /dev/null +++ b/public/tinymce/skins/content/default/content.css @@ -0,0 +1,66 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #999; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #e8e8e8; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/default/content.min.css b/public/tinymce/skins/content/default/content.min.css new file mode 100644 index 0000000..a462f67 --- /dev/null +++ b/public/tinymce/skins/content/default/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/content/document/content.css b/public/tinymce/skins/content/document/content.css new file mode 100644 index 0000000..75f637a --- /dev/null +++ b/public/tinymce/skins/content/document/content.css @@ -0,0 +1,72 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +@media screen { + html { + background: #f4f4f4; + min-height: 100%; + } +} +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; +} +@media screen { + body { + background-color: #fff; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.15); + box-sizing: border-box; + margin: 1rem auto 0; + max-width: 820px; + min-height: calc(100vh - 1rem); + padding: 4rem 6rem 6rem 6rem; + } +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure figcaption { + color: #999; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/document/content.min.css b/public/tinymce/skins/content/document/content.min.css new file mode 100644 index 0000000..a1feef4 --- /dev/null +++ b/public/tinymce/skins/content/document/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/content/writer/content.css b/public/tinymce/skins/content/writer/content.css new file mode 100644 index 0000000..ceee359 --- /dev/null +++ b/public/tinymce/skins/content/writer/content.css @@ -0,0 +1,68 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; + line-height: 1.4; + margin: 1rem auto; + max-width: 900px; +} +table { + border-collapse: collapse; +} +/* Apply a default padding if legacy cellpadding attribute is missing */ +table:not([cellpadding]) th, +table:not([cellpadding]) td { + padding: 0.4rem; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-width"]) th, +table[border]:not([border="0"]):not([style*="border-width"]) td { + border-width: 1px; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-style"]) th, +table[border]:not([border="0"]):not([style*="border-style"]) td { + border-style: solid; +} +/* Set default table styles if a table has a positive border attribute + and no inline css */ +table[border]:not([border="0"]):not([style*="border-color"]) th, +table[border]:not([border="0"]):not([style*="border-color"]) td { + border-color: #ccc; +} +figure { + display: table; + margin: 1rem auto; +} +figure figcaption { + color: #999; + display: block; + margin-top: 0.25rem; + text-align: center; +} +hr { + border-color: #ccc; + border-style: solid; + border-width: 1px 0 0 0; +} +code { + background-color: #e8e8e8; + border-radius: 3px; + padding: 0.1rem 0.2rem; +} +.mce-content-body:not([dir=rtl]) blockquote { + border-left: 2px solid #ccc; + margin-left: 1.5rem; + padding-left: 1rem; +} +.mce-content-body[dir=rtl] blockquote { + border-right: 2px solid #ccc; + margin-right: 1.5rem; + padding-right: 1rem; +} diff --git a/public/tinymce/skins/content/writer/content.min.css b/public/tinymce/skins/content/writer/content.min.css new file mode 100644 index 0000000..0d8f5d3 --- /dev/null +++ b/public/tinymce/skins/content/writer/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem} diff --git a/public/tinymce/skins/ui/oxide-dark/content.css b/public/tinymce/skins/ui/oxide-dark/content.css new file mode 100644 index 0000000..9c0e3a8 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.css @@ -0,0 +1,714 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * Dracula Theme originally by Zeno Rocha [@zenorocha] + * https://draculatheme.com/ + * + * Ported for PrismJS by Albert Vallverdu [@byverdu] + */ +code[class*="language-"], +pre[class*="language-"] { + color: #f8f8f2; + background: none; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; + border-radius: 0.3em; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #282a36; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #6272a4; +} +.token.punctuation { + color: #f8f8f2; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #ff79c6; +} +.token.boolean, +.token.number { + color: #bd93f9; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #50fa7b; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} +.token.atrule, +.token.attr-value, +.token.function, +.token.class-name { + color: #f1fa8c; +} +.token.keyword { + color: #8be9fd; +} +.token.regex, +.token.important { + color: #ffb86c; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #4099ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #4099ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #4099ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #4099ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #4099ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #4099ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #4099ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid transparent; + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: lighten; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #4099ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.css b/public/tinymce/skins/ui/oxide-dark/content.inline.css new file mode 100644 index 0000000..8e7521d --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.inline.css @@ -0,0 +1,726 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.min.css b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css new file mode 100644 index 0000000..b4ab9a3 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/public/tinymce/skins/ui/oxide-dark/content.min.css b/public/tinymce/skins/ui/oxide-dark/content.min.css new file mode 100644 index 0000000..e27b8a0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.css new file mode 100644 index 0000000..4bdb8ba --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.css @@ -0,0 +1,29 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { + /* Note: this file is used inside the content, so isn't part of theming */ + background-color: green; + display: inline-block; + opacity: 0.5; + position: absolute; +} +body { + -webkit-text-size-adjust: none; +} +body img { + /* this is related to the content margin */ + max-width: 96vw; +} +body table img { + max-width: 95%; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css new file mode 100644 index 0000000..35f7dc0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > *:last-child:not(:only-child) { + border-color: #000000; + border-style: solid; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(32, 122, 183, 0.5); + border-color: #207ab7; + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { + border-color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.5); + border-color: rgba(255, 165, 0, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { + border-color: rgba(255, 165, 0, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.5); + border-color: rgba(204, 0, 0, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { + border-color: rgba(204, 0, 0, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.5); + border-color: rgba(120, 171, 70, 0.8); + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + border-color: rgba(120, 171, 70, 0.8); +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { + color: #fff; +} +.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-left-width: 1px; + padding-left: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-right-width: 1px; + padding-right: 4px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #207ab7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #207ab7; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + text-align: center; + text-decoration: none; + text-transform: none; + white-space: nowrap; +} +.tox .tox-button[disabled] { + background-color: #207ab7; + background-image: none; + border-color: #207ab7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #185d8c; + background-image: none; + border-color: #185d8c; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary { + background-color: #3d546f; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #3d546f; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #fff; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: none; +} +.tox .tox-button--secondary[disabled] { + background-color: #3d546f; + background-image: none; + border-color: #3d546f; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #34485f; + background-image: none; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #34485f; + background-image: none; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #2b3b4e; + background-image: none; + border-color: #2b3b4e; + box-shadow: none; + color: #fff; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #fff; +} +.tox .tox-button--naked[disabled] { + background-color: #3d546f; + border-color: #3d546f; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: #34485f; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: #34485f; + border-color: #34485f; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: #2b3b4e; + border-color: #2b3b4e; + box-shadow: none; + color: #fff; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #fff; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 3px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(255, 255, 255, 0.2); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox--disabled { + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 3px; + box-shadow: inset 0 0 0 1px #207ab7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #1a1a1a; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #333333; + color: #fff; + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + color: #fff; + cursor: pointer; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #2b3b4e; + color: #fff; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #4a5562; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #757d87; + color: #fff; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #4a5562; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #757d87; + color: #fff; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #4a5562; + color: #fff; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #fff; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #fff; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(255, 255, 255, 0.5); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #fff; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #2b3b4e; + border: 1px solid #1a1a1a; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 34px; + margin: 2px 0 3px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox .tox-collection__item-container { + display: flex; +} +.tox .tox-collection__item-container--row { + align-items: center; + flex: 1 1 auto; + flex-direction: row; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-left { + margin-right: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-right { + justify-content: flex-end; + margin-left: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top { + align-items: flex-start; + margin-bottom: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle { + align-items: center; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom { + align-items: flex-end; + margin-top: auto; +} +.tox .tox-collection__item-container--column { + -ms-grid-row-align: center; + align-self: center; + flex: 1 1 auto; + flex-direction: column; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-left { + align-items: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-right { + align-items: flex-end; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top { + align-self: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle { + -ms-grid-row-align: center; + align-self: center; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom { + align-self: flex-end; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid #000000; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid #000000; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 2px 0 3px 4px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px 0; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #4a5562; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #2b3b4e; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #2b3b4e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #fff; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: rgba(255, 255, 255, 0.5); + font-size: 12px; +} +.tox .tox-comment__body { + color: #fff; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(255, 255, 255, 0.5); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #2b3b4e; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #2b3b4e; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #fff; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #2b3b4e; + box-shadow: 0 0 8px 8px #2b3b4e; + color: #fff; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #2b3b4e; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-user__name { + color: rgba(255, 255, 255, 0.5); + font-size: 12px; + font-style: normal; + font-weight: bold; + text-transform: uppercase; +} +.tox:not([dir=rtl]) .tox-user__avatar svg { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(34, 47, 62, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #222f3e; +} +.tox .tox-dialog { + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #2b3b4e; + border-bottom: none; + color: #fff; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #fff; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + padding: 16px 16px; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(255, 255, 255, 0.5); + display: inline-block; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + text-decoration: none; + white-space: nowrap; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(32, 122, 183, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #207ab7; + color: #207ab7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; + max-height: 650px; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #207ab7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #fff; +} +.tox .tox-dialog__body-content ul { + display: block; + list-style-type: disc; + margin-bottom: 16px; + -webkit-margin-end: 0; + margin-inline-end: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-padding-start: 2.5rem; + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #fff; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #fff; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #2b3b4e; + border-top: 1px solid #000000; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(34, 47, 62, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #000000; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +.tox.tox-platform-ie { + /* IE11 CSS styles go here */ +} +.tox.tox-platform-ie .tox-dialog-wrap { + position: -ms-device-fixed; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #000000; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(255, 255, 255, 0.5); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-inline-edit-area { + border: 1px dotted #000000; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + z-index: 1; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + box-shadow: none; + transition: box-shadow 0.5s; +} +.tox.tox-tinymce--toolbar-bottom .tox-editor-header, +.tox.tox-tinymce-inline .tox-editor-header { + margin-bottom: -1px; +} +.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { + background-color: transparent; + box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(42, 55, 70, 0.2); + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #207ab7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #2b3b4e; + border-radius: 3px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(255, 255, 255, 0.5); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-listboxfield .tox-listbox--select, +.tox .tox-textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #222f3e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-listboxfield .tox-listbox--select:focus, +.tox .tox-textarea:focus { + background-color: #2b3b4e; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #207ab7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #fff; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-listboxfield { + cursor: pointer; + position: relative; +} +.tox .tox-listboxfield .tox-listbox--select[disabled] { + background-color: #19232e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-listbox__select-label { + cursor: default; + flex: 1; + margin: 0 4px; +} +.tox .tox-listbox__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-listbox__select-chevron svg { + fill: #fff; +} +.tox .tox-listboxfield .tox-listbox--select { + align-items: center; + display: flex; +} +.tox:not([dir=rtl]) .tox-listboxfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-listboxfield svg { + left: 8px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #2b3b4e; + border-color: #000000; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #19232e; + color: rgba(255, 255, 255, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #2b3b4e; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-image-tools { + width: 100%; +} +.tox .tox-image-tools__toolbar { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-image-tools__image { + background-color: #666; + height: 380px; + overflow: auto; + position: relative; + width: 100%; +} +.tox .tox-image-tools__image, +.tox .tox-image-tools__image + .tox-image-tools__toolbar { + margin-top: 8px; +} +.tox .tox-image-tools__image-bg { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools__toolbar > .tox-spacer { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-left: 32px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-left: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-right: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-right: 32px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #000000; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px 0; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(32, 122, 183, 0.5); + border-color: rgba(32, 122, 183, 0.5); +} +.tox .tox-insert-table-picker__label { + color: #fff; + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #2b3b4e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 4px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 4px; +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e; + background-color: #222f3e; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 4px 0 4px; +} +.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { + border-top: 1px solid #000000; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn--active { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: -ms-grid; + display: grid; + font-size: 14px; + font-weight: normal; + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #fff; +} +.tox .tox-notification--success p { + color: #fff; +} +.tox .tox-notification--success a { + color: #547831; +} +.tox .tox-notification--success svg { + fill: #fff; +} +.tox .tox-notification--error { + background-color: #f8dede; + border-color: #f2bfbf; + color: #fff; +} +.tox .tox-notification--error p { + color: #fff; +} +.tox .tox-notification--error a { + color: #c00; +} +.tox .tox-notification--error svg { + fill: #fff; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fffaea; + border-color: #ffe89d; + color: #fff; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #fff; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #fff; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #fff; +} +.tox .tox-notification--info { + background-color: #d9edf7; + border-color: #779ecb; + color: #fff; +} +.tox .tox-notification--info p { + color: #fff; +} +.tox .tox-notification--info a { + color: #fff; +} +.tox .tox-notification--info svg { + fill: #fff; +} +.tox .tox-notification__body { + -ms-grid-row-align: center; + align-self: center; + color: #fff; + font-size: 14px; + -ms-grid-column-span: 1; + grid-column-end: 3; + -ms-grid-column: 2; + grid-column-start: 2; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + -ms-grid-row-align: center; + align-self: center; + -ms-grid-column-span: 1; + grid-column-end: 2; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + -ms-grid-row-align: start; + align-self: start; + -ms-grid-column-span: 1; + grid-column-end: 4; + -ms-grid-column: 3; + grid-column-start: 3; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + -ms-grid-column-span: 3; + grid-column-end: 4; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 3; + -ms-grid-row: 2; + grid-row-start: 2; + -ms-grid-column-align: center; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar, +.tox .tox-pop--resizing .tox-toolbar__group { + flex-wrap: nowrap; +} +.tox .tox-pop--transition { + transition: 0.15s ease; + transition-property: left, right, top, bottom; +} +.tox .tox-pop--transition::before, +.tox .tox-pop--transition::after { + transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s; +} +.tox .tox-pop__dialog { + background-color: #222f3e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + opacity: 1; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--inset::before, +.tox .tox-pop.tox-pop--inset::after { + opacity: 0; + transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #222f3e transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #000000 transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #222f3e transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #000000 transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #222f3e transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #000000 transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #222f3e; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #000000; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + -ms-flex-preferred-size: 0; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #222f3e; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #000000; + border-radius: 3px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #207ab7; + border: 2px solid #185d8c; + border-radius: 3px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #222f3e; + border-top: 1px solid #000000; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 12px; + font-weight: normal; + height: 18px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: uppercase; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: #fff; + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-left: 1ch; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: #fff; +} +.tox .tox-statusbar__resize-handle:focus svg { + background-color: #4a5562; + border-radius: 1px; + box-shadow: 0 0 0 2px #4a5562; +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 1ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1299; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(34, 47, 62, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #fff; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #fff; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #4a5562; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #4a5562; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn:hover svg { + fill: #fff; +} +.tox .tox-tbtn:active { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn:active svg { + fill: #fff; +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #757d87; + border: 0; + box-shadow: none; + color: #fff; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #fff; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #fff; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #fff; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 51px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 68px; + width: 68px; +} +.tox .tox-tbtn--return { + -ms-grid-row-align: stretch; + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tbtn--select { + margin: 2px 0 3px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 2px 0 3px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #4a5562 inset; +} +.tox .tox-split-button:focus { + background: #4a5562; + box-shadow: none; + color: #fff; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(255, 255, 255, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); +} +.tox .tox-toolbar-overlord { + background-color: #222f3e; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e; + background-color: #222f3e; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0; +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { + border-top: 1px solid #000000; + margin-top: -1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { + border-top: 1px solid #000000; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #222f3e; + border: 1px solid #000000; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 4px 0 4px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid #000000; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid #000000; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #3d546f; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #3d546f; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #3d546f; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #3d546f; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #3d546f; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-well { + border: 1px solid #000000; + border-radius: 3px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #000000; + border-radius: 3px; + display: flex; + flex: 1; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-image-tools-edit-panel { + height: 60px; +} +.tox .tox-image-tools__sidebar { + height: 60px; +} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.min.css b/public/tinymce/skins/ui/oxide-dark/skin.min.css new file mode 100644 index 0000000..e71f6f0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(255,255,255,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css new file mode 100644 index 0000000..875721a --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css @@ -0,0 +1,673 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +/* RESET all the things! */ +.tinymce-mobile-outer-container { + all: initial; + display: block; +} +.tinymce-mobile-outer-container * { + border: 0; + box-sizing: initial; + cursor: inherit; + float: none; + line-height: 1; + margin: 0; + outline: 0; + padding: 0; + -webkit-tap-highlight-color: transparent; + /* TBIO-3691, stop the gray flicker on touch. */ + text-shadow: none; + white-space: nowrap; +} +.tinymce-mobile-icon-arrow-back::before { + content: "\e5cd"; +} +.tinymce-mobile-icon-image::before { + content: "\e412"; +} +.tinymce-mobile-icon-cancel-circle::before { + content: "\e5c9"; +} +.tinymce-mobile-icon-full-dot::before { + content: "\e061"; +} +.tinymce-mobile-icon-align-center::before { + content: "\e234"; +} +.tinymce-mobile-icon-align-left::before { + content: "\e236"; +} +.tinymce-mobile-icon-align-right::before { + content: "\e237"; +} +.tinymce-mobile-icon-bold::before { + content: "\e238"; +} +.tinymce-mobile-icon-italic::before { + content: "\e23f"; +} +.tinymce-mobile-icon-unordered-list::before { + content: "\e241"; +} +.tinymce-mobile-icon-ordered-list::before { + content: "\e242"; +} +.tinymce-mobile-icon-font-size::before { + content: "\e245"; +} +.tinymce-mobile-icon-underline::before { + content: "\e249"; +} +.tinymce-mobile-icon-link::before { + content: "\e157"; +} +.tinymce-mobile-icon-unlink::before { + content: "\eca2"; +} +.tinymce-mobile-icon-color::before { + content: "\e891"; +} +.tinymce-mobile-icon-previous::before { + content: "\e314"; +} +.tinymce-mobile-icon-next::before { + content: "\e315"; +} +.tinymce-mobile-icon-large-font::before, +.tinymce-mobile-icon-style-formats::before { + content: "\e264"; +} +.tinymce-mobile-icon-undo::before { + content: "\e166"; +} +.tinymce-mobile-icon-redo::before { + content: "\e15a"; +} +.tinymce-mobile-icon-removeformat::before { + content: "\e239"; +} +.tinymce-mobile-icon-small-font::before { + content: "\e906"; +} +.tinymce-mobile-icon-readonly-back::before, +.tinymce-mobile-format-matches::after { + content: "\e5ca"; +} +.tinymce-mobile-icon-small-heading::before { + content: "small"; +} +.tinymce-mobile-icon-large-heading::before { + content: "large"; +} +.tinymce-mobile-icon-small-heading::before, +.tinymce-mobile-icon-large-heading::before { + font-family: sans-serif; + font-size: 80%; +} +.tinymce-mobile-mask-edit-icon::before { + content: "\e254"; +} +.tinymce-mobile-icon-back::before { + content: "\e5c4"; +} +.tinymce-mobile-icon-heading::before { + /* TODO: Translate */ + content: "Headings"; + font-family: sans-serif; + font-size: 80%; + font-weight: bold; +} +.tinymce-mobile-icon-h1::before { + content: "H1"; + font-weight: bold; +} +.tinymce-mobile-icon-h2::before { + content: "H2"; + font-weight: bold; +} +.tinymce-mobile-icon-h3::before { + content: "H3"; + font-weight: bold; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { + align-items: center; + display: flex; + justify-content: center; + background: rgba(51, 51, 51, 0.5); + height: 100%; + position: absolute; + top: 0; + width: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { + align-items: center; + border-radius: 50%; + display: flex; + flex-direction: column; + font-family: sans-serif; + font-size: 1em; + justify-content: space-between; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + align-items: center; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 1em; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; + background-color: white; + color: #207ab7; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { + content: "\e900"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { + z-index: 2; +} +.tinymce-mobile-android-container.tinymce-mobile-android-maximized { + background: #ffffff; + border: none; + bottom: 0; + display: flex; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + top: 0; +} +.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { + position: relative; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket { + display: flex; + flex-grow: 1; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { + display: flex !important; + flex-grow: 1; + height: auto !important; +} +.tinymce-mobile-android-scroll-reload { + overflow: hidden; +} +:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { + margin-top: 23px; +} +.tinymce-mobile-toolstrip { + background: #fff; + display: flex; + flex: 0 0 auto; + z-index: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { + align-items: center; + background-color: #fff; + border-bottom: 1px solid #cccccc; + display: flex; + flex: 1; + height: 2.5em; + width: 100%; + /* Make it no larger than the toolstrip, so that it needs to scroll */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex-shrink: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { + background: #f44336; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { + flex-grow: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { + align-items: center; + display: flex; + height: 80%; + margin-left: 2px; + margin-right: 2px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background: #c8cbcf; + color: #cccccc; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background: #207ab7; + color: #eceff1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { + /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex: 1; + padding-bottom: 0.4em; + padding-top: 0.4em; + /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* For widgets like the colour picker, use the whole height */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { + display: flex; + min-height: 1.5em; + overflow: hidden; + padding-left: 0; + padding-right: 0; + position: relative; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { + display: flex; + height: 100%; + transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { + font-family: Sans-serif; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { + display: flex; + flex-grow: 1; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { + -ms-grid-row-align: center; + align-self: center; + background: inherit; + border: none; + border-radius: 50%; + color: #888; + font-size: 0.6em; + font-weight: bold; + height: 100%; + padding-right: 2px; + position: absolute; + right: 0; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { + display: none; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { + align-items: center; + display: flex; + font-weight: bold; + height: 100%; + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { + visibility: hidden; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { + color: #cccccc; + font-size: 10px; + line-height: 10px; + margin: 0 2px; + padding-top: 3px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { + color: #c8cbcf; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { + margin-left: 0.5em; + margin-right: 0.9em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { + margin-left: 0.9em; + margin-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { + display: flex; + flex: 1; + margin-left: 0; + margin-right: 0; + padding: 0.28em 0; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { + background: #cccccc; + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { + padding-left: 2em; + padding-right: 2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { + background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { + /* Not part of theming */ + background: black; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { + /* Not part of theming */ + background: white; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { + /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave + * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is + * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without + * this approach. + */ + align-items: center; + background-clip: padding-box; + background-color: #455a64; + border: 0.5em solid rgba(136, 136, 136, 0); + border-radius: 3em; + bottom: 0; + color: #fff; + display: flex; + height: 0.5em; + justify-content: center; + left: -10px; + margin: auto; + position: absolute; + top: 0; + transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); + width: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { + border: 0.5em solid rgba(136, 136, 136, 0.39); +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { + flex-direction: column; + justify-content: center; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { + background: #ffffff; + border: none; + border-radius: 0; + color: #455a64; + flex-grow: 1; + font-size: 0.85em; + padding-bottom: 0.1em; + padding-left: 5px; + padding-top: 0.1em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +/* dropup */ +.tinymce-mobile-dropup { + background: white; + display: flex; + overflow: hidden; + width: 100%; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { + transition: height 0.3s ease-out; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { + transition: height 0.3s ease-in; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { + flex-grow: 0; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { + flex-grow: 1; +} +/* TODO min-height for device size and orientation */ +.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; +} +@media only screen and (orientation: landscape) { + .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; + } +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 150px; + } +} +/* styles menu */ +.tinymce-mobile-styles-menu { + font-family: sans-serif; + outline: 4px solid black; + overflow: hidden; + position: relative; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"] { + display: flex; + flex-direction: column; + height: 100%; + position: absolute; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"].transitioning { + transition: transform 0.5s ease-in-out; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { + border-bottom: 1px solid #ddd; + color: #455a64; + cursor: pointer; + display: flex; + padding: 1em 1em; + position: relative; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { + color: #455a64; + content: "\e314"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { + color: #455a64; + content: "\e315"; + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { + align-items: center; + background: #fff; + border-top: #455a64; + color: #455a64; + display: flex; + min-height: 2.5em; + padding-left: 1em; + padding-right: 1em; +} +.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="before"] { + transform: translate(-100%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="current"] { + transform: translate(0%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="after"] { + transform: translate(100%); +} +@font-face { + font-family: 'tinymce-mobile'; + font-style: normal; + font-weight: normal; + src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); +} +@media (min-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 25px; + } +} +@media (max-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 18px; + } +} +.tinymce-mobile-icon { + font-family: 'tinymce-mobile', sans-serif; +} +.mixin-flex-and-centre { + align-items: center; + display: flex; + justify-content: center; +} +.mixin-flex-bar { + align-items: center; + display: flex; + height: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { + background-color: #fff; + width: 100%; +} +.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + background-color: #207ab7; + border-radius: 50%; + bottom: 1em; + color: white; + font-size: 1em; + height: 2.1em; + position: fixed; + right: 2em; + width: 2.1em; + align-items: center; + display: flex; + justify-content: center; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 300px; + overflow: hidden; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { + height: 100%; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { + display: none; +} +/* + Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets + increased and the whole body becomes scrollable. It's important! + */ +input[type="file"]::-webkit-file-upload-button { + display: none; +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + bottom: 50%; + } +} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css new file mode 100644 index 0000000..3a45cac --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css new file mode 100644 index 0000000..d2adc4d --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css @@ -0,0 +1,37 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css new file mode 100644 index 0000000..a0893b9 --- /dev/null +++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/public/tinymce/skins/ui/oxide/content.css b/public/tinymce/skins/ui/oxide/content.css new file mode 100644 index 0000000..2ac0cca --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.css @@ -0,0 +1,732 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide/content.inline.css b/public/tinymce/skins/ui/oxide/content.inline.css new file mode 100644 index 0000000..8e7521d --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.inline.css @@ -0,0 +1,726 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + cursor: default; + display: inline-block; + height: 12px !important; + padding: 0 2px; + -webkit-user-modify: read-only; + -moz-user-modify: read-only; + -webkit-user-select: all; + -moz-user-select: all; + -ms-user-select: all; + user-select: all; + width: 8px !important; +} +.mce-content-body .mce-item-anchor[data-mce-selected] { + outline-offset: 1px; +} +.tox-comments-visible .tox-comment { + background-color: #fff0b7; +} +.tox-comments-visible .tox-comment--active { + background-color: #ffe168; +} +.tox-checklist > li:not(.tox-checklist--hidden) { + list-style: none; + margin: 0.25em 0; +} +.tox-checklist > li:not(.tox-checklist--hidden)::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); + cursor: pointer; + height: 1em; + margin-left: -1.5em; + margin-top: 0.125em; + position: absolute; + width: 1em; +} +.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before { + content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A"); +} +[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before { + margin-left: 0; + margin-right: -1.5em; +} +/* stylelint-disable */ +/* http://prismjs.com/ */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ +code[class*="language-"], +pre[class*="language-"] { + color: black; + background: none; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-size: 1em; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + -moz-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} +pre[class*="language-"]::-moz-selection, +pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, +code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} +pre[class*="language-"]::selection, +pre[class*="language-"] ::selection, +code[class*="language-"]::selection, +code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: 0.5em 0; + overflow: auto; +} +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: 0.1em; + border-radius: 0.3em; + white-space: normal; +} +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} +.token.punctuation { + color: #999; +} +.namespace { + opacity: 0.7; +} +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #9a6e3a; + background: hsla(0, 0%, 100%, 0.5); +} +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} +.token.function, +.token.class-name { + color: #DD4A68; +} +.token.regex, +.token.important, +.token.variable { + color: #e90; +} +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} +.token.entity { + cursor: help; +} +/* stylelint-enable */ +.mce-content-body { + overflow-wrap: break-word; + word-wrap: break-word; +} +.mce-content-body .mce-visual-caret { + background-color: black; + background-color: currentColor; + position: absolute; +} +.mce-content-body .mce-visual-caret-hidden { + display: none; +} +.mce-content-body *[data-mce-caret] { + left: -1000px; + margin: 0; + padding: 0; + position: absolute; + right: auto; + top: 0; +} +.mce-content-body .mce-offscreen-selection { + left: -2000000px; + max-width: 1000000px; + position: absolute; +} +.mce-content-body *[contentEditable=false] { + cursor: default; +} +.mce-content-body *[contentEditable=true] { + cursor: text; +} +.tox-cursor-format-painter { + cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default; +} +.mce-content-body figure.align-left { + float: left; +} +.mce-content-body figure.align-right { + float: right; +} +.mce-content-body figure.image.align-center { + display: table; + margin-left: auto; + margin-right: auto; +} +.mce-preview-object { + border: 1px solid gray; + display: inline-block; + line-height: 0; + margin: 0 2px 0 2px; + position: relative; +} +.mce-preview-object .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-preview-object[data-mce-selected="2"] .mce-shim { + display: none; +} +.mce-object { + background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center; + border: 1px dashed #aaa; +} +.mce-pagebreak { + border: 1px dashed #aaa; + cursor: default; + display: block; + height: 5px; + margin-top: 15px; + page-break-before: always; + width: 100%; +} +@media print { + .mce-pagebreak { + border: 0; + } +} +.tiny-pageembed .mce-shim { + background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tiny-pageembed[data-mce-selected="2"] .mce-shim { + display: none; +} +.tiny-pageembed { + display: inline-block; + position: relative; +} +.tiny-pageembed--21by9, +.tiny-pageembed--16by9, +.tiny-pageembed--4by3, +.tiny-pageembed--1by1 { + display: block; + overflow: hidden; + padding: 0; + position: relative; + width: 100%; +} +.tiny-pageembed--21by9 { + padding-top: 42.857143%; +} +.tiny-pageembed--16by9 { + padding-top: 56.25%; +} +.tiny-pageembed--4by3 { + padding-top: 75%; +} +.tiny-pageembed--1by1 { + padding-top: 100%; +} +.tiny-pageembed--21by9 iframe, +.tiny-pageembed--16by9 iframe, +.tiny-pageembed--4by3 iframe, +.tiny-pageembed--1by1 iframe { + border: 0; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.mce-content-body[data-mce-placeholder] { + position: relative; +} +.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before { + color: rgba(34, 47, 62, 0.7); + content: attr(data-mce-placeholder); + position: absolute; +} +.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before { + left: 1px; +} +.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before { + right: 1px; +} +.mce-content-body div.mce-resizehandle { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + height: 10px; + position: absolute; + width: 10px; + z-index: 1298; +} +.mce-content-body div.mce-resizehandle:hover { + background-color: #4099ff; +} +.mce-content-body div.mce-resizehandle:nth-of-type(1) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(2) { + cursor: nesw-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(3) { + cursor: nwse-resize; +} +.mce-content-body div.mce-resizehandle:nth-of-type(4) { + cursor: nesw-resize; +} +.mce-content-body .mce-resize-backdrop { + z-index: 10000; +} +.mce-content-body .mce-clonedresizable { + cursor: default; + opacity: 0.5; + outline: 1px dashed black; + position: absolute; + z-index: 10001; +} +.mce-content-body .mce-clonedresizable.mce-resizetable-columns th, +.mce-content-body .mce-clonedresizable.mce-resizetable-columns td { + border: 0; +} +.mce-content-body .mce-resize-helper { + background: #555; + background: rgba(0, 0, 0, 0.75); + border: 1px; + border-radius: 3px; + color: white; + display: none; + font-family: sans-serif; + font-size: 12px; + line-height: 14px; + margin: 5px 10px; + padding: 5px; + position: absolute; + white-space: nowrap; + z-index: 10002; +} +.tox-rtc-user-selection { + position: relative; +} +.tox-rtc-user-cursor { + bottom: 0; + cursor: default; + position: absolute; + top: 0; + width: 2px; +} +.tox-rtc-user-cursor::before { + background-color: inherit; + border-radius: 50%; + content: ''; + display: block; + height: 8px; + position: absolute; + right: -3px; + top: -3px; + width: 8px; +} +.tox-rtc-user-cursor:hover::after { + background-color: inherit; + border-radius: 100px; + box-sizing: border-box; + color: #fff; + content: attr(data-user); + display: block; + font-size: 12px; + font-weight: bold; + left: -5px; + min-height: 8px; + min-width: 8px; + padding: 0 12px; + position: absolute; + top: -11px; + white-space: nowrap; + z-index: 1000; +} +.tox-rtc-user-selection--1 .tox-rtc-user-cursor { + background-color: #2dc26b; +} +.tox-rtc-user-selection--2 .tox-rtc-user-cursor { + background-color: #e03e2d; +} +.tox-rtc-user-selection--3 .tox-rtc-user-cursor { + background-color: #f1c40f; +} +.tox-rtc-user-selection--4 .tox-rtc-user-cursor { + background-color: #3598db; +} +.tox-rtc-user-selection--5 .tox-rtc-user-cursor { + background-color: #b96ad9; +} +.tox-rtc-user-selection--6 .tox-rtc-user-cursor { + background-color: #e67e23; +} +.tox-rtc-user-selection--7 .tox-rtc-user-cursor { + background-color: #aaa69d; +} +.tox-rtc-user-selection--8 .tox-rtc-user-cursor { + background-color: #f368e0; +} +.tox-rtc-remote-image { + background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center; + border: 1px solid #ccc; + min-height: 240px; + min-width: 320px; +} +.mce-match-marker { + background: #aaa; + color: #fff; +} +.mce-match-marker-selected { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::-moz-selection { + background: #39f; + color: #fff; +} +.mce-match-marker-selected::selection { + background: #39f; + color: #fff; +} +.mce-content-body img[data-mce-selected], +.mce-content-body video[data-mce-selected], +.mce-content-body audio[data-mce-selected], +.mce-content-body object[data-mce-selected], +.mce-content-body embed[data-mce-selected], +.mce-content-body table[data-mce-selected] { + outline: 3px solid #b4d7ff; +} +.mce-content-body hr[data-mce-selected] { + outline: 3px solid #b4d7ff; + outline-offset: 1px; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover { + outline: 3px solid #b4d7ff; +} +.mce-content-body *[contentEditable=false][data-mce-selected] { + cursor: not-allowed; + outline: 3px solid #b4d7ff; +} +.mce-content-body.mce-content-readonly *[contentEditable=true]:focus, +.mce-content-body.mce-content-readonly *[contentEditable=true]:hover { + outline: none; +} +.mce-content-body *[data-mce-selected="inline-boundary"] { + background-color: #b4d7ff; +} +.mce-content-body .mce-edit-focus { + outline: 3px solid #b4d7ff; +} +.mce-content-body td[data-mce-selected], +.mce-content-body th[data-mce-selected] { + position: relative; +} +.mce-content-body td[data-mce-selected]::-moz-selection, +.mce-content-body th[data-mce-selected]::-moz-selection { + background: none; +} +.mce-content-body td[data-mce-selected]::selection, +.mce-content-body th[data-mce-selected]::selection { + background: none; +} +.mce-content-body td[data-mce-selected] *, +.mce-content-body th[data-mce-selected] * { + outline: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.mce-content-body td[data-mce-selected]::after, +.mce-content-body th[data-mce-selected]::after { + background-color: rgba(180, 215, 255, 0.7); + border: 1px solid rgba(180, 215, 255, 0.7); + bottom: -1px; + content: ''; + left: -1px; + mix-blend-mode: multiply; + position: absolute; + right: -1px; + top: -1px; +} +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + .mce-content-body td[data-mce-selected]::after, + .mce-content-body th[data-mce-selected]::after { + border-color: rgba(0, 84, 180, 0.7); + } +} +.mce-content-body img::-moz-selection { + background: none; +} +.mce-content-body img::selection { + background: none; +} +.ephox-snooker-resizer-bar { + background-color: #b4d7ff; + opacity: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.ephox-snooker-resizer-cols { + cursor: col-resize; +} +.ephox-snooker-resizer-rows { + cursor: row-resize; +} +.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging { + opacity: 1; +} +.mce-spellchecker-word { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; + height: 2rem; +} +.mce-spellchecker-grammar { + background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A"); + background-position: 0 calc(100% + 1px); + background-repeat: repeat-x; + background-size: auto 6px; + cursor: default; +} +.mce-toc { + border: 1px solid gray; +} +.mce-toc h2 { + margin: 4px; +} +.mce-toc li { + list-style-type: none; +} +table[style*="border-width: 0px"], +.mce-item-table:not([border]), +.mce-item-table[border="0"], +table[style*="border-width: 0px"] td, +.mce-item-table:not([border]) td, +.mce-item-table[border="0"] td, +table[style*="border-width: 0px"] th, +.mce-item-table:not([border]) th, +.mce-item-table[border="0"] th, +table[style*="border-width: 0px"] caption, +.mce-item-table:not([border]) caption, +.mce-item-table[border="0"] caption { + border: 1px dashed #bbb; +} +.mce-visualblocks p, +.mce-visualblocks h1, +.mce-visualblocks h2, +.mce-visualblocks h3, +.mce-visualblocks h4, +.mce-visualblocks h5, +.mce-visualblocks h6, +.mce-visualblocks div:not([data-mce-bogus]), +.mce-visualblocks section, +.mce-visualblocks article, +.mce-visualblocks blockquote, +.mce-visualblocks address, +.mce-visualblocks pre, +.mce-visualblocks figure, +.mce-visualblocks figcaption, +.mce-visualblocks hgroup, +.mce-visualblocks aside, +.mce-visualblocks ul, +.mce-visualblocks ol, +.mce-visualblocks dl { + background-repeat: no-repeat; + border: 1px dashed #bbb; + margin-left: 3px; + padding-top: 10px; +} +.mce-visualblocks p { + background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7); +} +.mce-visualblocks h1 { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==); +} +.mce-visualblocks h2 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==); +} +.mce-visualblocks h3 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7); +} +.mce-visualblocks h4 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==); +} +.mce-visualblocks h5 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==); +} +.mce-visualblocks h6 { + background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==); +} +.mce-visualblocks div:not([data-mce-bogus]) { + background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7); +} +.mce-visualblocks section { + background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=); +} +.mce-visualblocks article { + background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7); +} +.mce-visualblocks blockquote { + background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7); +} +.mce-visualblocks address { + background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=); +} +.mce-visualblocks pre { + background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==); +} +.mce-visualblocks figure { + background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7); +} +.mce-visualblocks figcaption { + border: 1px dashed #bbb; +} +.mce-visualblocks hgroup { + background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7); +} +.mce-visualblocks aside { + background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=); +} +.mce-visualblocks ul { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==); +} +.mce-visualblocks ol { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==); +} +.mce-visualblocks dl { + background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==); +} +.mce-visualblocks:not([dir=rtl]) p, +.mce-visualblocks:not([dir=rtl]) h1, +.mce-visualblocks:not([dir=rtl]) h2, +.mce-visualblocks:not([dir=rtl]) h3, +.mce-visualblocks:not([dir=rtl]) h4, +.mce-visualblocks:not([dir=rtl]) h5, +.mce-visualblocks:not([dir=rtl]) h6, +.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]), +.mce-visualblocks:not([dir=rtl]) section, +.mce-visualblocks:not([dir=rtl]) article, +.mce-visualblocks:not([dir=rtl]) blockquote, +.mce-visualblocks:not([dir=rtl]) address, +.mce-visualblocks:not([dir=rtl]) pre, +.mce-visualblocks:not([dir=rtl]) figure, +.mce-visualblocks:not([dir=rtl]) figcaption, +.mce-visualblocks:not([dir=rtl]) hgroup, +.mce-visualblocks:not([dir=rtl]) aside, +.mce-visualblocks:not([dir=rtl]) ul, +.mce-visualblocks:not([dir=rtl]) ol, +.mce-visualblocks:not([dir=rtl]) dl { + margin-left: 3px; +} +.mce-visualblocks[dir=rtl] p, +.mce-visualblocks[dir=rtl] h1, +.mce-visualblocks[dir=rtl] h2, +.mce-visualblocks[dir=rtl] h3, +.mce-visualblocks[dir=rtl] h4, +.mce-visualblocks[dir=rtl] h5, +.mce-visualblocks[dir=rtl] h6, +.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]), +.mce-visualblocks[dir=rtl] section, +.mce-visualblocks[dir=rtl] article, +.mce-visualblocks[dir=rtl] blockquote, +.mce-visualblocks[dir=rtl] address, +.mce-visualblocks[dir=rtl] pre, +.mce-visualblocks[dir=rtl] figure, +.mce-visualblocks[dir=rtl] figcaption, +.mce-visualblocks[dir=rtl] hgroup, +.mce-visualblocks[dir=rtl] aside, +.mce-visualblocks[dir=rtl] ul, +.mce-visualblocks[dir=rtl] ol, +.mce-visualblocks[dir=rtl] dl { + background-position-x: right; + margin-right: 3px; +} +.mce-nbsp, +.mce-shy { + background: #aaa; +} +.mce-shy::after { + content: '-'; +} diff --git a/public/tinymce/skins/ui/oxide/content.inline.min.css b/public/tinymce/skins/ui/oxide/content.inline.min.css new file mode 100644 index 0000000..b4ab9a3 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.inline.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'} diff --git a/public/tinymce/skins/ui/oxide/content.min.css b/public/tinymce/skins/ui/oxide/content.min.css new file mode 100644 index 0000000..844858d --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:1298}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide/content.mobile.css b/public/tinymce/skins/ui/oxide/content.mobile.css new file mode 100644 index 0000000..4bdb8ba --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.mobile.css @@ -0,0 +1,29 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection { + /* Note: this file is used inside the content, so isn't part of theming */ + background-color: green; + display: inline-block; + opacity: 0.5; + position: absolute; +} +body { + -webkit-text-size-adjust: none; +} +body img { + /* this is related to the content margin */ + max-width: 96vw; +} +body table img { + max-width: 95%; +} +body { + font-family: sans-serif; +} +table { + border-collapse: collapse; +} diff --git a/public/tinymce/skins/ui/oxide/content.mobile.min.css b/public/tinymce/skins/ui/oxide/content.mobile.min.css new file mode 100644 index 0000000..35f7dc0 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/content.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse} diff --git a/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff new file mode 100644 index 0000000000000000000000000000000000000000..1e3be038a607cb7c2544ed8ae3d6621f77bf4c38 GIT binary patch literal 4624 zcmb7IeQaFC5#QN&AGUL{efE7g{=BM1W-|RaVdWQe^e?BC`eGz4^i8S3PQw?Hhd_eQHxTkckXZB zdzU((wCVGko!Qyh+1c6InRotvZ%+>+hNrBQtrFOI4t*}DZ$7=>Sr=uD3c$ZlKuKBQ z8~ervCczs9SOk2!>AAqrz+v$CC}f1JfYPDSqx->|V$6{ekbe8M#Bh3Gkg?)-Fdi3B zeB$}UFqn*$pv&q7*net~hsUOlfG7Ho2zaowY%JPRytMvu{&xRPm(h_~w##F>vqE&a5-ssH##mlfAk}44^ zXRJKd!Ifw&ce{$Y9BAg5c>e>p_Z;t!=P{izddGWie?aHLdKL3Cn9rG=d2vt;esWqH zoD}uAoi3Z~4+LABvADt+so4~t%VlyIJ{O3tm$NC+(!yenQD%NVr*btG$T3+_WX=LH z#1M2ZNEtrO+-x;l2i>M^5o%GQ@s?N+gw*19H@G~vl3Q5Zf*t6jjW0GOTmAmlWYgSS zJeiEo%~LA-FW|YAd_Em$OE#@dw)y*#@p!UtnWa);V1HY3ZBw!>(3gY{iFFa_c6iW9 zIQ@xck^{xu9_o;UyQH#ba@y?L$xW?8J35?$p1z46ZjIctZ8QCKCa29bMC1-t@pT>S zTUT1WMjQz-75d)5zJxv~@Yd)bY)ejQBx_XQiaMJ z>$5`NO3?L*ND{UQeF8%xl)$_>w9tmQpfEebzedazFeh#~d}suN+vzsqLiW~@TLhoe zk1%xEcxP2ZL)FuoXeYzb-J5goljDxPL2@@#RW)d&X#&6QO5U=04_628@ONSvtgpha zDqqmoVep`A4<+PK$V>K+T}}{8Rj+Q|UAzCtl!Fh)uXJg{x$}HMJH7LcBLzj-r{h;< zzote8Id%pcAyE;87D<8glyaFeq#k)OEDB%yA ze%CeZ!?4TEs#pj+%14DBZHn8jxaF2as6}p3+!6p-&@I>5lbP3&N$svcIF-`0R5(o2 zh7la++|;-euckH44a4BAwB++#-cZ z)kFyC=eUS-4D0t}H8LdZY!JD^sW@F85io)%=8HU)ouhEeo-K_dJ3BV+8fo0JXIjlP zZt0H`0=Yv~I|PpRZ)r5_iAYmY9V=wT@BsoN9<3vftB|}TOH;|yNk_e7(2-?y{&cSK zG=E5Nz^Ko4>KxcbY!Q13!=HBS$lM96_+0y3M1yWTAt2u5C;6MWMXbRN?RI{$eHnAx z&t=-PSjZ>Qe2V2-YGs1YWemAq zVHdG{9V$QvsY~Cgq-L*PZqMPGv|px$)K~3<%+fBtG{oIRPL_7ye$-(`C=tS)^xC}% zue73qiF&{nXJ*>-@668G!`IrAeB;ad09shzt{O?7omLE_X@H|#ozGt&64 zb-&_lLkZI8TzigPZvUr=4g2-8M6M8b9EQLgoPswYg)d)j&%gZHJO!2>(?;I*8d>aG z#oS295Kcq{uD4R2@VEG($}WWiF-6YK)kjqks%o_U{CIAVX2;tX7o|unkew5?Gn3(| zOePS^{$(;Xi4ph;`KO#;k+vaLt8n5@doi+OEvH&?*+3(WgqkT9-$b0fTHm;)r=NmR zJnJ9o>UvNR(JMoIdRBf{%kd}jmZ)b)#4>dnDfq0G(?~S%d zv50QeMR$Kzd*S$AEXdp5Fhqe0Pz zZ!oS2e!i-tWEJ2^YoVo}V7S0tV7CujimbVJtVNb#yB&<-f&xpSb@m2=wBZ|qU-_^; z?C{lk+;tlxk&Sh3Pwh(D7~kNh`O=~TMWuRUu^0=9)`CYEVwhvGWUt4Wd3`6*H)Zs>LLYQcC#*~B78EfTt7RQ*l)b{v zqntLNsC`h&zZCY{x*}gfPU4at;nfileU3>zeyLdO7;;lFIft~ zsm6#wb5Jjtv;_VxleU0<%cQON-O*ywHt`@C4fn-Y83}=|hJPOpN>1H%C#7)9etg_yG)$ div { + padding-bottom: 4px; +} +.tox .accessibility-issue__description > div > div { + align-items: center; + display: flex; + margin-bottom: 4px; +} +.tox .accessibility-issue__description > *:last-child:not(:only-child) { + border-color: #cccccc; + border-style: solid; +} +.tox .accessibility-issue__repair { + margin-top: 16px; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description { + background-color: rgba(32, 122, 183, 0.1); + border-color: rgba(32, 122, 183, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child { + border-color: rgba(32, 122, 183, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 { + color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg { + fill: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon { + color: #207ab7; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description { + background-color: rgba(255, 165, 0, 0.1); + border-color: rgba(255, 165, 0, 0.5); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child { + border-color: rgba(255, 165, 0, 0.5); +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 { + color: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg { + fill: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon { + color: #cc8500; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description { + background-color: rgba(204, 0, 0, 0.1); + border-color: rgba(204, 0, 0, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child { + border-color: rgba(204, 0, 0, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg { + fill: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon { + color: #c00; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description { + background-color: rgba(120, 171, 70, 0.1); + border-color: rgba(120, 171, 70, 0.4); + color: #222f3e; +} +.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child { + border-color: rgba(120, 171, 70, 0.4); +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 { + color: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg { + fill: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon { + color: #78AB46; +} +.tox .tox-dialog__body-content .accessibility-issue__header h1, +.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 { + margin-top: 0; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-left: auto; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 4px 4px 8px; +} +.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-left-width: 1px; + padding-left: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button { + margin-right: 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) { + margin-right: auto; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description { + padding: 4px 8px 4px 4px; +} +.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child { + border-right-width: 1px; + padding-right: 4px; +} +.tox .tox-anchorbar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-bar { + display: flex; + flex: 0 0 auto; +} +.tox .tox-button { + background-color: #207ab7; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #207ab7; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #fff; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + line-height: 24px; + margin: 0; + outline: none; + padding: 4px 16px; + text-align: center; + text-decoration: none; + text-transform: none; + white-space: nowrap; +} +.tox .tox-button[disabled] { + background-color: #207ab7; + background-image: none; + border-color: #207ab7; + box-shadow: none; + color: rgba(255, 255, 255, 0.5); + cursor: not-allowed; +} +.tox .tox-button:focus:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:hover:not(:disabled) { + background-color: #1c6ca1; + background-image: none; + border-color: #1c6ca1; + box-shadow: none; + color: #fff; +} +.tox .tox-button:active:not(:disabled) { + background-color: #185d8c; + background-image: none; + border-color: #185d8c; + box-shadow: none; + color: #fff; +} +.tox .tox-button--secondary { + background-color: #f0f0f0; + background-image: none; + background-position: 0 0; + background-repeat: repeat; + border-color: #f0f0f0; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + outline: none; + padding: 4px 16px; + text-decoration: none; + text-transform: none; +} +.tox .tox-button--secondary[disabled] { + background-color: #f0f0f0; + background-image: none; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--secondary:focus:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:hover:not(:disabled) { + background-color: #e3e3e3; + background-image: none; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--secondary:active:not(:disabled) { + background-color: #d6d6d6; + background-image: none; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--icon, +.tox .tox-button.tox-button--icon, +.tox .tox-button.tox-button--secondary.tox-button--icon { + padding: 4px; +} +.tox .tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--icon .tox-icon svg, +.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg { + display: block; + fill: currentColor; +} +.tox .tox-button-link { + background: 0; + border: none; + box-sizing: border-box; + cursor: pointer; + display: inline-block; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + font-weight: normal; + line-height: 1.3; + margin: 0; + padding: 0; + white-space: nowrap; +} +.tox .tox-button-link--sm { + font-size: 14px; +} +.tox .tox-button--naked { + background-color: transparent; + border-color: transparent; + box-shadow: unset; + color: #222f3e; +} +.tox .tox-button--naked[disabled] { + background-color: #f0f0f0; + border-color: #f0f0f0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-button--naked:hover:not(:disabled) { + background-color: #e3e3e3; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked:focus:not(:disabled) { + background-color: #e3e3e3; + border-color: #e3e3e3; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked:active:not(:disabled) { + background-color: #d6d6d6; + border-color: #d6d6d6; + box-shadow: none; + color: #222f3e; +} +.tox .tox-button--naked .tox-icon svg { + fill: currentColor; +} +.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) { + color: #222f3e; +} +.tox .tox-checkbox { + align-items: center; + border-radius: 3px; + cursor: pointer; + display: flex; + height: 36px; + min-width: 36px; +} +.tox .tox-checkbox__input { + /* Hide from view but visible to screen readers */ + height: 1px; + overflow: hidden; + position: absolute; + top: auto; + width: 1px; +} +.tox .tox-checkbox__icons { + align-items: center; + border-radius: 3px; + box-shadow: 0 0 0 2px transparent; + box-sizing: content-box; + display: flex; + height: 24px; + justify-content: center; + padding: calc(4px - 1px); + width: 24px; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: block; + fill: rgba(34, 47, 62, 0.3); +} +.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: none; + fill: #207ab7; +} +.tox .tox-checkbox--disabled { + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg { + display: block; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg { + display: none; +} +.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg { + display: block; +} +.tox input.tox-checkbox__input:focus + .tox-checkbox__icons { + border-radius: 3px; + box-shadow: inset 0 0 0 1px #207ab7; + padding: calc(4px - 1px); +} +.tox:not([dir=rtl]) .tox-checkbox__label { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-checkbox__input { + left: -10000px; +} +.tox:not([dir=rtl]) .tox-bar .tox-checkbox { + margin-left: 4px; +} +.tox[dir=rtl] .tox-checkbox__label { + margin-right: 4px; +} +.tox[dir=rtl] .tox-checkbox__input { + right: -10000px; +} +.tox[dir=rtl] .tox-bar .tox-checkbox { + margin-right: 4px; +} +.tox { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox .tox-collection--toolbar .tox-collection__group { + display: flex; + padding: 0; +} +.tox .tox-collection--grid .tox-collection__group { + display: flex; + flex-wrap: wrap; + max-height: 208px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; +} +.tox .tox-collection--list .tox-collection__group { + border-bottom-width: 0; + border-color: #cccccc; + border-left-width: 0; + border-right-width: 0; + border-style: solid; + border-top-width: 1px; + padding: 4px 0; +} +.tox .tox-collection--list .tox-collection__group:first-child { + border-top-width: 0; +} +.tox .tox-collection__group-heading { + background-color: #e6e6e6; + color: rgba(34, 47, 62, 0.7); + cursor: default; + font-size: 12px; + font-style: normal; + font-weight: normal; + margin-bottom: 4px; + margin-top: -4px; + padding: 4px 8px; + text-transform: none; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection__item { + align-items: center; + color: #222f3e; + cursor: pointer; + display: flex; + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.tox .tox-collection--list .tox-collection__item { + padding: 4px 8px; +} +.tox .tox-collection--toolbar .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--grid .tox-collection__item { + border-radius: 3px; + padding: 4px; +} +.tox .tox-collection--list .tox-collection__item--enabled { + background-color: #fff; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active { + background-color: #dee0e2; +} +.tox .tox-collection--toolbar .tox-collection__item--enabled { + background-color: #c8cbcf; + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active { + background-color: #dee0e2; +} +.tox .tox-collection--grid .tox-collection__item--enabled { + background-color: #c8cbcf; + color: #222f3e; +} +.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + background-color: #dee0e2; + color: #222f3e; +} +.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) { + color: #222f3e; +} +.tox .tox-collection__item-icon, +.tox .tox-collection__item-checkmark { + align-items: center; + display: flex; + height: 24px; + justify-content: center; + width: 24px; +} +.tox .tox-collection__item-icon svg, +.tox .tox-collection__item-checkmark svg { + fill: currentColor; +} +.tox .tox-collection--toolbar-lg .tox-collection__item-icon { + height: 48px; + width: 48px; +} +.tox .tox-collection__item-label { + color: currentColor; + display: inline-block; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 24px; + text-transform: none; + word-break: break-all; +} +.tox .tox-collection__item-accessory { + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + height: 24px; + line-height: 24px; + text-transform: none; +} +.tox .tox-collection__item-caret { + align-items: center; + display: flex; + min-height: 24px; +} +.tox .tox-collection__item-caret::after { + content: ''; + font-size: 0; + min-height: inherit; +} +.tox .tox-collection__item-caret svg { + fill: #222f3e; +} +.tox .tox-collection__item--state-disabled { + background-color: transparent; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg { + display: none; +} +.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark { + display: none; +} +.tox .tox-collection--horizontal { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: nowrap; + margin-bottom: 0; + overflow-x: auto; + padding: 0; +} +.tox .tox-collection--horizontal .tox-collection__group { + align-items: center; + display: flex; + flex-wrap: nowrap; + margin: 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item { + height: 34px; + margin: 2px 0 3px 0; + padding: 0 4px; +} +.tox .tox-collection--horizontal .tox-collection__item-label { + white-space: nowrap; +} +.tox .tox-collection--horizontal .tox-collection__item-caret { + margin-left: 4px; +} +.tox .tox-collection__item-container { + display: flex; +} +.tox .tox-collection__item-container--row { + align-items: center; + flex: 1 1 auto; + flex-direction: row; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-left { + margin-right: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--align-right { + justify-content: flex-end; + margin-left: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top { + align-items: flex-start; + margin-bottom: auto; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle { + align-items: center; +} +.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom { + align-items: flex-end; + margin-top: auto; +} +.tox .tox-collection__item-container--column { + -ms-grid-row-align: center; + align-self: center; + flex: 1 1 auto; + flex-direction: column; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-left { + align-items: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--align-right { + align-items: flex-end; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top { + align-self: flex-start; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle { + -ms-grid-row-align: center; + align-self: center; +} +.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom { + align-self: flex-end; +} +.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-right: 1px solid #cccccc; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-left: 4px; +} +.tox:not([dir=rtl]) .tox-collection__item-accessory { + margin-left: 16px; + text-align: right; +} +.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret { + margin-left: 16px; +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) { + border-left: 1px solid #cccccc; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child { + margin-right: 4px; +} +.tox[dir=rtl] .tox-collection__item-accessory { + margin-right: 16px; + text-align: left; +} +.tox[dir=rtl] .tox-collection .tox-collection__item-caret { + margin-right: 16px; + transform: rotateY(180deg); +} +.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret { + margin-right: 4px; +} +.tox .tox-color-picker-container { + display: flex; + flex-direction: row; + height: 225px; + margin: 0; +} +.tox .tox-sv-palette { + box-sizing: border-box; + display: flex; + height: 100%; +} +.tox .tox-sv-palette-spectrum { + height: 100%; +} +.tox .tox-sv-palette, +.tox .tox-sv-palette-spectrum { + width: 225px; +} +.tox .tox-sv-palette-thumb { + background: none; + border: 1px solid black; + border-radius: 50%; + box-sizing: content-box; + height: 12px; + position: absolute; + width: 12px; +} +.tox .tox-sv-palette-inner-thumb { + border: 1px solid white; + border-radius: 50%; + height: 10px; + position: absolute; + width: 10px; +} +.tox .tox-hue-slider { + box-sizing: border-box; + height: 100%; + width: 25px; +} +.tox .tox-hue-slider-spectrum { + background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00); + height: 100%; + width: 100%; +} +.tox .tox-hue-slider, +.tox .tox-hue-slider-spectrum { + width: 20px; +} +.tox .tox-hue-slider-thumb { + background: white; + border: 1px solid black; + box-sizing: content-box; + height: 4px; + width: 100%; +} +.tox .tox-rgb-form { + display: flex; + flex-direction: column; + justify-content: space-between; +} +.tox .tox-rgb-form div { + align-items: center; + display: flex; + justify-content: space-between; + margin-bottom: 5px; + width: inherit; +} +.tox .tox-rgb-form input { + width: 6em; +} +.tox .tox-rgb-form input.tox-invalid { + /* Need !important to override Chrome's focus styling unfortunately */ + border: 1px solid red !important; +} +.tox .tox-rgb-form .tox-rgba-preview { + border: 1px solid black; + flex-grow: 2; + margin-bottom: 0; +} +.tox:not([dir=rtl]) .tox-sv-palette { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider { + margin-right: 15px; +} +.tox:not([dir=rtl]) .tox-hue-slider-thumb { + margin-left: -1px; +} +.tox:not([dir=rtl]) .tox-rgb-form label { + margin-right: 0.5em; +} +.tox[dir=rtl] .tox-sv-palette { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider { + margin-left: 15px; +} +.tox[dir=rtl] .tox-hue-slider-thumb { + margin-right: -1px; +} +.tox[dir=rtl] .tox-rgb-form label { + margin-left: 0.5em; +} +.tox .tox-toolbar .tox-swatches, +.tox .tox-toolbar__primary .tox-swatches, +.tox .tox-toolbar__overflow .tox-swatches { + margin: 2px 0 3px 4px; +} +.tox .tox-collection--list .tox-collection__group .tox-swatches-menu { + border: 0; + margin: -4px 0; +} +.tox .tox-swatches__row { + display: flex; +} +.tox .tox-swatch { + height: 30px; + transition: transform 0.15s, box-shadow 0.15s; + width: 30px; +} +.tox .tox-swatch:hover, +.tox .tox-swatch:focus { + box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset; + transform: scale(0.8); +} +.tox .tox-swatch--remove { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-swatch--remove svg path { + stroke: #e74c3c; +} +.tox .tox-swatches__picker-btn { + align-items: center; + background-color: transparent; + border: 0; + cursor: pointer; + display: flex; + height: 30px; + justify-content: center; + outline: none; + padding: 0; + width: 30px; +} +.tox .tox-swatches__picker-btn svg { + height: 24px; + width: 24px; +} +.tox .tox-swatches__picker-btn:hover { + background: #dee0e2; +} +.tox:not([dir=rtl]) .tox-swatches__picker-btn { + margin-left: auto; +} +.tox[dir=rtl] .tox-swatches__picker-btn { + margin-right: auto; +} +.tox .tox-comment-thread { + background: #fff; + position: relative; +} +.tox .tox-comment-thread > *:not(:first-child) { + margin-top: 8px; +} +.tox .tox-comment { + background: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + padding: 8px 8px 16px 8px; + position: relative; +} +.tox .tox-comment__header { + align-items: center; + color: #222f3e; + display: flex; + justify-content: space-between; +} +.tox .tox-comment__date { + color: rgba(34, 47, 62, 0.7); + font-size: 12px; +} +.tox .tox-comment__body { + color: #222f3e; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin-top: 8px; + position: relative; + text-transform: initial; +} +.tox .tox-comment__body textarea { + resize: none; + white-space: normal; + width: 100%; +} +.tox .tox-comment__expander { + padding-top: 8px; +} +.tox .tox-comment__expander p { + color: rgba(34, 47, 62, 0.7); + font-size: 14px; + font-style: normal; +} +.tox .tox-comment__body p { + margin: 0; +} +.tox .tox-comment__buttonspacing { + padding-top: 16px; + text-align: center; +} +.tox .tox-comment-thread__overlay::after { + background: #fff; + bottom: 0; + content: ""; + display: flex; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + top: 0; + z-index: 5; +} +.tox .tox-comment__reply { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 8px; +} +.tox .tox-comment__reply > *:first-child { + margin-bottom: 8px; + width: 100%; +} +.tox .tox-comment__edit { + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + margin-top: 16px; +} +.tox .tox-comment__gradient::after { + background: linear-gradient(rgba(255, 255, 255, 0), #fff); + bottom: 0; + content: ""; + display: block; + height: 5em; + margin-top: -40px; + position: absolute; + width: 100%; +} +.tox .tox-comment__overlay { + background: #fff; + bottom: 0; + display: flex; + flex-direction: column; + flex-grow: 1; + left: 0; + opacity: 0.9; + position: absolute; + right: 0; + text-align: center; + top: 0; + z-index: 5; +} +.tox .tox-comment__loading-text { + align-items: center; + color: #222f3e; + display: flex; + flex-direction: column; + position: relative; +} +.tox .tox-comment__loading-text > div { + padding-bottom: 16px; +} +.tox .tox-comment__overlaytext { + bottom: 0; + flex-direction: column; + font-size: 14px; + left: 0; + padding: 1em; + position: absolute; + right: 0; + top: 0; + z-index: 10; +} +.tox .tox-comment__overlaytext p { + background-color: #fff; + box-shadow: 0 0 8px 8px #fff; + color: #222f3e; + text-align: center; +} +.tox .tox-comment__overlaytext div:nth-of-type(2) { + font-size: 0.8em; +} +.tox .tox-comment__busy-spinner { + align-items: center; + background-color: #fff; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 20; +} +.tox .tox-comment__scroll { + display: flex; + flex-direction: column; + flex-shrink: 1; + overflow: auto; +} +.tox .tox-conversations { + margin: 8px; +} +.tox:not([dir=rtl]) .tox-comment__edit { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child, +.tox:not([dir=rtl]) .tox-comment__edit > *:last-child, +.tox:not([dir=rtl]) .tox-comment__reply > *:last-child { + margin-left: 8px; +} +.tox[dir=rtl] .tox-comment__edit { + margin-right: 8px; +} +.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child, +.tox[dir=rtl] .tox-comment__edit > *:last-child, +.tox[dir=rtl] .tox-comment__reply > *:last-child { + margin-right: 8px; +} +.tox .tox-user { + align-items: center; + display: flex; +} +.tox .tox-user__avatar svg { + fill: rgba(34, 47, 62, 0.7); +} +.tox .tox-user__name { + color: rgba(34, 47, 62, 0.7); + font-size: 12px; + font-style: normal; + font-weight: bold; + text-transform: uppercase; +} +.tox:not([dir=rtl]) .tox-user__avatar svg { + margin-right: 8px; +} +.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar svg { + margin-left: 8px; +} +.tox[dir=rtl] .tox-user__avatar + .tox-user__name { + margin-right: 8px; +} +.tox .tox-dialog-wrap { + align-items: center; + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: fixed; + right: 0; + top: 0; + z-index: 1100; +} +.tox .tox-dialog-wrap__backdrop { + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 1; +} +.tox .tox-dialog-wrap__backdrop--opaque { + background-color: #fff; +} +.tox .tox-dialog { + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15); + display: flex; + flex-direction: column; + max-height: 100%; + max-width: 480px; + overflow: hidden; + position: relative; + width: 95vw; + z-index: 2; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog { + align-self: flex-start; + margin: 8px auto; + width: calc(100vw - 16px); + } +} +.tox .tox-dialog-inline { + z-index: 1100; +} +.tox .tox-dialog__header { + align-items: center; + background-color: #fff; + border-bottom: none; + color: #222f3e; + display: flex; + font-size: 16px; + justify-content: space-between; + padding: 8px 16px 0 16px; + position: relative; +} +.tox .tox-dialog__header .tox-button { + z-index: 1; +} +.tox .tox-dialog__draghandle { + cursor: grab; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +.tox .tox-dialog__draghandle:active { + cursor: grabbing; +} +.tox .tox-dialog__dismiss { + margin-left: auto; +} +.tox .tox-dialog__title { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 20px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + margin: 0; + text-transform: none; +} +.tox .tox-dialog__body { + color: #222f3e; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + font-size: 16px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + min-width: 0; + text-align: left; + text-transform: none; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body { + flex-direction: column; + } +} +.tox .tox-dialog__body-nav { + align-items: flex-start; + display: flex; + flex-direction: column; + padding: 16px 16px; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox .tox-dialog__body-nav { + flex-direction: row; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding-bottom: 0; + } +} +.tox .tox-dialog__body-nav-item { + border-bottom: 2px solid transparent; + color: rgba(34, 47, 62, 0.7); + display: inline-block; + font-size: 14px; + line-height: 1.3; + margin-bottom: 8px; + text-decoration: none; + white-space: nowrap; +} +.tox .tox-dialog__body-nav-item:focus { + background-color: rgba(32, 122, 183, 0.1); +} +.tox .tox-dialog__body-nav-item--active { + border-bottom: 2px solid #207ab7; + color: #207ab7; +} +.tox .tox-dialog__body-content { + box-sizing: border-box; + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; + max-height: 650px; + overflow: auto; + -webkit-overflow-scrolling: touch; + padding: 16px 16px; +} +.tox .tox-dialog__body-content > * { + margin-bottom: 0; + margin-top: 16px; +} +.tox .tox-dialog__body-content > *:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content > *:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content > *:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog__body-content a { + color: #207ab7; + cursor: pointer; + text-decoration: none; +} +.tox .tox-dialog__body-content a:hover, +.tox .tox-dialog__body-content a:focus { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content a:active { + color: #185d8c; + text-decoration: none; +} +.tox .tox-dialog__body-content svg { + fill: #222f3e; +} +.tox .tox-dialog__body-content ul { + display: block; + list-style-type: disc; + margin-bottom: 16px; + -webkit-margin-end: 0; + margin-inline-end: 0; + -webkit-margin-start: 0; + margin-inline-start: 0; + -webkit-padding-start: 2.5rem; + padding-inline-start: 2.5rem; +} +.tox .tox-dialog__body-content .tox-form__group h1 { + color: #222f3e; + font-size: 20px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group h2 { + color: #222f3e; + font-size: 16px; + font-style: normal; + font-weight: bold; + letter-spacing: normal; + margin-bottom: 16px; + margin-top: 2rem; + text-transform: none; +} +.tox .tox-dialog__body-content .tox-form__group p { + margin-bottom: 16px; +} +.tox .tox-dialog__body-content .tox-form__group h1:first-child, +.tox .tox-dialog__body-content .tox-form__group h2:first-child, +.tox .tox-dialog__body-content .tox-form__group p:first-child { + margin-top: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:last-child, +.tox .tox-dialog__body-content .tox-form__group h2:last-child, +.tox .tox-dialog__body-content .tox-form__group p:last-child { + margin-bottom: 0; +} +.tox .tox-dialog__body-content .tox-form__group h1:only-child, +.tox .tox-dialog__body-content .tox-form__group h2:only-child, +.tox .tox-dialog__body-content .tox-form__group p:only-child { + margin-bottom: 0; + margin-top: 0; +} +.tox .tox-dialog--width-lg { + height: 650px; + max-width: 1200px; +} +.tox .tox-dialog--width-md { + max-width: 800px; +} +.tox .tox-dialog--width-md .tox-dialog__body-content { + overflow: auto; +} +.tox .tox-dialog__body-content--centered { + text-align: center; +} +.tox .tox-dialog__footer { + align-items: center; + background-color: #fff; + border-top: 1px solid #cccccc; + display: flex; + justify-content: space-between; + padding: 8px 16px; +} +.tox .tox-dialog__footer-start, +.tox .tox-dialog__footer-end { + display: flex; +} +.tox .tox-dialog__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.75); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; + z-index: 3; +} +.tox .tox-dialog__table { + border-collapse: collapse; + width: 100%; +} +.tox .tox-dialog__table thead th { + font-weight: bold; + padding-bottom: 8px; +} +.tox .tox-dialog__table tbody tr { + border-bottom: 1px solid #cccccc; +} +.tox .tox-dialog__table tbody tr:last-child { + border-bottom: none; +} +.tox .tox-dialog__table td { + padding-bottom: 8px; + padding-top: 8px; +} +.tox .tox-dialog__popups { + position: absolute; + width: 100%; + z-index: 1100; +} +.tox .tox-dialog__body-iframe { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox .tox-dialog-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox .tox-dialog-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox .tox-dialog-dock-transition { + transition: visibility 0s linear 0.3s, opacity 0.3s ease; +} +.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein { + transition-delay: 0s; +} +.tox.tox-platform-ie { + /* IE11 CSS styles go here */ +} +.tox.tox-platform-ie .tox-dialog-wrap { + position: -ms-device-fixed; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav { + margin-right: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) { + margin-left: 8px; + } +} +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *, +.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * { + margin-left: 8px; +} +.tox[dir=rtl] .tox-dialog__body { + text-align: right; +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav { + margin-left: 0; + } +} +@media only screen and (max-width:767px) { + body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) { + margin-right: 8px; + } +} +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *, +.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * { + margin-right: 8px; +} +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox .tox-dropzone-container { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dropzone { + align-items: center; + background: #fff; + border: 2px dashed #cccccc; + box-sizing: border-box; + display: flex; + flex-direction: column; + flex-grow: 1; + justify-content: center; + min-height: 100px; + padding: 10px; +} +.tox .tox-dropzone p { + color: rgba(34, 47, 62, 0.7); + margin: 0 0 16px 0; +} +.tox .tox-edit-area { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + overflow: hidden; + position: relative; +} +.tox .tox-edit-area__iframe { + background-color: #fff; + border: 0; + box-sizing: border-box; + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; + position: absolute; + width: 100%; +} +.tox.tox-inline-edit-area { + border: 1px dotted #cccccc; +} +.tox .tox-editor-container { + display: flex; + flex: 1 1 auto; + flex-direction: column; + overflow: hidden; +} +.tox .tox-editor-header { + z-index: 1; +} +.tox:not(.tox-tinymce-inline) .tox-editor-header { + box-shadow: none; + transition: box-shadow 0.5s; +} +.tox.tox-tinymce--toolbar-bottom .tox-editor-header, +.tox.tox-tinymce-inline .tox-editor-header { + margin-bottom: -1px; +} +.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header { + background-color: transparent; + box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25); +} +.tox-editor-dock-fadeout { + opacity: 0; + visibility: hidden; +} +.tox-editor-dock-fadein { + opacity: 1; + visibility: visible; +} +.tox-editor-dock-transition { + transition: visibility 0s linear 0.25s, opacity 0.25s ease; +} +.tox-editor-dock-transition.tox-editor-dock-fadein { + transition-delay: 0s; +} +.tox .tox-control-wrap { + flex: 1; + position: relative; +} +.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid, +.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown, +.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid { + display: none; +} +.tox .tox-control-wrap svg { + display: block; +} +.tox .tox-control-wrap__status-icon-wrap { + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-control-wrap__status-icon-invalid svg { + fill: #c00; +} +.tox .tox-control-wrap__status-icon-unknown svg { + fill: orange; +} +.tox .tox-control-wrap__status-icon-valid svg { + fill: green; +} +.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield, +.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield { + padding-right: 32px; +} +.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap { + right: 4px; +} +.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield, +.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield { + padding-left: 32px; +} +.tox[dir=rtl] .tox-control-wrap__status-icon-wrap { + left: 4px; +} +.tox .tox-autocompleter { + max-width: 25em; +} +.tox .tox-autocompleter .tox-menu { + max-width: 25em; +} +.tox .tox-autocompleter .tox-autocompleter-highlight { + font-weight: bold; +} +.tox .tox-color-input { + display: flex; + position: relative; + z-index: 1; +} +.tox .tox-color-input .tox-textfield { + z-index: -1; +} +.tox .tox-color-input span { + border-color: rgba(34, 47, 62, 0.2); + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + height: 24px; + position: absolute; + top: 6px; + width: 24px; +} +.tox .tox-color-input span:hover:not([aria-disabled=true]), +.tox .tox-color-input span:focus:not([aria-disabled=true]) { + border-color: #207ab7; + cursor: pointer; +} +.tox .tox-color-input span::before { + background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%); + background-position: 0 0, 0 6px, 6px -6px, -6px 0; + background-size: 12px 12px; + border: 1px solid #fff; + border-radius: 3px; + box-sizing: border-box; + content: ''; + height: 24px; + left: -1px; + position: absolute; + top: -1px; + width: 24px; + z-index: -1; +} +.tox .tox-color-input span[aria-disabled=true] { + cursor: not-allowed; +} +.tox:not([dir=rtl]) .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-color-input .tox-textfield { + padding-left: 36px; +} +.tox:not([dir=rtl]) .tox-color-input span { + left: 6px; +} +.tox[dir="rtl"] .tox-color-input { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir="rtl"] .tox-color-input .tox-textfield { + padding-right: 36px; +} +.tox[dir="rtl"] .tox-color-input span { + right: 6px; +} +.tox .tox-label, +.tox .tox-toolbar-label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.3; + padding: 0 8px 0 0; + text-transform: none; + white-space: nowrap; +} +.tox .tox-toolbar-label { + padding: 0 8px; +} +.tox[dir=rtl] .tox-label { + padding: 0 0 0 8px; +} +.tox .tox-form { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group { + box-sizing: border-box; + margin-bottom: 4px; +} +.tox .tox-form-group--maximize { + flex: 1; +} +.tox .tox-form__group--error { + color: #c00; +} +.tox .tox-form__group--collection { + display: flex; +} +.tox .tox-form__grid { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; +} +.tox .tox-form__grid--2col > .tox-form__group { + width: calc(50% - (8px / 2)); +} +.tox .tox-form__grid--3col > .tox-form__group { + width: calc(100% / 3 - (8px / 2)); +} +.tox .tox-form__grid--4col > .tox-form__group { + width: calc(25% - (8px / 2)); +} +.tox .tox-form__controls-h-stack { + align-items: center; + display: flex; +} +.tox .tox-form__group--inline { + align-items: center; + display: flex; +} +.tox .tox-form__group--stretched { + display: flex; + flex: 1; + flex-direction: column; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-textarea { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-form__group--stretched .tox-navobj :nth-child(2) { + flex: 1; + -ms-flex-preferred-size: auto; + height: 100%; +} +.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) { + margin-right: 4px; +} +.tox .tox-lock.tox-locked .tox-lock-icon__unlock, +.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock { + display: none; +} +.tox .tox-textfield, +.tox .tox-toolbar-textfield, +.tox .tox-listboxfield .tox-listbox--select, +.tox .tox-textarea { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-textfield[disabled], +.tox .tox-textarea[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-textfield:focus, +.tox .tox-listboxfield .tox-listbox--select:focus, +.tox .tox-textarea:focus { + background-color: #fff; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-toolbar-textfield { + border-width: 0; + margin-bottom: 3px; + margin-top: 2px; + max-width: 250px; +} +.tox .tox-naked-btn { + background-color: transparent; + border: 0; + border-color: transparent; + box-shadow: unset; + color: #207ab7; + cursor: pointer; + display: block; + margin: 0; + padding: 0; +} +.tox .tox-naked-btn svg { + display: block; + fill: #222f3e; +} +.tox:not([dir=rtl]) .tox-toolbar-textfield + * { + margin-left: 4px; +} +.tox[dir=rtl] .tox-toolbar-textfield + * { + margin-right: 4px; +} +.tox .tox-listboxfield { + cursor: pointer; + position: relative; +} +.tox .tox-listboxfield .tox-listbox--select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-listbox__select-label { + cursor: default; + flex: 1; + margin: 0 4px; +} +.tox .tox-listbox__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-listbox__select-chevron svg { + fill: #222f3e; +} +.tox .tox-listboxfield .tox-listbox--select { + align-items: center; + display: flex; +} +.tox:not([dir=rtl]) .tox-listboxfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-listboxfield svg { + left: 8px; +} +.tox .tox-selectfield { + cursor: pointer; + position: relative; +} +.tox .tox-selectfield select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #cccccc; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + color: #222f3e; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif; + font-size: 16px; + line-height: 24px; + margin: 0; + min-height: 34px; + outline: none; + padding: 5px 4.75px; + resize: none; + width: 100%; +} +.tox .tox-selectfield select[disabled] { + background-color: #f2f2f2; + color: rgba(34, 47, 62, 0.85); + cursor: not-allowed; +} +.tox .tox-selectfield select::-ms-expand { + display: none; +} +.tox .tox-selectfield select:focus { + background-color: #fff; + border-color: #207ab7; + box-shadow: none; + outline: none; +} +.tox .tox-selectfield svg { + pointer-events: none; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox:not([dir=rtl]) .tox-selectfield select[size="0"], +.tox:not([dir=rtl]) .tox-selectfield select[size="1"] { + padding-right: 24px; +} +.tox:not([dir=rtl]) .tox-selectfield svg { + right: 8px; +} +.tox[dir=rtl] .tox-selectfield select[size="0"], +.tox[dir=rtl] .tox-selectfield select[size="1"] { + padding-left: 24px; +} +.tox[dir=rtl] .tox-selectfield svg { + left: 8px; +} +.tox .tox-textarea { + -webkit-appearance: textarea; + -moz-appearance: textarea; + appearance: textarea; + white-space: pre-wrap; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} +.tox .tox-help__more-link { + list-style: none; + margin-top: 1em; +} +.tox .tox-image-tools { + width: 100%; +} +.tox .tox-image-tools__toolbar { + align-items: center; + display: flex; + justify-content: center; +} +.tox .tox-image-tools__image { + background-color: #666; + height: 380px; + overflow: auto; + position: relative; + width: 100%; +} +.tox .tox-image-tools__image, +.tox .tox-image-tools__image + .tox-image-tools__toolbar { + margin-top: 8px; +} +.tox .tox-image-tools__image-bg { + background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==); +} +.tox .tox-image-tools__toolbar > .tox-spacer { + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-croprect-block { + background: black; + filter: alpha(opacity=50); + opacity: 0.5; + position: absolute; + zoom: 1; +} +.tox .tox-croprect-handle { + border: 2px solid white; + height: 20px; + left: 0; + position: absolute; + top: 0; + width: 20px; +} +.tox .tox-croprect-handle-move { + border: 0; + cursor: move; + position: absolute; +} +.tox .tox-croprect-handle-nw { + border-width: 2px 0 0 2px; + cursor: nw-resize; + left: 100px; + margin: -2px 0 0 -2px; + top: 100px; +} +.tox .tox-croprect-handle-ne { + border-width: 2px 2px 0 0; + cursor: ne-resize; + left: 200px; + margin: -2px 0 0 -20px; + top: 100px; +} +.tox .tox-croprect-handle-sw { + border-width: 0 0 2px 2px; + cursor: sw-resize; + left: 100px; + margin: -20px 2px 0 -2px; + top: 200px; +} +.tox .tox-croprect-handle-se { + border-width: 0 2px 2px 0; + cursor: se-resize; + left: 200px; + margin: -20px 0 0 -20px; + top: 200px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-left: 8px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-left: 32px; +} +.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-left: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) { + margin-right: 8px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider { + margin-right: 32px; +} +.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button { + margin-right: 32px; +} +.tox .tox-insert-table-picker { + display: flex; + flex-wrap: wrap; + width: 170px; +} +.tox .tox-insert-table-picker > div { + border-color: #cccccc; + border-style: solid; + border-width: 0 1px 1px 0; + box-sizing: border-box; + height: 17px; + width: 17px; +} +.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker { + margin: -4px 0; +} +.tox .tox-insert-table-picker .tox-insert-table-picker__selected { + background-color: rgba(32, 122, 183, 0.5); + border-color: rgba(32, 122, 183, 0.5); +} +.tox .tox-insert-table-picker__label { + color: rgba(34, 47, 62, 0.7); + display: block; + font-size: 14px; + padding: 4px; + text-align: center; + width: 100%; +} +.tox:not([dir=rtl]) { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) { + border-right: 0; +} +.tox[dir=rtl] { + /* stylelint-disable-next-line no-descending-specificity */ +} +.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) { + border-right: 0; +} +.tox { + /* stylelint-disable */ + /* stylelint-enable */ +} +.tox .tox-menu { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1); + display: inline-block; + overflow: hidden; + vertical-align: top; + z-index: 1150; +} +.tox .tox-menu.tox-collection.tox-collection--list { + padding: 0; +} +.tox .tox-menu.tox-collection.tox-collection--toolbar { + padding: 4px; +} +.tox .tox-menu.tox-collection.tox-collection--grid { + padding: 4px; +} +.tox .tox-menu__label h1, +.tox .tox-menu__label h2, +.tox .tox-menu__label h3, +.tox .tox-menu__label h4, +.tox .tox-menu__label h5, +.tox .tox-menu__label h6, +.tox .tox-menu__label p, +.tox .tox-menu__label blockquote, +.tox .tox-menu__label code { + margin: 0; +} +.tox .tox-menubar { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 4px 0 4px; +} +.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar { + border-top: 1px solid #cccccc; +} +/* Deprecated. Remove in next major release */ +.tox .tox-mbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0 4px; + text-transform: none; + width: auto; +} +.tox .tox-mbtn[disabled] { + background-color: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-mbtn:focus:not(:disabled) { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn--active { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-mbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-mbtn[disabled] .tox-mbtn__select-label { + cursor: not-allowed; +} +.tox .tox-mbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; + display: none; +} +.tox .tox-notification { + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: none; + box-sizing: border-box; + display: -ms-grid; + display: grid; + font-size: 14px; + font-weight: normal; + -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr); + margin-top: 4px; + opacity: 0; + padding: 4px; + transition: transform 100ms ease-in, opacity 150ms ease-in; +} +.tox .tox-notification p { + font-size: 14px; + font-weight: normal; +} +.tox .tox-notification a { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-notification--in { + opacity: 1; +} +.tox .tox-notification--success { + background-color: #e4eeda; + border-color: #d7e6c8; + color: #222f3e; +} +.tox .tox-notification--success p { + color: #222f3e; +} +.tox .tox-notification--success a { + color: #547831; +} +.tox .tox-notification--success svg { + fill: #222f3e; +} +.tox .tox-notification--error { + background-color: #f8dede; + border-color: #f2bfbf; + color: #222f3e; +} +.tox .tox-notification--error p { + color: #222f3e; +} +.tox .tox-notification--error a { + color: #c00; +} +.tox .tox-notification--error svg { + fill: #222f3e; +} +.tox .tox-notification--warn, +.tox .tox-notification--warning { + background-color: #fffaea; + border-color: #ffe89d; + color: #222f3e; +} +.tox .tox-notification--warn p, +.tox .tox-notification--warning p { + color: #222f3e; +} +.tox .tox-notification--warn a, +.tox .tox-notification--warning a { + color: #222f3e; +} +.tox .tox-notification--warn svg, +.tox .tox-notification--warning svg { + fill: #222f3e; +} +.tox .tox-notification--info { + background-color: #d9edf7; + border-color: #779ecb; + color: #222f3e; +} +.tox .tox-notification--info p { + color: #222f3e; +} +.tox .tox-notification--info a { + color: #222f3e; +} +.tox .tox-notification--info svg { + fill: #222f3e; +} +.tox .tox-notification__body { + -ms-grid-row-align: center; + align-self: center; + color: #222f3e; + font-size: 14px; + -ms-grid-column-span: 1; + grid-column-end: 3; + -ms-grid-column: 2; + grid-column-start: 2; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + text-align: center; + white-space: normal; + word-break: break-all; + word-break: break-word; +} +.tox .tox-notification__body > * { + margin: 0; +} +.tox .tox-notification__body > * + * { + margin-top: 1rem; +} +.tox .tox-notification__icon { + -ms-grid-row-align: center; + align-self: center; + -ms-grid-column-span: 1; + grid-column-end: 2; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification__icon svg { + display: block; +} +.tox .tox-notification__dismiss { + -ms-grid-row-align: start; + align-self: start; + -ms-grid-column-span: 1; + grid-column-end: 4; + -ms-grid-column: 3; + grid-column-start: 3; + -ms-grid-row-span: 1; + grid-row-end: 2; + -ms-grid-row: 1; + grid-row-start: 1; + -ms-grid-column-align: end; + justify-self: end; +} +.tox .tox-notification .tox-progress-bar { + -ms-grid-column-span: 3; + grid-column-end: 4; + -ms-grid-column: 1; + grid-column-start: 1; + -ms-grid-row-span: 1; + grid-row-end: 3; + -ms-grid-row: 2; + grid-row-start: 2; + -ms-grid-column-align: center; + justify-self: center; +} +.tox .tox-pop { + display: inline-block; + position: relative; +} +.tox .tox-pop--resizing { + transition: width 0.1s ease; +} +.tox .tox-pop--resizing .tox-toolbar, +.tox .tox-pop--resizing .tox-toolbar__group { + flex-wrap: nowrap; +} +.tox .tox-pop--transition { + transition: 0.15s ease; + transition-property: left, right, top, bottom; +} +.tox .tox-pop--transition::before, +.tox .tox-pop--transition::after { + transition: all 0.15s, visibility 0s, opacity 0.075s ease 0.075s; +} +.tox .tox-pop__dialog { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); + min-width: 0; + overflow: hidden; +} +.tox .tox-pop__dialog > *:not(.tox-toolbar) { + margin: 4px 4px 4px 8px; +} +.tox .tox-pop__dialog .tox-toolbar { + background-color: transparent; + margin-bottom: -1px; +} +.tox .tox-pop::before, +.tox .tox-pop::after { + border-style: solid; + content: ''; + display: block; + height: 0; + opacity: 1; + position: absolute; + width: 0; +} +.tox .tox-pop.tox-pop--inset::before, +.tox .tox-pop.tox-pop--inset::after { + opacity: 0; + transition: all 0s 0.15s, visibility 0s, opacity 0.075s ease; +} +.tox .tox-pop.tox-pop--bottom::before, +.tox .tox-pop.tox-pop--bottom::after { + left: 50%; + top: 100%; +} +.tox .tox-pop.tox-pop--bottom::after { + border-color: #fff transparent transparent transparent; + border-width: 8px; + margin-left: -8px; + margin-top: -1px; +} +.tox .tox-pop.tox-pop--bottom::before { + border-color: #cccccc transparent transparent transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--top::before, +.tox .tox-pop.tox-pop--top::after { + left: 50%; + top: 0; + transform: translateY(-100%); +} +.tox .tox-pop.tox-pop--top::after { + border-color: transparent transparent #fff transparent; + border-width: 8px; + margin-left: -8px; + margin-top: 1px; +} +.tox .tox-pop.tox-pop--top::before { + border-color: transparent transparent #cccccc transparent; + border-width: 9px; + margin-left: -9px; +} +.tox .tox-pop.tox-pop--left::before, +.tox .tox-pop.tox-pop--left::after { + left: 0; + top: calc(50% - 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--left::after { + border-color: transparent #fff transparent transparent; + border-width: 8px; + margin-left: -15px; +} +.tox .tox-pop.tox-pop--left::before { + border-color: transparent #cccccc transparent transparent; + border-width: 10px; + margin-left: -19px; +} +.tox .tox-pop.tox-pop--right::before, +.tox .tox-pop.tox-pop--right::after { + left: 100%; + top: calc(50% + 1px); + transform: translateY(-50%); +} +.tox .tox-pop.tox-pop--right::after { + border-color: transparent transparent transparent #fff; + border-width: 8px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--right::before { + border-color: transparent transparent transparent #cccccc; + border-width: 10px; + margin-left: -1px; +} +.tox .tox-pop.tox-pop--align-left::before, +.tox .tox-pop.tox-pop--align-left::after { + left: 20px; +} +.tox .tox-pop.tox-pop--align-right::before, +.tox .tox-pop.tox-pop--align-right::after { + left: calc(100% - 20px); +} +.tox .tox-sidebar-wrap { + display: flex; + flex-direction: row; + flex-grow: 1; + -ms-flex-preferred-size: 0; + min-height: 0; +} +.tox .tox-sidebar { + background-color: #fff; + display: flex; + flex-direction: row; + justify-content: flex-end; +} +.tox .tox-sidebar__slider { + display: flex; + overflow: hidden; +} +.tox .tox-sidebar__pane-container { + display: flex; +} +.tox .tox-sidebar__pane { + display: flex; +} +.tox .tox-sidebar--sliding-closed { + opacity: 0; +} +.tox .tox-sidebar--sliding-open { + opacity: 1; +} +.tox .tox-sidebar--sliding-growing, +.tox .tox-sidebar--sliding-shrinking { + transition: width 0.5s ease, opacity 0.5s ease; +} +.tox .tox-selector { + background-color: #4099ff; + border-color: #4099ff; + border-style: solid; + border-width: 1px; + box-sizing: border-box; + display: inline-block; + height: 10px; + position: absolute; + width: 10px; +} +.tox.tox-platform-touch .tox-selector { + height: 12px; + width: 12px; +} +.tox .tox-slider { + align-items: center; + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; + height: 24px; + justify-content: center; + position: relative; +} +.tox .tox-slider__rail { + background-color: transparent; + border: 1px solid #cccccc; + border-radius: 3px; + height: 10px; + min-width: 120px; + width: 100%; +} +.tox .tox-slider__handle { + background-color: #207ab7; + border: 2px solid #185d8c; + border-radius: 3px; + box-shadow: none; + height: 24px; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%); + width: 14px; +} +.tox .tox-source-code { + overflow: auto; +} +.tox .tox-spinner { + display: flex; +} +.tox .tox-spinner > div { + animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both; + background-color: rgba(34, 47, 62, 0.7); + border-radius: 100%; + height: 8px; + width: 8px; +} +.tox .tox-spinner > div:nth-child(1) { + animation-delay: -0.32s; +} +.tox .tox-spinner > div:nth-child(2) { + animation-delay: -0.16s; +} +@keyframes tam-bouncing-dots { + 0%, + 80%, + 100% { + transform: scale(0); + } + 40% { + transform: scale(1); + } +} +.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) { + margin-left: 4px; +} +.tox[dir=rtl] .tox-spinner > div:not(:first-child) { + margin-right: 4px; +} +.tox .tox-statusbar { + align-items: center; + background-color: #fff; + border-top: 1px solid #cccccc; + color: rgba(34, 47, 62, 0.7); + display: flex; + flex: 0 0 auto; + font-size: 12px; + font-weight: normal; + height: 18px; + overflow: hidden; + padding: 0 8px; + position: relative; + text-transform: uppercase; +} +.tox .tox-statusbar__text-container { + display: flex; + flex: 1 1 auto; + justify-content: flex-end; + overflow: hidden; +} +.tox .tox-statusbar__path { + display: flex; + flex: 1 1 auto; + margin-right: auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.tox .tox-statusbar__path > * { + display: inline; + white-space: nowrap; +} +.tox .tox-statusbar__wordcount { + flex: 0 0 auto; + margin-left: 1ch; +} +.tox .tox-statusbar a, +.tox .tox-statusbar__path-item, +.tox .tox-statusbar__wordcount { + color: rgba(34, 47, 62, 0.7); + text-decoration: none; +} +.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]), +.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) { + cursor: pointer; + text-decoration: underline; +} +.tox .tox-statusbar__resize-handle { + align-items: flex-end; + align-self: stretch; + cursor: nwse-resize; + display: flex; + flex: 0 0 auto; + justify-content: flex-end; + margin-left: auto; + margin-right: -8px; + padding-left: 1ch; +} +.tox .tox-statusbar__resize-handle svg { + display: block; + fill: rgba(34, 47, 62, 0.7); +} +.tox .tox-statusbar__resize-handle:focus svg { + background-color: #dee0e2; + border-radius: 1px; + box-shadow: 0 0 0 2px #dee0e2; +} +.tox:not([dir=rtl]) .tox-statusbar__path > * { + margin-right: 4px; +} +.tox:not([dir=rtl]) .tox-statusbar__branding { + margin-left: 1ch; +} +.tox[dir=rtl] .tox-statusbar { + flex-direction: row-reverse; +} +.tox[dir=rtl] .tox-statusbar__path > * { + margin-left: 4px; +} +.tox .tox-throbber { + z-index: 1299; +} +.tox .tox-throbber__busy-spinner { + align-items: center; + background-color: rgba(255, 255, 255, 0.6); + bottom: 0; + display: flex; + justify-content: center; + left: 0; + position: absolute; + right: 0; + top: 0; +} +.tox .tox-tbtn { + align-items: center; + background: transparent; + border: 0; + border-radius: 3px; + box-shadow: none; + color: #222f3e; + display: flex; + flex: 0 0 auto; + font-size: 14px; + font-style: normal; + font-weight: normal; + height: 34px; + justify-content: center; + margin: 2px 0 3px 0; + outline: none; + overflow: hidden; + padding: 0; + text-transform: none; + width: 34px; +} +.tox .tox-tbtn svg { + display: block; + fill: #222f3e; +} +.tox .tox-tbtn.tox-tbtn-more { + padding-left: 5px; + padding-right: 5px; + width: inherit; +} +.tox .tox-tbtn:focus { + background: #dee0e2; + border: 0; + box-shadow: none; +} +.tox .tox-tbtn:hover { + background: #dee0e2; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:hover svg { + fill: #222f3e; +} +.tox .tox-tbtn:active { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn:active svg { + fill: #222f3e; +} +.tox .tox-tbtn--disabled, +.tox .tox-tbtn--disabled:hover, +.tox .tox-tbtn:disabled, +.tox .tox-tbtn:disabled:hover { + background: transparent; + border: 0; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); + cursor: not-allowed; +} +.tox .tox-tbtn--disabled svg, +.tox .tox-tbtn--disabled:hover svg, +.tox .tox-tbtn:disabled svg, +.tox .tox-tbtn:disabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--enabled, +.tox .tox-tbtn--enabled:hover { + background: #c8cbcf; + border: 0; + box-shadow: none; + color: #222f3e; +} +.tox .tox-tbtn--enabled > *, +.tox .tox-tbtn--enabled:hover > * { + transform: none; +} +.tox .tox-tbtn--enabled svg, +.tox .tox-tbtn--enabled:hover svg { + /* stylelint-disable-line no-descending-specificity */ + fill: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) { + color: #222f3e; +} +.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg { + fill: #222f3e; +} +.tox .tox-tbtn:active > * { + transform: none; +} +.tox .tox-tbtn--md { + height: 51px; + width: 51px; +} +.tox .tox-tbtn--lg { + flex-direction: column; + height: 68px; + width: 68px; +} +.tox .tox-tbtn--return { + -ms-grid-row-align: stretch; + align-self: stretch; + height: unset; + width: 16px; +} +.tox .tox-tbtn--labeled { + padding: 0 4px; + width: unset; +} +.tox .tox-tbtn__vlabel { + display: block; + font-size: 10px; + font-weight: normal; + letter-spacing: -0.025em; + margin-bottom: 4px; + white-space: nowrap; +} +.tox .tox-tbtn--select { + margin: 2px 0 3px 0; + padding: 0 4px; + width: auto; +} +.tox .tox-tbtn__select-label { + cursor: default; + font-weight: normal; + margin: 0 4px; +} +.tox .tox-tbtn__select-chevron { + align-items: center; + display: flex; + justify-content: center; + width: 16px; +} +.tox .tox-tbtn__select-chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-tbtn--bespoke .tox-tbtn__select-label { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 7em; +} +.tox .tox-split-button { + border: 0; + border-radius: 3px; + box-sizing: border-box; + display: flex; + margin: 2px 0 3px 0; + overflow: hidden; +} +.tox .tox-split-button:hover { + box-shadow: 0 0 0 1px #dee0e2 inset; +} +.tox .tox-split-button:focus { + background: #dee0e2; + box-shadow: none; + color: #222f3e; +} +.tox .tox-split-button > * { + border-radius: 0; +} +.tox .tox-split-button__chevron { + width: 16px; +} +.tox .tox-split-button__chevron svg { + fill: rgba(34, 47, 62, 0.5); +} +.tox .tox-split-button .tox-tbtn { + margin: 0; +} +.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child { + width: 30px; +} +.tox.tox-platform-touch .tox-split-button__chevron { + width: 20px; +} +.tox .tox-split-button.tox-tbtn--disabled:hover, +.tox .tox-split-button.tox-tbtn--disabled:focus, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover, +.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus { + background: transparent; + box-shadow: none; + color: rgba(34, 47, 62, 0.5); +} +.tox .tox-toolbar-overlord { + background-color: #fff; +} +.tox .tox-toolbar, +.tox .tox-toolbar__primary, +.tox .tox-toolbar__overflow { + background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff; + background-color: #fff; + display: flex; + flex: 0 0 auto; + flex-shrink: 0; + flex-wrap: wrap; + padding: 0 0; +} +.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed { + height: 0; + opacity: 0; + padding-bottom: 0; + padding-top: 0; + visibility: hidden; +} +.tox .tox-toolbar__overflow--growing { + transition: height 0.3s ease, opacity 0.2s linear 0.1s; +} +.tox .tox-toolbar__overflow--shrinking { + transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s; +} +.tox .tox-menubar + .tox-toolbar, +.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary { + border-top: 1px solid #cccccc; + margin-top: -1px; +} +.tox .tox-toolbar--scrolling { + flex-wrap: nowrap; + overflow-x: auto; +} +.tox .tox-pop .tox-toolbar { + border-width: 0; +} +.tox .tox-toolbar--no-divider { + background-image: none; +} +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child, +.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary { + border-top: 1px solid #cccccc; +} +.tox.tox-tinymce-aux .tox-toolbar__overflow { + background-color: #fff; + border: 1px solid #cccccc; + border-radius: 3px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15); +} +.tox .tox-toolbar__group { + align-items: center; + display: flex; + flex-wrap: wrap; + margin: 0 0; + padding: 0 4px 0 4px; +} +.tox .tox-toolbar__group--pull-right { + margin-left: auto; +} +.tox .tox-toolbar--scrolling .tox-toolbar__group { + flex-shrink: 0; + flex-wrap: nowrap; +} +.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) { + border-right: 1px solid #cccccc; +} +.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) { + border-left: 1px solid #cccccc; +} +.tox .tox-tooltip { + display: inline-block; + padding: 8px; + position: relative; +} +.tox .tox-tooltip__body { + background-color: #222f3e; + border-radius: 3px; + box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3); + color: rgba(255, 255, 255, 0.75); + font-size: 14px; + font-style: normal; + font-weight: normal; + padding: 4px 8px; + text-transform: none; +} +.tox .tox-tooltip__arrow { + position: absolute; +} +.tox .tox-tooltip--down .tox-tooltip__arrow { + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-top: 8px solid #222f3e; + bottom: 0; + left: 50%; + position: absolute; + transform: translateX(-50%); +} +.tox .tox-tooltip--up .tox-tooltip__arrow { + border-bottom: 8px solid #222f3e; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + left: 50%; + position: absolute; + top: 0; + transform: translateX(-50%); +} +.tox .tox-tooltip--right .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-left: 8px solid #222f3e; + border-top: 8px solid transparent; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-tooltip--left .tox-tooltip__arrow { + border-bottom: 8px solid transparent; + border-right: 8px solid #222f3e; + border-top: 8px solid transparent; + left: 0; + position: absolute; + top: 50%; + transform: translateY(-50%); +} +.tox .tox-well { + border: 1px solid #cccccc; + border-radius: 3px; + padding: 8px; + width: 100%; +} +.tox .tox-well > *:first-child { + margin-top: 0; +} +.tox .tox-well > *:last-child { + margin-bottom: 0; +} +.tox .tox-well > *:only-child { + margin: 0; +} +.tox .tox-custom-editor { + border: 1px solid #cccccc; + border-radius: 3px; + display: flex; + flex: 1; + position: relative; +} +/* stylelint-disable */ +.tox { + /* stylelint-enable */ +} +.tox .tox-dialog-loading::before { + background-color: rgba(0, 0, 0, 0.5); + content: ""; + height: 100%; + position: absolute; + width: 100%; + z-index: 1000; +} +.tox .tox-tab { + cursor: pointer; +} +.tox .tox-dialog__content-js { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-dialog__body-content .tox-collection { + display: flex; + flex: 1; + -ms-flex-preferred-size: auto; +} +.tox .tox-image-tools-edit-panel { + height: 60px; +} +.tox .tox-image-tools__sidebar { + height: 60px; +} diff --git a/public/tinymce/skins/ui/oxide/skin.min.css b/public/tinymce/skins/ui/oxide/skin.min.css new file mode 100644 index 0000000..f570b8e --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox[dir=rtl] .tox-icon--flip svg{transform:rotateY(180deg)}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item--state-disabled .tox-collection__item-caret svg{fill:rgba(34,47,62,.5)}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{cursor:pointer;text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar,.tox .tox-pop--resizing .tox-toolbar__group{flex-wrap:nowrap}.tox .tox-pop--transition{transition:.15s ease;transition-property:left,right,top,bottom}.tox .tox-pop--transition::after,.tox .tox-pop--transition::before{transition:all .15s,visibility 0s,opacity 75ms ease 75ms}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;opacity:1;position:absolute;width:0}.tox .tox-pop.tox-pop--inset::after,.tox .tox-pop.tox-pop--inset::before{opacity:0;transition:all 0s .15s,visibility 0s,opacity 75ms ease}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.css b/public/tinymce/skins/ui/oxide/skin.mobile.css new file mode 100644 index 0000000..875721a --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.mobile.css @@ -0,0 +1,673 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +/* RESET all the things! */ +.tinymce-mobile-outer-container { + all: initial; + display: block; +} +.tinymce-mobile-outer-container * { + border: 0; + box-sizing: initial; + cursor: inherit; + float: none; + line-height: 1; + margin: 0; + outline: 0; + padding: 0; + -webkit-tap-highlight-color: transparent; + /* TBIO-3691, stop the gray flicker on touch. */ + text-shadow: none; + white-space: nowrap; +} +.tinymce-mobile-icon-arrow-back::before { + content: "\e5cd"; +} +.tinymce-mobile-icon-image::before { + content: "\e412"; +} +.tinymce-mobile-icon-cancel-circle::before { + content: "\e5c9"; +} +.tinymce-mobile-icon-full-dot::before { + content: "\e061"; +} +.tinymce-mobile-icon-align-center::before { + content: "\e234"; +} +.tinymce-mobile-icon-align-left::before { + content: "\e236"; +} +.tinymce-mobile-icon-align-right::before { + content: "\e237"; +} +.tinymce-mobile-icon-bold::before { + content: "\e238"; +} +.tinymce-mobile-icon-italic::before { + content: "\e23f"; +} +.tinymce-mobile-icon-unordered-list::before { + content: "\e241"; +} +.tinymce-mobile-icon-ordered-list::before { + content: "\e242"; +} +.tinymce-mobile-icon-font-size::before { + content: "\e245"; +} +.tinymce-mobile-icon-underline::before { + content: "\e249"; +} +.tinymce-mobile-icon-link::before { + content: "\e157"; +} +.tinymce-mobile-icon-unlink::before { + content: "\eca2"; +} +.tinymce-mobile-icon-color::before { + content: "\e891"; +} +.tinymce-mobile-icon-previous::before { + content: "\e314"; +} +.tinymce-mobile-icon-next::before { + content: "\e315"; +} +.tinymce-mobile-icon-large-font::before, +.tinymce-mobile-icon-style-formats::before { + content: "\e264"; +} +.tinymce-mobile-icon-undo::before { + content: "\e166"; +} +.tinymce-mobile-icon-redo::before { + content: "\e15a"; +} +.tinymce-mobile-icon-removeformat::before { + content: "\e239"; +} +.tinymce-mobile-icon-small-font::before { + content: "\e906"; +} +.tinymce-mobile-icon-readonly-back::before, +.tinymce-mobile-format-matches::after { + content: "\e5ca"; +} +.tinymce-mobile-icon-small-heading::before { + content: "small"; +} +.tinymce-mobile-icon-large-heading::before { + content: "large"; +} +.tinymce-mobile-icon-small-heading::before, +.tinymce-mobile-icon-large-heading::before { + font-family: sans-serif; + font-size: 80%; +} +.tinymce-mobile-mask-edit-icon::before { + content: "\e254"; +} +.tinymce-mobile-icon-back::before { + content: "\e5c4"; +} +.tinymce-mobile-icon-heading::before { + /* TODO: Translate */ + content: "Headings"; + font-family: sans-serif; + font-size: 80%; + font-weight: bold; +} +.tinymce-mobile-icon-h1::before { + content: "H1"; + font-weight: bold; +} +.tinymce-mobile-icon-h2::before { + content: "H2"; + font-weight: bold; +} +.tinymce-mobile-icon-h3::before { + content: "H3"; + font-weight: bold; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask { + align-items: center; + display: flex; + justify-content: center; + background: rgba(51, 51, 51, 0.5); + height: 100%; + position: absolute; + top: 0; + width: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container { + align-items: center; + border-radius: 50%; + display: flex; + flex-direction: column; + font-family: sans-serif; + font-size: 1em; + justify-content: space-between; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + align-items: center; + display: flex; + justify-content: center; + flex-direction: column; + font-size: 1em; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon { + align-items: center; + display: flex; + justify-content: center; + border-radius: 50%; + height: 2.1em; + width: 2.1em; + background-color: white; + color: #207ab7; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before { + content: "\e900"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon { + z-index: 2; +} +.tinymce-mobile-android-container.tinymce-mobile-android-maximized { + background: #ffffff; + border: none; + bottom: 0; + display: flex; + flex-direction: column; + left: 0; + position: fixed; + right: 0; + top: 0; +} +.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) { + position: relative; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket { + display: flex; + flex-grow: 1; +} +.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe { + display: flex !important; + flex-grow: 1; + height: auto !important; +} +.tinymce-mobile-android-scroll-reload { + overflow: hidden; +} +:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar { + margin-top: 23px; +} +.tinymce-mobile-toolstrip { + background: #fff; + display: flex; + flex: 0 0 auto; + z-index: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar { + align-items: center; + background-color: #fff; + border-bottom: 1px solid #cccccc; + display: flex; + flex: 1; + height: 2.5em; + width: 100%; + /* Make it no larger than the toolstrip, so that it needs to scroll */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex-shrink: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container { + background: #f44336; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group { + flex-grow: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button { + align-items: center; + display: flex; + height: 80%; + margin-left: 2px; + margin-right: 2px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected { + background: #c8cbcf; + color: #cccccc; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type { + background: #207ab7; + color: #eceff1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar { + /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group { + align-items: center; + display: flex; + height: 100%; + flex: 1; + padding-bottom: 0.4em; + padding-top: 0.4em; + /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* For widgets like the colour picker, use the whole height */ +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { + display: flex; + min-height: 1.5em; + overflow: hidden; + padding-left: 0; + padding-right: 0; + position: relative; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain { + display: flex; + height: 100%; + transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen { + display: flex; + flex: 0 0 auto; + justify-content: space-between; + width: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input { + font-family: Sans-serif; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container { + display: flex; + flex-grow: 1; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x { + -ms-grid-row-align: center; + align-self: center; + background: inherit; + border: none; + border-radius: 50%; + color: #888; + font-size: 0.6em; + font-weight: bold; + height: 100%; + padding-right: 2px; + position: absolute; + right: 0; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x { + display: none; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before { + align-items: center; + display: flex; + font-weight: bold; + height: 100%; + padding-left: 0.5em; + padding-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before { + visibility: hidden; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item { + color: #cccccc; + font-size: 10px; + line-height: 10px; + margin: 0 2px; + padding-top: 3px; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active { + color: #c8cbcf; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before { + margin-left: 0.5em; + margin-right: 0.9em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before { + margin-left: 0.9em; + margin-right: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider { + display: flex; + flex: 1; + margin-left: 0; + margin-right: 0; + padding: 0.28em 0; + position: relative; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line { + background: #cccccc; + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container { + padding-left: 2em; + padding-right: 2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container { + align-items: center; + display: flex; + flex-grow: 1; + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient { + background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%); + display: flex; + flex: 1; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black { + /* Not part of theming */ + background: black; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white { + /* Not part of theming */ + background: white; + height: 0.2em; + margin-bottom: 0.3em; + margin-top: 0.3em; + width: 1.2em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb { + /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave + * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is + * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without + * this approach. + */ + align-items: center; + background-clip: padding-box; + background-color: #455a64; + border: 0.5em solid rgba(136, 136, 136, 0); + border-radius: 3em; + bottom: 0; + color: #fff; + display: flex; + height: 0.5em; + justify-content: center; + left: -10px; + margin: auto; + position: absolute; + top: 0; + transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1); + width: 0.5em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active { + border: 0.5em solid rgba(136, 136, 136, 0.39); +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper, +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div { + align-items: center; + display: flex; + height: 100%; + flex: 1; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper { + flex-direction: column; + justify-content: center; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item { + align-items: center; + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) { + height: 100%; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container { + display: flex; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input { + background: #ffffff; + border: none; + border-radius: 0; + color: #455a64; + flex-grow: 1; + font-size: 0.85em; + padding-bottom: 0.1em; + padding-left: 5px; + padding-top: 0.1em; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder { + /* WebKit, Blink, Edge */ + color: #888; +} +/* dropup */ +.tinymce-mobile-dropup { + background: white; + display: flex; + overflow: hidden; + width: 100%; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking { + transition: height 0.3s ease-out; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-growing { + transition: height 0.3s ease-in; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-closed { + flex-grow: 0; +} +.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) { + flex-grow: 1; +} +/* TODO min-height for device size and orientation */ +.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; +} +@media only screen and (orientation: landscape) { + .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 200px; + } +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) { + min-height: 150px; + } +} +/* styles menu */ +.tinymce-mobile-styles-menu { + font-family: sans-serif; + outline: 4px solid black; + overflow: hidden; + position: relative; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"] { + display: flex; + flex-direction: column; + height: 100%; + position: absolute; + width: 100%; +} +.tinymce-mobile-styles-menu [role="menu"].transitioning { + transition: transform 0.5s ease-in-out; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item { + border-bottom: 1px solid #ddd; + color: #455a64; + cursor: pointer; + display: flex; + padding: 1em 1em; + position: relative; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before { + color: #455a64; + content: "\e314"; + font-family: 'tinymce-mobile', sans-serif; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after { + color: #455a64; + content: "\e315"; + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after { + font-family: 'tinymce-mobile', sans-serif; + padding-left: 1em; + padding-right: 1em; + position: absolute; + right: 0; +} +.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator, +.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser { + align-items: center; + background: #fff; + border-top: #455a64; + color: #455a64; + display: flex; + min-height: 2.5em; + padding-left: 1em; + padding-right: 1em; +} +.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="before"] { + transform: translate(-100%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="current"] { + transform: translate(0%); +} +.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state], +.tinymce-mobile-styles-menu [data-transitioning-state="after"] { + transform: translate(100%); +} +@font-face { + font-family: 'tinymce-mobile'; + font-style: normal; + font-weight: normal; + src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff'); +} +@media (min-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 25px; + } +} +@media (max-device-width: 700px) { + .tinymce-mobile-outer-container, + .tinymce-mobile-outer-container input { + font-size: 18px; + } +} +.tinymce-mobile-icon { + font-family: 'tinymce-mobile', sans-serif; +} +.mixin-flex-and-centre { + align-items: center; + display: flex; + justify-content: center; +} +.mixin-flex-bar { + align-items: center; + display: flex; + height: 100%; +} +.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe { + background-color: #fff; + width: 100%; +} +.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + background-color: #207ab7; + border-radius: 50%; + bottom: 1em; + color: white; + font-size: 1em; + height: 2.1em; + position: fixed; + right: 2em; + width: 2.1em; + align-items: center; + display: flex; + justify-content: center; +} +@media only screen and (min-device-width:700px) { + .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + font-size: 1.2em; + } +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket { + height: 300px; + overflow: hidden; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe { + height: 100%; +} +.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip { + display: none; +} +/* + Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets + increased and the whole body becomes scrollable. It's important! + */ +input[type="file"]::-webkit-file-upload-button { + display: none; +} +@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) { + .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { + bottom: 50%; + } +} diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.min.css b/public/tinymce/skins/ui/oxide/skin.mobile.min.css new file mode 100644 index 0000000..3a45cac --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.mobile.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}} diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.css new file mode 100644 index 0000000..d2adc4d --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.css @@ -0,0 +1,37 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll { + overflow: hidden; +} +.tox-fullscreen { + border: 0; + height: 100%; + margin: 0; + overflow: hidden; + -ms-scroll-chaining: none; + overscroll-behavior: none; + padding: 0; + touch-action: pinch-zoom; + width: 100%; +} +.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle { + display: none; +} +.tox.tox-tinymce.tox-fullscreen, +.tox-shadowhost.tox-fullscreen { + left: 0; + position: fixed; + top: 0; + z-index: 1200; +} +.tox.tox-tinymce.tox-fullscreen { + background-color: transparent; +} +.tox-fullscreen .tox.tox-tinymce-aux, +.tox-fullscreen ~ .tox.tox-tinymce-aux { + z-index: 1201; +} diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css new file mode 100644 index 0000000..a0893b9 --- /dev/null +++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css @@ -0,0 +1,7 @@ +/** + * Copyright (c) Tiny Technologies, Inc. All rights reserved. + * Licensed under the LGPL or a commercial license. + * For LGPL see License.txt in the project root for license information. + * For commercial licenses see https://www.tiny.cloud/ + */ +body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201} diff --git a/public/ws-logo.svg b/public/ws-logo.svg new file mode 100644 index 0000000..fb8e867 --- /dev/null +++ b/public/ws-logo.svg @@ -0,0 +1,15 @@ + + + + + background + + + + + + + Layer 1 + + + \ No newline at end of file diff --git a/public/xieyi/01.html b/public/xieyi/01.html new file mode 100644 index 0000000..444a9da --- /dev/null +++ b/public/xieyi/01.html @@ -0,0 +1,700 @@ + + + + + 《隐私政策》 + + + +

+

《服务协议与隐私政策》

+
+
+ +

  更新日期:2024年1月19日

+ +

  生效日期:2021年11月19日

+ +

  本政策适用于南宁市网宿信息科技有限公司旗下平台产品及相关服务。

+ +

  您所使用的“软件应用平台”产品的运营者公司名称为南宁市网宿信息科技有限公司,注册地址为:广西南宁市五象大道401号五象航洋城1号楼1226室,个人信息保护相关负责人联系方式为:603684184@qq.com。 +

+ +

  如您对本政策或相关事宜有疑问或建议等,您可以通过如下投诉渠道与我们取得联系:

+ +

  举报邮箱:603684184@qq.com

+ +

  本隐私政策将帮助您了解以下内容:

+ +

  0、引言

+ +

  1、我们如何收集和使用您的个人信息

+ +

  2、我们如何使用Cookie、同类技术和SDK技术

+ +

  3、我们如何共享、转让、公开披露您的个人信息

+ +

  4、我们如何保护您的个人信息

+ +

  5、您如何管理您的个人信息/您的权利

+ +

  6、我们如何处理未成年人的个人信息

+ +

  7、存储信息的地点和期限,您的个人信息如何在全球范围转移

+ +

  8、本隐私政策如何更新

+ +

  9、如何联系我们/用户申诉渠道和反馈机制

+ +

  10、广告/我们向您发送的信息

+ +

  11、适用范围

+ +

  南宁市网宿信息科技有限公司(以下统称“我们”)深知个人信息对您的重要性,并会尽力保护您的个人信息安全可靠,我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则,目的明确原则,选择同意原则,最少够用原则,确保安全原则,主体参与原则,公开透明原则等等。同时熟的安全解决方案,采取相应的安全保护措施来保护您的个人信息。 +

+ +

  我们承诺,我们将按业界成请在使用我们的产品、服务前,仔细阅读并了解本《隐私政策》。

+ +

  0、引言

+ +

  南宁市网宿信息科技有限公司软件平台对其收集的用户信息严格保密,并建立健全用户信息保护制度,以便为每一位用户提供可靠、放心的服务:

+ +

  1、清晰明确

+ +

  我们将尽可能采用通俗易懂的文字为您阐释隐私政策,以便您能更清晰地了解我们如何保护和处理所收集的您的信息。

+ +

  2、保障权益

+ +

  我们将采取充分、合理的措施保障您的隐私权益。

+ +

  3、尊重用户

+ +

  我们尊重用户的选择权、知情权等权利的自由行使,允许您管理您的个人信息。

+ +

  4、必要安全

+ +

  我们将仅收取必要的信息,并利用这些信息为您提供安全、详实的服务。

+ +

  5、及时贴心

+ +

  我们将随时聆听您的询问,并尽快为您解答您的疑问。

+ +

  希望您仔细阅读《隐私政策》(以下简称“本政策”),详细了解我们对信息的收集、使用方式,以便您更好地了解我们的服务并在是否选择服务以及选择何种服务时更加符合您的真实意思表示。

+ +

  请您在注册或使用我们的服务前仔细阅读本政策,若您使用我们提供的服务,即表示您认同我们在本政策中所述内容。

+ +

  如您有问题,请联系我们。

+ +

  为更好的说明,本政策中的下列概念是指:

+ +

  个人常用设备信息:指包括硬件序列号、设备MAC地址、软件列表、唯一设备识别码(如IMEI/android + ID/IDFA/OPENUDID/GUID、SIM卡IMSI信息等)等在内的描述个人常用设备基本情况的信息。

+ +

  个人位置信息:指包括行踪轨迹、精准定位信息、住宿信息、经纬度等。

+ +

  1、我们如何收集和使用您的个人信息

+ +

  个人信息是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息,我们会出于本政策所述的以下目的,收集和使用您的个人信息:

+ +

  收集个人信息的业务功能以及收集的个人信息

+ +

  我们将向您提供下列服务,并在提供下列服务时分别收集如下所列的信息:

+ +

  1.为帮助您使用南宁市网宿信息科技有限公司软件平台的相关服务。

+ +

  为完成创建账号,并保护您的账号安全,您需要提供以下信息:手机权限、手机号码授权。

+ +

  为了南宁市网宿信息科技有限公司软件平台的用户都拥有丰富完善的社交资料,以便挑选合适的交友对象,以及提升推荐准确度,提高交友效率,您还需提供昵称、性别、生日、身高、家乡、现居地、学历、自我介绍、个人照片权限或存储权限(如您选择拍摄头像则需相机权限),以及选填毕业学校、职业、年收入。 +

+ +

  为了满足国家法律法规的网络实名制要求,并保证南宁市网宿信息科技有限公司软件平台真实、安全的社交环境,您需要提供真实姓名、身份证号、个人生物信息中的面部特征信息并授权身份证核验以完成实名认证。

+ +

  手机号码、真实姓名及身份证号、身高、现居地、年收入、个人生物识别信息中的面部特征信息属于敏感信息,收集此类信息是为了满足国家法律法规的网络实名制要求,同时保证南宁市网宿信息科技有限公司软件平台产品真实、安全、资料丰富的社交氛围。 +

+ +

  若您不提供这类信息,您可能无法正常使用我们的全部服务。

+ +

  如果您提供以下额外信息,将有助于我们给您提供更好的服务和体验:麦克风权限(个人生物识别信息中的声纹特征信息)、学历认证材料(能证明您学历学校的相关信息)。以上信息主要为帮助您使用语音自我介绍功能以及完成您的学历认证。声纹特征信息属于敏感信息。但如果您不提供这些信息,将不会影响使用本服务的基本业务功能。 +

+ +

  您提供的上述信息,将在您使用本服务期间持续授权我们使用。我们会一直保存您的信息直至您注销账号。在您注销账号时,我们将停止使用并删除或匿名化处理上述信息。

+ +

  上述信息仅存储于中华人民共和国境内,如需跨境传输,我们将会单独征得您的授权同意。

+ +

  2.为帮助您与其他用户进行聊天。

+ +

  当您使用聊天服务时,我们没有要求您必须提供的信息。

+ +

  如果您提供以下额外信息,将有助于我们给您提供更好的服务和体验:相册权限、相机权限、麦克风权限。但如果您不提供这些信息,将不会影响使用本服务的基本业务功能。

+ +

  您提供的上述信息,将在您使用本服务期间持续授权我们使用。我们会一直保存您的信息直至您注销账号。在您注销账号时,我们将停止使用并删除或匿名化处理上述信息。

+ +

  上述信息仅存储于中华人民共和国境内,如需跨境传输,我们将会单独征得您的授权同意。

+ +

  3.为帮助您使用滑动卡片服务。

+ +

  当您使用滑动卡片服务时,您需要提供以下功能、信息以保证功能正常使用:个人位置信息。收集此类信息是为实现基于地理位置的社交推荐。

+ +

  若您不提供这类信息,您可能无法正常使用滑动卡片的服务。

+ +

  在使用过程中,如果您提供以下额外信息,将有助于我们给您提供更好的服务和体验:我的生活、婚姻状态、车产、房产。但如果您不提供这些信息,将不会影响使用本服务的基本业务功能。

+ +

  个人位置信息、我的生活、婚姻状态、车产、房产属于敏感信息。

+ +

  您提供的上述信息,将在您使用本服务期间持续授权我们使用。我们会一直保存您的信息直至您注销账号。在您注销账号时,我们将停止使用并删除或匿名化处理上述信息。

+ +

  上述信息仅存储于中华人民共和国境内,如需跨境传输,我们将会单独征得您的授权同意。

+ +

  4.为帮助您使用视频约会功能。当您使用视频约会功能时,您需要提供以下功能、信息以保证功能正常使用:相册权限、摄像头权限、麦克风权限、视频的留存与内容查验授权。

+ +

  若您不提供这类信息,您可能无法正常使用短视频的服务。

+ +

  视频的留存与内容查验授权属于敏感信息,收集此类信息是为保证网络视频社交的安全性。

+ +

  在使用过程中,如果您提供以下额外信息,将有助于我们给您提供更好的服务和体验:日历权限。但如果您不提供这些信息,将不会影响使用本服务的基本业务功能。

+ +

  您提供的上述信息,将在您使用本服务期间持续授权我们使用。我们会一直保存您的信息直至您注销账号。在您注销账号时,我们将停止使用并删除或匿名化处理上述信息。

+ +

  上述信息仅存储于中华人民共和国境内,如需跨境传输,我们将会单独征得您的授权同意。

+ +

  5.为帮助您使用红娘服务。

+ +

  当您使用红娘服务时,我们没有要求您必须提供的信息。

+ +

  为帮助您使用分享服务。 当您使用分享服务时,如果您提供以下额外信息,将有助于我们给您提供更好的服务和体验:剪切板信息、粘贴板信息。如果您不提供这些信息,将会一定程度影响使用本服务的体验。

+ +

  7.为帮助您使用支付功能。

+ +

  支付功能由与我们合作的第三方支付机构向您提供服务,第三方支付机构将会需要收集您的信息,我们将无法获取您的信息。拒绝提供信息仅会使您无法使用上述支付功能,但不影响您使用南宁市网宿信息科技有限公司软件平台的其他功能。

+ +

  8.为保障软件与服务的安全运营和运营质量。

+ +

  为了保障软件与服务的安全运营、运行的质量及效率,我们会收集您的硬件型号、操作系统版本、国际移动设备识别码、唯一设备标识符、网络设备硬件地址、IP地址、软件版本号和网络接入方式。为预防恶意程序、保障运营质量及效率,我们还会收集软件的崩溃情、操作日志、性能数据及应用来源。我们可能使用您的账户信息、设备信息、服务日志信息及我们关联方、合作方在取得您授权或依法可以共享的信息,用于判断账户安全、进行身份验证、检测及防范安全事件。 +

+ +

  9.为向您提供个性化服务。

+ +

  为向您提供某些个性化服务,我们会在取得您授权的前提下,收集您提供给与我们合作的第三方的您的信息。如您不授权我们获取您的相关信息,您将无法享受某些个性化服务,但不影响您使用 南宁市网宿信息科技有限公司软件平台的其他功能。 +

+ +

  您知悉并同意,当发现您正在遭受电信诈骗或处于其他可能损害您的人身或财产安全的情况时,您同意我们通过电话、短信或其他可以联系到您的方式与您取得联系,以保护您不受侵害。

+ +

  用户画像、个性化推送的说明

+ +

  为了实现个性化推荐的功能,我们会根据上述功能中所收集的信息进行综合统计并通过算法做特征与偏好性分析,用以向您定向推送可能感兴趣的其他用户,以及推送可能感兴趣的社区内容。如您不需要个性化推送服务,您可在“我的-设置-账号安全”中关闭个性化推送服务。 +

+ +

  我们如何使用收集的信息

+ +

  我们将按照前述的用途使用您的信息。当我们要将信息用于本政策未载明的其他用途时,会事先征得您的同意。当我们要将基于特定目的收集的信息用于其他目的时,会事先征得您的同意。

+ +

  2、我们如何使用Cookie、同类技术和SDK技术

+ +

  Cookie

+ +

  为确保网站正常运转、为您获得更轻松的访问体验、向您推荐您可能感兴趣的内容,我们可能会在您的计算机或移动设备上存储名为Cookie的小数据文件。Cookie通常包含标识符、站点名称以及一些号码和字符。您可以在浏览器中进行相应的数据清除操作。 +

+ +

  其他技术

+ +

  除Cookie外,我们还会在网站上使用其他同类技术。我们向您发送的会员短信通知或南宁市网宿信息科技有限公司软件小助手站内通知可能含有链接至我们网站内容的地址链接,如果您点击该链接,我们则会跟踪此次点击,帮助我们了解您的产品或服务偏好以便于我们主动改善客户服务体验。如果您不希望自己的活动以这种方式被追踪,则可以随时从我们的寄信名单中退订。 +

+ +

  SDK技术

+ +

  SDK技术由与我们合作的第三方机构提供,我们仅能知悉其要求获得授权的权限。第三方机构将会需要收集您的信息,我们无法获取您的信息,除非第三方机构明确向我们披露的要收集的敏感信息。我们会对合作方获取个人信息的行为进行严格的安全监测,以保护您的个人信息安全。 +

+ +

  我们对接入的相关第三方SDK及其他第三方主体收集信息的情况在以下目录中列明。您可以通过相关链接查看第三方的数据使用和保护规则。请注意,第三方SDK可能由于版本升级、策略调整等原因导致其个人信息处理类型发生变化,请以其公示的官方说明为准。Alipay(支付宝)SDK +

+ +

  第三方名称:支付宝网络有限公司

+ +

  使用目的:支付功能

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集的个人信息类型:MAC地址、IMEI、IMSI、SIM卡序列号、IDFA、ICCID、Android + id、硬件序列号、设备识别信息、设备状态信息、设备环境信息、网络连接信息。申请读取及写入存储器权限,目的是为了保障支付功能的稳定运行

+ +

  第三方隐私政策或官网链接:

+ +

  https://opendocs.alipay.com/open/54/01g6qm

+ +

  高德地图 SDK

+ +

  第三方名称:高德软件有限公司

+ +

  使用目的:帮助用户发布信息时定位位置

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式收集的个人信息类型:设备标识符

+ +

  (Android如Android ID、IMEI、MEID、

+ +

  IMSI、OAID、Serial,iOS如IDFV、

+ +

  IDFA)、MAC地址、IP地址、位置信息

+ +

  (如GPS、WLAN接入点、蓝牙和基站)、

+ +

  设备传感器、当前应用信息(应用名、应用版本号)

+ +

  第三方隐私政策或官网链接:

+ +

  https://lbs.amap.com/pages/privacy/

+ +

  个推推送SDK

+ +

  使用目的:推送消息

+ +

  数据类型:网络信息、IMEI、openid

+ +

  官网链接:https://open.tencent.com/

+ + +

  微信 SDK

+ +

  第三方名称:深圳市腾讯计算机系统有限公司

+ +

  使用目的:支持微信分享

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集的个人信息类型:设备标识符

+ +

  (Android如IMEI、Android ID、Serial, iOS如IDFV)、MAC地址、WLAN接入点、分享图片或内容

+ +

  第三方隐私政策或官网链接:https://support.weixin.qq.com/cgi-

+ +

  bin/mmsupportacctnodeweb-

+ +

  bin/pages/RYiYJkLOrQwu0nb8

+ +

  微信支付SDK

+ +

  第三方名称:财富通支付科技有限公司

+ +

  使用目的:支持微信支付

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集个人信息类型:设备标识符(Android如IMEI、Android ID、Serial)、MAC地址、WLAN接入点

+ +

  第三方隐私政策或官网链接:

+ +

  https://www.tenpay.com/v3/helpcenter/low/priv

+ +

  融云消息SDK

+ +

  第三方名称:北京云中融信网络科技有限公司

+ +

  使用目的:实现单群聊、系统通知等通信能力,安全可靠、全球互通。处理方式:通过去标识化、加密传输和处

+ +

  理的安全处理方式

+ +

  收集的个人信息类型:设备ID

+ +

  (iOS:deviceToken / Android:AndroidId)、

+ +

  操作系统版本、网络类型、手机机型、MNO

+ +

  第三方隐私政策或官网链接:

+ +

  https://docs.rongcloud.cn/v4/views/im/noui/intr

+ +

  推送通知消息(OPPO推送SDK)

+ +

  第三方名称:广东欢太科技有限公司

+ +

  使用目的:用于在OPPO设备上推送消息

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集个人信息类型:设备标识信息、网络信息、设备状态信息、应用使用信息

+ +

  第三方隐私政策或官网链接:

+ +

  https://open.oppomobile.com/wiki/doc#id=104

+ +

  推送通知消息(华为推送SDK)

+ +

  第三方名称:华为软件技术有限公司使用目的:

+ +

  1.提供消息推送服务;

+ +

  2.统计华为推送SDK接口调用成功率。

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集个人信息类型:应用基本信息、应用内设备标识符、设备的硬件信息、系统基本信息和系统设置信息

+ +

  第三方隐私政策或官网链接:

+ +

  https://developer.huawei.com/consumer/cn/doc/ Guides/privacy-statement-0000001050042021

+ +

  推送通知消息(VIVO推送SDK)

+ +

  第三方名称:维沃移动通信有限公司

+ +

  使用目的:用于在VIVO设备上推送消息

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集个人信息类型:设备标识信息、网络状态信息第三方隐私政策或官网链接:

+ +

  https://dev.vivo.com.cn

+ +

  腾讯浏览服务(TBS腾讯浏览服务;腾讯浏览服务;腾讯X5浏览器;腾讯浏览器)等SDK

+ +

  第三方名称:深圳市腾讯计算机系统有限公司

+ +

  使用目的:浏览word,excel,PPT,txt等格式文件

+ +

  示例:用户在于他/她人聊天是可在线打开对方发送的相关文件进行预览。

+ +

  处理方式:通过去标识化、加密传输和处理的安全处理方式

+ +

  收集个人信息类型:设备信息(设备名称、设备型号、MAC地址、设备识别码、操作系统和应用程序版本、语言设置、分辨率、服务提供商网络ID(PLMN))、设备所在位置相关信息(包括您授权的GPS位置信息以及WLAN接入点、蓝牙和基站传感器信息) +

+ +

  第三方隐私政策或官网链接:

+ +

  https://x5.tencent.com/tbs/guide/develop.html#5

+ +

  3、我们如何共享、转让、公开披露您的个人信息

+ +

  共享

+ +

  我们不会与南宁市网宿信息科技有限公司软件服务提供者以外的公司、组织和个人共享您的个人信息,但以下情况除外:

+ +

  1、在获取明确同意的情况下共享:获得您的明确同意后,我们会与其他方共享您的个人信息;

+ +

  2、在法定情形下的共享:我们可能会根据法律法规规定、诉讼争议解决需要,或按行政、司法机关依法提出的要求,对外共享您的个人信息;

+ +

  3、与关联公司间共享:为便于我们基于关联账号共同向您提供服务,推荐您可能感兴趣的信息或保护南宁市网宿信息科技有限公司软件平台关联公司或其他用户或公众的人身财产安全免遭侵害,您的个人信息可能会与我们的关联公司共享。我们只会共享必要的个人信息(如为便于您通过南宁市网宿信息科技有限公司软件平台账号使用我们关联公司产品或服务,我们会向关联公司共享您必要的账户信息),如果我们共享您的个人敏感信息或关联公司改变个人信息的使用及处理目的,将再次征求您的授权同意; +

+ +

  4、与授权合作伙伴共享:仅为实现本隐私政策中声明的目的,我们的某些服务将由我们和授权合作伙伴共同提供。我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。例如涉及用户身份验证时,我们需要收集姓名、身份证号、身份证照片、个人生物识别信息中的面部特征信息等,并将前述信息提供给第三方公司(包括但不限于北京旷视科技有限公司,以下第三方公司含义与此相同);第三方公司有权获得上述信息用于验证服务,并向我们返回识别结果;第三方公司有权保存用户的上述身份信息及身份信息的验证记录,并有权用于与用户相关的身份验证业务。我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们的合作伙伴无权将共享的个人信息用于与产品或服务无关的其他用途。 +

+ +

  我们将信息发送给支持我们业务的供应商、服务提供商和其他合作伙伴,这些支持包括提供技术基础设施服务、分析我们服务的使用方式、衡量广告和服务的有效性、提供客户服务、支付便利或进行学术研究和调查。

+ +

  对我们与之共享个人信息的公司、组织和个人,我们会与其签署严格的数据保护协定,要求其按照我们的说明、本隐私政策以及其他任何相关的保密和安全措施来处理个人信息。

+ +

  转让

+ +

  我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:

+ +

  1、在获取明确同意的情况下转让:获得您的明确同意后,我们会向其他方转让您的个人信息;

+ +

  2、在涉及合并、收购或破产清算情形,或其他涉及合并、收购或破产清算情形时,如涉及到个人信息转让,我们会要求新的持有您个人信息的公司、组织继续受本政策的约束,否则我们将要求该公司、组织和个人重新向您征求授权同意。 +

+ +

  公开披露

+ +

  我们仅会在以下情况,公开披露您的个人信息:

+ +

  1、获得您明确同意或基于您的主动选择,我们可能会公开披露您的个人信息;

+ +

  2、如果我们确定您出现违反法律法规或严重违反南宁市网宿信息科技有限公司软件平台相关协议规则的情况,或为保护南宁市网宿信息科技有限公司软件平台及其关联公司用户或公众的人身财产安全免遭侵害,我们可能依据法律法规或南宁市网宿信息科技有限公司软件平台相关协议规则征得您同意的情况下披露关于您的个人信息,包括相关违规行为以及南宁市网宿信息科技有限公司软件平台已对您采取的措施。 +

+ +

  共享、转让、公开披露个人信息时事先征得授权同意的例外

+ +

  以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:

+ +

  1、与国家安全、国防安全有关的;

+ +

  2、与公共安全、公共卫生、重大公共利益有关的;

+ +

  3、与犯罪侦查、起诉、审判和判决执行等有关的;

+ +

  4、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;

+ +

  5、您自行向社会公众公开的个人信息;

+ +

  6、从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。

+ +

  根据法律规定,共享、转让经去标识化处理的个人信息,且确保数据接收方无法复原并重新识别个人信息主体的,不属于个人信息的对外共享、转让及公开披露行为,对此类数据的保存及处理将无需另行向您通知并征得您的同意。 +

+ +

  4、我们如何保护您的个人信息

+ +

  为了保护您的信息安全,我们将严格遵守法律法规等规范性文件要求的技术措施和操作流程保护您的信息秘密,同时:

+ +

  1.我们已采取符合业界通用解决方案、合理可行的安全防护措施保护您提供的个人信息安全,防止个人信息遭到未经授权访问、公开披露、使用、修改、损坏或丢失。我们会使用加密技术提高个人信息的安全性;我们会使用受信赖的保护机制防止个人信息遭到恶意攻击;我们建立严格的内部控制制度,建立完善、充分的管理流程,我们会部署访问控制机制,尽力确保只有授权人员才可访问个人信息;以及我们会举办安全和隐私保护培训课程,加强员工对于保护个人信息重要性的认识。 +

+ +

  2.我们有行业先进的以数据为核心,围绕数据生命周期进行的数据安全管理体系,从组织建设、制度设计、人员管理、产品技术等方面多维度提升整个系统的安全性。

+ +

  3.我们会采取合理可行的措施,尽力避免收集无关的个人信息。我们只会在达成本政策所述目的所需的期限内保留您的个人信息,除非需要延长保留期或受到法律的允许。

+ +

  4.互联网并非绝对安全的环境,我们强烈建议您不要使用非南宁市网宿信息科技有限公司软件平台推荐的通信方式发送个人信息。您可以通过我们的服务建立联系和相互分享。当您通过我们的服务创建交流、交易或分享时,您可以自主选择沟通、交易或分享的对象,作为能够看到您的交易内容、联络方式、交流信息或分享内容等相关信息的第三方。 +

+ +

  如您发现自己的个人信息尤其是您的账户或密码发生泄露,请您立即联络南宁市网宿信息科技有限公司软件平台客服,以便我们根据您的申请采取相应措施。

+ +

  请注意,您在使用我们服务时自愿共享甚至公开分享的信息,可能会涉及您或他人的个人信息甚至个人敏感信息,如您在发表动态或者在群聊天、圈子等公众场合选择上传包含个人信息的图片。请您更加谨慎地考虑,是否在使用我们的服务时共享甚至公开分享相关信息。 +

+ +

  请使用复杂密码,协助我们保证您的账号安全。我们将尽力保障您发送给我们的任何信息的安全性。

+ +

  我们将按照法律法规的要求更新并公开安全风险、个人信息安全影响评估等报告的内容。

+ +

  互联网环境并非百分之百安全,我们将尽力确保或担保您发送给我们的任何信息的安全性。如果我们的物理、技术或管理防护设施遭到破坏,导致信息被非授权访问、公开披露、篡改或毁坏,导致您的合法权益受损,我们将承担相应的法律责任。 +

+ +

  在不幸发生个人信息安全事件后,我们将依照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施,您可自主防范和降低风险的建议、对您的补救措施等。我们将及时将事件相关情况以推送通知的方式告知您,并采取合理有效的方式发送公告。 +

+ +

  同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况。

+ +

  5、您如何管理您的个人信息/您的权利

+ +

  个人信息查询

+ +

  您有权访问您的个人信息,法律法规规定的例外情况除外。您可以通过以下方式自行访问您的个人信息:

+ +

  账户信息——如果您希望访问或编辑您的账户中的个人信息、设置隐私与权限、设置消息提醒与聊天、更改您的绑定手机号与密码、关闭您的账户等,您可以通过登录账号通过“我的”-“设置”执行此类操作。

+ +

  个人资料——如果您希望访问或编辑您个人资料中的昵称、头像、家乡、出生年月日、职业、学校、兴趣爱好以及其他资料,您可以通过登录账户通过“我的”-“查看/编辑资料”执行此类操作。

+ +

  如果您无法通过上述路径访问该等个人信息,您可以随时通过南宁市网宿信息科技有限公司软件平台客服与我们取得联系。我们将在15天内回复您的访问请求。

+ +

  对于您在使用我们的产品或服务过程中产生的其他个人信息,我们将根据相关安排向您提供。

+ +

  您可以通过与南宁市网宿信息科技有限公司软件平台客服联系的方式,申请个人信息副本。

+ +

  个人信息更正

+ +

  当您发现我们处理的关于您的个人信息有错误时,您有权要求我们做出更正或补充。您可以通过本条“个人信息查询”中列明的方式提出更正或补充申请。

+ +

  个人信息删除

+ +

  您可以通过本条“个人信息查询”中列明的方式删除您的部分个人信息。

+ +

  在以下情形中,您可以向我们提出删除个人信息的请求:

+ +

  1、如果我们处理个人信息的行为违反法律法规;

+ +

  2、如果我们收集、使用您的个人信息,却未征得您的明确同意;

+ +

  3、如果我们处理个人信息的行为严重违反了与您的约定;

+ +

  4、如果您不再使用我们的产品或服务,或您主动注销了账号;

+ +

  5、如果我们永久不再为您提供产品或服务。

+ +

  若我们决定响应您的删除请求,我们还将同时尽可能通知从我们处获得您的个人信息的主体,要求其及时删除,除非法律法规另有规定,或这些主体获得您的独立授权。

+ +

  当您从我们的服务中删除信息后,我们可能不会立即从备份系统中删除相应的信息,但会在备份更新时删除这些信息。

+ +

  用户账号注销

+ +

  您可以自行在“注销账户”页面(例如,南宁市网宿信息科技有限公司软件平台手机APP“我的-设置-账户与安全-注销账户”)提交账户注销申请。

+ +

  在您主动注销账户之后,我们将停止为您提供产品或服务,根据相应法律的要求删除您的个人信息,或使其匿名化处理。

+ +

  撤回已同意的授权

+ +

  每个业务功能需要一些基本的个人信息才能得以完成。除此之外,对于额外个人信息的收集和使用,您可以自行或与南宁市网宿信息科技有限公司软件平台客服联系给予或收回您的授权同意。

+ +

  当您收回同意后,我们将不再处理相应的个人信息。但您收回同意的决定,不会影响此前基于您的授权而开展的个人信息处理。

+ +

  约束信息系统自动决策

+ +

  在某些业务功能中,我们可能仅依据信息系统、算法等在内的非人工自动决策机制做出决定。如果这些决定显著影响您的合法权益,您有权要求我们做出解释,我们也将在不侵害南宁市网宿信息科技有限公司软件平台商业秘密或其他用户权益、社会公共利益的前提下提供申诉方法。 +

+ +

  响应您的上述请求

+ +

  为保障安全,您可能需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。

+ +

  我们将在15天内做出答复。如您对我们的答复不满意,还可以通过南宁市网宿信息科技有限公司软件平台客服发起投诉。

+ +

  对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情况收取一定成本费用。对于无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际的请求,我们可能会予以拒绝。 +

+ +

  相关限制

+ +

  在以下情形中,按照法律法规要求,我们将无法响应您的请求:

+ +

  1、与国家安全、国防安全有关的;

+ +

  2、与公共安全、公共卫生、重大公共利益有关的;

+ +

  3、与犯罪侦查、起诉、审判和执行判决等有关的;

+ +

  4、有充分证据表明个人信息主体存在主观恶意或滥用权利的;

+ +

  5、响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的;

+ +

  6、涉及商业秘密的。

+ +

  

+ +

  6、我们如何处理未成年人的个人信息

+ +

  本软件禁止未成年人注册、使用。如我们发现收集了未成年人的个人信息,我们将会设法尽快删除相关数据。

+ +

  7、存储信息的地点和期限,您的个人信息如何在全球范围转移

+ +

  个人信息存放的地域

+ +

  我们严格按照法律法规的规定,将中华人民共和国境内收集和产生的用户个人信息存放于中华人民共和国境内。

+ +

  个人信息出境的情况

+ +

  我们在中华人民共和国境内运营中收集和产生的个人信息,存储在中华人民共和国境内。如果在未来出现个人信息出境的情况,我们将严格遵守中华人民共和国法律法规的相关规定,同时对出境信息的信息安全进行评估,并获取您的明确授权,但是您通过互联网进行跨境发布动态等个人主动行为除外。 +

+ +

  针对以上情形,我们会确保依据本隐私政策对您的个人信息提供足够的保护。

+ +

  存储信息的期限

+ +

  一般而言,我们仅在为实现目的所必需的最短时间内保留您的个人信息,超过相应期限内的个人信息将会删除或匿名化进行处理。但在下列情况下,我们有可能因需符合法律要求,更改个人信息的存储时间:

+ +

  1.为遵守适用的法律法规或政策等规范性文件的有关规定;

+ +

  2.为遵守行政机关或类似授权组织的决定等、司法机关判决、裁定、仲裁机关的裁决或其他法律程序的规定;

+ +

  3.我们有理由确信需要遵守法律法规等有关规定;

+ +

  4.为执行相关服务协议或本政策、维护社会公共利益,为保护们的客户、我们或我们的关联公司、其他用户或雇员等第三方的人身财产安全或其他合法权益所合理必需的用途。

+ +

  当南宁市网宿信息科技有限公司软件平台发生停止运营的情形时,我们将采取推送通知、网站或程序内公告等形式通知您,并在合理的期限内删除或匿名化处理您的个人信息。

+ +

  8、本隐私政策如何更新

+ +

  我们的隐私政策可能变更。如果发生业务功能变更、使用目的变更、个人信息保护相关负责人联络方式变更等情形,我们将相应修订隐私政策。

+ +

  未经您明确同意,我们不会限制您按照本隐私政策所应享有的权利。对于重大变更,我们会提供显著的通知(包括我们会通过南宁市网宿信息科技有限公司软件平台公示的方式、南宁市网宿信息科技有限公司软件平台小助手等进行通知)。您也可以定期查看本隐私政策,以获取最新的条款。 +

+ +

  本政策所指的重大变更包括但不限于:

+ +

  1、我们的服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等;

+ +

  2、个人信息共享、转让或公开披露的主要对象发生变化;

+ +

  3、您参与个人信息处理方面的权利及其行使方式发生重大变化;

+ +

  4、我们负责处理个人信息安全的责任部门、联络方式及投诉渠道发生变化时;

+ +

  5、个人信息安全影响评估报告表明存在高风险时。

+ +

  如果您在接到通知后,选择继续使用我们的服务,即表示同意受经修订的政策约束。

+ +

  我们还会将本政策的旧版本存档,供您查阅,您可通过前述的联系方式向我们申请查阅。

+ +

  9、如何联系我们/用户申诉渠道和反馈机制

+ +

  如您对本政策或相关事宜有疑问或建议等,我们建立了个人信息保护专职部门,您可以通过如下投诉渠道与我们取得联系:

+ +

  举报邮箱:603684184@qq.com

+ +

  我们将妥善受理并及时反馈您的申诉,并在验证您的用户身份后的十五天内予以回复。

+ +

  如果您对我们的回复不满意,特别是您认为我们的个人信息处理行为损害了您的合法权益,您还可以通过向被告住所地有管辖权的法院提起诉讼来寻求解决方案。

+ +

  10、广告/我们向您发送的信息

+ +

  我们可能使用您的相关信息,在相关网站、应用、及其他渠道向您发送商业广告。

+ +

  如果您不想接受我们给您发送的商业广告,您可随时通过相应产品退订功能取消。

+ +

  11、适用范围

+ +

  南宁市网宿信息科技有限公司软件平台提供的所有服务均使用本隐私政策。但是,请您注意,本隐私政策不适用由其他公司或个人提供的服务,且该服务适用其他公司或个人的隐私政策。

+ +

  南宁市网宿信息科技有限公司

+
+ +
+ + diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..0252b48 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/api/bszx/bszxBm/index.ts b/src/api/bszx/bszxBm/index.ts new file mode 100644 index 0000000..f643aa6 --- /dev/null +++ b/src/api/bszx/bszxBm/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxBm, BszxBmParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询百色中学-报名记录 + */ +export async function pageBszxBm(params: BszxBmParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-bm/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-报名记录列表 + */ +export async function listBszxBm(params?: BszxBmParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-bm', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加百色中学-报名记录 + */ +export async function addBszxBm(data: BszxBm) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-bm', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-报名记录 + */ +export async function updateBszxBm(data: BszxBm) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-bm', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-报名记录 + */ +export async function removeBszxBm(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-bm/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-报名记录 + */ +export async function removeBatchBszxBm(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-bm/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-报名记录 + */ +export async function getBszxBm(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-bm/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxBm/model/index.ts b/src/api/bszx/bszxBm/model/index.ts new file mode 100644 index 0000000..e0d2d8c --- /dev/null +++ b/src/api/bszx/bszxBm/model/index.ts @@ -0,0 +1,78 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-报名记录 + */ +export interface BszxBm { + // 自增ID + id?: number; + // 订单编号 + orderNo?: string; + // 姓名 + name?: string; + // 性别 1男 2女 + sex?: number; + sexName?: string; + // 手机号码 + phone?: string; + // 手机号码(脱敏) + mobile?: string; + // 捐款金额 + price?: string; + // 分部ID + branchId?: number; + // 班级ID + classId?: number; + // 班级 + className?: string; + // 年级 + gradeName?: string; + // 居住地址 + address?: string; + // 工作单位 + workUnit?: string; + // 职务 + position?: string; + // 是否能到场 + present?: string; + // 年龄 + age?: number; + // 人数 + number?: number; + // 额外信息 + extra?: string; + // 生成的邀请函存放路径 + certificate?: string; + // 预定日期 + dateTime?: string; + // 表单数据 + formData?: string; + // 表单ID + formId?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 百色中学-报名记录搜索条件 + */ +export interface BszxBmParam extends PageParam { + id?: number; + branchId?: number; + gradeName?: string; + className?: string; + classId?: number; + keywords?: string; +} diff --git a/src/api/bszx/bszxBranch/index.ts b/src/api/bszx/bszxBranch/index.ts new file mode 100644 index 0000000..0f7955b --- /dev/null +++ b/src/api/bszx/bszxBranch/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxBranch, BszxBranchParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询百色中学-分部 + */ +export async function pageBszxBranch(params: BszxBranchParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-branch/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-分部列表 + */ +export async function listBszxBranch(params?: BszxBranchParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-branch', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加百色中学-分部 + */ +export async function addBszxBranch(data: BszxBranch) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-branch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-分部 + */ +export async function updateBszxBranch(data: BszxBranch) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-branch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-分部 + */ +export async function removeBszxBranch(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-branch/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-分部 + */ +export async function removeBatchBszxBranch(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-branch/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-分部 + */ +export async function getBszxBranch(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-branch/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxBranch/model/index.ts b/src/api/bszx/bszxBranch/model/index.ts new file mode 100644 index 0000000..16866dd --- /dev/null +++ b/src/api/bszx/bszxBranch/model/index.ts @@ -0,0 +1,23 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-分部 + */ +export interface BszxBranch { + // ID + id?: number; + // 分部名称 + name?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 租户id + tenantId?: number; +} + +/** + * 百色中学-分部搜索条件 + */ +export interface BszxBranchParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/bszx/bszxClass/index.ts b/src/api/bszx/bszxClass/index.ts new file mode 100644 index 0000000..24eed7b --- /dev/null +++ b/src/api/bszx/bszxClass/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxClass, BszxClassParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询百色中学-班级 + */ +export async function pageBszxClass(params: BszxClassParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-class/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-班级列表 + */ +export async function listBszxClass(params?: BszxClassParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-class', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加百色中学-班级 + */ +export async function addBszxClass(data: BszxClass) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-class', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-班级 + */ +export async function updateBszxClass(data: BszxClass) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-class', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-班级 + */ +export async function removeBszxClass(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-class/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-班级 + */ +export async function removeBatchBszxClass(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-class/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-班级 + */ +export async function getBszxClass(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-class/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxClass/model/index.ts b/src/api/bszx/bszxClass/model/index.ts new file mode 100644 index 0000000..c25af05 --- /dev/null +++ b/src/api/bszx/bszxClass/model/index.ts @@ -0,0 +1,48 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-班级 + */ +export interface BszxClass { + // ID + id?: number; + // 时代ID + eraId?: number; + // 年级ID + gradeId?: number; + // 年级 + gradeName?: string; + // 班级 + className?: string; + // 分部 + branch?: number; + // 班级 + name?: string; + // 累计捐款总金额 + totalMoney?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + value?: number; + label?: string; +} + +/** + * 百色中学-班级搜索条件 + */ +export interface BszxClassParam extends PageParam { + id?: number; + gradeId?: number; + eraId?: number; + branch?: number; + name?: string; + className?: string; + keywords?: string; +} diff --git a/src/api/bszx/bszxEra/index.ts b/src/api/bszx/bszxEra/index.ts new file mode 100644 index 0000000..45747b5 --- /dev/null +++ b/src/api/bszx/bszxEra/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxEra, BszxEraParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询百色中学-年代 + */ +export async function pageBszxEra(params: BszxEraParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-era/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-年代列表 + */ +export async function listBszxEra(params?: BszxEraParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-era', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加百色中学-年代 + */ +export async function addBszxEra(data: BszxEra) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-era', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-年代 + */ +export async function updateBszxEra(data: BszxEra) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-era', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-年代 + */ +export async function removeBszxEra(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-era/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-年代 + */ +export async function removeBatchBszxEra(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-era/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-年代 + */ +export async function getBszxEra(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-era/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxEra/model/index.ts b/src/api/bszx/bszxEra/model/index.ts new file mode 100644 index 0000000..910da64 --- /dev/null +++ b/src/api/bszx/bszxEra/model/index.ts @@ -0,0 +1,21 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-年代 + */ +export interface BszxEra { + // ID + id?: number; + // 年代 + name?: string; + // 租户id + tenantId?: number; +} + +/** + * 百色中学-年代搜索条件 + */ +export interface BszxEraParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/bszx/bszxGrade/index.ts b/src/api/bszx/bszxGrade/index.ts new file mode 100644 index 0000000..294c03f --- /dev/null +++ b/src/api/bszx/bszxGrade/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxGrade, BszxGradeParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询百色中学-年级 + */ +export async function pageBszxGrade(params: BszxGradeParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-grade/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-年级列表 + */ +export async function listBszxGrade(params?: BszxGradeParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-grade', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加百色中学-年级 + */ +export async function addBszxGrade(data: BszxGrade) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-grade', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-年级 + */ +export async function updateBszxGrade(data: BszxGrade) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-grade', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-年级 + */ +export async function removeBszxGrade(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-grade/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-年级 + */ +export async function removeBatchBszxGrade(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-grade/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-年级 + */ +export async function getBszxGrade(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-grade/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxGrade/model/index.ts b/src/api/bszx/bszxGrade/model/index.ts new file mode 100644 index 0000000..7df61ec --- /dev/null +++ b/src/api/bszx/bszxGrade/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-年级 + */ +export interface BszxGrade { + // ID + id?: number; + // 年级 + name?: string; + // 年代 + eraId?: number; + // 分部 + branch?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + value?: number; + label?: string; +} + +/** + * 百色中学-年级搜索条件 + */ +export interface BszxGradeParam extends PageParam { + id?: number; + branch?: number; + gradeId?: number; + keywords?: string; +} diff --git a/src/api/bszx/bszxOrder/index.ts b/src/api/bszx/bszxOrder/index.ts new file mode 100644 index 0000000..4c7faff --- /dev/null +++ b/src/api/bszx/bszxOrder/index.ts @@ -0,0 +1,37 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { MODULES_API_URL } from '@/config/setting'; +import {ShopOrder, ShopOrderParam} from "@/api/shop/shopOrder/model"; + +/** + * 分页查询百色中学-捐款记录 + */ +export async function pageBszxOrder(params: ShopOrderParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 统计订单总金额(只统计有效订单) + */ +export async function bszxOrderTotal(params?: ShopOrderParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-order/total', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxPay/index.ts b/src/api/bszx/bszxPay/index.ts new file mode 100644 index 0000000..df20870 --- /dev/null +++ b/src/api/bszx/bszxPay/index.ts @@ -0,0 +1,121 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxPay, BszxPayParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; +import {ShopOrder} from "@/api/shop/shopOrder/model"; + +/** + * 分页查询百色中学-捐款记录 + */ +export async function pageBszxPay(params: BszxPayParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-pay/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-捐款记录列表 + */ +export async function listBszxPay(params?: BszxPayParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-pay', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加百色中学-捐款记录 + */ +export async function addBszxPay(data: BszxPay) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-pay', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-捐款记录 + */ +export async function updateBszxPay(data: BszxPay) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-pay', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-捐款记录 + */ +export async function removeBszxPay(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-pay/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-捐款记录 + */ +export async function removeBatchBszxPay(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-pay/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-捐款记录 + */ +export async function getBszxPay(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-pay/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function repairOrder(data: ShopOrder) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-pay/repair', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxPay/model/index.ts b/src/api/bszx/bszxPay/model/index.ts new file mode 100644 index 0000000..016b733 --- /dev/null +++ b/src/api/bszx/bszxPay/model/index.ts @@ -0,0 +1,69 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-捐款记录 + */ +export interface BszxPay { + // ID + id?: number; + // 年龄 + age?: number; + // 姓名 + name?: string; + // 性别 1男 2女 + sex?: number; + // 手机号码 + phone?: string; + // 班级 + className?: string; + // 年级 + gradeName?: string; + // 居住地址 + address?: string; + // 工作单位 + workUnit?: string; + // 职务 + position?: string; + // 数量 + number?: number; + // 付费金额 + price?: string; + // 额外信息 + extra?: string; + // 订单编号 + orderNo?: string; + // 预定日期 + dateTime?: string; + // 捐赠证书 + certificate?: string; + // 表单数据 + formData?: string; + // 来源表ID + formId?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 百色中学-捐款记录搜索条件 + */ +export interface BszxPayParam extends PageParam { + id?: number; + orderId?: number; + orderNo?: string; + gradeName?: string; + className?: string; + keywords?: string; +} diff --git a/src/api/bszx/bszxPayRanking/index.ts b/src/api/bszx/bszxPayRanking/index.ts new file mode 100644 index 0000000..7a6dc99 --- /dev/null +++ b/src/api/bszx/bszxPayRanking/index.ts @@ -0,0 +1,135 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BszxPayRanking, BszxPayRankingParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; +import {BszxClass, BszxClassParam} from "@/api/bszx/bszxClass/model"; + +/** + * 分页查询百色中学-捐款排行 + */ +export async function pageBszxPayRanking(params: BszxPayRankingParam) { + const res = await request.get>>( + MODULES_API_URL + '/bszx/bszx-pay-ranking/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询百色中学-捐款排行列表 + */ +export async function listBszxPayRanking(params?: BszxPayRankingParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-pay-ranking', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function ranking(params?: BszxPayRankingParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-pay-ranking/ranking', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function ranking2(params?: BszxClassParam) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-pay-ranking/ranking2', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + + + +/** + * 添加百色中学-捐款排行 + */ +export async function addBszxPayRanking(data: BszxPayRanking) { + const res = await request.post>( + MODULES_API_URL + '/bszx/bszx-pay-ranking', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改百色中学-捐款排行 + */ +export async function updateBszxPayRanking(data: BszxPayRanking) { + const res = await request.put>( + MODULES_API_URL + '/bszx/bszx-pay-ranking', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除百色中学-捐款排行 + */ +export async function removeBszxPayRanking(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-pay-ranking/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除百色中学-捐款排行 + */ +export async function removeBatchBszxPayRanking(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/bszx/bszx-pay-ranking/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询百色中学-捐款排行 + */ +export async function getBszxPayRanking(id: number) { + const res = await request.get>( + MODULES_API_URL + '/bszx/bszx-pay-ranking/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/bszx/bszxPayRanking/model/index.ts b/src/api/bszx/bszxPayRanking/model/index.ts new file mode 100644 index 0000000..aa46138 --- /dev/null +++ b/src/api/bszx/bszxPayRanking/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 百色中学-捐款排行 + */ +export interface BszxPayRanking { + // ID + id?: number; + // 来源表ID(项目名称) + formId?: number; + // 数量 + number?: number; + // 获得捐款总金额 + totalPrice?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 百色中学-捐款排行搜索条件 + */ +export interface BszxPayRankingParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsAd/index.ts b/src/api/cms/cmsAd/index.ts new file mode 100644 index 0000000..c465bd4 --- /dev/null +++ b/src/api/cms/cmsAd/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsAd, CmsAdParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询广告位 + */ +export async function pageCmsAd(params: CmsAdParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-ad/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询广告位列表 + */ +export async function listCmsAd(params?: CmsAdParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-ad', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加广告位 + */ +export async function addCmsAd(data: CmsAd) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改广告位 + */ +export async function updateCmsAd(data: CmsAd) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除广告位 + */ +export async function removeCmsAd(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-ad/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除广告位 + */ +export async function removeBatchCmsAd(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-ad/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询广告位 + */ +export async function getCmsAd(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-ad/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsAd/model/index.ts b/src/api/cms/cmsAd/model/index.ts new file mode 100644 index 0000000..104c9d0 --- /dev/null +++ b/src/api/cms/cmsAd/model/index.ts @@ -0,0 +1,65 @@ +import type { PageParam } from '@/api'; + +/** + * 广告位 + */ +export interface CmsAd { + // ID + adId?: number; + // 类型 + type?: number; + // 唯一标识 + code?: string; + // 栏目分类 + categoryId?: number; + // 栏目名称 + categoryName?: string; + // 页面ID + designId?: number; + // 广告类型 + adType?: string; + // 广告位名称 + name?: string; + // 宽 + width?: string; + // 高 + height?: string; + // css样式 + style?: string; + // 广告图片 + images?: any; + // 广告图片 + imageList?: any; + // 路由/链接地址 + path?: string; + // 用户ID + userId?: number; + // 语言 + lang?: string; + // 页面ID + pageId?: number; + // 页面名称 + pageName?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + merchantId?: number; +} + +/** + * 广告位搜索条件 + */ +export interface CmsAdParam extends PageParam { + adId?: number; + pageId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsAdRecord/index.ts b/src/api/cms/cmsAdRecord/index.ts new file mode 100644 index 0000000..840e6d0 --- /dev/null +++ b/src/api/cms/cmsAdRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsAdRecord, CmsAdRecordParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询广告图片 + */ +export async function pageCmsAdRecord(params: CmsAdRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-ad-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询广告图片列表 + */ +export async function listCmsAdRecord(params?: CmsAdRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-ad-record', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加广告图片 + */ +export async function addCmsAdRecord(data: CmsAdRecord) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-ad-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改广告图片 + */ +export async function updateCmsAdRecord(data: CmsAdRecord) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-ad-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除广告图片 + */ +export async function removeCmsAdRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-ad-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除广告图片 + */ +export async function removeBatchCmsAdRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-ad-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询广告图片 + */ +export async function getCmsAdRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-ad-record/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsAdRecord/model/index.ts b/src/api/cms/cmsAdRecord/model/index.ts new file mode 100644 index 0000000..0ecf5d1 --- /dev/null +++ b/src/api/cms/cmsAdRecord/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 广告图片 + */ +export interface CmsAdRecord { + // ID + adRecordId?: number; + // 广告标题 + title?: string; + // 图片地址 + path?: string; + // 链接地址 + url?: string; + // 广告位ID + adId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 广告图片搜索条件 + */ +export interface CmsAdRecordParam extends PageParam { + adRecordId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticle/index.ts b/src/api/cms/cmsArticle/index.ts new file mode 100644 index 0000000..59f0470 --- /dev/null +++ b/src/api/cms/cmsArticle/index.ts @@ -0,0 +1,160 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticle, CmsArticleParam } from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询文章 + */ +export async function pageCmsArticle(params: CmsArticleParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-article/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文章列表 + */ +export async function listCmsArticle(params?: CmsArticleParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文章 + */ +export async function addCmsArticle(data: CmsArticle) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文章 + */ +export async function updateCmsArticle(data: CmsArticle) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量修改文章 + */ +export async function updateBatchCmsArticle(data: any) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文章 + */ +export async function removeCmsArticle(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文章 + */ +export async function removeBatchCmsArticle(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文章 + */ +export async function getCmsArticle(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据code查询文章 + */ +export async function getByCode(code: string) { + const res = await request.get>( + '/cms/cms-article/getByCode/' + code + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params: CmsArticleParam) { + const res = await request.get(MODULES_API_URL + '/cms/cms-article/data', { + params + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 文章批量导入 + */ +export async function importArticles(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsArticle/model/index.ts b/src/api/cms/cmsArticle/model/index.ts new file mode 100644 index 0000000..bad09d2 --- /dev/null +++ b/src/api/cms/cmsArticle/model/index.ts @@ -0,0 +1,131 @@ +import type { PageParam } from '@/api'; + +/** + * 文章 + */ +export interface CmsArticle { + // 文章ID + articleId?: number; + // 文章标题 + title?: string; + // 文章类型 0常规 1视频 + type?: number; + // 文章模型 + model?: string; + // 文章编号 + code?: string; + // 文章详情 + detail?: string; + // 列表显示方式(10小图展示 20大图展示) + showType?: number; + // 话题 + topic?: string; + // 标签 + tags?: any; + // 父级ID + parentId?: number; + parentName?: string; + // 栏目ID + categoryId?: number; + // 栏目名称 + categoryName?: string; + // 封面图 + image?: string; + // 来源 + source?: string; + // 摘要 + overview?: string; + // 虚拟阅读量(仅用作展示) + virtualViews?: number; + // 实际阅读量 + actualViews?: number; + // 浏览权限(0公开 1会员 2密码) + permission?: number; + // 访问密码 + password?: string; + // 确认密码 + password2?: string; + // 发布来源客户端 (APP、H5、小程序等) + platform?: string; + // 文章附件 + files?: string; + // 视频地址 + video?: string; + // 接受的文件类型 + accept?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 点赞数 + likes?: number; + // 评论数 + commentNumbers?: number; + // 提醒谁看 + toUsers?: string; + // 文章内容 + content?: string; + // 编辑器类型 + editor?: number; + // PDF地址 + pdfUrl?: string; + // 用户ID + userId?: number; + // 商户ID + merchantId?: number; + // 作者 + author?: string; + // 语言 + lang?: string; + // 是否推荐 + recommend?: number; + // 是否同步翻译其他语言版本 + translation?: boolean; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 状态描述 + statusText?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 是否移动端 + isMobile?: boolean; + // 二维码 + qrcode?: string; + // 文章路径 + url?: string; +} + +/** + * 文章搜索条件 + */ +export interface CmsArticleParam extends PageParam { + articleId?: number; + model?: string; + status?: number; + keywords?: string; +} + +export interface CmsArticleCount { + totalNum?: number; + totalNum2?: number; + totalNum3?: number; + totalNum4?: number; +} diff --git a/src/api/cms/cmsArticleCategory/index.ts b/src/api/cms/cmsArticleCategory/index.ts new file mode 100644 index 0000000..4159ed2 --- /dev/null +++ b/src/api/cms/cmsArticleCategory/index.ts @@ -0,0 +1,108 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleCategory, CmsArticleCategoryParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文章分类表 + */ +export async function pageCmsArticleCategory(params: CmsArticleCategoryParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-article-category/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文章分类表列表 + */ +export async function listCmsArticleCategory(params?: CmsArticleCategoryParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-category', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文章分类表 + */ +export async function addCmsArticleCategory(data: CmsArticleCategory) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文章分类表 + */ +export async function updateCmsArticleCategory(data: CmsArticleCategory) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文章分类表 + */ +export async function removeCmsArticleCategory(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-category/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文章分类表 + */ +export async function removeBatchCmsArticleCategory( + data: (number | undefined)[] +) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-category/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文章分类表 + */ +export async function getCmsArticleCategory(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-category/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsArticleCategory/model/index.ts b/src/api/cms/cmsArticleCategory/model/index.ts new file mode 100644 index 0000000..7f8b2a8 --- /dev/null +++ b/src/api/cms/cmsArticleCategory/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 文章分类表 + */ +export interface CmsArticleCategory { + // 文章分类ID + categoryId?: number; + // 分类标识 + categoryCode?: string; + // 分类名称 + title?: string; + // 类型 0列表 1单页 2外链 + type?: number; + // 分类图片 + image?: string; + // 上级分类ID + parentId?: number; + // 路由/链接地址 + path?: string; + // 组件路径 + component?: string; + // 绑定的页面 + pageId?: number; + // 用户ID + userId?: number; + // 文章数量 + count?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 是否推荐 + recommend?: number; + // 是否显示在首页 + showIndex?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + value?: number; + label?: string; +} + +/** + * 文章分类表搜索条件 + */ +export interface CmsArticleCategoryParam extends PageParam { + categoryId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleComment/index.ts b/src/api/cms/cmsArticleComment/index.ts new file mode 100644 index 0000000..085579f --- /dev/null +++ b/src/api/cms/cmsArticleComment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleComment, CmsArticleCommentParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文章评论表 + */ +export async function pageCmsArticleComment(params: CmsArticleCommentParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-article-comment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文章评论表列表 + */ +export async function listCmsArticleComment(params?: CmsArticleCommentParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-comment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文章评论表 + */ +export async function addCmsArticleComment(data: CmsArticleComment) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文章评论表 + */ +export async function updateCmsArticleComment(data: CmsArticleComment) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文章评论表 + */ +export async function removeCmsArticleComment(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-comment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文章评论表 + */ +export async function removeBatchCmsArticleComment(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-comment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文章评论表 + */ +export async function getCmsArticleComment(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-comment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsArticleComment/model/index.ts b/src/api/cms/cmsArticleComment/model/index.ts new file mode 100644 index 0000000..2490228 --- /dev/null +++ b/src/api/cms/cmsArticleComment/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 文章评论表 + */ +export interface CmsArticleComment { + // 评价ID + commentId?: number; + // 文章ID + articleId?: number; + // 评分 (10好评 20中评 30差评) + score?: number; + // 评价内容 + content?: string; + // 是否为图片评价 + isPicture?: number; + // 评论者ID + userId?: number; + // 被评价者ID + toUserId?: number; + // 回复的评论ID + replyCommentId?: number; + // 回复者ID + replyUserId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 文章评论表搜索条件 + */ +export interface CmsArticleCommentParam extends PageParam { + commentId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleContent/index.ts b/src/api/cms/cmsArticleContent/index.ts new file mode 100644 index 0000000..c25d8f4 --- /dev/null +++ b/src/api/cms/cmsArticleContent/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleContent, CmsArticleContentParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文章记录表 + */ +export async function pageCmsArticleContent(params: CmsArticleContentParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-article-content/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文章记录表列表 + */ +export async function listCmsArticleContent(params?: CmsArticleContentParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-content', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文章记录表 + */ +export async function addCmsArticleContent(data: CmsArticleContent) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文章记录表 + */ +export async function updateCmsArticleContent(data: CmsArticleContent) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文章记录表 + */ +export async function removeCmsArticleContent(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-content/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文章记录表 + */ +export async function removeBatchCmsArticleContent(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-content/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文章记录表 + */ +export async function getCmsArticleContent(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-content/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsArticleContent/model/index.ts b/src/api/cms/cmsArticleContent/model/index.ts new file mode 100644 index 0000000..432c376 --- /dev/null +++ b/src/api/cms/cmsArticleContent/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 文章记录表 + */ +export interface CmsArticleContent { + // + id?: number; + // 文章ID + articleId?: number; + // 文章内容 + content?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 文章记录表搜索条件 + */ +export interface CmsArticleContentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleCount/index.ts b/src/api/cms/cmsArticleCount/index.ts new file mode 100644 index 0000000..0d88f6d --- /dev/null +++ b/src/api/cms/cmsArticleCount/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleCount, CmsArticleCountParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询点赞文章 + */ +export async function pageCmsArticleCount(params: CmsArticleCountParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-article-count/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询点赞文章列表 + */ +export async function listCmsArticleCount(params?: CmsArticleCountParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加点赞文章 + */ +export async function addCmsArticleCount(data: CmsArticleCount) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改点赞文章 + */ +export async function updateCmsArticleCount(data: CmsArticleCount) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除点赞文章 + */ +export async function removeCmsArticleCount(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-count/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除点赞文章 + */ +export async function removeBatchCmsArticleCount(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-count/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询点赞文章 + */ +export async function getCmsArticleCount(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-count/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsArticleCount/model/index.ts b/src/api/cms/cmsArticleCount/model/index.ts new file mode 100644 index 0000000..9cfbc24 --- /dev/null +++ b/src/api/cms/cmsArticleCount/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 点赞文章 + */ +export interface CmsArticleCount { + // 主键ID + id?: number; + // 文章ID + articleId?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 点赞文章搜索条件 + */ +export interface CmsArticleCountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsArticleLike/index.ts b/src/api/cms/cmsArticleLike/index.ts new file mode 100644 index 0000000..ab3dd0f --- /dev/null +++ b/src/api/cms/cmsArticleLike/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsArticleLike, CmsArticleLikeParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询点赞文章 + */ +export async function pageCmsArticleLike(params: CmsArticleLikeParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-article-like/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询点赞文章列表 + */ +export async function listCmsArticleLike(params?: CmsArticleLikeParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-like', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加点赞文章 + */ +export async function addCmsArticleLike(data: CmsArticleLike) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-article-like', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改点赞文章 + */ +export async function updateCmsArticleLike(data: CmsArticleLike) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-article-like', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除点赞文章 + */ +export async function removeCmsArticleLike(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-like/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除点赞文章 + */ +export async function removeBatchCmsArticleLike(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-article-like/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询点赞文章 + */ +export async function getCmsArticleLike(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-article-like/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsArticleLike/model/index.ts b/src/api/cms/cmsArticleLike/model/index.ts new file mode 100644 index 0000000..ccee27a --- /dev/null +++ b/src/api/cms/cmsArticleLike/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 点赞文章 + */ +export interface CmsArticleLike { + // 主键ID + id?: number; + // 文章ID + articleId?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 点赞文章搜索条件 + */ +export interface CmsArticleLikeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDesign/index.ts b/src/api/cms/cmsDesign/index.ts new file mode 100644 index 0000000..eb4736c --- /dev/null +++ b/src/api/cms/cmsDesign/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDesign, CmsDesignParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询页面管理记录表 + */ +export async function pageCmsDesign(params: CmsDesignParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-design/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询页面管理记录表列表 + */ +export async function listCmsDesign(params?: CmsDesignParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加页面管理记录表 + */ +export async function addCmsDesign(data: CmsDesign) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-design', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改页面管理记录表 + */ +export async function updateCmsDesign(data: CmsDesign) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-design', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除页面管理记录表 + */ +export async function removeCmsDesign(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除页面管理记录表 + */ +export async function removeBatchCmsDesign(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询页面管理记录表 + */ +export async function getCmsDesign(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsDesign/model/index.ts b/src/api/cms/cmsDesign/model/index.ts new file mode 100644 index 0000000..d8ef624 --- /dev/null +++ b/src/api/cms/cmsDesign/model/index.ts @@ -0,0 +1,64 @@ +import type { PageParam } from '@/api'; + +/** + * 页面管理记录表 + */ +export interface CmsDesign { + pageId?: number; + name?: string; + keywords?: string; + description?: string; + path?: string; + component?: string; + photo?: string; + content?: string; + // 类型 + type?: string; + categoryId?: number; + // 宽 + width?: string; + // 高 + height?: string; + // 页面样式 + style?: string; + // 附件 + images?: string; + // 用户ID + userId?: number; + // 设为首页 + home?: number; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // 页面布局 + layout?: string; + backgroundColor?: string; + // 关联网站导航ID + navigationId?: number; + showLayout?: boolean; + btn?: any[]; + showBanner?: boolean; + showButton?: boolean; + // 是否同步翻译其他语言版本 + translation?: boolean; + buyUrl?: string; + demoUrl?: string; + account?: string; + docUrl?: string; + parentId?: number; +} + +/** + * 页面管理记录表搜索条件 + */ +export interface CmsDesignParam extends PageParam { + pageId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDomain/index.ts b/src/api/cms/cmsDomain/index.ts new file mode 100644 index 0000000..8ae32ad --- /dev/null +++ b/src/api/cms/cmsDomain/index.ts @@ -0,0 +1,153 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDomain, CmsDomainParam } from './model'; +import { SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询网站域名记录表 + */ +export async function pageCmsDomain(params: CmsDomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/cms/cms-domain/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站域名记录表列表 + */ +export async function listCmsDomain(params?: CmsDomainParam) { + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站域名记录表 + */ +export async function addCmsDomain(data: CmsDomain) { + const res = await request.post>( + SERVER_API_URL + '/cms/cms-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站域名记录表 + */ +export async function updateCmsDomain(data: CmsDomain) { + const res = await request.post>( + SERVER_API_URL + '/cms/cms-domain/domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站域名记录表 + */ +export async function removeCmsDomain(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/cms/cms-domain/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站域名记录表 + */ +export async function removeBatchCmsDomain(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/cms/cms-domain/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站域名记录表 + */ +export async function getCmsDomain(id: number) { + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function resolvable(id: number) { + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain/resolvable/' + id + ); + if (res.data.code === 0 && res.data) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 根据授权主域名 + */ +export async function getAuthorizedDomain() { + if(!localStorage.getItem('WebsiteId')){ + return false; + } + const res = await request.get>( + SERVER_API_URL + '/cms/cms-domain/getAuthorizedDomain/' + localStorage.getItem('WebsiteId') + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsDomain/model/index.ts b/src/api/cms/cmsDomain/model/index.ts new file mode 100644 index 0000000..3be7c9d --- /dev/null +++ b/src/api/cms/cmsDomain/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 网站域名记录表 + */ +export interface CmsDomain { + // ID + id?: number; + // 类型 0赠送域名 1绑定域名 + type?: number; + // 域名 + domain?: string; + // 主机记录 + hostName?: string; + // 记录值 + hostValue?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 网站ID + websiteId?: number; + // 租户ID + appId?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 网站域名记录表搜索条件 + */ +export interface CmsDomainParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsForm/index.ts b/src/api/cms/cmsForm/index.ts new file mode 100644 index 0000000..abf07ab --- /dev/null +++ b/src/api/cms/cmsForm/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsForm, CmsFormParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询表单设计表 + */ +export async function pageCmsForm(params: CmsFormParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-form/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询表单设计表列表 + */ +export async function listCmsForm(params?: CmsFormParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-form', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加表单设计表 + */ +export async function addCmsForm(data: CmsForm) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-form', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改表单设计表 + */ +export async function updateCmsForm(data: CmsForm) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-form', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除表单设计表 + */ +export async function removeCmsForm(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-form/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除表单设计表 + */ +export async function removeBatchCmsForm(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-form/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询表单设计表 + */ +export async function getCmsForm(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-form/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsForm/model/index.ts b/src/api/cms/cmsForm/model/index.ts new file mode 100644 index 0000000..6e43ff9 --- /dev/null +++ b/src/api/cms/cmsForm/model/index.ts @@ -0,0 +1,53 @@ +import type { PageParam } from '@/api'; + +/** + * 表单设计表 + */ +export interface CmsForm { + // ID + formId?: number; + // 表单标题 + name?: string; + // 顶部图片 + photo?: string; + // 背景图片 + background?: string; + // 视频文件 + video?: string; + // 提交次数 + submitNumber?: number; + // 页面布局 + layout?: string; + // 是否隐藏顶部图片 + hidePhoto?: number; + // 是否隐藏背景图片 + hideBackground?: number; + // 是否隐藏视频 + hideVideo?: number; + // 背景图片透明度 + opacity?: string; + // 用户ID + userId?: number; + // 商户ID + merchantId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 表单设计表搜索条件 + */ +export interface CmsFormParam extends PageParam { + formId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsFormRecord/index.ts b/src/api/cms/cmsFormRecord/index.ts new file mode 100644 index 0000000..b281148 --- /dev/null +++ b/src/api/cms/cmsFormRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsFormRecord, CmsFormRecordParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询表单数据记录表 + */ +export async function pageCmsFormRecord(params: CmsFormRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-form-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询表单数据记录表列表 + */ +export async function listCmsFormRecord(params?: CmsFormRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-form-record', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加表单数据记录表 + */ +export async function addCmsFormRecord(data: CmsFormRecord) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-form-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改表单数据记录表 + */ +export async function updateCmsFormRecord(data: CmsFormRecord) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-form-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除表单数据记录表 + */ +export async function removeCmsFormRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-form-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除表单数据记录表 + */ +export async function removeBatchCmsFormRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-form-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询表单数据记录表 + */ +export async function getCmsFormRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-form-record/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsFormRecord/model/index.ts b/src/api/cms/cmsFormRecord/model/index.ts new file mode 100644 index 0000000..4bd8f39 --- /dev/null +++ b/src/api/cms/cmsFormRecord/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 表单数据记录表 + */ +export interface CmsFormRecord { + // ID + formRecordId?: number; + // 手机号 + phone?: string; + // 表单数据 + formData?: string; + // 表单ID + formId?: number; + // 用户ID + userId?: number; + // 商户ID + merchantId?: number; + // 姓名 + name?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 表单数据记录表搜索条件 + */ +export interface CmsFormRecordParam extends PageParam { + formRecordId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsLang/index.ts b/src/api/cms/cmsLang/index.ts new file mode 100644 index 0000000..8787da1 --- /dev/null +++ b/src/api/cms/cmsLang/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsLang, CmsLangParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询国际化 + */ +export async function pageCmsLang(params: CmsLangParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-lang/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询国际化列表 + */ +export async function listCmsLang(params?: CmsLangParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-lang', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加国际化 + */ +export async function addCmsLang(data: CmsLang) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-lang', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改国际化 + */ +export async function updateCmsLang(data: CmsLang) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-lang', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除国际化 + */ +export async function removeCmsLang(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-lang/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除国际化 + */ +export async function removeBatchCmsLang(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-lang/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询国际化 + */ +export async function getCmsLang(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-lang/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsLang/model/index.ts b/src/api/cms/cmsLang/model/index.ts new file mode 100644 index 0000000..43c1d9e --- /dev/null +++ b/src/api/cms/cmsLang/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 国际化 + */ +export interface CmsLang { + // ID + id?: number; + // 名称 + name?: string; + // 编码 + code?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 国际化搜索条件 + */ +export interface CmsLangParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsLangLog/index.ts b/src/api/cms/cmsLangLog/index.ts new file mode 100644 index 0000000..9af33c7 --- /dev/null +++ b/src/api/cms/cmsLangLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsLangLog, CmsLangLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询国际化记录启用 + */ +export async function pageCmsLangLog(params: CmsLangLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-lang-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询国际化记录启用列表 + */ +export async function listCmsLangLog(params?: CmsLangLogParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-lang-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加国际化记录启用 + */ +export async function addCmsLangLog(data: CmsLangLog) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-lang-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改国际化记录启用 + */ +export async function updateCmsLangLog(data: CmsLangLog) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-lang-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除国际化记录启用 + */ +export async function removeCmsLangLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-lang-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除国际化记录启用 + */ +export async function removeBatchCmsLangLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-lang-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询国际化记录启用 + */ +export async function getCmsLangLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-lang-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsLangLog/model/index.ts b/src/api/cms/cmsLangLog/model/index.ts new file mode 100644 index 0000000..af5a2f6 --- /dev/null +++ b/src/api/cms/cmsLangLog/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 国际化记录启用 + */ +export interface CmsLangLog { + // ID + id?: number; + // 名称 + lang?: string; + // 关联ID + langId?: number; + // 编码 + code?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 国际化记录启用搜索条件 + */ +export interface CmsLangLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsLink/index.ts b/src/api/cms/cmsLink/index.ts new file mode 100644 index 0000000..63558af --- /dev/null +++ b/src/api/cms/cmsLink/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsLink, CmsLinkParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询常用链接 + */ +export async function pageCmsLink(params: CmsLinkParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-link/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询常用链接列表 + */ +export async function listCmsLink(params?: CmsLinkParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-link', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加常用链接 + */ +export async function addCmsLink(data: CmsLink) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改常用链接 + */ +export async function updateCmsLink(data: CmsLink) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除常用链接 + */ +export async function removeCmsLink(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-link/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量修改常用链接 + */ +export async function updateBatchCmsLink(data: any) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-link/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除常用链接 + */ +export async function removeBatchCmsLink(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-link/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询常用链接 + */ +export async function getCmsLink(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-link/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsLink/model/index.ts b/src/api/cms/cmsLink/model/index.ts new file mode 100644 index 0000000..2f83581 --- /dev/null +++ b/src/api/cms/cmsLink/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 常用链接 + */ +export interface CmsLink { + // 自增ID + id?: number; + // 链接名称 + name?: string; + // 图标 + icon?: string; + // 链接地址 + url?: string; + // 链接分类 + categoryId?: number; + // 应用ID + appId?: number; + // 用户ID + userId?: number; + // 语言 + lang?: string; + // 是否推荐 + recommend?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 常用链接搜索条件 + */ +export interface CmsLinkParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsModel/index.ts b/src/api/cms/cmsModel/index.ts new file mode 100644 index 0000000..934e776 --- /dev/null +++ b/src/api/cms/cmsModel/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsModel, CmsModelParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询模型 + */ +export async function pageCmsModel(params: CmsModelParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-model/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询模型列表 + */ +export async function listCmsModel(params?: CmsModelParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-model', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加模型 + */ +export async function addCmsModel(data: CmsModel) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-model', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改模型 + */ +export async function updateCmsModel(data: CmsModel) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-model', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除模型 + */ +export async function removeCmsModel(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-model/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除模型 + */ +export async function removeBatchCmsModel(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-model/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询模型 + */ +export async function getCmsModel(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-model/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsModel/model/index.ts b/src/api/cms/cmsModel/model/index.ts new file mode 100644 index 0000000..14a78f2 --- /dev/null +++ b/src/api/cms/cmsModel/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 模型 + */ +export interface CmsModel { + // ID + modelId?: number; + // 模型名称 + name?: string; + // 唯一标识 + model?: string; + // 详情页组件 + componentDetail?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 模型banner图片 + banner?: string; + // 缩列图 + thumb?: string; + // 文件后缀 + suffix?: string; + // 封面图宽 + imageWidth?: string; + // 封面图高 + imageHeight?: string; + // 样式 + style?: string; + // Banner上的标题 + title?: string; + // Banner上的描述 + desc?: string; + // 列表显示方式(10小图展示 20大图展示) + showType?: number; + // 是否禁用 + disabled?: boolean; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + label?: string; + value?: string; +} + +/** + * 模型搜索条件 + */ +export interface CmsModelParam extends PageParam { + modelId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsNavigation/index.ts b/src/api/cms/cmsNavigation/index.ts new file mode 100644 index 0000000..1ebb173 --- /dev/null +++ b/src/api/cms/cmsNavigation/index.ts @@ -0,0 +1,151 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsNavigation, CmsNavigationParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询网站导航记录表 + */ +export async function pageCmsNavigation(params: CmsNavigationParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-navigation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站导航记录表列表 + */ +export async function listCmsNavigation(params?: CmsNavigationParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-navigation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询导航列表(树形结构) + */ +export async function treeNavigation(params?: CmsNavigationParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-navigation/tree', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} +/** + * 添加网站导航记录表 + */ +export async function addCmsNavigation(data: CmsNavigation) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-navigation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站导航记录表 + */ +export async function updateCmsNavigation(data: CmsNavigation) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-navigation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站导航记录表 + */ +export async function removeCmsNavigation(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-navigation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站导航记录表 + */ +export async function removeBatchCmsNavigation(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-navigation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站导航记录表 + */ +export async function getCmsNavigation(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-navigation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 根据code查询导航 + */ +export async function getByCode(code: string) { + const res = await request.get>( + '/cms/cms-navigation/getByCode/' + code + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导航批量导入 + */ +export async function importCmsNavigation(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + MODULES_API_URL + '/cms/cms-navigation/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} \ No newline at end of file diff --git a/src/api/cms/cmsNavigation/model/index.ts b/src/api/cms/cmsNavigation/model/index.ts new file mode 100644 index 0000000..a1da0a0 --- /dev/null +++ b/src/api/cms/cmsNavigation/model/index.ts @@ -0,0 +1,106 @@ +import type { PageParam } from '@/api'; + +/** + * 网站导航记录表 + */ +export interface CmsNavigation { + // ID + navigationId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 模型 + model?: string; + // 标识 + code?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + componentPath?: string; + // 打开位置 + target?: string; + // 菜单图标 + icon?: string; + // banner图片 + banner?: string; + // 图标颜色 + color?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 可见类型 0所有人 1登录可见 2密码可见 + permission?: number; + // 访问密码 + password?: string; + // 位置 0不限 1顶部 2底部 + position?: number; + // 仅在顶部显示 + top?: number; + // 仅在底部显示 + bottom?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // css样式 + style?: string; + // 父级栏目路由 + parentPath?: string; + // 父级栏目名称 + parentName?: string; + // 父级栏目位置 + parentPosition?: number; + // 模型名称 + modelName?: string; + // 类型(已废弃) + type?: number; + // 绑定的页面(已废弃) + pageId?: number; + // 项目ID + itemId?: number; + // 是否微信小程序菜单 + isMpWeixin?: string; + gutter?: number; + span?: number; + readNum?: number; + // 用户ID + userId?: number; + // 国际化语言 + lang?: string; + // 设为首页 + home?: number; + // 是否推荐 + recommend?: boolean; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + children?: CmsNavigation[]; + disabled?: boolean; + label?: string; + value?: number; + suffix?: string; + showBanner?: boolean; + showLayout?: boolean; + langCategoryId?: number; +} + +/** + * 网站导航记录表搜索条件 + */ +export interface CmsNavigationParam extends PageParam { + navigationId?: number; + model?: string; + lang?: string; + recommend?: boolean; + keywords?: string; +} diff --git a/src/api/cms/cmsOrder/index.ts b/src/api/cms/cmsOrder/index.ts new file mode 100644 index 0000000..fdfc69f --- /dev/null +++ b/src/api/cms/cmsOrder/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsOrder, CmsOrderParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询订单 + */ +export async function pageCmsOrder(params: CmsOrderParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单列表 + */ +export async function listCmsOrder(params?: CmsOrderParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单 + */ +export async function addCmsOrder(data: CmsOrder) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function updateCmsOrder(data: CmsOrder) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单 + */ +export async function removeCmsOrder(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchCmsOrder(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单 + */ +export async function getCmsOrder(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsOrder/model/index.ts b/src/api/cms/cmsOrder/model/index.ts new file mode 100644 index 0000000..e36a1ae --- /dev/null +++ b/src/api/cms/cmsOrder/model/index.ts @@ -0,0 +1,66 @@ +import type { PageParam } from '@/api'; + +/** + * 订单 + */ +export interface CmsOrder { + // 订单号 + orderId?: number; + // 订单标题 + title?: string; + // 订单编号 + orderNo?: string; + // 订单类型,0商城 1询价 2留言 + type?: number; + // 关联项目ID,配合订单类型使用 + itemId?: number; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 电子邮箱 + email?: string; + // 收货地址 + address?: string; + // 订单内容 + content?: string; + // 订单附件 + files?: string; + // 订单总额 + totalPrice?: string; + // 实际付款 + payPrice?: string; + // 报价询价 + price?: string; + // 购买数量 + totalNum?: number; + // 二维码地址,保存订单号,支付成功后才生成 + qrcode?: string; + // 下单渠道,0网站 1小程序 2其他 + channel?: number; + // 过期时间 + expirationTime?: string; + // 订单是否已结算(0未结算 1已结算) + isSettled?: boolean; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 订单搜索条件 + */ +export interface CmsOrderParam extends PageParam { + orderId?: number; + isSettled?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsStatistics/index.ts b/src/api/cms/cmsStatistics/index.ts new file mode 100644 index 0000000..14edfeb --- /dev/null +++ b/src/api/cms/cmsStatistics/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsStatistics, CmsStatisticsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询站点统计信息表 + */ +export async function pageCmsStatistics(params: CmsStatisticsParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-statistics/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询站点统计信息表列表 + */ +export async function listCmsStatistics(params?: CmsStatisticsParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-statistics', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加站点统计信息表 + */ +export async function addCmsStatistics(data: CmsStatistics) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-statistics', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改站点统计信息表 + */ +export async function updateCmsStatistics(data: CmsStatistics) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-statistics', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除站点统计信息表 + */ +export async function removeCmsStatistics(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-statistics/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除站点统计信息表 + */ +export async function removeBatchCmsStatistics(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-statistics/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询站点统计信息表 + */ +export async function getCmsStatistics(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-statistics/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsStatistics/model/index.ts b/src/api/cms/cmsStatistics/model/index.ts new file mode 100644 index 0000000..bff5bbc --- /dev/null +++ b/src/api/cms/cmsStatistics/model/index.ts @@ -0,0 +1,79 @@ +import type { PageParam } from '@/api'; + +/** + * 站点统计信息表 + */ +export interface CmsStatistics { + // 自增ID + id?: number; + // 站点ID + websiteId?: number; + // 用户总数 + userCount?: number; + // 订单总数 + orderCount?: number; + // 商品总数 + productCount?: number; + // 总销售额 + totalSales?: number; + // 本月销售额 + monthSales?: number; + // 今日销售额 + todaySales?: number; + // 昨日销售额 + yesterdaySales?: number; + // 本周销售额 + weekSales?: number; + // 本年销售额 + yearSales?: number; + // 今日订单数 + todayOrders?: number; + // 本月订单数 + monthOrders?: number; + // 今日新增用户 + todayUsers?: number; + // 本月新增用户 + monthUsers?: number; + // 今日访问量 + todayVisits?: number; + // 总访问量 + totalVisits?: number; + // 商户总数 + merchantCount?: number; + // 活跃用户数 + activeUsers?: number; + // 转化率(%) + conversionRate?: string; + // 平均订单金额 + avgOrderAmount?: string; + // 统计日期 + statisticsDate?: string; + // 统计类型: 1日统计, 2月统计, 3年统计 + statisticsType?: number; + // 运行天数 + runDays?: number; + // 排序号 + sortNumber?: number; + // 操作用户ID + userId?: number; + // 商户ID + merchantId?: number; + // 状态: 0禁用, 1启用 + status?: string; + // 是否删除: 0否, 1是 + deleted?: string; + // 租户ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 站点统计信息表搜索条件 + */ +export interface CmsStatisticsParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsTemplate/index.ts b/src/api/cms/cmsTemplate/index.ts new file mode 100644 index 0000000..fd29228 --- /dev/null +++ b/src/api/cms/cmsTemplate/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsTemplate, CmsTemplateParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询网站模版 + */ +export async function pageCmsTemplate(params: CmsTemplateParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-template/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站模版列表 + */ +export async function listCmsTemplate(params?: CmsTemplateParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-template', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站模版 + */ +export async function addCmsTemplate(data: CmsTemplate) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-template', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站模版 + */ +export async function updateCmsTemplate(data: CmsTemplate) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-template', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站模版 + */ +export async function removeCmsTemplate(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-template/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站模版 + */ +export async function removeBatchCmsTemplate(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-template/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站模版 + */ +export async function getCmsTemplate(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-template/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsTemplate/model/index.ts b/src/api/cms/cmsTemplate/model/index.ts new file mode 100644 index 0000000..96211ee --- /dev/null +++ b/src/api/cms/cmsTemplate/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 网站模版 + */ +export interface CmsTemplate { + // ID + id?: number; + // 模版名称 + name?: string; + // 模版标识 + code?: string; + // 缩列图 + image?: string; + // 类型 1企业官网 2其他 + type?: number; + // 网站关键词 + keywords?: string; + // 域名前缀 + prefix?: string; + // 预览地址 + domain?: string; + // 模版下载地址 + downUrl?: string; + // 色系 + color?: string; + // 应用版本 10免费版 20授权版 30永久授权 + version?: number; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: string; + // 是否共享模板 + share?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 网站模版搜索条件 + */ +export interface CmsTemplateParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsWebsite/index.ts b/src/api/cms/cmsWebsite/index.ts new file mode 100644 index 0000000..3e47dc4 --- /dev/null +++ b/src/api/cms/cmsWebsite/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsWebsite, CmsWebsiteParam } from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询网站信息记录表 + */ +export async function pageCmsWebsite(params: CmsWebsiteParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-website/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站信息记录表列表 + */ +export async function listCmsWebsite(params?: CmsWebsiteParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站信息记录表 + */ +export async function addCmsWebsite(data: CmsWebsite) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站信息记录表 + */ +export async function updateCmsWebsite(data: CmsWebsite) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站信息记录表 + */ +export async function removeCmsWebsite(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站信息记录表 + */ +export async function removeBatchCmsWebsite(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站信息记录表 + */ +export async function getCmsWebsite(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 清除缓存 + */ +export async function removeSiteInfoCache(key?: string) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website/clearSiteInfo/' + key + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsWebsite/model/index.ts b/src/api/cms/cmsWebsite/model/index.ts new file mode 100644 index 0000000..a2e7a7f --- /dev/null +++ b/src/api/cms/cmsWebsite/model/index.ts @@ -0,0 +1,160 @@ +import type { PageParam } from '@/api'; +import {CmsWebsiteSetting} from "@/api/cms/cmsWebsiteSetting/model"; +import {CmsNavigation} from "@/api/cms/cmsNavigation/model"; + +/** + * 网站信息记录表 + */ +export interface CmsWebsite { + // 站点ID + websiteId?: number; + // 网站名称 + websiteName?: string; + // 网站标识 + websiteCode?: string; + // 网站LOGO + websiteIcon?: string; + // 网站LOGO + websiteLogo?: string; + // 网站LOGO(深色模式) + websiteDarkLogo?: string; + // 网站类型 + websiteType?: string; + // 网站截图 + files?: string; + // 网站类型 + type?: number; + // 网站关键词 + keywords?: string; + // 域名前缀 + prefix?: string; + // 绑定域名 + domain?: string; + // 全局样式 + style?: string; + // 后台管理地址 + adminUrl?: string; + // 应用版本 10标准版 20专业版 30永久授权 + version?: number; + // 允许展示到插件市场 + market?: boolean; + // 应用类型 0应用 1插件 + plugin?: boolean; + // 默认编辑器 + editor?: number, + // 服务到期时间 + expirationTime?: string; + // 模版ID + templateId?: number; + // 行业类型 + category?: string; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 企业ID + companyId?: number; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 街道地址 + address?: string; + // 联系电话 + phone?: string; + // 电子邮箱 + email?: string; + // ICP备案号 + icpNo?: string; + // 公安备案 + policeNo?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 是否运行中 + running?: number; + // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 + status?: number; + // 维护说明 + statusText?: string; + // 关闭说明 + statusClose?: string; + // 全局样式 + styles?: string; + // 语言 + lang?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 网站配置 + config?: any; + // 短信验证码 + smsCode?: string; + // 短信验证码 + code?: string; + // 是否记住密码 + remember?: boolean; + // 企业名称 + companyName?: string; + // 是否注册未超级管理员 + isSuperAdmin?: boolean; + // 用户名 + username?: string; + // 网站配置 + setting?: CmsWebsiteSetting; +} + +export interface AppInfo { + appId?: number; + appName?: string; + description?: string; + keywords?: string; + appCode?: string; + mpQrCode?: string; + title?: string; + logo?: string; + icon?: string; + domain?: string; + running?: number; + version?: number; + expirationTime?: string; + expired?: boolean; + expiredDays?: number; + soon?: number; + statusIcon?: string; + statusText?: string; + config?: Object; + serverTime?: Object; + topNavs?: CmsNavigation[]; + bottomNavs?: CmsNavigation[]; + setting?: Object; + createTime?: string; +} + +/** + * 网站信息记录表搜索条件 + */ +export interface CmsWebsiteParam extends PageParam { + websiteId?: number; + status?: number; + plugin?: boolean; + keywords?: string; +} diff --git a/src/api/cms/cmsWebsiteAll/index.ts b/src/api/cms/cmsWebsiteAll/index.ts new file mode 100644 index 0000000..d205695 --- /dev/null +++ b/src/api/cms/cmsWebsiteAll/index.ts @@ -0,0 +1,73 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsWebsite, CmsWebsiteParam } from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询网站信息记录表 + */ +export async function pageCmsWebsiteAll(params: CmsWebsiteParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-website/pageAll', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站信息记录表列表 + */ +export async function listCmsWebsiteAll(params?: CmsWebsiteParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website/listAll', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站信息记录表 + */ +export async function updateCmsWebsiteAll(data: CmsWebsite) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-website/updateAll', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站信息记录表 + */ +export async function removeCmsWebsiteAll(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website/removeAll/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCmsWebsiteAll(id: number){ + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website/getAll/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsWebsiteAll/model/index.ts b/src/api/cms/cmsWebsiteAll/model/index.ts new file mode 100644 index 0000000..0b98583 --- /dev/null +++ b/src/api/cms/cmsWebsiteAll/model/index.ts @@ -0,0 +1,132 @@ +import type { PageParam } from '@/api'; +import {CmsWebsiteSetting} from "@/api/cms/cmsWebsiteSetting/model"; + +/** + * 网站信息记录表 + */ +export interface CmsWebsite { + // 站点ID + websiteId?: number; + // 网站名称 + websiteName?: string; + // 网站标识 + websiteCode?: string; + // 网站LOGO + websiteIcon?: string; + // 网站LOGO + websiteLogo?: string; + // 网站LOGO(深色模式) + websiteDarkLogo?: string; + // 网站类型 + websiteType?: string; + // 网站截图 + files?: string; + // 网站类型 + type?: number; + // 网站关键词 + keywords?: string; + // 域名前缀 + prefix?: string; + // 绑定域名 + domain?: string; + // 全局样式 + style?: string; + // 后台管理地址 + adminUrl?: string; + // 应用版本 10标准版 20专业版 30永久授权 + version?: number; + // 允许展示到插件市场 + market?: boolean; + // 应用类型 0应用 1插件 + plugin?: boolean; + // 默认编辑器 + editor?: number, + // 服务到期时间 + expirationTime?: string; + // 模版ID + templateId?: number; + // 行业类型 + category?: string; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 企业ID + companyId?: number; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 街道地址 + address?: string; + // 联系电话 + phone?: string; + // 电子邮箱 + email?: string; + // ICP备案号 + icpNo?: string; + // 公安备案 + policeNo?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 是否运行中 + running?: number; + // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 + status?: number; + // 维护说明 + statusText?: string; + // 关闭说明 + statusClose?: string; + // 全局样式 + styles?: string; + // 语言 + lang?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 网站配置 + config?: any; + // 短信验证码 + smsCode?: string; + // 短信验证码 + code?: string; + // 是否记住密码 + remember?: boolean; + // 企业名称 + companyName?: string; + // 是否注册未超级管理员 + isSuperAdmin?: boolean; + // 用户名 + username?: string; + // 网站配置 + setting?: CmsWebsiteSetting; +} + +/** + * 网站信息记录表搜索条件 + */ +export interface CmsWebsiteParam extends PageParam { + websiteId?: number; + status?: number; + plugin?: boolean; + keywords?: string; +} diff --git a/src/api/cms/cmsWebsiteField/index.ts b/src/api/cms/cmsWebsiteField/index.ts new file mode 100644 index 0000000..8329889 --- /dev/null +++ b/src/api/cms/cmsWebsiteField/index.ts @@ -0,0 +1,167 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type {CmsWebsiteField, CmsWebsiteFieldParam, Config} from './model'; +import {MODULES_API_URL, TEMPLATE_ID} from '@/config/setting'; + +/** + * 分页查询应用参数 + */ +export async function pageCmsWebsiteField(params: CmsWebsiteFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-website-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listCmsWebsiteField(params?: CmsWebsiteFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用参数 + */ +export async function addCmsWebsiteField(data: CmsWebsiteField) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-website-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用参数 + */ +export async function updateCmsWebsiteField(data: CmsWebsiteField) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-website-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用参数 + */ +export async function removeCmsWebsiteField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchCmsWebsiteField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getCmsWebsiteField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据code查询应用参数 + */ +export async function getCmsWebsiteFieldByCode(code: string) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website-field/getByCode/' + code + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 恢复项目参数 + */ +export async function undeleteWebsiteField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/website-field/undelete/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 参数批量导入 + */ +export async function importWebsiteField(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + MODULES_API_URL + '/cms/cms-website-field/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目参数列表 + */ +export async function configWebsiteField(params?: CmsWebsiteFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website-field/config', + { + params, + headers: { + TenantId: TEMPLATE_ID + } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsWebsiteField/model/index.ts b/src/api/cms/cmsWebsiteField/model/index.ts new file mode 100644 index 0000000..17bda1d --- /dev/null +++ b/src/api/cms/cmsWebsiteField/model/index.ts @@ -0,0 +1,65 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface CmsWebsiteField { + // 自增ID + id?: number; + // 类型,0文本 1图片 2其他 + type?: number; + // 名称 + name?: string; + // 默认值 + defaultValue?: string; + // 可修改的值 [on|off] + modifyRange?: string; + // 备注 + comments?: string; + // css样式 + style?: string; + // 名称 + value?: any; + // 语言 + lang?: string; + // 是否加密 + encrypted?: boolean; + // 模板 + template?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用参数搜索条件 + */ +export interface CmsWebsiteFieldParam extends PageParam { + id?: number; + keywords?: string; +} + +export interface Config { + siteName?: string; + siteLogo?: string; + domain?: string; + icpNo?: string; + copyright?: string; + loginBgImg?: string; + address?: string; + tel?: string; + kefu2?: string; + kefu1?: string; + email?: string; + loginTitle?: string; + sysLogo?: string; + // 添加API地址配置项 + ApiUrl?: string; + // 添加主题配置项 + theme?: string; +} \ No newline at end of file diff --git a/src/api/cms/cmsWebsiteSetting/index.ts b/src/api/cms/cmsWebsiteSetting/index.ts new file mode 100644 index 0000000..e1392a3 --- /dev/null +++ b/src/api/cms/cmsWebsiteSetting/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsWebsiteSetting, CmsWebsiteSettingParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询网站设置 + */ +export async function pageCmsWebsiteSetting(params: CmsWebsiteSettingParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-website-setting/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站设置列表 + */ +export async function listCmsWebsiteSetting(params?: CmsWebsiteSettingParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website-setting', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站设置 + */ +export async function addCmsWebsiteSetting(data: CmsWebsiteSetting) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-website-setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站设置 + */ +export async function updateCmsWebsiteSetting(data: CmsWebsiteSetting) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-website-setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站设置 + */ +export async function removeCmsWebsiteSetting(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website-setting/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站设置 + */ +export async function removeBatchCmsWebsiteSetting(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-website-setting/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站设置 + */ +export async function getCmsWebsiteSetting(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-website-setting/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsWebsiteSetting/model/index.ts b/src/api/cms/cmsWebsiteSetting/model/index.ts new file mode 100644 index 0000000..71241f8 --- /dev/null +++ b/src/api/cms/cmsWebsiteSetting/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from '@/api'; + +/** + * 网站设置 + */ +export interface CmsWebsiteSetting { + // 自增ID + id?: number; + // 关联网站ID + websiteId?: number; + // 是否官方插件 + official?: string; + // 是否展示在插件市场 + market?: string; + // 是否允许被搜索 + search?: string; + // 是否共享 + share?: string; + // 文章是否需要审核 + articleReview?: boolean; + // 是否插件 0应用1 插件 + plugin?: string; + // 编辑器类型 1 md-editor-v3, 2 tinymce-editor + editor?: number; + // 显示站内搜索 + searchBtn?: string; + // 显示登录注册功能 + loginBtn?: string; + // 显示悬浮客服工具 + floatTool?: boolean; + // 显示版权信息 + showCopyright?: boolean; + // 显示版权链接 + copyrightLink?: string; + // 导航栏最多显示数量 + maxMenuNum?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 网站设置搜索条件 + */ +export interface CmsWebsiteSettingParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/link/index.ts b/src/api/cms/link/index.ts new file mode 100644 index 0000000..e18a108 --- /dev/null +++ b/src/api/cms/link/index.ts @@ -0,0 +1,113 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Link, LinkParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询链接 + */ +export async function pageLink(params: LinkParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/link/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询链接列表 + */ +export async function listLink(params?: LinkParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/link', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加链接 + */ +export async function addLink(data: Link) { + const res = await request.post>( + MODULES_API_URL + '/oa/link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改链接 + */ +export async function updateLink(data: Link) { + const res = await request.put>( + MODULES_API_URL + '/oa/link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除链接 + */ +export async function removeLink(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/link/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除链接 + */ +export async function removeBatchLink(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/link/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + MODULES_API_URL + '/oa/link/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/link/model/index.ts b/src/api/cms/link/model/index.ts new file mode 100644 index 0000000..40f5988 --- /dev/null +++ b/src/api/cms/link/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 链接 + */ +export interface Link { + id?: number; + name?: string; + icon?: string; + url?: string; + linkType?: string; + appId?: number; + categoryId?: number; + userId?: number; + comments?: string; + recommend?: number; + sortNumber?: number; + deleted?: number; + status?: number; + createTime?: number; +} + +/** + * 链接搜索条件 + */ +export interface LinkParam extends PageParam { + id?: number; + linkType?: string; + categoryId?: number; + name?: string; +} diff --git a/src/api/house/houseInfo/index.ts b/src/api/house/houseInfo/index.ts new file mode 100644 index 0000000..56d139a --- /dev/null +++ b/src/api/house/houseInfo/index.ts @@ -0,0 +1,117 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HouseInfo, HouseInfoParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询房源信息表 + */ +export async function pageHouseInfo(params: HouseInfoParam) { + const res = await request.get>>( + MODULES_API_URL + '/house/house-info/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询房源信息表列表 + */ +export async function listHouseInfo(params?: HouseInfoParam) { + const res = await request.get>( + MODULES_API_URL + '/house/house-info', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加房源信息表 + */ +export async function addHouseInfo(data: HouseInfo) { + const res = await request.post>( + MODULES_API_URL + '/house/house-info', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改房源信息表 + */ +export async function updateHouseInfo(data: HouseInfo) { + const res = await request.put>( + MODULES_API_URL + '/house/house-info', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除房源信息表 + */ +export async function removeHouseInfo(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-info/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除房源信息表 + */ +export async function removeBatchHouseInfo(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-info/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询房源信息表 + */ +export async function getHouseInfo(id: number) { + const res = await request.get>( + MODULES_API_URL + '/house/house-info/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量修改房源信息 + */ +export async function updateBatchHouseInfo(data: any) { + const res = await request.put>('/house/house-info/batch', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/house/houseInfo/model/index.ts b/src/api/house/houseInfo/model/index.ts new file mode 100644 index 0000000..9ccc06f --- /dev/null +++ b/src/api/house/houseInfo/model/index.ts @@ -0,0 +1,107 @@ +import type { PageParam } from '@/api'; + +/** + * 房源信息表 + */ +export interface HouseInfo { + // 自增ID + houseId?: number; + // 房源标题 + houseTitle?: string; + // 房源类型 + type?: number; + // 房产所在的城市 + cityByHouse?: string; + // 户型 + houseType?: string; + // 租赁方式 + leaseMethod?: string; + // 租金 + rent?: string; + // 月租金 + monthlyRent?: string; + // 佣金 + commission?: string; + // 物业费 + propertyFees?: string; + // 面积 + extent?: string; + // 楼层 + floor?: string; + // 房号 + roomNumber?: string; + // 真实姓名 + realName?: string; + // 联系电话 + phone?: string; + // 进入房屋的密码 + password?: string; + // 房屋朝向 + toward?: string; + // 房屋标签 + houseLabel?: string; + // 办公室配套 + supporting?: string; + // 房源视频 + videoUrl?: string; + // 图片附件 + files?: string; + // 房源介绍 + content?: string; + // 到期时间 + expirationTime?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 所在地区 + area?: string; + // 详细地址 + address?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 是否推荐 + recommend?: number; + // 是否必看 + mustSee?: number; + // 是否可溢价 + premium?: string; + // 租期 + tenancy?: string; + // 备注 + comments?: string; + // 是否实名认证 + authentication?: number; + // 状态 10待审核 20驳回 30通过 + status?: number; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 昵称 + nickname?: string; + // 是否编辑 + isEdit?: boolean; + // 产权信息 + property?: string; +} + +/** + * 房源信息表搜索条件 + */ +export interface HouseInfoParam extends PageParam { + houseId?: number; + keywords?: string; +} diff --git a/src/api/house/houseLikeLog/index.ts b/src/api/house/houseLikeLog/index.ts new file mode 100644 index 0000000..ebf19bd --- /dev/null +++ b/src/api/house/houseLikeLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HouseLikeLog, HouseLikeLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询房源点赞表 + */ +export async function pageHouseLikeLog(params: HouseLikeLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/house/house-like-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询房源点赞表列表 + */ +export async function listHouseLikeLog(params?: HouseLikeLogParam) { + const res = await request.get>( + MODULES_API_URL + '/house/house-like-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加房源点赞表 + */ +export async function addHouseLikeLog(data: HouseLikeLog) { + const res = await request.post>( + MODULES_API_URL + '/house/house-like-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改房源点赞表 + */ +export async function updateHouseLikeLog(data: HouseLikeLog) { + const res = await request.put>( + MODULES_API_URL + '/house/house-like-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除房源点赞表 + */ +export async function removeHouseLikeLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-like-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除房源点赞表 + */ +export async function removeBatchHouseLikeLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-like-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询房源点赞表 + */ +export async function getHouseLikeLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/house/house-like-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/house/houseLikeLog/model/index.ts b/src/api/house/houseLikeLog/model/index.ts new file mode 100644 index 0000000..3f5ffe0 --- /dev/null +++ b/src/api/house/houseLikeLog/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 房源点赞表 + */ +export interface HouseLikeLog { + // ID + id?: number; + // 房源ID + houseId?: number; + // 房主ID + houseUserId?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // 删除 + deleted?: number; +} + +/** + * 房源点赞表搜索条件 + */ +export interface HouseLikeLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/house/houseReservation/index.ts b/src/api/house/houseReservation/index.ts new file mode 100644 index 0000000..ffc2130 --- /dev/null +++ b/src/api/house/houseReservation/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HouseReservation, HouseReservationParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询预约记录表 + */ +export async function pageHouseReservation(params: HouseReservationParam) { + const res = await request.get>>( + MODULES_API_URL + '/house/house-reservation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询预约记录表列表 + */ +export async function listHouseReservation(params?: HouseReservationParam) { + const res = await request.get>( + MODULES_API_URL + '/house/house-reservation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加预约记录表 + */ +export async function addHouseReservation(data: HouseReservation) { + const res = await request.post>( + MODULES_API_URL + '/house/house-reservation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改预约记录表 + */ +export async function updateHouseReservation(data: HouseReservation) { + const res = await request.put>( + MODULES_API_URL + '/house/house-reservation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除预约记录表 + */ +export async function removeHouseReservation(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-reservation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除预约记录表 + */ +export async function removeBatchHouseReservation(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-reservation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询预约记录表 + */ +export async function getHouseReservation(id: number) { + const res = await request.get>( + MODULES_API_URL + '/house/house-reservation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/house/houseReservation/model/index.ts b/src/api/house/houseReservation/model/index.ts new file mode 100644 index 0000000..81fd35c --- /dev/null +++ b/src/api/house/houseReservation/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 预约记录表 + */ +export interface HouseReservation { + // ID + logId?: number; + // 订单号 + logNo?: string; + // 类型 + type?: number; + // 付款金额 + money?: string; + // 房源ID + houseId?: number; + // 用户ID + userId?: number; + // 真实姓名 + realName?: string; + // 联系电话 + phone?: string; + // 付款时间 + payTime?: string; + // 付款状态(10未付款 20已付款) + payStatus?: number; + // 到期时间 + expirationTime?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 所在地区 + area?: string; + // 街道地址 + address?: string; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 预约记录表搜索条件 + */ +export interface HouseReservationParam extends PageParam { + logId?: number; + keywords?: string; +} diff --git a/src/api/house/houseUser/index.ts b/src/api/house/houseUser/index.ts new file mode 100644 index 0000000..a1f648f --- /dev/null +++ b/src/api/house/houseUser/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HouseUser, HouseUserParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询用户表 + */ +export async function pageHouseUser(params: HouseUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/house/house-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户表列表 + */ +export async function listHouseUser(params?: HouseUserParam) { + const res = await request.get>( + MODULES_API_URL + '/house/house-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户表 + */ +export async function addHouseUser(data: HouseUser) { + const res = await request.post>( + MODULES_API_URL + '/house/house-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户表 + */ +export async function updateHouseUser(data: HouseUser) { + const res = await request.put>( + MODULES_API_URL + '/house/house-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户表 + */ +export async function removeHouseUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户表 + */ +export async function removeBatchHouseUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户表 + */ +export async function getHouseUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/house/house-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/house/houseUser/model/index.ts b/src/api/house/houseUser/model/index.ts new file mode 100644 index 0000000..56a4836 --- /dev/null +++ b/src/api/house/houseUser/model/index.ts @@ -0,0 +1,131 @@ +import type { PageParam } from '@/api'; + +/** + * 用户表 + */ +export interface HouseUser { + // 用户id + userId?: number; + // 用户类型,0个人用户 6开发者 10企业 + type?: number; + // 账号 + username?: string; + // 密码 + password?: string; + // 昵称 + nickname?: string; + // 手机号 + phone?: string; + // 性别 1男 2女 + sex?: number; + // 职务 + position?: string; + // 注册来源客户端 (APP、H5、小程序等) + platform?: string; + // 邮箱 + email?: string; + // 邮箱是否验证, 0否, 1是 + emailVerified?: number; + // 别名 + alias?: string; + // 真实姓名 + realName?: string; + // 单位姓名 + companyName?: string; + // 证件号码 + idCard?: string; + // 出生日期 + birthday?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 用户可用余额 + balance?: string; + // 用户可用积分 + points?: number; + // 用户总支付的金额 + payMoney?: string; + // 实际消费的金额(不含退款) + expendMoney?: string; + // 会员等级ID + gradeId?: number; + // 个人简介 + introduction?: string; + // 机构id + organizationId?: number; + // 头像 + avatar?: string; + // 背景图 + bgImage?: string; + // 企业ID + companyId?: number; + // 客户ID + customerId?: number; + // 用户编码 + userCode?: string; + // 是否已实名认证 + certification?: number; + // 兴趣爱好 + interest?: string; + // 身高 + height?: string; + // 体重 + weight?: string; + // 月薪 + monthlyPay?: string; + // 学历 + education?: string; + // 职业 + vocation?: string; + // 年龄 + age?: number; + // 是否线下会员 + offline?: string; + // 关注数 + followers?: number; + // 粉丝数 + fans?: number; + // 点赞数 + likes?: number; + // 评论数 + commentNumbers?: number; + // 是否推荐 + recommend?: number; + // 备注 + comments?: string; + // 状态, 0在线, 1离线 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 商户编码 + merchantCode?: string; + // 租户id + tenantId?: number; + // 最后结算时间 + settlementTime?: string; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 是否管理员:1是;2否 + isAdmin?: boolean; +} + +/** + * 用户表搜索条件 + */ +export interface HouseUserParam extends PageParam { + userId?: number; + keywords?: string; +} diff --git a/src/api/house/houseViewsLog/index.ts b/src/api/house/houseViewsLog/index.ts new file mode 100644 index 0000000..43f87be --- /dev/null +++ b/src/api/house/houseViewsLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HouseViewsLog, HouseViewsLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询看房记录表 + */ +export async function pageHouseViewsLog(params: HouseViewsLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/house/house-views-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询看房记录表列表 + */ +export async function listHouseViewsLog(params?: HouseViewsLogParam) { + const res = await request.get>( + MODULES_API_URL + '/house/house-views-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加看房记录表 + */ +export async function addHouseViewsLog(data: HouseViewsLog) { + const res = await request.post>( + MODULES_API_URL + '/house/house-views-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改看房记录表 + */ +export async function updateHouseViewsLog(data: HouseViewsLog) { + const res = await request.put>( + MODULES_API_URL + '/house/house-views-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除看房记录表 + */ +export async function removeHouseViewsLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-views-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除看房记录表 + */ +export async function removeBatchHouseViewsLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/house/house-views-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询看房记录表 + */ +export async function getHouseViewsLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/house/house-views-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/house/houseViewsLog/model/index.ts b/src/api/house/houseViewsLog/model/index.ts new file mode 100644 index 0000000..c4f7e26 --- /dev/null +++ b/src/api/house/houseViewsLog/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 看房记录表 + */ +export interface HouseViewsLog { + // ID + id?: number; + // 房源ID + houseId?: number; + // 房主ID + houseUserId?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 更新时间 + updateTime?: string; + // 删除 + deleted?: number; +} + +/** + * 看房记录表搜索条件 + */ +export interface HouseViewsLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 0000000..00f3d67 --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,61 @@ +/** + * 接口统一返回结果 + */ +export interface ApiResult { + // 状态码 + code: number; + // 状态信息 + message?: string; + // 返回数据 + data?: T; +} + +/** + * 分页查询统一结果 + */ +export interface PageResult { + // 返回数据 + list: T[]; + // 总数量 + count: number; +} + +/** + * 分页查询基本参数 + */ +export interface PageParam { + // 第几页 + page?: number; + // 每页多少条 + limit?: number; + // 排序字段 + sort?: string; + sortNum?: string; + // 排序方式, asc升序, desc降序 + order?: string; + // 租户ID + tenantId?: number; + // 企业ID + companyId?: number; + // 商户ID + merchantId?: number; + merchantName?: string; + categoryIds?: any; + // 商品分类 + categoryId?: number; + categoryName?: string; + // 搜素关键词 + keywords?: string; + // 起始时间 + createTimeStart?: string; + // 结束时间 + createTimeEnd?: string; + timeStart?: number; + timeEnd?: number; + isExpireTime?: number; + showSoldStatus?: boolean; + dateTime?: string; + sceneType?: string; + userId?: number; + lang?: string; +} diff --git a/src/api/layout/index.ts b/src/api/layout/index.ts new file mode 100644 index 0000000..4893c09 --- /dev/null +++ b/src/api/layout/index.ts @@ -0,0 +1,153 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { User } from '@/api/system/user/model'; +import type { UpdatePasswordParam, NoticeResult } from './model'; +import {SERVER_API_URL} from '@/config/setting'; +import { Company } from '@/api/system/company/model'; +import { CmsWebsite } from '@/api/cms/cmsWebsite/model'; +import {Menu} from "@/api/system/menu/model"; + +/** + * 获取当前登录的用户信息、菜单、权限、角色 + */ +export async function getTenantInfo(): Promise { + const res = await request.get>( + SERVER_API_URL + '/auth/tenant' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取网站信息 https://cms-api.websoft.top/api + */ +export async function getSiteInfo() { + const res = await request.get>( + '/shop/getShopInfo', + { + params: {} + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取当前登录的用户信息、菜单、权限、角色 + */ +export async function getUserInfo(): Promise { + const res = await request.get>(SERVER_API_URL + '/auth/user'); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改当前登录用户信息 + */ +export async function updateLoginUser(data: User) { + const res = await request.put>( + SERVER_API_URL + '/auth/user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取服务器时间(实时) + * @return + */ +export async function getServerTime() { + const res = await request.get>( + '/cms/website/getServerTime' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取未来7天的日期 + * @return + */ +export async function getNext7day() { + const res = await request.get>( + '/cms/website/getNext7day' + ); + console.log('res.data.code: ', res.data.code); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 向子模块传递token + * @param url + */ +export async function transferToken(url: string): Promise { + const res = await request.get>(url); + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改当前登录的用户密码 + */ +export async function updatePassword( + data: UpdatePasswordParam +): Promise { + const res = await request.put>( + SERVER_API_URL + '/auth/password', + data + ); + if (res.data.code === 0) { + return res.data.message ?? '修改成功'; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 创建完整网站并初始化 + */ +export async function createCmsWebSite(data: CmsWebsite){ + const res = await request.post>( + SERVER_API_URL + '/superAdminRegister',data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 租户初始化 + */ +export async function initialization(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/role-menu/' + roleId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询未读通知 + */ +export async function getUnreadNotice(): Promise { + return { + notice: [], + letter: [], + todo: [] + }; +} diff --git a/src/api/layout/model/index.ts b/src/api/layout/model/index.ts new file mode 100644 index 0000000..317b25d --- /dev/null +++ b/src/api/layout/model/index.ts @@ -0,0 +1,74 @@ +/** + * 首页布局样式 + */ +export interface Layout { + // 内容区域的宽度 + width?: string; + // 文字颜色 + color?: string; + // 高亮颜色 + hover?: string; + // 背景颜色 + backgroundColor?: string; + headerStyle?: any; + siteNameStyle?: any; +} + +/** + * 修改密码参数 + */ +export interface UpdatePasswordParam { + // 新密码 + password: string; + // 原始密码 + oldPassword: string; +} + +/** + * 通知数据格式 + */ +export interface NoticeModel { + // 图标颜色 + color?: string; + // 图标 + icon?: string; + // 标题 + title?: string; + // 时间 + time?: string; +} + +/** + * 私信数据格式 + */ +export interface LetterModel { + // 头像 + avatar?: string; + // 标题 + title?: string; + // 内容 + content?: string; + // 时间 + time?: string; +} + +/** + * 代办数据格式 + */ +export interface TodoModel { + // 状态 + status?: number; + // 标题 + title?: string; + // 描述 + description?: string; +} + +/** + * 查询未读通知返回结果 + */ +export interface NoticeResult { + notice: NoticeModel[]; + letter: LetterModel[]; + todo: TodoModel[]; +} diff --git a/src/api/miniprogram/index.ts b/src/api/miniprogram/index.ts new file mode 100644 index 0000000..8cfbbc9 --- /dev/null +++ b/src/api/miniprogram/index.ts @@ -0,0 +1,50 @@ +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 小程序码参数 + */ +export interface MiniProgramCodeParam { + page?: string; + scene: string; + width?: number; + checkPath?: boolean; + envVersion?: 'release' | 'trial' | 'develop'; +} + +/** + * 生成小程序码 + */ +export async function generateMiniProgramCode(data: MiniProgramCodeParam) { + try { + const url = '/wx-login/getOrderQRCodeUnlimited/' + data.scene; + const fullUrl = MODULES_API_URL + `${url}`; + + console.log('生成小程序码URL:', fullUrl); + console.log('小程序码参数:', data); + console.log('scene 参数:', data.scene); + + // 直接返回URL,让浏览器处理图片加载 + // scene 参数中包含了租户ID信息 + return fullUrl; + } catch (error: any) { + console.error('生成小程序码失败:', error); + throw new Error(error.message || '生成小程序码失败'); + } +} + +/** + * 生成邀请小程序码 + */ +export async function generateInviteCode(inviterId: number) { + const scene = `uid_${inviterId}`; + + console.log('生成邀请小程序码 scene:', scene); + + return generateMiniProgramCode({ + page: 'pages/index/index', + scene: scene, + width: 180, + checkPath: true, + envVersion: 'trial' + }); +} diff --git a/src/api/oa/oaApp/index.ts b/src/api/oa/oaApp/index.ts new file mode 100644 index 0000000..7982790 --- /dev/null +++ b/src/api/oa/oaApp/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaApp, OaAppParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询应用 + */ +export async function pageOaApp(params: OaAppParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/oa-app/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listOaApp(params?: OaAppParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用 + */ +export async function addOaApp(data: OaApp) { + const res = await request.post>( + MODULES_API_URL + '/oa/oa-app', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updateOaApp(data: OaApp) { + const res = await request.put>( + MODULES_API_URL + '/oa/oa-app', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用 + */ +export async function removeOaApp(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用 + */ +export async function removeBatchOaApp(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getOaApp(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaApp/model/index.ts b/src/api/oa/oaApp/model/index.ts new file mode 100644 index 0000000..01e8ce1 --- /dev/null +++ b/src/api/oa/oaApp/model/index.ts @@ -0,0 +1,149 @@ +import type { PageParam } from '@/api'; + +/** + * 应用 + */ +export interface OaApp { + // 应用ID + appId?: number; + // 应用名称 + appName?: string; + // 应用标识 + appCode?: string; + // 应用秘钥 + appSecret?: string; + // 上级id, 0是顶级 + parentId?: number; + // 应用类型 + appType?: string; + // 应用类型 + appTypeMultiple?: string; + // 类型, 0菜单, 1按钮 + menuType?: number; + // 企业ID + companyId?: number; + // 企业名称 + companyName?: string; + // 应用图标 + appIcon?: string; + // 二维码 + appQrcode?: string; + // 链接地址 + appUrl?: string; + // 后台管理地址 + adminUrl?: string; + // 下载地址 + downUrl?: string; + // 链接地址 + serverUrl?: string; + // 文件服务器 + fileUrl?: string; + // 回调地址 + callbackUrl?: string; + // 腾讯文档地址 + docsUrl?: string; + // 代码仓库地址 + gitUrl?: string; + // 原型图地址 + prototypeUrl?: string; + // IP白名单 + ipAddress?: string; + // 应用截图 + images?: string; + // 应用包名 + packageName?: string; + // 下载次数 + clicks?: number; + // 安装次数 + installs?: number; + // 备注 + comments?: string; + // 应用介绍 + content?: string; + // 项目需求 + requirement?: string; + // 开发者(个人或公司) + developer?: string; + // 项目负责人 + director?: string; + // 项目经理 + projectDirector?: string; + // 业务员 + salesman?: string; + // 软件定价 + price?: string; + // 划线价格 + linePrice?: string; + // 评分 + score?: string; + // 星级 + star?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 权限标识 + authority?: string; + // 打开位置 + target?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 禁止搜索,1禁止 0 允许 + search?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // 版本,0正式版 1基础版 2开发版 + edition?: string; + // 版本号 + version?: string; + // 是否已安装 + isUse?: number; + // 附近1 + file1?: string; + // 附件2 + file2?: string; + // 附件3 + file3?: string; + // 是否显示续费提醒 + showExpiration?: number; + // 是否作为案例展示 + showCase?: number; + // 是否显示在首页 + showIndex?: number; + // 是否推荐 + recommend?: number; + // 到期时间 + expirationTime?: string; + // 续费金额 + renewMoney?: string; + // 应用状态 + appStatus?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 机构id + organizationId?: number; + // 租户编号 + tenantCode?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 应用搜索条件 + */ +export interface OaAppParam extends PageParam { + appId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAppField/index.ts b/src/api/oa/oaAppField/index.ts new file mode 100644 index 0000000..a63147d --- /dev/null +++ b/src/api/oa/oaAppField/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAppField, OaAppFieldParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询应用参数 + */ +export async function pageOaAppField(params: OaAppFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/oa-app-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listOaAppField(params?: OaAppFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用参数 + */ +export async function addOaAppField(data: OaAppField) { + const res = await request.post>( + MODULES_API_URL + '/oa/oa-app-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用参数 + */ +export async function updateOaAppField(data: OaAppField) { + const res = await request.put>( + MODULES_API_URL + '/oa/oa-app-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用参数 + */ +export async function removeOaAppField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchOaAppField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getOaAppField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAppField/model/index.ts b/src/api/oa/oaAppField/model/index.ts new file mode 100644 index 0000000..2949e4e --- /dev/null +++ b/src/api/oa/oaAppField/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface OaAppField { + // 自增ID + id?: number; + // 应用ID + appId?: number; + // 名称 + name?: string; + // 备注 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1删除 + status?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用参数搜索条件 + */ +export interface OaAppFieldParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAppRenew/index.ts b/src/api/oa/oaAppRenew/index.ts new file mode 100644 index 0000000..6c9233b --- /dev/null +++ b/src/api/oa/oaAppRenew/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAppRenew, OaAppRenewParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询续费管理 + */ +export async function pageOaAppRenew(params: OaAppRenewParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/oa-app-renew/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询续费管理列表 + */ +export async function listOaAppRenew(params?: OaAppRenewParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-renew', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加续费管理 + */ +export async function addOaAppRenew(data: OaAppRenew) { + const res = await request.post>( + MODULES_API_URL + '/oa/oa-app-renew', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改续费管理 + */ +export async function updateOaAppRenew(data: OaAppRenew) { + const res = await request.put>( + MODULES_API_URL + '/oa/oa-app-renew', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除续费管理 + */ +export async function removeOaAppRenew(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-renew/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除续费管理 + */ +export async function removeBatchOaAppRenew(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-renew/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询续费管理 + */ +export async function getOaAppRenew(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-renew/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAppRenew/model/index.ts b/src/api/oa/oaAppRenew/model/index.ts new file mode 100644 index 0000000..5b3308a --- /dev/null +++ b/src/api/oa/oaAppRenew/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 续费管理 + */ +export interface OaAppRenew { + // 自增ID + appRenewId?: number; + // 应用ID + appId?: number; + // 续费金额 + money?: string; + // 备注 + comments?: string; + // 开始时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 企业ID + companyId?: number; + // 用户ID + userId?: number; + // 付款凭证 + images?: string; + // 用户姓名 + nickname?: string; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 续费管理搜索条件 + */ +export interface OaAppRenewParam extends PageParam { + appRenewId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAppUrl/index.ts b/src/api/oa/oaAppUrl/index.ts new file mode 100644 index 0000000..88b785d --- /dev/null +++ b/src/api/oa/oaAppUrl/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAppUrl, OaAppUrlParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询项目域名 + */ +export async function pageOaAppUrl(params: OaAppUrlParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/oa-app-url/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目域名列表 + */ +export async function listOaAppUrl(params?: OaAppUrlParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-url', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目域名 + */ +export async function addOaAppUrl(data: OaAppUrl) { + const res = await request.post>( + MODULES_API_URL + '/oa/oa-app-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目域名 + */ +export async function updateOaAppUrl(data: OaAppUrl) { + const res = await request.put>( + MODULES_API_URL + '/oa/oa-app-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目域名 + */ +export async function removeOaAppUrl(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-url/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目域名 + */ +export async function removeBatchOaAppUrl(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-url/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目域名 + */ +export async function getOaAppUrl(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-url/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAppUrl/model/index.ts b/src/api/oa/oaAppUrl/model/index.ts new file mode 100644 index 0000000..e97c2f9 --- /dev/null +++ b/src/api/oa/oaAppUrl/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 项目域名 + */ +export interface OaAppUrl { + // 自增ID + appUrlId?: number; + // 应用ID + appId?: number; + // 域名类型 + name?: string; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 项目域名搜索条件 + */ +export interface OaAppUrlParam extends PageParam { + appUrlId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAppUser/index.ts b/src/api/oa/oaAppUser/index.ts new file mode 100644 index 0000000..0d4b6e8 --- /dev/null +++ b/src/api/oa/oaAppUser/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAppUser, OaAppUserParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询应用成员 + */ +export async function pageOaAppUser(params: OaAppUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/oa/oa-app-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用成员列表 + */ +export async function listOaAppUser(params?: OaAppUserParam) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用成员 + */ +export async function addOaAppUser(data: OaAppUser) { + const res = await request.post>( + MODULES_API_URL + '/oa/oa-app-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用成员 + */ +export async function updateOaAppUser(data: OaAppUser) { + const res = await request.put>( + MODULES_API_URL + '/oa/oa-app-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用成员 + */ +export async function removeOaAppUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用成员 + */ +export async function removeBatchOaAppUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/oa/oa-app-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用成员 + */ +export async function getOaAppUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/oa/oa-app-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAppUser/model/index.ts b/src/api/oa/oaAppUser/model/index.ts new file mode 100644 index 0000000..a354285 --- /dev/null +++ b/src/api/oa/oaAppUser/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 应用成员 + */ +export interface OaAppUser { + // 自增ID + appUserId?: number; + // 角色,10体验成员 20开发者成员 30管理员 + role?: number; + // 用户ID + userId?: number; + // 应用ID + appId?: number; + // 昵称 + nickname?: string; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用成员搜索条件 + */ +export interface OaAppUserParam extends PageParam { + appUserId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssets/index.ts b/src/api/oa/oaAssets/index.ts new file mode 100644 index 0000000..ee9f9ba --- /dev/null +++ b/src/api/oa/oaAssets/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssets, OaAssetsParam } from './model'; + +/** + * 分页查询云服务器 + */ +export async function pageOaAssets(params: OaAssetsParam) { + const res = await request.get>>( + '/oa/oa-assets/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询云服务器列表 + */ +export async function listOaAssets(params?: OaAssetsParam) { + const res = await request.get>( + '/oa/oa-assets', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加云服务器 + */ +export async function addOaAssets(data: OaAssets) { + const res = await request.post>( + '/oa/oa-assets', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改云服务器 + */ +export async function updateOaAssets(data: OaAssets) { + const res = await request.put>( + '/oa/oa-assets', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除云服务器 + */ +export async function removeOaAssets(id?: number) { + const res = await request.delete>( + '/oa/oa-assets/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除云服务器 + */ +export async function removeBatchOaAssets(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询云服务器 + */ +export async function getOaAssets(id: number) { + const res = await request.get>( + '/oa/oa-assets/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssets/model/index.ts b/src/api/oa/oaAssets/model/index.ts new file mode 100644 index 0000000..df826f6 --- /dev/null +++ b/src/api/oa/oaAssets/model/index.ts @@ -0,0 +1,102 @@ +import type { PageParam } from '@/api'; + +/** + * 云服务器 + */ +export interface OaAssets { + // 资产ID + assetsId?: number; + // 资产名称 + name?: string; + // 资产标识 + code?: string; + // 资产类型 + type?: string; + // 服务器厂商 + brand?: string; + // 服务器配置 + configuration?: string; + // 初始账号 + account?: string; + // 初始密码 + password?: string; + // (阿里云/腾讯云)登录账号 + brandAccount?: string; + // (阿里云/腾讯云)登录密码 + brandPassword?: string; + // 宝塔面板 + panel?: string; + // 宝塔面板账号 + panelAccount?: string; + // 宝塔面板密码 + panelPassword?: string; + // 财务信息-合同金额 + financeAmount?: string; + // 购买年限 + financeYears?: number; + // 续费金额 + financeRenew?: string; + // 客户名称 + financeCustomerName?: string; + // 客户联系人 + financeCustomerContact?: string; + // 客户联系电话 + financeCustomerPhone?: string; + // 客户ID + customerId?: number; + // 客户名称 + customerName?: string; + // 开放端口 + openPort?: string; + // 数据库端口 + mysqlPort?: string; + // 详情内容 + content?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 即将过期 + soon?: number; + // 置顶状态 + isTop?: string; + // 可见性(public,private,protected) + visibility?: string; + // 宝塔接口秘钥 + btSign?: string; + // 文章排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 客户ID + companyId?: number; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 机构id + organizationId?: number; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 租户头像 + logo?: string; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 云服务器搜索条件 + */ +export interface OaAssetsParam extends PageParam { + assetsId?: number; + deleted?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsCode/index.ts b/src/api/oa/oaAssetsCode/index.ts new file mode 100644 index 0000000..d754e82 --- /dev/null +++ b/src/api/oa/oaAssetsCode/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsCode, OaAssetsCodeParam } from './model'; + +/** + * 分页查询代码仓库 + */ +export async function pageOaAssetsCode(params: OaAssetsCodeParam) { + const res = await request.get>>( + '/oa/oa-assets-code/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询代码仓库列表 + */ +export async function listOaAssetsCode(params?: OaAssetsCodeParam) { + const res = await request.get>( + '/oa/oa-assets-code', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加代码仓库 + */ +export async function addOaAssetsCode(data: OaAssetsCode) { + const res = await request.post>( + '/oa/oa-assets-code', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改代码仓库 + */ +export async function updateOaAssetsCode(data: OaAssetsCode) { + const res = await request.put>( + '/oa/oa-assets-code', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除代码仓库 + */ +export async function removeOaAssetsCode(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-code/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除代码仓库 + */ +export async function removeBatchOaAssetsCode(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-code/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询代码仓库 + */ +export async function getOaAssetsCode(id: number) { + const res = await request.get>( + '/oa/oa-assets-code/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsCode/model/index.ts b/src/api/oa/oaAssetsCode/model/index.ts new file mode 100644 index 0000000..8c9e712 --- /dev/null +++ b/src/api/oa/oaAssetsCode/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 代码仓库 + */ +export interface OaAssetsCode { + // ID + id?: number; + // 服务器ID + assetsId?: number; + // 名称 + name?: string; + // 英文标识 + code?: string; + // 仓库地址 + gitUrl?: string; + // 仓库品牌 + brand?: string; + // 置顶状态 + isTop?: string; + // 详情内容 + content?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 代码仓库搜索条件 + */ +export interface OaAssetsCodeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsDomain/index.ts b/src/api/oa/oaAssetsDomain/index.ts new file mode 100644 index 0000000..4321d8d --- /dev/null +++ b/src/api/oa/oaAssetsDomain/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsDomain, OaAssetsDomainParam } from './model'; + +/** + * 分页查询域名 + */ +export async function pageOaAssetsDomain(params: OaAssetsDomainParam) { + const res = await request.get>>( + '/oa/oa-assets-domain/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询域名列表 + */ +export async function listOaAssetsDomain(params?: OaAssetsDomainParam) { + const res = await request.get>( + '/oa/oa-assets-domain', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加域名 + */ +export async function addOaAssetsDomain(data: OaAssetsDomain) { + const res = await request.post>( + '/oa/oa-assets-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改域名 + */ +export async function updateOaAssetsDomain(data: OaAssetsDomain) { + const res = await request.put>( + '/oa/oa-assets-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除域名 + */ +export async function removeOaAssetsDomain(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-domain/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除域名 + */ +export async function removeBatchOaAssetsDomain(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-domain/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询域名 + */ +export async function getOaAssetsDomain(id: number) { + const res = await request.get>( + '/oa/oa-assets-domain/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsDomain/model/index.ts b/src/api/oa/oaAssetsDomain/model/index.ts new file mode 100644 index 0000000..eb8af0d --- /dev/null +++ b/src/api/oa/oaAssetsDomain/model/index.ts @@ -0,0 +1,58 @@ +import type { PageParam } from '@/api'; + +/** + * 域名 + */ +export interface OaAssetsDomain { + // ID + domainId?: number; + // 服务器ID + assetsId?: number; + // 域名 + name?: string; + // 域名标识 + code?: string; + // 注册厂商 + brand?: string; + // 面板 + panel?: string; + // 初始账号 + account?: string; + // 初始密码 + password?: string; + // 价格 + price?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 域名搜索条件 + */ +export interface OaAssetsDomainParam extends PageParam { + domainId?: number; + name?: string; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsEmail/index.ts b/src/api/oa/oaAssetsEmail/index.ts new file mode 100644 index 0000000..f918a28 --- /dev/null +++ b/src/api/oa/oaAssetsEmail/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsEmail, OaAssetsEmailParam } from './model'; + +/** + * 分页查询企业邮箱记录表 + */ +export async function pageOaAssetsEmail(params: OaAssetsEmailParam) { + const res = await request.get>>( + '/oa/oa-assets-email/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业邮箱记录表列表 + */ +export async function listOaAssetsEmail(params?: OaAssetsEmailParam) { + const res = await request.get>( + '/oa/oa-assets-email', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加企业邮箱记录表 + */ +export async function addOaAssetsEmail(data: OaAssetsEmail) { + const res = await request.post>( + '/oa/oa-assets-email', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改企业邮箱记录表 + */ +export async function updateOaAssetsEmail(data: OaAssetsEmail) { + const res = await request.put>( + '/oa/oa-assets-email', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除企业邮箱记录表 + */ +export async function removeOaAssetsEmail(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-email/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除企业邮箱记录表 + */ +export async function removeBatchOaAssetsEmail(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-email/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询企业邮箱记录表 + */ +export async function getOaAssetsEmail(id: number) { + const res = await request.get>( + '/oa/oa-assets-email/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsEmail/model/index.ts b/src/api/oa/oaAssetsEmail/model/index.ts new file mode 100644 index 0000000..db9771e --- /dev/null +++ b/src/api/oa/oaAssetsEmail/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from '@/api'; + +/** + * 企业邮箱记录表 + */ +export interface OaAssetsEmail { + // ID + emailId?: number; + // 邮箱名称 + name?: string; + // 域名标识 + code?: string; + // 邮箱型号 + type?: string; + // 品牌厂商 + brand?: string; + // 初始账号 + system?: string; + // 价格 + price?: string; + // 详情内容 + content?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 企业邮箱记录表搜索条件 + */ +export interface OaAssetsEmailParam extends PageParam { + emailId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsMysql/index.ts b/src/api/oa/oaAssetsMysql/index.ts new file mode 100644 index 0000000..f280d2a --- /dev/null +++ b/src/api/oa/oaAssetsMysql/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsMysql, OaAssetsMysqlParam } from './model'; + +/** + * 分页查询云数据库 + */ +export async function pageOaAssetsMysql(params: OaAssetsMysqlParam) { + const res = await request.get>>( + '/oa/oa-assets-mysql/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询云数据库列表 + */ +export async function listOaAssetsMysql(params?: OaAssetsMysqlParam) { + const res = await request.get>( + '/oa/oa-assets-mysql', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加云数据库 + */ +export async function addOaAssetsMysql(data: OaAssetsMysql) { + const res = await request.post>( + '/oa/oa-assets-mysql', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改云数据库 + */ +export async function updateOaAssetsMysql(data: OaAssetsMysql) { + const res = await request.put>( + '/oa/oa-assets-mysql', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除云数据库 + */ +export async function removeOaAssetsMysql(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-mysql/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除云数据库 + */ +export async function removeBatchOaAssetsMysql(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-mysql/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询云数据库 + */ +export async function getOaAssetsMysql(id: number) { + const res = await request.get>( + '/oa/oa-assets-mysql/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsMysql/model/index.ts b/src/api/oa/oaAssetsMysql/model/index.ts new file mode 100644 index 0000000..7d1ef4e --- /dev/null +++ b/src/api/oa/oaAssetsMysql/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 云数据库 + */ +export interface OaAssetsMysql { + // ID + mysqlId?: number; + // 服务器ID + assetsId?: number; + // 服务器 + assetsName?: string; + // 数据库名 + name?: string; + // 数据库标识 + code?: string; + // 注册厂商 + brand?: string; + // ip地址 + ip?: string; + // 端口 + port?: string; + // 管理面板 + panel?: string; + // 初始账号 + account?: string; + // 初始密码 + password?: string; + // 价格 + price?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 云数据库搜索条件 + */ +export interface OaAssetsMysqlParam extends PageParam { + mysqlId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsServer/index.ts b/src/api/oa/oaAssetsServer/index.ts new file mode 100644 index 0000000..ea65e54 --- /dev/null +++ b/src/api/oa/oaAssetsServer/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsServer, OaAssetsServerParam } from './model'; + +/** + * 分页查询服务 + */ +export async function pageOaAssetsServer(params: OaAssetsServerParam) { + const res = await request.get>>( + '/oa/oa-assets-server/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询服务列表 + */ +export async function listOaAssetsServer(params?: OaAssetsServerParam) { + const res = await request.get>( + '/oa/oa-assets-server', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加服务 + */ +export async function addOaAssetsServer(data: OaAssetsServer) { + const res = await request.post>( + '/oa/oa-assets-server', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改服务 + */ +export async function updateOaAssetsServer(data: OaAssetsServer) { + const res = await request.put>( + '/oa/oa-assets-server', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除服务 + */ +export async function removeOaAssetsServer(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-server/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除服务 + */ +export async function removeBatchOaAssetsServer(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-server/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询服务 + */ +export async function getOaAssetsServer(id: number) { + const res = await request.get>( + '/oa/oa-assets-server/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsServer/model/index.ts b/src/api/oa/oaAssetsServer/model/index.ts new file mode 100644 index 0000000..7ecfa6e --- /dev/null +++ b/src/api/oa/oaAssetsServer/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 服务 + */ +export interface OaAssetsServer { + // 插件id + id?: number; + // 服务名称 + server?: string; + // 接口地址 + serverUrl?: string; + // 排序号 + sortNumber?: number; + // 服务器ID + assetsId?: number; + // 服务器ID + ip?: string; + // 备注 + comments?: string; + // 状态, 10待审核 20已通过 30已驳回 + status?: number; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // logo + logo?: string; + // 创建时间 + createTime?: string; +} + +/** + * 服务搜索条件 + */ +export interface OaAssetsServerParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsSite/index.ts b/src/api/oa/oaAssetsSite/index.ts new file mode 100644 index 0000000..f1e3b69 --- /dev/null +++ b/src/api/oa/oaAssetsSite/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsSite, OaAssetsSiteParam } from './model'; + +/** + * 分页查询网站信息记录表 + */ +export async function pageOaAssetsSite(params: OaAssetsSiteParam) { + const res = await request.get>>( + '/cms/cms-website/pageAll', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站信息记录表列表 + */ +export async function listOaAssetsSite(params?: OaAssetsSiteParam) { + const res = await request.get>( + '/cms/cms-website', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站信息记录表 + */ +export async function addOaAssetsSite(data: OaAssetsSite) { + const res = await request.post>( + '/cms/cms-website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站信息记录表 + */ +export async function updateOaAssetsSite(data: OaAssetsSite) { + const res = await request.put>( + '/cms/cms-website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站信息记录表 + */ +export async function removeOaAssetsSite(id?: number) { + const res = await request.delete>( + '/cms/cms-website/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站信息记录表 + */ +export async function removeBatchOaAssetsSite(data: (number | undefined)[]) { + const res = await request.delete>( + '/cms/cms-website/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站信息记录表 + */ +export async function getOaAssetsSite(id: number) { + const res = await request.get>( + '/cms/cms-website/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsSite/model/index.ts b/src/api/oa/oaAssetsSite/model/index.ts new file mode 100644 index 0000000..5643fcc --- /dev/null +++ b/src/api/oa/oaAssetsSite/model/index.ts @@ -0,0 +1,111 @@ +import type { PageParam } from '@/api'; + +/** + * 网站信息记录表 + */ +export interface OaAssetsSite { + // 站点ID + websiteId?: number; + // 网站名称 + websiteName?: string; + // 网站标识 + websiteCode?: string; + // 网站LOGO + websiteIcon?: string; + // 网站LOGO + websiteLogo?: string; + // 网站LOGO(深色模式) + websiteDarkLogo?: string; + // 网站类型 + websiteType?: string; + // 网站关键词 + keywords?: string; + // 域名前缀 + prefix?: string; + // 绑定域名 + domain?: string; + // 全局样式 + style?: string; + // 后台管理地址 + adminUrl?: string; + // 应用版本 10免费版 20授权版 30永久授权 + version?: number; + // 服务到期时间 + expirationTime?: string; + // 模版ID + templateId?: number; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 企业ID + companyId?: number; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 经纬度 + lngAndLat?: string; + // 街道地址 + address?: string; + // 联系电话 + phone?: string; + // 电子邮箱 + email?: string; + // ICP备案号 + icpNo?: string; + // 公安备案 + policeNo?: string; + // 备注 + comments?: string; + // 管理员备注 + remarks?: string; + // 是否推荐 + recommend?: number; + // 是否运行 + running?: number; + // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 + status?: number; + // 维护说明 + statusText?: string; + // 关闭说明 + statusClose?: string; + // 全局样式 + styles?: string; + // 排序号 + sortNumber?: number; + // 服务器ID + assetsId?: number; + // 服务器名称 + assetsName?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 网站信息记录表搜索条件 + */ +export interface OaAssetsSiteParam extends PageParam { + websiteId?: number; + version?: number; + websiteName?: string; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsSoftwareCert/index.ts b/src/api/oa/oaAssetsSoftwareCert/index.ts new file mode 100644 index 0000000..193684e --- /dev/null +++ b/src/api/oa/oaAssetsSoftwareCert/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsSoftwareCert, OaAssetsSoftwareCertParam } from './model'; + +/** + * 分页查询计算机软件著作权登记 + */ +export async function pageOaAssetsSoftwareCert(params: OaAssetsSoftwareCertParam) { + const res = await request.get>>( + '/oa/oa-assets-software-cert/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询计算机软件著作权登记列表 + */ +export async function listOaAssetsSoftwareCert(params?: OaAssetsSoftwareCertParam) { + const res = await request.get>( + '/oa/oa-assets-software-cert', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加计算机软件著作权登记 + */ +export async function addOaAssetsSoftwareCert(data: OaAssetsSoftwareCert) { + const res = await request.post>( + '/oa/oa-assets-software-cert', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改计算机软件著作权登记 + */ +export async function updateOaAssetsSoftwareCert(data: OaAssetsSoftwareCert) { + const res = await request.put>( + '/oa/oa-assets-software-cert', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除计算机软件著作权登记 + */ +export async function removeOaAssetsSoftwareCert(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-software-cert/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除计算机软件著作权登记 + */ +export async function removeBatchOaAssetsSoftwareCert(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-software-cert/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询计算机软件著作权登记 + */ +export async function getOaAssetsSoftwareCert(id: number) { + const res = await request.get>( + '/oa/oa-assets-software-cert/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsSoftwareCert/model/index.ts b/src/api/oa/oaAssetsSoftwareCert/model/index.ts new file mode 100644 index 0000000..c8e32e4 --- /dev/null +++ b/src/api/oa/oaAssetsSoftwareCert/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from '@/api'; + +/** + * 计算机软件著作权登记 + */ +export interface OaAssetsSoftwareCert { + // ID + id?: number; + // 名称 + name?: string; + // 软件著作权标识 + code?: string; + // 证书类型 + type?: string; + // 品牌厂商 + brand?: string; + // 价格 + price?: string; + // 详情内容 + content?: string; + // 证书下载地址 + certUrl?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 计算机软件著作权登记搜索条件 + */ +export interface OaAssetsSoftwareCertParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsSsl/index.ts b/src/api/oa/oaAssetsSsl/index.ts new file mode 100644 index 0000000..222a3e5 --- /dev/null +++ b/src/api/oa/oaAssetsSsl/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsSsl, OaAssetsSslParam } from './model'; + +/** + * 分页查询ssl证书 + */ +export async function pageOaAssetsSsl(params: OaAssetsSslParam) { + const res = await request.get>>( + '/oa/oa-assets-ssl/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询ssl证书列表 + */ +export async function listOaAssetsSsl(params?: OaAssetsSslParam) { + const res = await request.get>( + '/oa/oa-assets-ssl', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加ssl证书 + */ +export async function addOaAssetsSsl(data: OaAssetsSsl) { + const res = await request.post>( + '/oa/oa-assets-ssl', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改ssl证书 + */ +export async function updateOaAssetsSsl(data: OaAssetsSsl) { + const res = await request.put>( + '/oa/oa-assets-ssl', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除ssl证书 + */ +export async function removeOaAssetsSsl(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-ssl/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除ssl证书 + */ +export async function removeBatchOaAssetsSsl(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-ssl/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询ssl证书 + */ +export async function getOaAssetsSsl(id: number) { + const res = await request.get>( + '/oa/oa-assets-ssl/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsSsl/model/index.ts b/src/api/oa/oaAssetsSsl/model/index.ts new file mode 100644 index 0000000..78bbd95 --- /dev/null +++ b/src/api/oa/oaAssetsSsl/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * ssl证书 + */ +export interface OaAssetsSsl { + // ID + sslId?: number; + // 证书名称 + name?: string; + // 证书标识 + code?: string; + // 证书类型 + type?: string; + // 品牌厂商 + brand?: string; + // 价格 + price?: string; + // 详情内容 + content?: string; + // 证书key + certKey?: string; + // 证书pem + certPem?: string; + // 证书下载地址 + certUrl?: string; + // 证书crt + certCrt?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 即将过期提醒, -1即将过期 大于0 正常 + soon?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * ssl证书搜索条件 + */ +export interface OaAssetsSslParam extends PageParam { + sslId?: number; + name?: string; + tenantName?: string; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsTrademark/index.ts b/src/api/oa/oaAssetsTrademark/index.ts new file mode 100644 index 0000000..94e828e --- /dev/null +++ b/src/api/oa/oaAssetsTrademark/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsTrademark, OaAssetsTrademarkParam } from './model'; + +/** + * 分页查询商标注册 + */ +export async function pageOaAssetsTrademark(params: OaAssetsTrademarkParam) { + const res = await request.get>>( + '/oa/oa-assets-trademark/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商标注册列表 + */ +export async function listOaAssetsTrademark(params?: OaAssetsTrademarkParam) { + const res = await request.get>( + '/oa/oa-assets-trademark', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商标注册 + */ +export async function addOaAssetsTrademark(data: OaAssetsTrademark) { + const res = await request.post>( + '/oa/oa-assets-trademark', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商标注册 + */ +export async function updateOaAssetsTrademark(data: OaAssetsTrademark) { + const res = await request.put>( + '/oa/oa-assets-trademark', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商标注册 + */ +export async function removeOaAssetsTrademark(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-trademark/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商标注册 + */ +export async function removeBatchOaAssetsTrademark(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-trademark/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商标注册 + */ +export async function getOaAssetsTrademark(id: number) { + const res = await request.get>( + '/oa/oa-assets-trademark/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsTrademark/model/index.ts b/src/api/oa/oaAssetsTrademark/model/index.ts new file mode 100644 index 0000000..acca78d --- /dev/null +++ b/src/api/oa/oaAssetsTrademark/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from '@/api'; + +/** + * 商标注册 + */ +export interface OaAssetsTrademark { + // ID + id?: number; + // 商标名称 + name?: string; + // 商标标识 + code?: string; + // 商标类型 + type?: string; + // 品牌厂商 + brand?: string; + // 价格 + price?: string; + // 详情内容 + content?: string; + // 证书下载 + certUrl?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 商标注册搜索条件 + */ +export interface OaAssetsTrademarkParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsUser/index.ts b/src/api/oa/oaAssetsUser/index.ts new file mode 100644 index 0000000..e18b83c --- /dev/null +++ b/src/api/oa/oaAssetsUser/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsUser, OaAssetsUserParam } from './model'; + +/** + * 分页查询服务器成员管理 + */ +export async function pageOaAssetsUser(params: OaAssetsUserParam) { + const res = await request.get>>( + '/oa/oa-assets-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询服务器成员管理列表 + */ +export async function listOaAssetsUser(params?: OaAssetsUserParam) { + const res = await request.get>( + '/oa/oa-assets-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加服务器成员管理 + */ +export async function addOaAssetsUser(data: OaAssetsUser) { + const res = await request.post>( + '/oa/oa-assets-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改服务器成员管理 + */ +export async function updateOaAssetsUser(data: OaAssetsUser) { + const res = await request.put>( + '/oa/oa-assets-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除服务器成员管理 + */ +export async function removeOaAssetsUser(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除服务器成员管理 + */ +export async function removeBatchOaAssetsUser(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询服务器成员管理 + */ +export async function getOaAssetsUser(id: number) { + const res = await request.get>( + '/oa/oa-assets-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsUser/model/index.ts b/src/api/oa/oaAssetsUser/model/index.ts new file mode 100644 index 0000000..d768d2d --- /dev/null +++ b/src/api/oa/oaAssetsUser/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 服务器成员管理 + */ +export interface OaAssetsUser { + // 自增ID + id?: number; + // 角色,10体验成员 20开发者成员 30管理员 + role?: number; + // 用户ID + userId?: number; + // 应用ID + assetsId?: number; + // 昵称 + nickname?: string; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 服务器成员管理搜索条件 + */ +export interface OaAssetsUserParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaAssetsVhost/index.ts b/src/api/oa/oaAssetsVhost/index.ts new file mode 100644 index 0000000..e626d74 --- /dev/null +++ b/src/api/oa/oaAssetsVhost/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaAssetsVhost, OaAssetsVhostParam } from './model'; + +/** + * 分页查询虚拟主机记录表 + */ +export async function pageOaAssetsVhost(params: OaAssetsVhostParam) { + const res = await request.get>>( + '/oa/oa-assets-vhost/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询虚拟主机记录表列表 + */ +export async function listOaAssetsVhost(params?: OaAssetsVhostParam) { + const res = await request.get>( + '/oa/oa-assets-vhost', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加虚拟主机记录表 + */ +export async function addOaAssetsVhost(data: OaAssetsVhost) { + const res = await request.post>( + '/oa/oa-assets-vhost', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改虚拟主机记录表 + */ +export async function updateOaAssetsVhost(data: OaAssetsVhost) { + const res = await request.put>( + '/oa/oa-assets-vhost', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除虚拟主机记录表 + */ +export async function removeOaAssetsVhost(id?: number) { + const res = await request.delete>( + '/oa/oa-assets-vhost/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除虚拟主机记录表 + */ +export async function removeBatchOaAssetsVhost(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-assets-vhost/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询虚拟主机记录表 + */ +export async function getOaAssetsVhost(id: number) { + const res = await request.get>( + '/oa/oa-assets-vhost/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaAssetsVhost/model/index.ts b/src/api/oa/oaAssetsVhost/model/index.ts new file mode 100644 index 0000000..e3bb127 --- /dev/null +++ b/src/api/oa/oaAssetsVhost/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 虚拟主机记录表 + */ +export interface OaAssetsVhost { + // ID + vhostId?: number; + // 域名 + name?: string; + // 域名标识 + code?: string; + // 主机型号 + type?: string; + // 品牌厂商 + brand?: string; + // 初始账号 + account?: string; + // 初始密码 + password?: string; + // 价格 + price?: string; + // 详情内容 + content?: string; + // ssl证书 + ssl?: string; + // 购买时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 置顶状态 + isTop?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 描述 + comments?: string; + // 服务器ID + assetsId?: number; + // 用户ID + userId?: number; + // 可见用户 + userIds?: string; + // 状态, 0正常, 1冻结 + status?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 虚拟主机记录表搜索条件 + */ +export interface OaAssetsVhostParam extends PageParam { + vhostId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaCompany/index.ts b/src/api/oa/oaCompany/index.ts new file mode 100644 index 0000000..4ebe023 --- /dev/null +++ b/src/api/oa/oaCompany/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaCompany, OaCompanyParam } from './model'; + +/** + * 分页查询企业信息 + */ +export async function pageOaCompany(params: OaCompanyParam) { + const res = await request.get>>( + '/oa/oa-company/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业信息列表 + */ +export async function listOaCompany(params?: OaCompanyParam) { + const res = await request.get>( + '/oa/oa-company', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加企业信息 + */ +export async function addOaCompany(data: OaCompany) { + const res = await request.post>( + '/oa/oa-company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改企业信息 + */ +export async function updateOaCompany(data: OaCompany) { + const res = await request.put>( + '/oa/oa-company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除企业信息 + */ +export async function removeOaCompany(id?: number) { + const res = await request.delete>( + '/oa/oa-company/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除企业信息 + */ +export async function removeBatchOaCompany(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-company/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询企业信息 + */ +export async function getOaCompany(id: number) { + const res = await request.get>( + '/oa/oa-company/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaCompany/model/index.ts b/src/api/oa/oaCompany/model/index.ts new file mode 100644 index 0000000..fae4f89 --- /dev/null +++ b/src/api/oa/oaCompany/model/index.ts @@ -0,0 +1,117 @@ +import type { PageParam } from '@/api'; + +/** + * 企业信息 + */ +export interface OaCompany { + // 企业id + companyId?: number; + // 企业简称 + shortName?: string; + // 企业全称 + companyName?: string; + // 企业标识 + companyCode?: string; + // 类型 10企业 20政府单位 + companyType?: string; + // 企业类型多选 + companyTypeMultiple?: string; + // 应用标识 + companyLogo?: string; + // 应用类型 + appType?: string; + // 绑定域名 + domain?: string; + // 联系电话 + phone?: string; + // 座机电话 + tel?: string; + // 邮箱 + email?: string; + // 发票抬头 + invoiceHeader?: string; + // 企业法人 + businessEntity?: string; + // 服务开始时间 + startTime?: string; + // 服务到期时间 + expirationTime?: string; + // 应用版本 10体验版 20授权版 30旗舰版 + version?: number; + // 成员数量(人数上限) + members?: number; + // 成员数量(当前) + users?: number; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 部门数量 + departments?: number; + // 存储空间 + storage?: string; + // 存储空间(上限) + storageMax?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 备注 + comments?: string; + // 是否实名认证 + authentication?: number; + // 企业默认主体 + authoritative?: number; + // request合法域名 + requestUrl?: string; + // socket合法域名 + socketUrl?: string; + // 主控端域名 + serverUrl?: string; + // 业务域名 + modulesUrl?: string; + // 是否推荐 + recommend?: number; + // 点赞数量 + likes?: number; + // 点击数量 + clicks?: number; + // 购买数量 + buys?: number; + // 是否含税, 0不含, 1含 + isTax?: number; + // 当前克隆的租户ID + planId?: number; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 企业信息搜索条件 + */ +export interface OaCompanyParam extends PageParam { + companyId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaCompanyField/index.ts b/src/api/oa/oaCompanyField/index.ts new file mode 100644 index 0000000..82e1a5b --- /dev/null +++ b/src/api/oa/oaCompanyField/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaCompanyField, OaCompanyFieldParam } from './model'; + +/** + * 分页查询企业参数 + */ +export async function pageOaCompanyField(params: OaCompanyFieldParam) { + const res = await request.get>>( + '/oa/oa-company-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业参数列表 + */ +export async function listOaCompanyField(params?: OaCompanyFieldParam) { + const res = await request.get>( + '/oa/oa-company-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加企业参数 + */ +export async function addOaCompanyField(data: OaCompanyField) { + const res = await request.post>( + '/oa/oa-company-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改企业参数 + */ +export async function updateOaCompanyField(data: OaCompanyField) { + const res = await request.put>( + '/oa/oa-company-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除企业参数 + */ +export async function removeOaCompanyField(id?: number) { + const res = await request.delete>( + '/oa/oa-company-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除企业参数 + */ +export async function removeBatchOaCompanyField(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-company-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询企业参数 + */ +export async function getOaCompanyField(id: number) { + const res = await request.get>( + '/oa/oa-company-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaCompanyField/model/index.ts b/src/api/oa/oaCompanyField/model/index.ts new file mode 100644 index 0000000..2cd4a94 --- /dev/null +++ b/src/api/oa/oaCompanyField/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 企业参数 + */ +export interface OaCompanyField { + // 自增ID + id?: number; + // 企业ID + companyId?: number; + // 名称 + name?: string; + // 备注 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1删除 + status?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 企业参数搜索条件 + */ +export interface OaCompanyFieldParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaCompanyUser/index.ts b/src/api/oa/oaCompanyUser/index.ts new file mode 100644 index 0000000..0321df4 --- /dev/null +++ b/src/api/oa/oaCompanyUser/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaCompanyUser, OaCompanyUserParam } from './model'; + +/** + * 分页查询成员管理 + */ +export async function pageOaCompanyUser(params: OaCompanyUserParam) { + const res = await request.get>>( + '/oa/oa-company-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询成员管理列表 + */ +export async function listOaCompanyUser(params?: OaCompanyUserParam) { + const res = await request.get>( + '/oa/oa-company-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加成员管理 + */ +export async function addOaCompanyUser(data: OaCompanyUser) { + const res = await request.post>( + '/oa/oa-company-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改成员管理 + */ +export async function updateOaCompanyUser(data: OaCompanyUser) { + const res = await request.put>( + '/oa/oa-company-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除成员管理 + */ +export async function removeOaCompanyUser(id?: number) { + const res = await request.delete>( + '/oa/oa-company-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除成员管理 + */ +export async function removeBatchOaCompanyUser(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-company-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询成员管理 + */ +export async function getOaCompanyUser(id: number) { + const res = await request.get>( + '/oa/oa-company-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaCompanyUser/model/index.ts b/src/api/oa/oaCompanyUser/model/index.ts new file mode 100644 index 0000000..7294530 --- /dev/null +++ b/src/api/oa/oaCompanyUser/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 成员管理 + */ +export interface OaCompanyUser { + // 自增ID + companyUserId?: number; + // 角色,10体验成员 20开发者成员 30管理员 + role?: number; + // 用户ID + userId?: number; + // 企业ID + companyId?: number; + // 昵称 + nickname?: string; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 成员管理搜索条件 + */ +export interface OaCompanyUserParam extends PageParam { + companyUserId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaLink/index.ts b/src/api/oa/oaLink/index.ts new file mode 100644 index 0000000..9ea6b0b --- /dev/null +++ b/src/api/oa/oaLink/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaLink, OaLinkParam } from './model'; + +/** + * 分页查询常用链接 + */ +export async function pageOaLink(params: OaLinkParam) { + const res = await request.get>>( + '/oa/oa-link/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询常用链接列表 + */ +export async function listOaLink(params?: OaLinkParam) { + const res = await request.get>( + '/oa/oa-link', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加常用链接 + */ +export async function addOaLink(data: OaLink) { + const res = await request.post>( + '/oa/oa-link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改常用链接 + */ +export async function updateOaLink(data: OaLink) { + const res = await request.put>( + '/oa/oa-link', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除常用链接 + */ +export async function removeOaLink(id?: number) { + const res = await request.delete>( + '/oa/oa-link/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除常用链接 + */ +export async function removeBatchOaLink(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-link/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询常用链接 + */ +export async function getOaLink(id: number) { + const res = await request.get>( + '/oa/oa-link/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaLink/model/index.ts b/src/api/oa/oaLink/model/index.ts new file mode 100644 index 0000000..63dc11b --- /dev/null +++ b/src/api/oa/oaLink/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 常用链接 + */ +export interface OaLink { + // 自增ID + id?: number; + // 链接名称 + name?: string; + // 图标 + icon?: string; + // 链接地址 + url?: string; + // 链接分类 + linkType?: string; + // 应用ID + appId?: number; + // 所属栏目 + categoryId?: number; + // 用户ID + userId?: number; + // 是否推荐 + recommend?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 常用链接搜索条件 + */ +export interface OaLinkParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/oa/oaTask/index.ts b/src/api/oa/oaTask/index.ts new file mode 100644 index 0000000..15198eb --- /dev/null +++ b/src/api/oa/oaTask/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaTask, OaTaskParam } from './model'; + +/** + * 分页查询任务记录表 + */ +export async function pageOaTask(params: OaTaskParam) { + const res = await request.get>>( + '/oa/oa-task/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询任务记录表列表 + */ +export async function listOaTask(params?: OaTaskParam) { + const res = await request.get>( + '/oa/oa-task', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加任务记录表 + */ +export async function addOaTask(data: OaTask) { + const res = await request.post>( + '/oa/oa-task', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改任务记录表 + */ +export async function updateOaTask(data: OaTask) { + const res = await request.put>( + '/oa/oa-task', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除任务记录表 + */ +export async function removeOaTask(id?: number) { + const res = await request.delete>( + '/oa/oa-task/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除任务记录表 + */ +export async function removeBatchOaTask(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-task/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询任务记录表 + */ +export async function getOaTask(id: number) { + const res = await request.get>( + '/oa/oa-task/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaTask/model/index.ts b/src/api/oa/oaTask/model/index.ts new file mode 100644 index 0000000..51a7e3c --- /dev/null +++ b/src/api/oa/oaTask/model/index.ts @@ -0,0 +1,85 @@ +import type { PageParam } from '@/api'; + +/** + * 任务记录表 + */ +export interface OaTask { + // 工单ID + taskId?: number; + // 工单类型 + taskType?: string; + // 任务内容 + name?: string; + // 问题描述 + content?: string; + // 工单附件 + files?: string; + // 工单发起人 + promoter?: number; + // 受理人 + commander?: number; + // 工单状态, 0未开始 1已指派 + progress?: number; + // 优先级 + priority?: string; + // 品质要求 + quality?: string; + // 时限(天) + day?: number; + // 手机号 + phone?: string; + // 开始时间 + startTime?: string; + // 结束时间 + endTime?: string; + // 逾期天数 + overdueDays?: number; + // 项目ID + appId?: number; + // 机构id + organizationId?: number; + // 项目ID + projectId?: number; + // 客户ID + customerId?: number; + // 资产ID + assetsId?: number; + // 用户ID + userId?: number; + // 是否已查阅 + isRead?: number; + // 最后回复人 + lastReadUser?: number; + // 发起人昵称 + nickname?: string; + // 发起人头像 + avatar?: string; + // 最后回复人头像 + lastAvatar?: string; + // 最后回复人昵称 + lastNickname?: string; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0待处理, 1已完成 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 任务记录表搜索条件 + */ +export interface OaTaskParam extends PageParam { + taskId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaTaskCount/index.ts b/src/api/oa/oaTaskCount/index.ts new file mode 100644 index 0000000..5d03be3 --- /dev/null +++ b/src/api/oa/oaTaskCount/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaTaskCount, OaTaskCountParam } from './model'; + +/** + * 分页查询数据统计 + */ +export async function pageOaTaskCount(params: OaTaskCountParam) { + const res = await request.get>>( + '/oa/oa-task-count/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询数据统计列表 + */ +export async function listOaTaskCount(params?: OaTaskCountParam) { + const res = await request.get>( + '/oa/oa-task-count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加数据统计 + */ +export async function addOaTaskCount(data: OaTaskCount) { + const res = await request.post>( + '/oa/oa-task-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改数据统计 + */ +export async function updateOaTaskCount(data: OaTaskCount) { + const res = await request.put>( + '/oa/oa-task-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除数据统计 + */ +export async function removeOaTaskCount(id?: number) { + const res = await request.delete>( + '/oa/oa-task-count/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除数据统计 + */ +export async function removeBatchOaTaskCount(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-task-count/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询数据统计 + */ +export async function getOaTaskCount(id: number) { + const res = await request.get>( + '/oa/oa-task-count/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaTaskCount/model/index.ts b/src/api/oa/oaTaskCount/model/index.ts new file mode 100644 index 0000000..c451ed0 --- /dev/null +++ b/src/api/oa/oaTaskCount/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 数据统计 + */ +export interface OaTaskCount { + // 自增ID + taskCountId?: number; + // 用户ID + userId?: number; + // 待处理数 + pending?: number; + // 闲置的工单(废弃) + unused?: number; + // 已完成数(废弃) + completed?: number; + // 今天处理数 + today?: number; + // 本月处理数 + month?: number; + // 今年处理数 + year?: number; + // 总工单数 + total?: number; + // 部门ID + organizationId?: number; + // 角色ID + roleId?: number; + // 角色标识 + roleCode?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 更新时间 + updateTime?: string; +} + +/** + * 数据统计搜索条件 + */ +export interface OaTaskCountParam extends PageParam { + taskCountId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaTaskRecord/index.ts b/src/api/oa/oaTaskRecord/index.ts new file mode 100644 index 0000000..1ab23b5 --- /dev/null +++ b/src/api/oa/oaTaskRecord/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaTaskRecord, OaTaskRecordParam } from './model'; + +/** + * 分页查询工单回复记录表 + */ +export async function pageOaTaskRecord(params: OaTaskRecordParam) { + const res = await request.get>>( + '/oa/oa-task-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询工单回复记录表列表 + */ +export async function listOaTaskRecord(params?: OaTaskRecordParam) { + const res = await request.get>( + '/oa/oa-task-record', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加工单回复记录表 + */ +export async function addOaTaskRecord(data: OaTaskRecord) { + const res = await request.post>( + '/oa/oa-task-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改工单回复记录表 + */ +export async function updateOaTaskRecord(data: OaTaskRecord) { + const res = await request.put>( + '/oa/oa-task-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除工单回复记录表 + */ +export async function removeOaTaskRecord(id?: number) { + const res = await request.delete>( + '/oa/oa-task-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除工单回复记录表 + */ +export async function removeBatchOaTaskRecord(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-task-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询工单回复记录表 + */ +export async function getOaTaskRecord(id: number) { + const res = await request.get>( + '/oa/oa-task-record/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaTaskRecord/model/index.ts b/src/api/oa/oaTaskRecord/model/index.ts new file mode 100644 index 0000000..09cac63 --- /dev/null +++ b/src/api/oa/oaTaskRecord/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 工单回复记录表 + */ +export interface OaTaskRecord { + // 回复ID + taskRecordId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 工单ID + taskId?: number; + // 内容 + content?: string; + // 机密信息 + confidential?: string; + // 联系电话 + phone?: string; + // 工单附件 + files?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0待处理, 1已完成 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 工单回复记录表搜索条件 + */ +export interface OaTaskRecordParam extends PageParam { + taskRecordId?: number; + keywords?: string; +} diff --git a/src/api/oa/oaTaskUser/index.ts b/src/api/oa/oaTaskUser/index.ts new file mode 100644 index 0000000..9a20b61 --- /dev/null +++ b/src/api/oa/oaTaskUser/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OaTaskUser, OaTaskUserParam } from './model'; + +/** + * 分页查询工单成员 + */ +export async function pageOaTaskUser(params: OaTaskUserParam) { + const res = await request.get>>( + '/oa/oa-task-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询工单成员列表 + */ +export async function listOaTaskUser(params?: OaTaskUserParam) { + const res = await request.get>( + '/oa/oa-task-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加工单成员 + */ +export async function addOaTaskUser(data: OaTaskUser) { + const res = await request.post>( + '/oa/oa-task-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改工单成员 + */ +export async function updateOaTaskUser(data: OaTaskUser) { + const res = await request.put>( + '/oa/oa-task-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除工单成员 + */ +export async function removeOaTaskUser(id?: number) { + const res = await request.delete>( + '/oa/oa-task-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除工单成员 + */ +export async function removeBatchOaTaskUser(data: (number | undefined)[]) { + const res = await request.delete>( + '/oa/oa-task-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询工单成员 + */ +export async function getOaTaskUser(id: number) { + const res = await request.get>( + '/oa/oa-task-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/oa/oaTaskUser/model/index.ts b/src/api/oa/oaTaskUser/model/index.ts new file mode 100644 index 0000000..5fd902f --- /dev/null +++ b/src/api/oa/oaTaskUser/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 工单成员 + */ +export interface OaTaskUser { + // 自增ID + taskUserId?: number; + // 角色,10体验成员 20开发者成员 30管理员 + role?: number; + // 用户ID + userId?: number; + // 工单ID + taskId?: number; + // 昵称 + nickname?: string; + // 状态, 0待处理, 1已完成 + status?: number; + // 租户id + tenantId?: number; + // 加入时间 + createTime?: string; +} + +/** + * 工单成员搜索条件 + */ +export interface OaTaskUserParam extends PageParam { + taskUserId?: number; + keywords?: string; +} diff --git a/src/api/passport/login/index.ts b/src/api/passport/login/index.ts new file mode 100644 index 0000000..6e4a498 --- /dev/null +++ b/src/api/passport/login/index.ts @@ -0,0 +1,117 @@ +import request from '@/utils/request'; +import { setToken } from '@/utils/token-util'; +import type { ApiResult } from '@/api'; +import type { + LoginParam, + LoginResult, + CaptchaResult, + SmsCaptchaResult +} from './model'; +import { User } from '@/api/system/user/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 登录 + */ +export async function login(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/login', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + if (res.data.data?.user) { + const user = res.data.data?.user; + localStorage.setItem('TenantId', String(user.tenantId)); + localStorage.setItem('UserId', String(user.userId)); + } + + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取验证码 + */ +export async function getCaptcha() { + const res = await request.get>( + SERVER_API_URL + '/captcha' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function loginBySms(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/loginBySms', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + if (res.data.data?.user) { + const user = res.data.data?.user; + localStorage.setItem('TenantId', String(user.tenantId)); + localStorage.setItem('UserId', String(user.userId)); + } + + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 发送短信验证码 + */ +export async function sendSmsCaptcha(data: LoginParam) { + const res = await request.post>( + SERVER_API_URL + '/sendSmsCaptcha', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 登录 + */ +export async function remoteLogin(data: LoginParam) { + const res = await request.post>( + 'https://open.gxwebsoft.com/api/login', + data + ); + if (res.data.code === 0) { + setToken(res.data.data?.access_token, data.remember); + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取企业微信登录链接 + */ +export async function getWxWorkQrConnect(data) { + const res = await request.post>( + SERVER_API_URL + '/wx-work', + data + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function registerUser(data: User) { + const res = await request.post>( + SERVER_API_URL + '/register', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/passport/login/model/index.ts b/src/api/passport/login/model/index.ts new file mode 100644 index 0000000..1f1c822 --- /dev/null +++ b/src/api/passport/login/model/index.ts @@ -0,0 +1,46 @@ +import type { User } from '@/api/system/user/model'; +/** + * 登录参数 + */ +export interface LoginParam { + // 账号 + username?: string; + // 密码 + password?: string; + // 租户id + tenantId?: number; + // 是否记住密码 + remember?: boolean; + // 手机号码 + phone?: string; + // 短信验证码 + code?: string; +} + +/** + * 登录返回结果 + */ +export interface LoginResult { + // token + access_token?: string; + // 用户信息 + user?: User; +} + +/** + * 图形验证码返回结果 + */ +export interface CaptchaResult { + // 图形验证码base64数据 + base64: string; + // 验证码文本 + text: string; +} + +/** + * 短信验证码返回结果 + */ +export interface SmsCaptchaResult { + // 验证码文本 + text: string; +} diff --git a/src/api/passport/qrLogin/index.ts b/src/api/passport/qrLogin/index.ts new file mode 100644 index 0000000..0f662d8 --- /dev/null +++ b/src/api/passport/qrLogin/index.ts @@ -0,0 +1,110 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 二维码生成响应数据 + */ +export interface QrCodeResponse { + token: string; // 二维码唯一标识token + qrCode: string; // 二维码内容 + expiresIn: number; // 过期时间(秒) +} + +/** + * 二维码状态响应 + */ +export interface QrCodeStatusResponse { + status: 'pending' | 'scanned' | 'confirmed' | 'expired'; + accessToken?: string; // 登录成功时返回的JWT token + userInfo?: any; // 用户信息 + expiresIn?: number; // 剩余过期时间(秒) + tenantId?: string; // 租户ID +} + +/** + * 确认登录请求参数 + */ +export interface QrLoginConfirmRequest { + token: string; // 二维码token + userId?: number; // 用户ID + platform?: string; // 登录平台 +} + +/** + * 生成登录二维码 + */ +export async function generateQrCode(): Promise { + const res = await request.post>( + SERVER_API_URL + '/qr-login/generate', + {} + ); + + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + + return Promise.reject(new Error(res.data.message || '生成二维码失败')); +} + +/** + * 检查二维码状态 + */ +export async function checkQrCodeStatus(token: string): Promise { + const res = await request.get>( + SERVER_API_URL + `/qr-login/status/${token}` + ); + + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + + return Promise.reject(new Error(res.data.message || '检查二维码状态失败')); +} + +/** + * 扫码确认登录(移动端调用) + */ +export async function confirmQrLogin(requestData: QrLoginConfirmRequest): Promise { + const res = await request.post>( + SERVER_API_URL + '/qr-login/confirm', + requestData + ); + console.log(res,'>>>89898989') + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + + return Promise.reject(new Error(res.data.message || '确认登录失败')); +} + +/** + * 扫码标记(移动端扫码时调用) + */ +export async function scanQrCode(token: string): Promise { + const res = await request.post>( + SERVER_API_URL + `/qr-login/scan/${token}` + ); + + if (res.data.code === 0) { + return res.data.data || true; + } + + return Promise.reject(new Error(res.data.message || '扫码失败')); +} + +/** + * 微信小程序扫码登录确认 + */ +export async function wechatMiniProgramConfirm(requestData: QrLoginConfirmRequest): Promise { + const res = await request.post>( + SERVER_API_URL + '/qr-login/wechat-confirm', + requestData + ); + + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + + return Promise.reject(new Error(res.data.message || '微信小程序登录确认失败')); +} diff --git a/src/api/project/project/index.ts b/src/api/project/project/index.ts new file mode 100644 index 0000000..ca38168 --- /dev/null +++ b/src/api/project/project/index.ts @@ -0,0 +1,128 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Project, ProjectParam } from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询应用 + */ +export async function pageProject(params: ProjectParam) { + const res = await request.get>>( + MODULES_API_URL + '/project/project/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listProject(params?: ProjectParam) { + const res = await request.get>( + MODULES_API_URL + '/project/project', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用 + */ +export async function addProject(data: Project) { + const res = await request.post>( + MODULES_API_URL + '/project/project', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updateProject(data: Project) { + const res = await request.put>( + MODULES_API_URL + '/project/project', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用 + */ +export async function removeProject(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/project/project/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用 + */ +export async function removeBatchProject(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/project/project/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getProject(id: number) { + const res = await request.get>( + MODULES_API_URL + '/project/project/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取状态的项目数 + */ +export async function getData() { + const res = await request.get(MODULES_API_URL + '/project/project/data'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 统计续费金额 + */ +export async function getCount() { + const res = await request.get(MODULES_API_URL + '/project/project/count'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/project/project/model/index.ts b/src/api/project/project/model/index.ts new file mode 100644 index 0000000..7733810 --- /dev/null +++ b/src/api/project/project/model/index.ts @@ -0,0 +1,198 @@ +import type { PageParam } from '@/api'; +import {ProjectField} from "@/api/project/projectField/model"; +import {ProjectUser} from "@/api/project/projectUser/model"; + +/** + * 应用 + */ +export interface Project { + // 应用ID + appId?: number; + // 应用名称 + appName?: string; + // 应用标识 + appCode?: string; + // 应用秘钥 + appSecret?: string; + // 上级id, 0是顶级 + parentId?: number; + // 应用类型 + appType?: string; + // 应用类型 + appTypeMultiple?: string; + // 类型, 0菜单, 1按钮 + menuType?: number; + // 企业ID + companyId?: number; + // 企业名称 + companyName?: string; + // 应用图标 + appIcon?: string; + // 二维码 + appQrcode?: string; + // 链接地址 + appUrl?: string; + // 后台管理地址 + adminUrl?: string; + // 超级管理员手机号 + superAdminPhone?: string; + // 下载地址 + downUrl?: string; + // 链接地址 + serverUrl?: string; + // 文件服务器 + fileUrl?: string; + // 回调地址 + callbackUrl?: string; + // 腾讯文档地址 + docsUrl?: string; + // 代码仓库地址 + gitUrl?: string; + // 原型图地址 + prototypeUrl?: string; + // IP白名单 + ipAddress?: string; + // 应用截图 + images?: string; + // 应用包名 + packageName?: string; + // 下载次数 + clicks?: number; + // 安装次数 + installs?: number; + // 备注 + comments?: string; + // 应用介绍 + content?: string; + // 项目需求 + requirement?: string; + // 开发者(个人或公司) + developer?: string; + // 项目负责人 + director?: string; + // 项目成员 + projectUsers?: ProjectUser[]; + // 项目经理 + projectDirector?: string; + // 业务员 + salesman?: string; + // 软件定价 + price?: string; + // 划线价格 + linePrice?: string; + // 评分 + score?: string; + // 星级 + star?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 权限标识 + authority?: string; + // 打开位置 + target?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 禁止搜索,1禁止 0 允许 + search?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // 版本,0正式版 1体验版 2开发版 + edition?: string; + // 版本号 + version?: string; + // 是否已安装 + isUse?: number; + // 附近1 + file1?: string; + // 附件2 + file2?: string; + // 附件3 + file3?: string; + // 是否显示续费提醒 + showExpiration?: number; + // 是否作为案例展示 + showCase?: number; + // 是否显示在首页 + showIndex?: number; + // 是否推荐 + recommend?: number; + // 到期时间 + expirationTime?: string; + // 状态, 0正常, 1 即将过期 + soon?: number; + // 是否过期 + expired?: number; + // 剩余天数 + expiredDays?: number; + // 续费金额 + renewMoney?: number; + // 应用状态 + appStatus?: string; + // 开发进度 + progress?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 机构id + organizationId?: number; + // 租户编号 + tenantCode?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 关联网站ID + websiteId?: number; + // 支付方式 + payType?: number; + // 成员管理 + users?: ProjectUser[]; + fields?: ProjectField[]; + label?: string; + value?: number; + collection?: boolean; +} + +/** + * 应用搜索条件 + */ +export interface ProjectParam extends PageParam { + appId?: number; + userId?: number; + appStatus?: any; + month?: number; + showExpiration?: boolean; + expirationTimeStart?: string; + expirationTimeEnd?: string; + keywords?: string; +} + +export interface ProjectCount { + // 总销售额 + yearTotalPrice?: number; + // 上年销售额 + lastTotalPrice?: number; + // 近30天可催收的续费 + totalPrice30?: number; + // 本月销售额 + monthTotalPrice?: number; + // 每年可收续费总额 + totalRenewPrice?: number; + // 已经超过催收时间的续费总额 + expiredPrice?: number; + // 有效的续费总额 + effectiveTotalPrice?: number; + // 当前查询的续费总额 + currentQueryTotalPrice?: number; +} diff --git a/src/api/project/projectCollection/index.ts b/src/api/project/projectCollection/index.ts new file mode 100644 index 0000000..fa15b2d --- /dev/null +++ b/src/api/project/projectCollection/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ProjectCollection, ProjectCollectionParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询我的收藏 + */ +export async function pageProjectCollection(params: ProjectCollectionParam) { + const res = await request.get>>( + MODULES_API_URL + '/project/project-collection/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询我的收藏列表 + */ +export async function listProjectCollection(params?: ProjectCollectionParam) { + const res = await request.get>( + MODULES_API_URL + '/project/project-collection', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加我的收藏 + */ +export async function addProjectCollection(data: ProjectCollection) { + const res = await request.post>( + MODULES_API_URL + '/project/project-collection', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改我的收藏 + */ +export async function updateProjectCollection(data: ProjectCollection) { + const res = await request.put>( + MODULES_API_URL + '/project/project-collection', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除我的收藏 + */ +export async function removeProjectCollection(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-collection/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除我的收藏 + */ +export async function removeBatchProjectCollection(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-collection/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询我的收藏 + */ +export async function getProjectCollection(appId: any) { + const res = await request.get>( + MODULES_API_URL + '/project/project-collection/' + appId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/project/projectCollection/model/index.ts b/src/api/project/projectCollection/model/index.ts new file mode 100644 index 0000000..722e315 --- /dev/null +++ b/src/api/project/projectCollection/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 我的收藏 + */ +export interface ProjectCollection { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 应用ID + appId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 我的收藏搜索条件 + */ +export interface ProjectCollectionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/project/projectField/index.ts b/src/api/project/projectField/index.ts new file mode 100644 index 0000000..796c496 --- /dev/null +++ b/src/api/project/projectField/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ProjectField, ProjectFieldParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询应用参数 + */ +export async function pageProjectField(params: ProjectFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/project/project-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listProjectField(params?: ProjectFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/project/project-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用参数 + */ +export async function addProjectField(data: ProjectField) { + const res = await request.post>( + MODULES_API_URL + '/project/project-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用参数 + */ +export async function updateProjectField(data: ProjectField) { + const res = await request.put>( + MODULES_API_URL + '/project/project-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用参数 + */ +export async function removeProjectField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchProjectField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getProjectField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/project/project-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/project/projectField/model/index.ts b/src/api/project/projectField/model/index.ts new file mode 100644 index 0000000..068fb69 --- /dev/null +++ b/src/api/project/projectField/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface ProjectField { + // 自增ID + id?: number; + // 应用ID + appId?: number; + // 名称 + name?: string; + // 类型 + type?: string; + // 备注 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1删除 + status?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 应用参数搜索条件 + */ +export interface ProjectFieldParam extends PageParam { + id?: number; + appId?: number; + name?: string; + keywords?: string; +} diff --git a/src/api/project/projectRenew/index.ts b/src/api/project/projectRenew/index.ts new file mode 100644 index 0000000..a36af1b --- /dev/null +++ b/src/api/project/projectRenew/index.ts @@ -0,0 +1,127 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ProjectRenew, ProjectRenewParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询续费管理 + */ +export async function pageProjectRenew(params: ProjectRenewParam) { + const res = await request.get>>( + MODULES_API_URL + '/project/project-renew/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询续费管理列表 + */ +export async function listProjectRenew(params?: ProjectRenewParam) { + const res = await request.get>( + MODULES_API_URL + '/project/project-renew', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加续费管理 + */ +export async function addProjectRenew(data: ProjectRenew) { + const res = await request.post>( + MODULES_API_URL + '/project/project-renew', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改续费管理 + */ +export async function updateProjectRenew(data: ProjectRenew) { + const res = await request.put>( + MODULES_API_URL + '/project/project-renew', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除续费管理 + */ +export async function removeProjectRenew(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-renew/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除续费管理 + */ +export async function removeBatchProjectRenew(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-renew/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询续费管理 + */ +export async function getProjectRenew(id: number) { + const res = await request.get>( + MODULES_API_URL + '/project/project-renew/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取数据统计 + */ +export async function countProjectRenew(params?: any) { + const res = await request.get(MODULES_API_URL + '/project/project-renew/data',{ + params + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function listMonthRenewPrice() { + const res = await request.get(MODULES_API_URL + '/project/project-renew/listMonthRenewPrice'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/project/projectRenew/model/index.ts b/src/api/project/projectRenew/model/index.ts new file mode 100644 index 0000000..68ffee3 --- /dev/null +++ b/src/api/project/projectRenew/model/index.ts @@ -0,0 +1,65 @@ +import type { PageParam } from '@/api'; + +/** + * 续费管理 + */ +export interface ProjectRenew { + // 自增ID + appRenewId?: number; + // 应用ID + appId?: number; + // 应用名称 + appName?: string; + // 类型, 0续费, 1新购 + type?: number; + // 续费金额 + money?: number; + // 总金额 + totalPrice?: number; + // 实际支付金额 + payPrice?: number; + // 优惠金额 + reducePrice?: number; + // 续费时长 + duration?: number; + // 续费天数 + days?: number; + // 支付方式 + payType?: number; + // 备注 + comments?: string; + // 开始时间 + startTime?: string; + // 到期时间 + endTime?: string; + // 状态, 0正常, 1 即将过期 + soon?: number; + // 客户ID + customerId?: number; + // 客户名称 + customerName?: string; + // 用户ID + userId?: number; + // 付款凭证 + images?: string; + // 用户姓名 + nickname?: string; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + editStatus?: boolean; + fetching?: boolean; +} + +/** + * 续费管理搜索条件 + */ +export interface ProjectRenewParam extends PageParam { + appId?: number; + appRenewId?: number; + month?: number; + keywords?: string; +} diff --git a/src/api/project/projectUrl/index.ts b/src/api/project/projectUrl/index.ts new file mode 100644 index 0000000..60c43b4 --- /dev/null +++ b/src/api/project/projectUrl/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ProjectUrl, ProjectUrlParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询项目域名 + */ +export async function pageProjectUrl(params: ProjectUrlParam) { + const res = await request.get>>( + MODULES_API_URL + '/project/project-url/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目域名列表 + */ +export async function listProjectUrl(params?: ProjectUrlParam) { + const res = await request.get>( + MODULES_API_URL + '/project/project-url', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目域名 + */ +export async function addProjectUrl(data: ProjectUrl) { + const res = await request.post>( + MODULES_API_URL + '/project/project-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目域名 + */ +export async function updateProjectUrl(data: ProjectUrl) { + const res = await request.put>( + MODULES_API_URL + '/project/project-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目域名 + */ +export async function removeProjectUrl(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-url/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目域名 + */ +export async function removeBatchProjectUrl(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-url/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目域名 + */ +export async function getProjectUrl(id: number) { + const res = await request.get>( + MODULES_API_URL + '/project/project-url/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/project/projectUrl/model/index.ts b/src/api/project/projectUrl/model/index.ts new file mode 100644 index 0000000..3a857aa --- /dev/null +++ b/src/api/project/projectUrl/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 项目域名 + */ +export interface ProjectUrl { + // 自增ID + appUrlId?: number; + // 应用ID + appId?: number; + // 域名类型 + name?: string; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; + // 是否打开密码 + openPassword?: boolean; +} + +/** + * 项目域名搜索条件 + */ +export interface ProjectUrlParam extends PageParam { + appUrlId?: number; + keywords?: string; +} diff --git a/src/api/project/projectUser/index.ts b/src/api/project/projectUser/index.ts new file mode 100644 index 0000000..c5477f3 --- /dev/null +++ b/src/api/project/projectUser/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ProjectUser, ProjectUserParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询应用成员 + */ +export async function pageProjectUser(params: ProjectUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/project/project-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用成员列表 + */ +export async function listProjectUser(params?: ProjectUserParam) { + const res = await request.get>( + MODULES_API_URL + '/project/project-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用成员 + */ +export async function addProjectUser(data: ProjectUser) { + const res = await request.post>( + MODULES_API_URL + '/project/project-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用成员 + */ +export async function updateProjectUser(data: ProjectUser) { + const res = await request.put>( + MODULES_API_URL + '/project/project-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用成员 + */ +export async function removeProjectUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用成员 + */ +export async function removeBatchProjectUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/project/project-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用成员 + */ +export async function getProjectUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/project/project-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/project/projectUser/model/index.ts b/src/api/project/projectUser/model/index.ts new file mode 100644 index 0000000..5ff8184 --- /dev/null +++ b/src/api/project/projectUser/model/index.ts @@ -0,0 +1,34 @@ +import type { PageParam } from '@/api'; + +/** + * 应用成员 + */ +export interface ProjectUser { + // 自增ID + appUserId?: number; + // 角色,10体验成员 20开发者成员 30管理员 + role?: number; + // 用户ID + userId?: number; + // 应用ID + appId?: number; + // 昵称 + nickname?: string; + // 头像 + avatar?: string; + // 状态, 0正常, 1待确认 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用成员搜索条件 + */ +export interface ProjectUserParam extends PageParam { + appUserId?: number; + appId?: number; + keywords?: string; +} diff --git a/src/api/pwl/pwlProject/index.ts b/src/api/pwl/pwlProject/index.ts new file mode 100644 index 0000000..0d1a607 --- /dev/null +++ b/src/api/pwl/pwlProject/index.ts @@ -0,0 +1,131 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { PwlProject, PwlProjectParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询卫兰的项目项目系统 + */ +export async function pagePwlProject(params: PwlProjectParam) { + const res = await request.get>>( + MODULES_API_URL + '/pwl/pwl-project/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询卫兰的项目项目系统列表 + */ +export async function listPwlProject(params?: PwlProjectParam) { + const res = await request.get>( + MODULES_API_URL + '/pwl/pwl-project', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加卫兰的项目项目系统 + */ +export async function addPwlProject(data: PwlProject) { + const res = await request.post>( + MODULES_API_URL + '/pwl/pwl-project', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改卫兰的项目项目系统 + */ +export async function updatePwlProject(data: PwlProject) { + const res = await request.put>( + MODULES_API_URL + '/pwl/pwl-project', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除卫兰的项目项目系统 + */ +export async function removePwlProject(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/pwl/pwl-project/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除卫兰的项目项目系统 + */ +export async function removeBatchPwlProject(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/pwl/pwl-project/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询卫兰的项目项目系统 + */ +export async function getPwlProject(id: number) { + const res = await request.get>( + MODULES_API_URL + '/pwl/pwl-project/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function pwlProjectCount() { + const res = await request.get('/pwl/pwl-project/'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 文章批量导入 + */ +export async function importPwlProject(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + MODULES_API_URL + '/pwl/pwl-project/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/pwl/pwlProject/model/index.ts b/src/api/pwl/pwlProject/model/index.ts new file mode 100644 index 0000000..fb8b9af --- /dev/null +++ b/src/api/pwl/pwlProject/model/index.ts @@ -0,0 +1,111 @@ +import type { PageParam } from '@/api'; + +/** + * 卫兰的项目项目系统 + */ +export interface PwlProject { + // ID + id?: number; + // 审计单位 + name?: string; + // 报告编号 + code?: string; + // 上级id, 0是顶级 + parentId?: number; + // 项目类型 + type?: string; + // 项目图标 + image?: string; + // 二维码 + qrcode?: string; + // 链接地址 + url?: string; + // 应用截图 + images?: string; + // 底稿情况 + files?: string; + // 应用介绍 + content?: string; + // 年末资产总额(万元) + totalAssets?: string; + // 合同金额 + contractPrice?: string; + // 实收金额 + payPrice?: string; + // 软件定价 + price?: string; + // 是否推荐 + recommend?: number; + // 到期时间 + expirationTime?: string; + // 项目信息-开票单位/汇款人 + itemName?: string; + // 项目信息-年度 + itemYear?: string; + // 项目信息-类型 + itemType?: string; + // 项目信息-审计意见 + itemOpinion?: string; + // 到账信息-银行名称 + bankName?: string; + // 到账日期 + bankPayTime?: string; + // 到账金额 + bankPrice?: string; + // 发票类型 + invoiceType?: string; + // 开票日期 + invoiceTime?: string; + // 开票金额 + invoicePrice?: string; + // 报告份数 + reportNum?: string; + // 底稿人员 + draftUserId?: string; + // 底稿人员 + draftUser?: string; + // 参与成员 + userIds?: string; + // 参与成员 + users?: string; + // 签字注会 + signUserId?: string; + // 签字注会 + signUser?: string; + // 展业人员 + saleUserId?: string; + // 展业人员 + saleUser?: string; + // 纸质底稿完成情况 + paper?: number; + // 电子底稿完成情况 + electron?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 客户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 知识库ID + kbId?: string; +} + +/** + * 卫兰的项目项目系统搜索条件 + */ +export interface PwlProjectParam extends PageParam { + id?: number; + type?: string; + itemYear?: string; + keywords?: string; +} diff --git a/src/api/pwl/pwlProjectLibrary/index.ts b/src/api/pwl/pwlProjectLibrary/index.ts new file mode 100644 index 0000000..149638f --- /dev/null +++ b/src/api/pwl/pwlProjectLibrary/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { PwlProjectLibrary, PwlProjectLibraryParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询材料库资料库表 + */ +export async function pagePwlProjectLibrary(params: PwlProjectLibraryParam) { + const res = await request.get>>( + MODULES_API_URL + '/pwl/pwl-project-library/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询材料库资料库表列表 + */ +export async function listPwlProjectLibrary(params?: PwlProjectLibraryParam) { + const res = await request.get>( + MODULES_API_URL + '/pwl/pwl-project-library', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加材料库资料库表 + */ +export async function addPwlProjectLibrary(data: PwlProjectLibrary) { + const res = await request.post>( + MODULES_API_URL + '/pwl/pwl-project-library', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改材料库资料库表 + */ +export async function updatePwlProjectLibrary(data: PwlProjectLibrary) { + const res = await request.put>( + MODULES_API_URL + '/pwl/pwl-project-library', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除材料库资料库表 + */ +export async function removePwlProjectLibrary(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/pwl/pwl-project-library/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除材料库资料库表 + */ +export async function removeBatchPwlProjectLibrary(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/pwl/pwl-project-library/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询材料库资料库表 + */ +export async function getPwlProjectLibrary(id: number) { + const res = await request.get>( + MODULES_API_URL + '/pwl/pwl-project-library/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/pwl/pwlProjectLibrary/model/index.ts b/src/api/pwl/pwlProjectLibrary/model/index.ts new file mode 100644 index 0000000..19092ac --- /dev/null +++ b/src/api/pwl/pwlProjectLibrary/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 材料库资料库表 + */ +export interface PwlProjectLibrary { + // ID + id?: number; + // 资料库名称 + name?: string; + // 资料库类型: biz-项目案例库, pub-公共知识库 + type?: string; + // 关联知识库ID + kbId?: string; + // 排序(数字越小越靠前) + sort?: number; + // 资料库图标 + image?: string; + // 资料库描述 + content?: string; + // 关联文件 + files?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 创建用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 材料库资料库表搜索条件 + */ +export interface PwlProjectLibraryParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopCommissionRole/index.ts b/src/api/shop/shopCommissionRole/index.ts new file mode 100644 index 0000000..60db05d --- /dev/null +++ b/src/api/shop/shopCommissionRole/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopCommissionRole, ShopCommissionRoleParam } from './model'; + +/** + * 分页查询分红角色 + */ +export async function pageShopCommissionRole(params: ShopCommissionRoleParam) { + const res = await request.get>>( + '/shop/shop-commission-role/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分红角色列表 + */ +export async function listShopCommissionRole(params?: ShopCommissionRoleParam) { + const res = await request.get>( + '/shop/shop-commission-role', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分红角色 + */ +export async function addShopCommissionRole(data: ShopCommissionRole) { + const res = await request.post>( + '/shop/shop-commission-role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分红角色 + */ +export async function updateShopCommissionRole(data: ShopCommissionRole) { + const res = await request.put>( + '/shop/shop-commission-role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分红角色 + */ +export async function removeShopCommissionRole(id?: number) { + const res = await request.delete>( + '/shop/shop-commission-role/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分红角色 + */ +export async function removeBatchShopCommissionRole(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-commission-role/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分红角色 + */ +export async function getShopCommissionRole(id: number) { + const res = await request.get>( + '/shop/shop-commission-role/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopCommissionRole/model/index.ts b/src/api/shop/shopCommissionRole/model/index.ts new file mode 100644 index 0000000..4309104 --- /dev/null +++ b/src/api/shop/shopCommissionRole/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 分红角色 + */ +export interface ShopCommissionRole { + // + id?: number; + // + title?: string; + // + provinceId?: number; + // + cityId?: number; + // + regionId?: number; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // + sortNumber?: number; +} + +/** + * 分红角色搜索条件 + */ +export interface ShopCommissionRoleParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopCoupon/index.ts b/src/api/shop/shopCoupon/index.ts new file mode 100644 index 0000000..0327e4f --- /dev/null +++ b/src/api/shop/shopCoupon/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopCoupon, ShopCouponParam } from './model'; + +/** + * 分页查询优惠券 + */ +export async function pageShopCoupon(params: ShopCouponParam) { + const res = await request.get>>( + '/shop/shop-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询优惠券列表 + */ +export async function listShopCoupon(params?: ShopCouponParam) { + const res = await request.get>( + '/shop/shop-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加优惠券 + */ +export async function addShopCoupon(data: ShopCoupon) { + const res = await request.post>( + '/shop/shop-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改优惠券 + */ +export async function updateShopCoupon(data: ShopCoupon) { + const res = await request.put>( + '/shop/shop-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除优惠券 + */ +export async function removeShopCoupon(id?: number) { + const res = await request.delete>( + '/shop/shop-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除优惠券 + */ +export async function removeBatchShopCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询优惠券 + */ +export async function getShopCoupon(id: number) { + const res = await request.get>( + '/shop/shop-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopCoupon/model/index.ts b/src/api/shop/shopCoupon/model/index.ts new file mode 100644 index 0000000..218fc2e --- /dev/null +++ b/src/api/shop/shopCoupon/model/index.ts @@ -0,0 +1,71 @@ +import type { PageParam } from '@/api/index'; +import {ShopCouponApplyCate} from "@/api/shop/shopCouponApplyCate/model"; +import {ShopCouponApplyItem} from "@/api/shop/shopCouponApplyItem/model"; + +/** + * 优惠券 + */ +export interface ShopCoupon { + // id + id?: number; + // 优惠券名称 + name?: string; + // 优惠券描述 + description?: string; + // 优惠券类型(10满减券 20折扣券 30免费劵) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 到期类型(10领取后生效 20固定时间) + expireType?: number; + // 领取后生效-有效天数 + expireDay?: number; + // 有效期开始时间 + startTime?: string | Date; + // 有效期结束时间 + endTime?: string | Date; + // 适用范围(10全部商品 20指定商品 30指定分类) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 是否过期(0未过期 1已过期) + isExpire?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 创建用户ID + userId?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string | Date; + // 修改时间 + updateTime?: string | Date; + // 发放总数量(-1表示无限制) + totalCount?: number; + // 已发放数量 + issuedCount?: number; + // 每人限领数量(-1表示无限制) + limitPerUser?: number; + // 是否启用(0禁用 1启用) + enabled?: string; + couponApplyCateList?: ShopCouponApplyCate[]; + couponApplyItemList?: ShopCouponApplyItem[]; +} + +/** + * 优惠券搜索条件 + */ +export interface ShopCouponParam extends PageParam { + id?: number; + name?: string; + type?: number; + keywords?: string; +} diff --git a/src/api/shop/shopCouponApplyCate/model/index.ts b/src/api/shop/shopCouponApplyCate/model/index.ts new file mode 100644 index 0000000..2adc829 --- /dev/null +++ b/src/api/shop/shopCouponApplyCate/model/index.ts @@ -0,0 +1,11 @@ + +/** + * 优惠券 + */ +export interface ShopCouponApplyCate { + id?: number; + couponId?: number; + cateId?: number; + cateLevel?: number; + +} diff --git a/src/api/shop/shopCouponApplyItem/model/index.ts b/src/api/shop/shopCouponApplyItem/model/index.ts new file mode 100644 index 0000000..a9ed201 --- /dev/null +++ b/src/api/shop/shopCouponApplyItem/model/index.ts @@ -0,0 +1,11 @@ + +/** + * 优惠券 + */ +export interface ShopCouponApplyItem { + id?: number; + couponId?: number; + type?: number; + pk?: number; + +} diff --git a/src/api/shop/shopDealerApply/index.ts b/src/api/shop/shopDealerApply/index.ts new file mode 100644 index 0000000..1cf1f57 --- /dev/null +++ b/src/api/shop/shopDealerApply/index.ts @@ -0,0 +1,158 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerApply, ShopDealerApplyParam } from './model'; + +/** + * 分页查询分销商申请记录表 + */ +export async function pageShopDealerApply(params: ShopDealerApplyParam) { + const res = await request.get>>( + '/shop/shop-dealer-apply/page', + {params} + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商申请记录表列表 + */ +export async function listShopDealerApply(params?: ShopDealerApplyParam) { + const res = await request.get>( + '/shop/shop-dealer-apply', + {params} + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商申请记录表 + */ +export async function addShopDealerApply(data: ShopDealerApply) { + const res = await request.post>( + '/shop/shop-dealer-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商申请记录表 + */ +export async function updateShopDealerApply(data: ShopDealerApply) { + const res = await request.put>( + '/shop/shop-dealer-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商申请记录表 + */ +export async function removeShopDealerApply(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-apply/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商申请记录表 + */ +export async function removeBatchShopDealerApply(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-apply/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商申请记录表 + */ +export async function getShopDealerApply(id: number) { + const res = await request.get>( + '/shop/shop-dealer-apply/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 审核通过分销商申请 + */ +export async function approveShopDealerApply(id: number) { + const res = await request.put>( + `/shop/shop-dealer-apply/${id}/approve` + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 驳回分销商申请 + */ +export async function rejectShopDealerApply(id: number, data: { rejectReason: string }) { + const res = await request.put>( + `/shop/shop-dealer-apply/${id}/reject`, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量审核通过分销商申请 + */ +export async function batchApproveShopDealerApply(ids: number[]) { + const res = await request.put>( + '/shop/shop-dealer-apply/batch-approve', + { ids } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入经销商申请 + */ +export async function importShopDealerApplies(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + '/shop/shop-dealer-apply/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerApply/model/index.ts b/src/api/shop/shopDealerApply/model/index.ts new file mode 100644 index 0000000..bc35074 --- /dev/null +++ b/src/api/shop/shopDealerApply/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商申请记录表 + */ +export interface ShopDealerApply { + // 主键ID + applyId?: number; + // 类型 + type?: number; + // 用户ID + userId?: number; + // 昵称 + nickName?: string; + // 姓名 + realName?: string; + // 经销商名称 + dealerName?: string; + // 手机号 + mobile?: string; + // 分销比例 + rate?: number; + // 推荐人用户ID + refereeId?: number; + // 推荐人姓名 + refereeName?: string; + // 申请方式(10需后台审核 20无需审核) + applyType?: number; + // 申请时间 + applyTime?: string | number | Date; + // 审核状态 (10待审核 20审核通过 30驳回) + applyStatus?: number; + // 审核时间 + auditTime?: string | number | Date; + // 驳回原因 + rejectReason?: string; + comments?: string; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商申请记录表搜索条件 + */ +export interface ShopDealerApplyParam extends PageParam { + applyId?: number; + userId?: number; + realName?: string; + dealerName?: string; + mobile?: string; + refereeId?: number; + applyType?: number; + applyStatus?: number; + startTime?: string; + endTime?: string; + keywords?: string; +} diff --git a/src/api/shop/shopDealerCapital/index.ts b/src/api/shop/shopDealerCapital/index.ts new file mode 100644 index 0000000..1792423 --- /dev/null +++ b/src/api/shop/shopDealerCapital/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerCapital, ShopDealerCapitalParam } from './model'; + +/** + * 分页查询分销商资金明细表 + */ +export async function pageShopDealerCapital(params: ShopDealerCapitalParam) { + const res = await request.get>>( + '/shop/shop-dealer-capital/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商资金明细表列表 + */ +export async function listShopDealerCapital(params?: ShopDealerCapitalParam) { + const res = await request.get>( + '/shop/shop-dealer-capital', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商资金明细表 + */ +export async function addShopDealerCapital(data: ShopDealerCapital) { + const res = await request.post>( + '/shop/shop-dealer-capital', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商资金明细表 + */ +export async function updateShopDealerCapital(data: ShopDealerCapital) { + const res = await request.put>( + '/shop/shop-dealer-capital', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商资金明细表 + */ +export async function removeShopDealerCapital(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-capital/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商资金明细表 + */ +export async function removeBatchShopDealerCapital(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-capital/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商资金明细表 + */ +export async function getShopDealerCapital(id: number) { + const res = await request.get>( + '/shop/shop-dealer-capital/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerCapital/model/index.ts b/src/api/shop/shopDealerCapital/model/index.ts new file mode 100644 index 0000000..f2155b8 --- /dev/null +++ b/src/api/shop/shopDealerCapital/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商资金明细表 + */ +export interface ShopDealerCapital { + // 主键ID + id?: number; + // 分销商用户ID + userId?: number; + // 订单ID + orderId?: number; + // 资金流动类型 (10佣金收入 20提现支出 30转账支出 40转账收入) + flowType?: number; + // 金额 + money?: string; + // 描述 + comments?: string; + // 对方用户ID + toUserId?: number; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商资金明细表搜索条件 + */ +export interface ShopDealerCapitalParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerOrder/index.ts b/src/api/shop/shopDealerOrder/index.ts new file mode 100644 index 0000000..dab3b28 --- /dev/null +++ b/src/api/shop/shopDealerOrder/index.ts @@ -0,0 +1,221 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerOrder, ShopDealerOrderParam } from './model'; +import { utils, writeFile } from 'xlsx'; +import { message } from 'ant-design-vue'; +import { getTenantId } from '@/utils/domain'; + +/** + * 分页查询分销商订单记录表 + */ +export async function pageShopDealerOrder(params: ShopDealerOrderParam) { + const res = await request.get>>( + '/shop/shop-dealer-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商订单记录表列表 + */ +export async function listShopDealerOrder(params?: ShopDealerOrderParam) { + const res = await request.get>( + '/shop/shop-dealer-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商订单记录表 + */ +export async function addShopDealerOrder(data: ShopDealerOrder) { + const res = await request.post>( + '/shop/shop-dealer-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商订单记录表 + */ +export async function updateShopDealerOrder(data: ShopDealerOrder) { + const res = await request.put>( + '/shop/shop-dealer-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商订单记录表 + */ +export async function removeShopDealerOrder(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商订单记录表 + */ +export async function removeBatchShopDealerOrder(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商订单记录表 + */ +export async function getShopDealerOrder(id: number) { + const res = await request.get>( + '/shop/shop-dealer-order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入分销商订单 + */ +export async function importShopDealerOrder(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + '/shop/shop-dealer-order/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导出分销商订单 + */ +export async function exportShopDealerOrder(params?: ShopDealerOrderParam) { + // 显示导出加载提示 + message.loading('正在准备导出数据...', 0); + + try { + // 获取数据 + const list = await listShopDealerOrder(params); + + if (!list || list.length === 0) { + message.destroy(); + message.warning('没有数据可以导出'); + return; + } + + // 构建导出数据 + const array: (string | number)[][] = [ + [ + '订单ID', + '买家用户ID', + '订单总金额', + '一级分销商ID', + '一级佣金', + '二级分销商ID', + '二级佣金', + '三级分销商ID', + '三级佣金', + '订单状态', + '结算状态', + '结算时间', + '创建时间' + ] + ]; + + list.forEach((order: ShopDealerOrder) => { + array.push([ + order.orderId || '', + order.userId || '', + order.orderPrice || '0', + order.firstUserId || '', + order.firstMoney || '0', + order.secondUserId || '', + order.secondMoney || '0', + order.thirdUserId || '', + order.thirdMoney || '0', + order.isInvalid === 0 ? '有效' : '失效', + order.isSettled === 0 ? '未结算' : '已结算', + order.settleTime ? new Date(order.settleTime).toLocaleString() : '', + order.createTime || '' + ]); + }); + + // 创建工作簿 + const sheetName = `shop_dealer_order_${getTenantId()}`; + const workbook = { + SheetNames: [sheetName], + Sheets: {} + }; + + const sheet = utils.aoa_to_sheet(array); + workbook.Sheets[sheetName] = sheet; + + // 设置列宽 + sheet['!cols'] = [ + { wch: 15 }, // 订单ID + { wch: 12 }, // 买家用户ID + { wch: 12 }, // 订单总金额 + { wch: 15 }, // 一级分销商ID + { wch: 12 }, // 一级佣金 + { wch: 15 }, // 二级分销商ID + { wch: 12 }, // 二级佣金 + { wch: 15 }, // 三级分销商ID + { wch: 12 }, // 三级佣金 + { wch: 10 }, // 订单状态 + { wch: 10 }, // 结算状态 + { wch: 20 }, // 结算时间 + { wch: 20 } // 创建时间 + ]; + + message.destroy(); + message.loading('正在生成Excel文件...', 0); + + // 延迟写入文件,确保消息提示显示 + setTimeout(() => { + writeFile(workbook, `${sheetName}.xlsx`); + message.destroy(); + message.success(`成功导出 ${list.length} 条记录`); + }, 1000); + + } catch (error: any) { + message.destroy(); + message.error(error.message || '导出失败,请重试'); + } +} diff --git a/src/api/shop/shopDealerOrder/model/index.ts b/src/api/shop/shopDealerOrder/model/index.ts new file mode 100644 index 0000000..9e3b90d --- /dev/null +++ b/src/api/shop/shopDealerOrder/model/index.ts @@ -0,0 +1,73 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商订单记录表 + */ +export interface ShopDealerOrder { + // 主键ID + id?: number; + // 买家用户ID + userId?: number; + // 买家用户昵称 + nickname?: string; + // 订单编号 + orderNo?: string; + // 订单总金额(不含运费) + orderPrice?: string; + // 结算金额 + settledPrice?: string; + // 支付金额 + payPrice?: string; + // 分销商用户id(一级) + firstUserId?: number; + // 分销商用户id(二级) + secondUserId?: number; + // 分销商用户id(三级) + thirdUserId?: number; + // 分销佣金(一级) + firstMoney?: string; + // 分销佣金(二级) + secondMoney?: string; + // 分销佣金(三级) + thirdMoney?: string; + // 一级分销商昵称 + firstNickname?: string; + // 二级分销商昵称 + secondNickname?: string; + // 三级分销商昵称 + thirdNickname?: string; + // 分销比例 + rate?: number; + // 商品单价 + price?: string; + // 订单月份 + month?: string; + // 订单是否失效(0未失效 1已失效) + isInvalid?: number; + // 佣金结算(0未结算 1已结算) + isSettled?: number; + // 结算时间 + settleTime?: number; + // 订单备注 + comments?: string; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商订单记录表搜索条件 + */ +export interface ShopDealerOrderParam extends PageParam { + id?: number; + orderNo?: string; + productName?: string; + userId?: number; + isInvalid?: number; + isSettled?: number; + myOrder?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerPoster/index.ts b/src/api/shop/shopDealerPoster/index.ts new file mode 100644 index 0000000..d560dcc --- /dev/null +++ b/src/api/shop/shopDealerPoster/index.ts @@ -0,0 +1,131 @@ +import request from '@/utils/request'; +import type { ShopDealerPoster, ShopDealerPosterParam } from './model'; + +/** + * 分页查询分销商海报设置 + */ +export async function pageShopDealerPoster(params: ShopDealerPosterParam) { + const res = await request.get('/shop/dealer/poster/page', { params }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商海报设置列表 + */ +export async function listShopDealerPoster(params?: ShopDealerPosterParam) { + const res = await request.get('/shop/dealer/poster/list', { params }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商海报设置 + */ +export async function getShopDealerPoster(id: number) { + const res = await request.get('/shop/dealer/poster/' + id); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取当前海报配置 + */ +export async function getCurrentPosterConfig() { + const res = await request.get('/shop/dealer/poster/config'); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商海报设置 + */ +export async function addShopDealerPoster(data: ShopDealerPoster) { + const res = await request.post('/shop/dealer/poster', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商海报设置 + */ +export async function updateShopDealerPoster(data: ShopDealerPoster) { + const res = await request.put('/shop/dealer/poster', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 保存海报配置 + */ +export async function savePosterConfig(data: any) { + const res = await request.post('/shop/dealer/poster/config', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商海报设置 + */ +export async function removeShopDealerPoster(id: number) { + const res = await request.delete('/shop/dealer/poster/' + id); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商海报设置 + */ +export async function removeBatchShopDealerPoster(ids: (number | undefined)[]) { + const res = await request.delete('/shop/dealer/poster/batch', { data: ids }); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 生成海报 + */ +export async function generatePoster(userId: number, config?: any) { + const res = await request.post('/shop/dealer/poster/generate', { userId, config }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传海报背景图片 + */ +export async function uploadPosterBackground(file: File) { + const formData = new FormData(); + formData.append('file', file); + + const res = await request.post('/shop/dealer/poster/upload/background', formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerPoster/model/index.ts b/src/api/shop/shopDealerPoster/model/index.ts new file mode 100644 index 0000000..06a85f9 --- /dev/null +++ b/src/api/shop/shopDealerPoster/model/index.ts @@ -0,0 +1,93 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商海报设置 + */ +export interface ShopDealerPoster { + // 主键ID + id?: number; + // 海报名称 + name?: string; + // 背景图片URL + backgroundImage?: string; + // 海报配置(JSON格式) + config?: string; + // 是否启用 + enabled?: boolean; + // 是否默认 + isDefault?: boolean; + // 排序 + sort?: number; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string | Date; + // 修改时间 + updateTime?: string | Date; +} + +/** + * 海报配置 + */ +export interface PosterConfig { + // 背景图片 + backgroundImage?: string; + // 海报尺寸 + width?: number; + height?: number; + // 是否显示头像 + showAvatar?: boolean; + // 头像URL + avatarUrl?: string; + // 头像宽度 + avatarWidth?: number; + // 头像形状 circle|square + avatarShape?: string; + // 是否显示昵称 + showNickname?: boolean; + // 昵称 + nickname?: string; + // 昵称字体大小 + nicknameFontSize?: number; + // 昵称颜色 + nicknameColor?: string; + // 是否显示二维码 + showQrcode?: boolean; + // 二维码URL + qrcodeUrl?: string; + // 二维码宽度 + qrcodeWidth?: number; + // 元素位置配置 + elements?: { + avatar?: { x: number; y: number }; + nickname?: { x: number; y: number }; + qrcode?: { x: number; y: number }; + [key: string]: { x: number; y: number } | undefined; + }; +} + +/** + * 分销商海报设置搜索条件 + */ +export interface ShopDealerPosterParam extends PageParam { + id?: number; + name?: string; + enabled?: boolean; + keywords?: string; +} + +/** + * 海报生成参数 + */ +export interface PosterGenerateParam { + // 用户ID + userId: number; + // 海报配置 + config?: PosterConfig; + // 用户信息 + userInfo?: { + nickname?: string; + avatar?: string; + qrcode?: string; + }; +} diff --git a/src/api/shop/shopDealerRecord/index.ts b/src/api/shop/shopDealerRecord/index.ts new file mode 100644 index 0000000..3982d39 --- /dev/null +++ b/src/api/shop/shopDealerRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerRecord, ShopDealerRecordParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询客户跟进情况 + */ +export async function pageShopDealerRecord(params: ShopDealerRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-dealer-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询客户跟进情况列表 + */ +export async function listShopDealerRecord(params?: ShopDealerRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-dealer-record', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加客户跟进情况 + */ +export async function addShopDealerRecord(data: ShopDealerRecord) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-dealer-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改客户跟进情况 + */ +export async function updateShopDealerRecord(data: ShopDealerRecord) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-dealer-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除客户跟进情况 + */ +export async function removeShopDealerRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-dealer-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除客户跟进情况 + */ +export async function removeBatchShopDealerRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-dealer-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询客户跟进情况 + */ +export async function getShopDealerRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-dealer-record/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerRecord/model/index.ts b/src/api/shop/shopDealerRecord/model/index.ts new file mode 100644 index 0000000..c32e9a7 --- /dev/null +++ b/src/api/shop/shopDealerRecord/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 客户跟进情况 + */ +export interface ShopDealerRecord { + // ID + id?: number; + // 上级id, 0是顶级 + parentId?: number; + // 客户ID + dealerId?: number; + // 内容 + content?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0待处理, 1已完成 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 客户跟进情况搜索条件 + */ +export interface ShopDealerRecordParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerReferee/index.ts b/src/api/shop/shopDealerReferee/index.ts new file mode 100644 index 0000000..351ed7b --- /dev/null +++ b/src/api/shop/shopDealerReferee/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerReferee, ShopDealerRefereeParam } from './model'; + +/** + * 分页查询分销商推荐关系表 + */ +export async function pageShopDealerReferee(params: ShopDealerRefereeParam) { + const res = await request.get>>( + '/shop/shop-dealer-referee/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商推荐关系表列表 + */ +export async function listShopDealerReferee(params?: ShopDealerRefereeParam) { + const res = await request.get>( + '/shop/shop-dealer-referee', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商推荐关系表 + */ +export async function addShopDealerReferee(data: ShopDealerReferee) { + const res = await request.post>( + '/shop/shop-dealer-referee', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商推荐关系表 + */ +export async function updateShopDealerReferee(data: ShopDealerReferee) { + const res = await request.put>( + '/shop/shop-dealer-referee', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商推荐关系表 + */ +export async function removeShopDealerReferee(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-referee/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商推荐关系表 + */ +export async function removeBatchShopDealerReferee(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-referee/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商推荐关系表 + */ +export async function getShopDealerReferee(id: number) { + const res = await request.get>( + '/shop/shop-dealer-referee/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerReferee/model/index.ts b/src/api/shop/shopDealerReferee/model/index.ts new file mode 100644 index 0000000..1091e32 --- /dev/null +++ b/src/api/shop/shopDealerReferee/model/index.ts @@ -0,0 +1,34 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商推荐关系表 + */ +export interface ShopDealerReferee { + // 主键ID + id?: number; + // 分销商用户ID + dealerId?: number; + // 用户id(被推荐人) + userId?: number; + // 推荐关系层级(1,2,3) + level?: number; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商推荐关系表搜索条件 + */ +export interface ShopDealerRefereeParam extends PageParam { + id?: number; + dealerId?: number; + userId?: number; + level?: number; + startTime?: string; + endTime?: string; + keywords?: string; +} diff --git a/src/api/shop/shopDealerSetting/index.ts b/src/api/shop/shopDealerSetting/index.ts new file mode 100644 index 0000000..da0075b --- /dev/null +++ b/src/api/shop/shopDealerSetting/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerSetting, ShopDealerSettingParam } from './model'; + +/** + * 分页查询分销商设置表 + */ +export async function pageShopDealerSetting(params: ShopDealerSettingParam) { + const res = await request.get>>( + '/shop/shop-dealer-setting/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商设置表列表 + */ +export async function listShopDealerSetting(params?: ShopDealerSettingParam) { + const res = await request.get>( + '/shop/shop-dealer-setting', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商设置表 + */ +export async function addShopDealerSetting(data: ShopDealerSetting) { + const res = await request.post>( + '/shop/shop-dealer-setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商设置表 + */ +export async function updateShopDealerSetting(data: ShopDealerSetting) { + const res = await request.put>( + '/shop/shop-dealer-setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商设置表 + */ +export async function removeShopDealerSetting(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-setting/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商设置表 + */ +export async function removeBatchShopDealerSetting(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-setting/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商设置表 + */ +export async function getShopDealerSetting(id: number) { + const res = await request.get>( + '/shop/shop-dealer-setting/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerSetting/model/index.ts b/src/api/shop/shopDealerSetting/model/index.ts new file mode 100644 index 0000000..ad503ad --- /dev/null +++ b/src/api/shop/shopDealerSetting/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商设置表 + */ +export interface ShopDealerSetting { + // 设置项标示 + key?: string; + // 设置项描述 + describe?: string; + // 设置内容(json格式) + values?: string; + // 商城ID + tenantId?: number; + // 更新时间 + updateTime?: number; +} + +/** + * 分销商设置表搜索条件 + */ +export interface ShopDealerSettingParam extends PageParam { + key?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerUser/index.ts b/src/api/shop/shopDealerUser/index.ts new file mode 100644 index 0000000..384aeda --- /dev/null +++ b/src/api/shop/shopDealerUser/index.ts @@ -0,0 +1,140 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerUser, ShopDealerUserParam } from './model'; + +/** + * 分页查询分销商用户记录表 + */ +export async function pageShopDealerUser(params: ShopDealerUserParam) { + const res = await request.get>>( + '/shop/shop-dealer-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商用户记录表列表 + */ +export async function listShopDealerUser(params?: ShopDealerUserParam) { + const res = await request.get>( + '/shop/shop-dealer-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商用户记录表 + */ +export async function addShopDealerUser(data: ShopDealerUser) { + const res = await request.post>( + '/shop/shop-dealer-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商用户记录表 + */ +export async function updateShopDealerUser(data: ShopDealerUser) { + const res = await request.put>( + '/shop/shop-dealer-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商用户记录表 + */ +export async function removeShopDealerUser(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商用户记录表 + */ +export async function removeBatchShopDealerUser(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商用户记录表 + */ +export async function getShopDealerUser(id: number) { + const res = await request.get>( + '/shop/shop-dealer-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入分销商用户 + */ +export async function importShopDealerUsers(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + '/shop/shop-dealer-user/import', + formData, + { + headers: { + 'Content-Type': 'multipart/form-data' + } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导出分销商用户 + */ +export async function exportShopDealerUsers(params?: ShopDealerUserParam) { + const res = await request.get( + '/shop/shop-dealer-user/export', + { + params, + responseType: 'blob' + } + ); + return res.data; +} diff --git a/src/api/shop/shopDealerUser/model/index.ts b/src/api/shop/shopDealerUser/model/index.ts new file mode 100644 index 0000000..d443ef2 --- /dev/null +++ b/src/api/shop/shopDealerUser/model/index.ts @@ -0,0 +1,60 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商用户记录表 + */ +export interface ShopDealerUser { + // 主键ID + id?: number; + // 自增ID + userId?: number; + // 姓名 + realName?: string; + // 手机号 + mobile?: string; + // 支付密码 + payPassword?: string; + // 当前可提现佣金 + money?: string; + // 已冻结佣金 + freezeMoney?: string; + // 累积提现佣金 + totalMoney?: string; + // 佣金比例 + rate?: string; + // 单价 + price?: string; + // 推荐人用户ID + refereeId?: number; + // 成员数量(一级) + firstNum?: number; + // 成员数量(二级) + secondNum?: number; + // 成员数量(三级) + thirdNum?: number; + // 专属二维码 + qrcode?: string; + // 是否删除 + isDelete?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string | Date; + // 修改时间 + updateTime?: string | Date; + // 扩展字段,用于编辑表单 + shopDealerUserId?: number; + shopDealerUserName?: string; + status?: number; + comments?: string; + sortNumber?: number; + image?: string; +} + +/** + * 分销商用户记录表搜索条件 + */ +export interface ShopDealerUserParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopDealerWithdraw/index.ts b/src/api/shop/shopDealerWithdraw/index.ts new file mode 100644 index 0000000..305e1ad --- /dev/null +++ b/src/api/shop/shopDealerWithdraw/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopDealerWithdraw, ShopDealerWithdrawParam } from './model'; + +/** + * 分页查询分销商提现明细表 + */ +export async function pageShopDealerWithdraw(params: ShopDealerWithdrawParam) { + const res = await request.get>>( + '/shop/shop-dealer-withdraw/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询分销商提现明细表列表 + */ +export async function listShopDealerWithdraw(params?: ShopDealerWithdrawParam) { + const res = await request.get>( + '/shop/shop-dealer-withdraw', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加分销商提现明细表 + */ +export async function addShopDealerWithdraw(data: ShopDealerWithdraw) { + const res = await request.post>( + '/shop/shop-dealer-withdraw', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改分销商提现明细表 + */ +export async function updateShopDealerWithdraw(data: ShopDealerWithdraw) { + const res = await request.put>( + '/shop/shop-dealer-withdraw', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除分销商提现明细表 + */ +export async function removeShopDealerWithdraw(id?: number) { + const res = await request.delete>( + '/shop/shop-dealer-withdraw/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除分销商提现明细表 + */ +export async function removeBatchShopDealerWithdraw(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-dealer-withdraw/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询分销商提现明细表 + */ +export async function getShopDealerWithdraw(id: number) { + const res = await request.get>( + '/shop/shop-dealer-withdraw/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopDealerWithdraw/model/index.ts b/src/api/shop/shopDealerWithdraw/model/index.ts new file mode 100644 index 0000000..6a2e492 --- /dev/null +++ b/src/api/shop/shopDealerWithdraw/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 分销商提现明细表 + */ +export interface ShopDealerWithdraw { + // 主键ID + id?: number; + // 分销商用户ID + userId?: number; + // 提现金额 + money?: string; + // 打款方式 (10微信 20支付宝 30银行卡) + payType?: number; + // 支付宝姓名 + alipayName?: string; + // 支付宝账号 + alipayAccount?: string; + // 开户行名称 + bankName?: string; + // 银行开户名 + bankAccount?: string; + // 银行卡号 + bankCard?: string; + // 申请状态 (10待审核 20审核通过 30驳回 40已打款) + applyStatus?: number; + // 审核时间 + auditTime?: number; + // 驳回原因 + rejectReason?: string; + // 来源客户端(APP、H5、小程序等) + platform?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 分销商提现明细表搜索条件 + */ +export interface ShopDealerWithdrawParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopExpress/index.ts b/src/api/shop/shopExpress/index.ts new file mode 100644 index 0000000..6a154a7 --- /dev/null +++ b/src/api/shop/shopExpress/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpress, ShopExpressParam } from './model'; + +/** + * 分页查询物流公司 + */ +export async function pageShopExpress(params: ShopExpressParam) { + const res = await request.get>>( + '/shop/shop-express/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询物流公司列表 + */ +export async function listShopExpress(params?: ShopExpressParam) { + const res = await request.get>( + '/shop/shop-express', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加物流公司 + */ +export async function addShopExpress(data: ShopExpress) { + const res = await request.post>( + '/shop/shop-express', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改物流公司 + */ +export async function updateShopExpress(data: ShopExpress) { + const res = await request.put>( + '/shop/shop-express', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除物流公司 + */ +export async function removeShopExpress(id?: number) { + const res = await request.delete>( + '/shop/shop-express/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除物流公司 + */ +export async function removeBatchShopExpress(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-express/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询物流公司 + */ +export async function getShopExpress(id: number) { + const res = await request.get>( + '/shop/shop-express/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopExpress/model/index.ts b/src/api/shop/shopExpress/model/index.ts new file mode 100644 index 0000000..24d2098 --- /dev/null +++ b/src/api/shop/shopExpress/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 物流公司 + */ +export interface ShopExpress { + // 物流公司ID + expressId?: number; + // 物流公司名称 + expressName?: string; + // 物流公司编码 (微信) + wxCode?: string; + // 物流公司编码 (快递100) + kuaidi100Code?: string; + // 物流公司编码 (快递鸟) + kdniaoCode?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 物流公司搜索条件 + */ +export interface ShopExpressParam extends PageParam { + expressId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopExpressTemplate/index.ts b/src/api/shop/shopExpressTemplate/index.ts new file mode 100644 index 0000000..51e351f --- /dev/null +++ b/src/api/shop/shopExpressTemplate/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpressTemplate, ShopExpressTemplateParam } from './model'; + +/** + * 分页查询运费模板 + */ +export async function pageShopExpressTemplate(params: ShopExpressTemplateParam) { + const res = await request.get>>( + '/shop/shop-express-template/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询运费模板列表 + */ +export async function listShopExpressTemplate(params?: ShopExpressTemplateParam) { + const res = await request.get>( + '/shop/shop-express-template', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加运费模板 + */ +export async function addShopExpressTemplate(data: ShopExpressTemplate) { + const res = await request.post>( + '/shop/shop-express-template', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改运费模板 + */ +export async function updateShopExpressTemplate(data: ShopExpressTemplate) { + const res = await request.put>( + '/shop/shop-express-template', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除运费模板 + */ +export async function removeShopExpressTemplate(id?: number) { + const res = await request.delete>( + '/shop/shop-express-template/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除运费模板 + */ +export async function removeBatchShopExpressTemplate(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-express-template/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询运费模板 + */ +export async function getShopExpressTemplate(id: number) { + const res = await request.get>( + '/shop/shop-express-template/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopExpressTemplate/model/index.ts b/src/api/shop/shopExpressTemplate/model/index.ts new file mode 100644 index 0000000..d6e6aa6 --- /dev/null +++ b/src/api/shop/shopExpressTemplate/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 运费模板 + */ +export interface ShopExpressTemplate { + // + id?: number; + // + type?: string; + // + title?: string; + // 收件价格 + firstAmount?: string; + // 续件价格 + extraAmount?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 首件数量/重量 + firstNum?: string; + // 续件数量/重量 + extraNum?: string; +} + +/** + * 运费模板搜索条件 + */ +export interface ShopExpressTemplateParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopExpressTemplateDetail/index.ts b/src/api/shop/shopExpressTemplateDetail/index.ts new file mode 100644 index 0000000..4f44544 --- /dev/null +++ b/src/api/shop/shopExpressTemplateDetail/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpressTemplateDetail, ShopExpressTemplateDetailParam } from './model'; + +/** + * 分页查询运费模板 + */ +export async function pageShopExpressTemplateDetail(params: ShopExpressTemplateDetailParam) { + const res = await request.get>>( + '/shop/shop-express-template-detail/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询运费模板列表 + */ +export async function listShopExpressTemplateDetail(params?: ShopExpressTemplateDetailParam) { + const res = await request.get>( + '/shop/shop-express-template-detail', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加运费模板 + */ +export async function addShopExpressTemplateDetail(data: ShopExpressTemplateDetail) { + const res = await request.post>( + '/shop/shop-express-template-detail', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改运费模板 + */ +export async function updateShopExpressTemplateDetail(data: ShopExpressTemplateDetail) { + const res = await request.put>( + '/shop/shop-express-template-detail', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除运费模板 + */ +export async function removeShopExpressTemplateDetail(id?: number) { + const res = await request.delete>( + '/shop/shop-express-template-detail/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除运费模板 + */ +export async function removeBatchShopExpressTemplateDetail(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-express-template-detail/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询运费模板 + */ +export async function getShopExpressTemplateDetail(id: number) { + const res = await request.get>( + '/shop/shop-express-template-detail/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopExpressTemplateDetail/model/index.ts b/src/api/shop/shopExpressTemplateDetail/model/index.ts new file mode 100644 index 0000000..5b74dcc --- /dev/null +++ b/src/api/shop/shopExpressTemplateDetail/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 运费模板 + */ +export interface ShopExpressTemplateDetail { + // + id?: number; + // + templateId?: number; + // 0按件 + type?: string; + // + provinceId?: number; + // + cityId?: number; + // 首件数量/重量 + firstNum?: string; + // 收件价格 + firstAmount?: string; + // 续件价格 + extraAmount?: string; + // 续件数量/重量 + extraNum?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // + sortNumber?: number; +} + +/** + * 运费模板搜索条件 + */ +export interface ShopExpressTemplateDetailParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGift/index.ts b/src/api/shop/shopGift/index.ts new file mode 100644 index 0000000..bb798c9 --- /dev/null +++ b/src/api/shop/shopGift/index.ts @@ -0,0 +1,130 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopGift, ShopGiftParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询礼品卡 + */ +export async function pageShopGift(params: ShopGiftParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-gift/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询礼品卡列表 + */ +export async function listShopGift(params?: ShopGiftParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-gift', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加礼品卡 + */ +export async function addShopGift(data: ShopGift) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-gift', + data + ); + if (res.data.code === 0) { + return res.data.message; + } +} + +/** + * 生成礼品卡 + */ +export async function makeShopGift(data: ShopGift) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-gift/make', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改礼品卡 + */ +export async function updateShopGift(data: ShopGift) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-gift', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除礼品卡 + */ +export async function removeShopGift(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-gift/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除礼品卡 + */ +export async function removeBatchShopGift(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-gift/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询礼品卡 + */ +export async function getShopGift(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-gift/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function exportShopGift(ids?: number[]) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-gift/export', + ids + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGift/model/index.ts b/src/api/shop/shopGift/model/index.ts new file mode 100644 index 0000000..25390db --- /dev/null +++ b/src/api/shop/shopGift/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api/index'; + +/** + * 礼品卡 + */ +export interface ShopGift { + // + id?: number; + // + name?: string; + // 秘钥 + code?: string; + // 商品ID + goodsId?: number; + // 商品名称 + goodsName?: string; + // 面值 + faceValue?: string; + // 领取时间 + takeTime?: string; + // 核销时间 + verificationTime?: string; + // 操作人ID + operatorUserId?: number; + // 操作人 + operatorUserName?: string; + // 操作备注 + operatorRemarks?: string; + // 使用地址 + useLocation?: string; + // 是否展示 + isShow?: boolean; + // 状态, 0上架 1待上架 2待审核 3审核不通过 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 昵称 + nickName?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + num?: number; +} + +/** + * 礼品卡搜索条件 + */ +export interface ShopGiftParam extends PageParam { + id?: number; + code?: string; + keywords?: string; +} diff --git a/src/api/shop/shopGoods/index.ts b/src/api/shop/shopGoods/index.ts new file mode 100644 index 0000000..580cd69 --- /dev/null +++ b/src/api/shop/shopGoods/index.ts @@ -0,0 +1,116 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopGoods, ShopGoodsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品 + */ +export async function pageShopGoods(params: ShopGoodsParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-goods/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品列表 + */ +export async function listShopGoods(params?: ShopGoodsParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品 + */ +export async function addShopGoods(data: ShopGoods) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品 + */ +export async function updateShopGoods(data: ShopGoods) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品 + */ +export async function removeShopGoods(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品 + */ +export async function removeBatchShopGoods(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品 + */ +export async function getShopGoods(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function getCount(params: ShopGoodsParam) { + const res = await request.get(MODULES_API_URL + '/shop/shop-goods/data', { + params + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGoods/model/index.ts b/src/api/shop/shopGoods/model/index.ts new file mode 100644 index 0000000..493295d --- /dev/null +++ b/src/api/shop/shopGoods/model/index.ts @@ -0,0 +1,148 @@ +import type { PageParam } from '@/api'; +import { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model'; +import { ShopGoodsSku } from '@/api/shop/shopGoodsSku/model'; +import { ShopGoodsRoleCommission } from '@/api/shop/shopGoodsRoleCommission/model'; + +export interface GoodsCount { + totalNum: number; + totalNum2: number; + totalNum3: number; + totalNum4: number; +} +/** + * 商品记录表 + */ +export interface ShopGoods { + // 自增ID + goodsId?: number; + // 类型 1实物商品 2虚拟商品 + type?: number; + // 商品编码 + code?: string; + // 商品名称 + name?: string; + // 商品标题 + goodsName?: string; + // 商品封面图 + image?: string; + video?: string; + // 商品详情 + content?: string; + canExpress?: number; + // 商品分类 + category?: string; + // 商品分类ID + categoryId?: number; + parentName?: string; + categoryName?: string; + // 一级分类 + categoryParent?: string; + // 二级分类 + categoryChildren?: string; + // 商品规格 0单规格 1多规格 + specs?: number; + commissionRole?: number; + // 货架 + position?: string; + // 进货价 + buyingPrice?: string; + // 商品价格 + price?: string; + originPrice?: string; + // 销售价格 + salePrice?: string; + chainStorePrice?: string; + chainStoreRate?: string; + memberStoreRate?: string; + memberMarketRate?: string; + memberStoreCommission?: string; + supplierCommission?: string; + coopCommission?: string; + memberStorePrice?: string; + memberMarketPrice?: string; + // 经销商价格 + dealerPrice?: string; + // 有赠品 + buyingGift?: boolean; + // 有赠品 + priceGift?: boolean; + // 有赠品 + dealerGift?: boolean; + buyingGiftNum?: number; + priceGiftNum?: number; + priceGiftName?: string; + dealerGiftNum?: number; + // 库存计算方式(10下单减库存 20付款减库存) + deductStockType?: number; + // 封面图 + files?: string; + // 销量 + sales?: number; + isNew?: number; + // 库存 + stock?: number; + // 商品重量 + goodsWeight?: number; + // 消费赚取积分 + gainIntegral?: number; + // 推荐 + recommend?: number; + // 商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + supplierMerchantId?: number; + supplierName?: string; + // 状态(0:未上架,1:上架) + isShow?: number; + // 状态, 0上架 1待上架 2待审核 3审核不通过 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 显示规格名 + specName?: string; + // 商品规格 + goodsSpecs?: ShopGoodsSpec[]; + goodsRoleCommission?: ShopGoodsRoleCommission[]; + // 商品sku列表 + goodsSkus?: ShopGoodsSku[]; + // 单位名称 + unitName?: string; + expressTemplateId?: number; + canUseDate?: string; + ensureTag?: string; + expiredDay?: number; +} + +export interface BathSet { + price?: number; + salePrice?: number; + stock?: number; + skuNo?: string; +} + +/** + * 商品记录表搜索条件 + */ +export interface ShopGoodsParam extends PageParam { + parentId?: number; + categoryId?: number; + goodsId?: number; + status?: number; + goodsName?: string; + isShow?: number; + stock?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsCategory/index.ts b/src/api/shop/shopGoodsCategory/index.ts new file mode 100644 index 0000000..dbdf598 --- /dev/null +++ b/src/api/shop/shopGoodsCategory/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopGoodsCategory, ShopGoodsCategoryParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品分类 + */ +export async function pageShopGoodsCategory(params: ShopGoodsCategoryParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-goods-category/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品分类列表 + */ +export async function listShopGoodsCategory(params?: ShopGoodsCategoryParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-category', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品分类 + */ +export async function addShopGoodsCategory(data: ShopGoodsCategory) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-goods-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品分类 + */ +export async function updateShopGoodsCategory(data: ShopGoodsCategory) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-goods-category', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品分类 + */ +export async function removeShopGoodsCategory(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-category/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品分类 + */ +export async function removeBatchShopGoodsCategory(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-category/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品分类 + */ +export async function getShopGoodsCategory(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-category/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGoodsCategory/model/index.ts b/src/api/shop/shopGoodsCategory/model/index.ts new file mode 100644 index 0000000..13fefa1 --- /dev/null +++ b/src/api/shop/shopGoodsCategory/model/index.ts @@ -0,0 +1,64 @@ +import type { PageParam } from '@/api'; + +/** + * 商品分类 + */ +export interface ShopGoodsCategory { + // 商品分类ID + categoryId?: number; + // 分类标识 + categoryCode?: string; + // 分类名称 + title?: string; + // 类型 0商城分类 1外卖分类 + type?: number; + // 分类图片 + image?: string; + // 上级分类ID + parentId?: number; + // 路由/链接地址 + path?: string; + // 组件路径 + component?: string; + // 绑定的页面 + pageId?: number; + // 用户ID + userId?: number; + // 商品数量 + count?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 是否推荐 + recommend?: number; + // 是否显示在首页 + showIndex?: number; + // 商铺ID + merchantId?: number; + // 状态, 0正常, 1禁用 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 子菜单 + children?: ShopGoodsCategory[]; + key?: number; + value?: number; + label?: string; +} + +/** + * 商品分类搜索条件 + */ +export interface ShopGoodsCategoryParam extends PageParam { + categoryId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsCoupon/index.ts b/src/api/shop/shopGoodsCoupon/index.ts new file mode 100644 index 0000000..7eed12d --- /dev/null +++ b/src/api/shop/shopGoodsCoupon/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopGoodsCoupon, ShopGoodsCouponParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品优惠券表 + */ +export async function pageShopGoodsCoupon(params: ShopGoodsCouponParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-goods-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品优惠券表列表 + */ +export async function listShopGoodsCoupon(params?: ShopGoodsCouponParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品优惠券表 + */ +export async function addShopGoodsCoupon(data: ShopGoodsCoupon) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-goods-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品优惠券表 + */ +export async function updateShopGoodsCoupon(data: ShopGoodsCoupon) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-goods-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品优惠券表 + */ +export async function removeShopGoodsCoupon(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品优惠券表 + */ +export async function removeBatchShopGoodsCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品优惠券表 + */ +export async function getShopGoodsCoupon(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGoodsCoupon/model/index.ts b/src/api/shop/shopGoodsCoupon/model/index.ts new file mode 100644 index 0000000..9f3ff38 --- /dev/null +++ b/src/api/shop/shopGoodsCoupon/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商品优惠券表 + */ +export interface ShopGoodsCoupon { + // + id?: number; + // 商品id + goodsId?: number; + // 优惠劵id + issueCouponId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 备注 + comments?: string; +} + +/** + * 商品优惠券表搜索条件 + */ +export interface ShopGoodsCouponParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsRoleCommission/index.ts b/src/api/shop/shopGoodsRoleCommission/index.ts new file mode 100644 index 0000000..ac3c88b --- /dev/null +++ b/src/api/shop/shopGoodsRoleCommission/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { MODULES_API_URL } from '@/config/setting'; +import { ShopGoodsRoleCommission, ShopGoodsRoleCommissionParam } from '@/api/shop/shopGoodsRoleCommission/model'; + +/** + * 分页查询商品绑定角色的分润金额 + */ +export async function pageShopGoodsRoleCommission(params: ShopGoodsRoleCommissionParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-goods-role-commission/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品绑定角色的分润金额列表 + */ +export async function listShopGoodsRoleCommission(params?: ShopGoodsRoleCommissionParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-role-commission', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品绑定角色的分润金额 + */ +export async function addShopGoodsRoleCommission(data: ShopGoodsRoleCommission) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-goods-role-commission', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品绑定角色的分润金额 + */ +export async function updateShopGoodsRoleCommission(data: ShopGoodsRoleCommission) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-goods-role-commission', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品绑定角色的分润金额 + */ +export async function removeShopGoodsRoleCommission(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-role-commission/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品绑定角色的分润金额 + */ +export async function removeBatchShopGoodsRoleCommission(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-role-commission/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品绑定角色的分润金额 + */ +export async function getShopGoodsRoleCommission(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-role-commission/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGoodsRoleCommission/model/index.ts b/src/api/shop/shopGoodsRoleCommission/model/index.ts new file mode 100644 index 0000000..54384fc --- /dev/null +++ b/src/api/shop/shopGoodsRoleCommission/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 商品绑定角色的分润金额 + */ +export interface ShopGoodsRoleCommission { + // + id?: number; + // + roleId?: number; + // + goodsId?: number; + // + sku?: string; + // + amount?: string; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // + sortNumber?: number; +} + +/** + * 商品绑定角色的分润金额搜索条件 + */ +export interface ShopGoodsRoleCommissionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsSku/index.ts b/src/api/shop/shopGoodsSku/index.ts new file mode 100644 index 0000000..2d0d926 --- /dev/null +++ b/src/api/shop/shopGoodsSku/index.ts @@ -0,0 +1,118 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { MODULES_API_URL } from '@/config/setting'; +import { ShopGoodsSpec } from '@/api/shop/shopGoodsSpec/model'; +import { ShopGoodsSku, ShopGoodsSkuParam } from '@/api/shop/shopGoodsSku/model'; + +export async function generateGoodsSku(data: ShopGoodsSpec) { + const res = await request.post>( + MODULES_API_URL + '/shop/goods-sku/generateGoodsSku', + data + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询商品sku列表 + */ +export async function pageShopGoodsSku(params: ShopGoodsSkuParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-goods-sku/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品sku列表列表 + */ +export async function listShopGoodsSku(params?: ShopGoodsSkuParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-sku', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品sku列表 + */ +export async function addShopGoodsSku(data: ShopGoodsSku) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-goods-sku', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品sku列表 + */ +export async function updateShopGoodsSku(data: ShopGoodsSku) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-goods-sku', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品sku列表 + */ +export async function removeShopGoodsSku(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-sku/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品sku列表 + */ +export async function removeBatchShopGoodsSku(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-goods-sku/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品sku列表 + */ +export async function getShopGoodsSku(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-goods-sku/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGoodsSku/model/index.ts b/src/api/shop/shopGoodsSku/model/index.ts new file mode 100644 index 0000000..0880d7f --- /dev/null +++ b/src/api/shop/shopGoodsSku/model/index.ts @@ -0,0 +1,50 @@ +import type { PageParam } from '@/api'; + +/** + * 商品sku列表 + */ +export interface ShopGoodsSku { + // 主键ID + id?: number; + // 商品ID + goodsId?: number; + // 商品属性索引值 (attr_value|attr_value[|....]) + sku?: string; + // 商品图片 + image?: string; + // 商品价格 + price?: string; + // 市场价格 + salePrice?: string; + // 成本价 + cost?: string; + // 库存 + stock?: number; + // sku编码 + skuNo?: string; + // 商品条码 + barCode?: string; + // 重量 + weight?: string; + // 体积 + volume?: string; + // 唯一值 + uuid?: string; + // 状态, 0正常, 1异常 + status?: number; + // 备注 + comments?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + images?: string; +} + +/** + * 商品sku列表搜索条件 + */ +export interface ShopGoodsSkuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopGoodsSpec/index.ts b/src/api/shop/shopGoodsSpec/index.ts new file mode 100644 index 0000000..d7d9ef9 --- /dev/null +++ b/src/api/shop/shopGoodsSpec/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopGoodsSpec, ShopGoodsSpecParam } from './model'; + +/** + * 分页查询商品多规格 + */ +export async function pageShopGoodsSpec(params: ShopGoodsSpecParam) { + const res = await request.get>>( + '/shop/shop-goods-spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品多规格列表 + */ +export async function listShopGoodsSpec(params?: ShopGoodsSpecParam) { + const res = await request.get>( + '/shop/shop-goods-spec', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品多规格 + */ +export async function addShopGoodsSpec(data: ShopGoodsSpec) { + const res = await request.post>( + '/shop/shop-goods-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品多规格 + */ +export async function updateShopGoodsSpec(data: ShopGoodsSpec) { + const res = await request.put>( + '/shop/shop-goods-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品多规格 + */ +export async function removeShopGoodsSpec(id?: number) { + const res = await request.delete>( + '/shop/shop-goods-spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品多规格 + */ +export async function removeBatchShopGoodsSpec(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-goods-spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品多规格 + */ +export async function getShopGoodsSpec(id: number) { + const res = await request.get>( + '/shop/shop-goods-spec/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopGoodsSpec/model/index.ts b/src/api/shop/shopGoodsSpec/model/index.ts new file mode 100644 index 0000000..44a6644 --- /dev/null +++ b/src/api/shop/shopGoodsSpec/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 商品多规格 + */ +export interface ShopGoodsSpec { + // 主键 + id?: number; + // 商品ID + goodsId?: number; + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 活动类型 0=商品,1=秒杀,2=砍价,3=拼团 + type?: string; + // 租户id + tenantId?: number; +} + +/** + * 商品多规格搜索条件 + */ +export interface ShopGoodsSpecParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchant/index.ts b/src/api/shop/shopMerchant/index.ts new file mode 100644 index 0000000..895bc80 --- /dev/null +++ b/src/api/shop/shopMerchant/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api/index'; +import type { ShopMerchant, ShopMerchantParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商户 + */ +export async function pageShopMerchant(params: ShopMerchantParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-merchant/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户列表 + */ +export async function listShopMerchant(params?: ShopMerchantParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-merchant', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户 + */ +export async function addShopMerchant(data: ShopMerchant) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-merchant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户 + */ +export async function updateShopMerchant(data: ShopMerchant) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-merchant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户 + */ +export async function removeShopMerchant(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-merchant/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户 + */ +export async function removeBatchShopMerchant(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-merchant/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户 + */ +export async function getShopMerchant(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-merchant/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopMerchant/model/index.ts b/src/api/shop/shopMerchant/model/index.ts new file mode 100644 index 0000000..4074c0d --- /dev/null +++ b/src/api/shop/shopMerchant/model/index.ts @@ -0,0 +1,95 @@ +import type { PageParam } from '@/api/index'; + +/** + * 商户 + */ +export interface ShopMerchant { + // ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商户编号 + merchantCode?: string; + // 商户类型 + type?: number; + // 商户图标 + image?: string; + // 商户手机号 + phone?: string; + // 商户姓名 + realName?: string; + // 店铺类型 + shopType?: string; + // 项目分类 + itemType?: string; + // 商户分类 + category?: string; + // 商户经营分类 + merchantCategoryId?: number; + // 商户分类 + merchantCategoryTitle?: string; + // 经纬度 + lngAndLat?: string; + // + lng?: string; + // + lat?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 详细地址 + address?: string; + // 手续费 + commission?: string; + // 关键字 + keywords?: string; + // 资质图片 + files?: string; + // 营业时间 + businessTime?: string; + // 文章内容 + content?: string; + // 每小时价格 + price?: string; + // 是否自营 + ownStore?: number; + // 是否可以快递 + canExpress?: string; + // 是否推荐 + recommend?: number; + // 是否营业 + isOn?: number; + // + startTime?: string; + // + endTime?: string; + // 是否需要审核 + goodsReview?: number; + // 管理入口 + adminUrl?: string; + // 备注 + comments?: string; + // 所有人 + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户搜索条件 + */ +export interface ShopMerchantParam extends PageParam { + merchantId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantAccount/index.ts b/src/api/shop/shopMerchantAccount/index.ts new file mode 100644 index 0000000..eff50c4 --- /dev/null +++ b/src/api/shop/shopMerchantAccount/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantAccount, ShopMerchantAccountParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商户账号 + */ +export async function pageShopMerchantAccount(params: ShopMerchantAccountParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-merchant-account/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户账号列表 + */ +export async function listShopMerchantAccount(params?: ShopMerchantAccountParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-merchant-account', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户账号 + */ +export async function addShopMerchantAccount(data: ShopMerchantAccount) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-merchant-account', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户账号 + */ +export async function updateShopMerchantAccount(data: ShopMerchantAccount) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-merchant-account', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户账号 + */ +export async function removeShopMerchantAccount(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-merchant-account/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户账号 + */ +export async function removeBatchShopMerchantAccount(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-merchant-account/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户账号 + */ +export async function getShopMerchantAccount(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-merchant-account/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopMerchantAccount/model/index.ts b/src/api/shop/shopMerchantAccount/model/index.ts new file mode 100644 index 0000000..6dbada0 --- /dev/null +++ b/src/api/shop/shopMerchantAccount/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 商户账号 + */ +export interface ShopMerchantAccount { + // ID + id?: number; + // 商户手机号 + phone?: string; + // 真实姓名 + realName?: string; + // 商户ID + merchantId?: number; + // 角色ID + roleId?: number; + // 角色名称 + roleName?: string; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户账号搜索条件 + */ +export interface ShopMerchantAccountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantApply/index.ts b/src/api/shop/shopMerchantApply/index.ts new file mode 100644 index 0000000..1a725f6 --- /dev/null +++ b/src/api/shop/shopMerchantApply/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantApply, ShopMerchantApplyParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询商户入驻申请 + */ +export async function pageShopMerchantApply(params: ShopMerchantApplyParam) { + const res = await request.get>>( + SERVER_API_URL + '/shop/shop-merchant-apply/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户入驻申请列表 + */ +export async function listShopMerchantApply(params?: ShopMerchantApplyParam) { + const res = await request.get>( + SERVER_API_URL + '/shop/shop-merchant-apply', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户入驻申请 + */ +export async function addShopMerchantApply(data: ShopMerchantApply) { + const res = await request.post>( + SERVER_API_URL + '/shop/shop-merchant-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户入驻申请 + */ +export async function updateShopMerchantApply(data: ShopMerchantApply) { + const res = await request.put>( + SERVER_API_URL + '/shop/shop-merchant-apply', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 审核通过 +export async function checkShopMerchantApply(data: ShopMerchantApply) { + const res = await request.put>( + SERVER_API_URL + '/shop/shop-merchant-apply/check', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户入驻申请 + */ +export async function removeShopMerchantApply(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/shop/shop-merchant-apply/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户入驻申请 + */ +export async function removeBatchShopMerchantApply( + data: (number | undefined)[] +) { + const res = await request.delete>( + SERVER_API_URL + '/shop/shop-merchant-apply/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户入驻申请 + */ +export async function getShopMerchantApply(id: number) { + const res = await request.get>( + SERVER_API_URL + '/shop/shop-merchant-apply/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopMerchantApply/model/index.ts b/src/api/shop/shopMerchantApply/model/index.ts new file mode 100644 index 0000000..6e02334 --- /dev/null +++ b/src/api/shop/shopMerchantApply/model/index.ts @@ -0,0 +1,72 @@ +import type { PageParam } from '@/api'; + +/** + * 商户入驻申请 + */ +export interface ShopMerchantApply { + // ID + applyId?: number; + // 类型 + type?: number; + // 主体名称 + merchantName?: string; + // 证件号码 + merchantCode?: string; + // 商户图标 + image?: string; + // 商户手机号 + phone?: string; + // 商户姓名 + realName?: string; + // 身份证号码 + idCard?: string; + // 店铺类型 + shopType?: string; + // 商户分类 + category?: string; + // 手续费 + commission?: string; + // 关键字 + keywords?: string; + // 营业执照 + yyzz?: string; + // 身份证正面 + sfz1?: string; + // 身份证反面 + sfz2?: string; + // 资质图片 + files?: string; + // 所有人 + userId?: number; + // 是否自营 + ownStore?: number; + // 是否推荐 + recommend?: number; + // 是否需要审核 + goodsReview?: number; + // 工作负责人 + name2?: string; + // 驳回原因 + reason?: string; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 商户入驻申请搜索条件 + */ +export interface ShopMerchantApplyParam extends PageParam { + applyId?: number; + userId?: number; + shopType?: string; + phone?: string; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantCount/index.ts b/src/api/shop/shopMerchantCount/index.ts new file mode 100644 index 0000000..c859b1b --- /dev/null +++ b/src/api/shop/shopMerchantCount/index.ts @@ -0,0 +1,108 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantCount, ShopMerchantCountParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询门店销售统计表 + */ +export async function pageShopMerchantCount(params: ShopMerchantCountParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-merchant-count/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询门店销售统计表列表 + */ +export async function listShopMerchantCount(params?: ShopMerchantCountParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-merchant-count', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加门店销售统计表 + */ +export async function addShopMerchantCount(data: ShopMerchantCount) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-merchant-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改门店销售统计表 + */ +export async function updateShopMerchantCount(data: ShopMerchantCount) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-merchant-count', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除门店销售统计表 + */ +export async function removeShopMerchantCount(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-merchant-count/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除门店销售统计表 + */ +export async function removeBatchShopMerchantCount( + data: (number | undefined)[] +) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-merchant-count/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询门店销售统计表 + */ +export async function getShopMerchantCount(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-merchant-count/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopMerchantCount/model/index.ts b/src/api/shop/shopMerchantCount/model/index.ts new file mode 100644 index 0000000..ea27a60 --- /dev/null +++ b/src/api/shop/shopMerchantCount/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 门店销售统计表 + */ +export interface ShopMerchantCount { + // ID + id?: number; + // 店铺名称 + name?: string; + // 店铺说明 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 门店销售统计表搜索条件 + */ +export interface ShopMerchantCountParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopMerchantType/index.ts b/src/api/shop/shopMerchantType/index.ts new file mode 100644 index 0000000..8d7a054 --- /dev/null +++ b/src/api/shop/shopMerchantType/index.ts @@ -0,0 +1,108 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchantType, ShopMerchantTypeParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询商户类型 + */ +export async function pageShopMerchantType(params: ShopMerchantTypeParam) { + const res = await request.get>>( + SERVER_API_URL + '/shop/shop-merchant-type/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商户类型列表 + */ +export async function listShopMerchantType(params?: ShopMerchantTypeParam) { + const res = await request.get>( + SERVER_API_URL + '/shop/shop-merchant-type', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商户类型 + */ +export async function addShopMerchantType(data: ShopMerchantType) { + const res = await request.post>( + SERVER_API_URL + '/shop/shop-merchant-type', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商户类型 + */ +export async function updateShopMerchantType(data: ShopMerchantType) { + const res = await request.put>( + SERVER_API_URL + '/shop/shop-merchant-type', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商户类型 + */ +export async function removeShopMerchantType(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/shop/shop-merchant-type/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商户类型 + */ +export async function removeBatchShopMerchantType( + data: (number | undefined)[] +) { + const res = await request.delete>( + SERVER_API_URL + '/shop/shop-merchant-type/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商户类型 + */ +export async function getShopMerchantType(id: number) { + const res = await request.get>( + SERVER_API_URL + '/shop/shop-merchant-type/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopMerchantType/model/index.ts b/src/api/shop/shopMerchantType/model/index.ts new file mode 100644 index 0000000..c09be90 --- /dev/null +++ b/src/api/shop/shopMerchantType/model/index.ts @@ -0,0 +1,30 @@ +import type { PageParam } from '@/api'; + +/** + * 商户类型 + */ +export interface ShopMerchantType { + // ID + id?: number; + // 店铺类型 + name?: string; + // 店铺入驻条件 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + value?: string; +} + +/** + * 商户类型搜索条件 + */ +export interface ShopMerchantTypeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopOrder/index.ts b/src/api/shop/shopOrder/index.ts new file mode 100644 index 0000000..d0107ac --- /dev/null +++ b/src/api/shop/shopOrder/index.ts @@ -0,0 +1,137 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopOrder, ShopOrderParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询订单 + */ +export async function pageShopOrder(params: ShopOrderParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单列表 + */ +export async function listShopOrder(params?: ShopOrderParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单 + */ +export async function addShopOrder(data: ShopOrder) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function updateShopOrder(data: ShopOrder) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单 + */ +export async function removeShopOrder(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchShopOrder(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单 + */ +export async function getShopOrder(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function repairOrder(data: ShopOrder) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-order/repair', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 统计订单总金额(只统计有效订单) + */ +export async function shopOrderTotal(params?: ShopOrderParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-order/total', + { + params + } + ); + if (res.data.code === 0) { + // 即使没有数据也返回空数组,而不是抛出错误 + return res.data.data || []; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopOrder/model/index.ts b/src/api/shop/shopOrder/model/index.ts new file mode 100644 index 0000000..d0255bc --- /dev/null +++ b/src/api/shop/shopOrder/model/index.ts @@ -0,0 +1,169 @@ +import type { PageParam } from '@/api'; +import {OrderGoods} from "@/api/system/orderGoods/model"; + +/** + * 订单 + */ +export interface ShopOrder { + // 订单号 + orderId?: number; + // 订单编号 + orderNo?: string; + // 订单类型,0商城订单 1预定订单/外卖 2会员卡 + type?: number; + // 快递/自提 + deliveryType?: number; + // 下单渠道,0小程序预定 1俱乐部训练场 3活动订场 + channel?: number; + // 微信支付订单号 + transactionId?: string; + // 微信退款订单号 + refundOrder?: string; + // 商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商户编号 + merchantCode?: string; + // 使用的优惠券id + couponId?: number; + // 使用的会员卡id + cardId?: string; + // 关联管理员id + adminId?: number; + // 核销管理员id + confirmId?: number; + // IC卡号 + icCard?: string; + // 头像 + avatar?: string; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 手机号码(脱敏) + mobile?: string; + // 收货地址 + address?: string; + // + addressLat?: string; + // + addressLng?: string; + // 自提店铺id + selfTakeMerchantId?: number; + // 自提店铺 + selfTakeMerchantName?: string; + // 配送开始时间 + sendStartTime?: string; + // 配送结束时间 + sendEndTime?: string; + // 发货店铺id + expressMerchantId?: number; + // 发货店铺 + expressMerchantName?: string; + // 订单总额 + totalPrice?: string; + // 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格 + reducePrice?: string; + // 实际付款 + payPrice?: string; + // 用于统计 + price?: string; + // 价钱,用于积分赠送 + money?: string; + // 退款金额 + refundMoney?: string; + // 教练价格 + coachPrice?: string; + // 购买数量 + totalNum?: number; + // 教练id + coachId?: number; + // 支付的用户id + payUserId?: number; + // 0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付 + payType?: number; + // 代付支付方式,0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机,6VIP月卡,7VIP年卡,8VIP次卡,9IC月卡,10IC年卡,11IC次卡,12免费,13VIP充值卡,14IC充值卡,15积分支付,16VIP季卡,17IC季卡,18代付 + friendPayType?: number; + // 0未付款,1已付款 + payStatus?: number; + // 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 发货状态(10未发货 20已发货 30部分发货) + deliveryStatus?: number; + // 发货时间 + deliveryTime?: string; + // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 + couponType?: number; + // 优惠说明 + couponDesc?: string; + // 二维码地址,保存订单号,支付成功后才生成 + qrcode?: string; + // vip月卡年卡、ic月卡年卡回退次数 + returnNum?: number; + // vip充值回退金额 + returnMoney?: string; + // 预约详情开始时间数组 + startTime?: string; + // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 + isInvoice?: number; + // 发票流水号 + invoiceNo?: string; + // 支付时间 + payTime?: string; + // 退款时间 + refundTime?: string; + // 申请退款时间 + refundApplyTime?: string; + // 过期时间 + expirationTime?: string; + // 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单 + checkBill?: number; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 系统版本号 0当前版本 value=其他版本 + version?: number; + // 买家备注 + buyerRemarks: undefined, + // 商家备注 + merchantRemarks: undefined, + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; + // 自提码 + selfTakeCode?: string; + // 是否已收到赠品 + hasTakeGift?: string; + // 订单商品 + orderGoods?: OrderGoods[]; +} + +/** + * 订单搜索条件 + */ +export interface ShopOrderParam extends PageParam { + orderId?: number; + orderNo?: string; + type?: number; + phone?: string; + userId?: number; + payUserId?: number; + nickname?: string; + payStatus?: number; + orderStatus?: number; + payType?: number; + isInvoice?: boolean; + statusFilter?: number; + keywords?: string; +} diff --git a/src/api/shop/shopOrderGoods/index.ts b/src/api/shop/shopOrderGoods/index.ts new file mode 100644 index 0000000..2973147 --- /dev/null +++ b/src/api/shop/shopOrderGoods/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopOrderGoods, ShopOrderGoodsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品信息 + */ +export async function pageShopOrderGoods(params: ShopOrderGoodsParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-order-goods/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品信息列表 + */ +export async function listShopOrderGoods(params?: ShopOrderGoodsParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-order-goods', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加商品信息 + */ +export async function addShopOrderGoods(data: ShopOrderGoods) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-order-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品信息 + */ +export async function updateShopOrderGoods(data: ShopOrderGoods) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-order-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品信息 + */ +export async function removeShopOrderGoods(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-order-goods/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品信息 + */ +export async function removeBatchShopOrderGoods(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-order-goods/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询商品信息 + */ +export async function getShopOrderGoods(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-order-goods/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopOrderGoods/model/index.ts b/src/api/shop/shopOrderGoods/model/index.ts new file mode 100644 index 0000000..ef7cbf1 --- /dev/null +++ b/src/api/shop/shopOrderGoods/model/index.ts @@ -0,0 +1,71 @@ +import type { PageParam } from '@/api'; + +/** + * 商品信息 + */ +export interface ShopOrderGoods { + // 自增ID + id?: number; + // 关联订单表id + orderId?: number; + // 订单标识 + orderCode?: string; + // 关联商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商品封面图 + image?: string; + // 关联商品id + goodsId?: number; + // 商品名称 + goodsName?: string; + // 商品规格 + spec?: string; + // + skuId?: number; + // 单价 + price?: string; + // 购买数量 + totalNum?: number; + // 0 未付款 1已付款,2无需付款或占用状态 + payStatus?: number; + // 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 是否免费:0收费、1免费 + isFree?: string; + // 系统版本 0当前版本 其他版本 + version?: number; + // 预约时间段 + timePeriod?: string; + // 预定日期 + dateTime?: string; + // 开场时间 + startTime?: string; + // 结束时间 + endTime?: string; + // 毫秒时间戳 + timeFlag?: string; + // 过期时间 + expirationTime?: string; + // 备注 + comments?: string; + // 用户id + userId?: number; + // 租户id + tenantId?: number; + // 更新时间 + updateTime?: string; + // 创建时间 + createTime?: string; +} + +/** + * 商品信息搜索条件 + */ +export interface ShopOrderGoodsParam extends PageParam { + id?: number; + orderId?: number; + orderNo?: string; + keywords?: string; +} diff --git a/src/api/shop/shopSpec/index.ts b/src/api/shop/shopSpec/index.ts new file mode 100644 index 0000000..5056ba8 --- /dev/null +++ b/src/api/shop/shopSpec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import { MODULES_API_URL } from '@/config/setting'; +import { ShopSpec, ShopSpecParam } from '@/api/shop/shopSpec/model'; + +/** + * 分页查询规格 + */ +export async function pageShopSpec(params: ShopSpecParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格列表 + */ +export async function listShopSpec(params?: ShopSpecParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-spec', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加规格 + */ +export async function addShopSpec(data: ShopSpec) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格 + */ +export async function updateShopSpec(data: ShopSpec) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格 + */ +export async function removeShopSpec(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格 + */ +export async function removeBatchShopSpec(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格 + */ +export async function getShopSpec(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-spec/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopSpec/model/index.ts b/src/api/shop/shopSpec/model/index.ts new file mode 100644 index 0000000..cd52c14 --- /dev/null +++ b/src/api/shop/shopSpec/model/index.ts @@ -0,0 +1,38 @@ +import type { PageParam } from '@/api'; + +/** + * 规格 + */ +export interface ShopSpec { + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 商户ID + merchantId?: number; + // 创建用户 + userId?: number; + // 更新者 + updater?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + value?: string; +} + +/** + * 规格搜索条件 + */ +export interface ShopSpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopSpecValue/index.ts b/src/api/shop/shopSpecValue/index.ts new file mode 100644 index 0000000..2eab7d1 --- /dev/null +++ b/src/api/shop/shopSpecValue/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopSpecValue, ShopSpecValueParam } from './model'; + +/** + * 分页查询规格值 + */ +export async function pageShopSpecValue(params: ShopSpecValueParam) { + const res = await request.get>>( + '/shop/shop-spec-value/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格值列表 + */ +export async function listShopSpecValue(params?: ShopSpecValueParam) { + const res = await request.get>( + '/shop/shop-spec-value', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加规格值 + */ +export async function addShopSpecValue(data: ShopSpecValue) { + const res = await request.post>( + '/shop/shop-spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格值 + */ +export async function updateShopSpecValue(data: ShopSpecValue) { + const res = await request.put>( + '/shop/shop-spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格值 + */ +export async function removeShopSpecValue(id?: number) { + const res = await request.delete>( + '/shop/shop-spec-value/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchShopSpecValue(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-spec-value/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格值 + */ +export async function getShopSpecValue(id: number) { + const res = await request.get>( + '/shop/shop-spec-value/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopSpecValue/model/index.ts b/src/api/shop/shopSpecValue/model/index.ts new file mode 100644 index 0000000..e911f6c --- /dev/null +++ b/src/api/shop/shopSpecValue/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 规格值 + */ +export interface ShopSpecValue { + // 规格值ID + specValueId?: number; + // 规格组ID + specId?: number; + // 规格值 + specValue?: string; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格值搜索条件 + */ +export interface ShopSpecValueParam extends PageParam { + specValueId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopUser/index.ts b/src/api/shop/shopUser/index.ts new file mode 100644 index 0000000..c88282f --- /dev/null +++ b/src/api/shop/shopUser/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUser, ShopUserParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询用户记录表 + */ +export async function pageShopUser(params: ShopUserParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-user/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户记录表列表 + */ +export async function listShopUser(params?: ShopUserParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户记录表 + */ +export async function addShopUser(data: ShopUser) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户记录表 + */ +export async function updateShopUser(data: ShopUser) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户记录表 + */ +export async function removeShopUser(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户记录表 + */ +export async function removeBatchShopUser(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户记录表 + */ +export async function getShopUser(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopUser/model/index.ts b/src/api/shop/shopUser/model/index.ts new file mode 100644 index 0000000..d0e1c09 --- /dev/null +++ b/src/api/shop/shopUser/model/index.ts @@ -0,0 +1,163 @@ +import type { PageParam } from '@/api'; + +/** + * 用户记录表 + */ +export interface ShopUser { + // 用户id + userId?: number; + // 用户类型 0个人用户 1企业用户 2其他 + type?: number; + // 账号 + username?: string; + // 密码 + password?: string; + // 昵称 + nickname?: string; + // 手机号 + phone?: string; + // 性别 1男 2女 + sex?: number; + // 职务 + position?: string; + // 注册来源客户端 (APP、H5、MP-WEIXIN等) + platform?: string; + // 邮箱 + email?: string; + // 邮箱是否验证, 0否, 1是 + emailVerified?: number; + // 别名 + alias?: string; + // 真实姓名 + realName?: string; + // 证件号码 + idCard?: string; + // 出生日期 + birthday?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 用户可用余额 + balance?: string; + // 已提现金额 + cashedMoney?: string; + // 用户可用积分 + points?: number; + // 用户总支付的金额 + payMoney?: string; + // 实际消费的金额(不含退款) + expendMoney?: string; + // 密码 + payPassword?: string; + // 会员等级ID + gradeId?: number; + // 行业分类 + category?: string; + // 个人简介 + introduction?: string; + // 机构id + organizationId?: number; + // 会员分组ID + groupId?: number; + // 头像 + avatar?: string; + // 背景图 + bgImage?: string; + // 用户编码 + userCode?: string; + // 是否已实名认证 + certification?: number; + // 年龄 + age?: number; + // 是否线下会员 + offline?: string; + // 关注数 + followers?: number; + // 粉丝数 + fans?: number; + // 点赞数 + likes?: number; + // 评论数 + commentNumbers?: number; + // 是否推荐 + recommend?: number; + // 微信openid + openid?: string; + // 微信公众号openid + officeOpenid?: string; + // 微信unionID + unionid?: string; + // 客户端ID + clientId?: string; + // 不允许办卡 + notAllowVip?: string; + // 是否管理员 + isAdmin?: string; + // 是否企业管理员 + isOrganizationAdmin?: string; + // 累计登录次数 + loginNum?: number; + // 企业ID + companyId?: number; + // 可管理的场馆 + merchants?: string; + // 商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 商户头像 + merchantAvatar?: string; + // 第三方系统的用户ID + uid?: number; + // 专家角色 + expertType?: string; + // 过期时间 + expireTime?: number; + // 最后结算时间 + settlementTime?: string; + // 资质 + aptitude?: string; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 头衔 + title?: string; + // 安装的产品ID + templateId?: number; + // 插件安装状态(仅对超超管判断) 0未安装 1已安装 + installed?: number; + // 特长 + speciality?: string; + // 备注 + comments?: string; + // 状态, 0在线, 1离线 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 用户记录表搜索条件 + */ +export interface ShopUserParam extends PageParam { + userId?: number; + keywords?: string; +} diff --git a/src/api/shop/shopUserAddress/index.ts b/src/api/shop/shopUserAddress/index.ts new file mode 100644 index 0000000..2a0d186 --- /dev/null +++ b/src/api/shop/shopUserAddress/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserAddress, ShopUserAddressParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询收货地址 + */ +export async function pageShopUserAddress(params: ShopUserAddressParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/shop-user-address/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询收货地址列表 + */ +export async function listShopUserAddress(params?: ShopUserAddressParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-user-address', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加收货地址 + */ +export async function addShopUserAddress(data: ShopUserAddress) { + const res = await request.post>( + MODULES_API_URL + '/shop/shop-user-address', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改收货地址 + */ +export async function updateShopUserAddress(data: ShopUserAddress) { + const res = await request.put>( + MODULES_API_URL + '/shop/shop-user-address', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除收货地址 + */ +export async function removeShopUserAddress(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-user-address/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除收货地址 + */ +export async function removeBatchShopUserAddress(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/shop-user-address/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询收货地址 + */ +export async function getShopUserAddress(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/shop-user-address/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopUserAddress/model/index.ts b/src/api/shop/shopUserAddress/model/index.ts new file mode 100644 index 0000000..4f45d0f --- /dev/null +++ b/src/api/shop/shopUserAddress/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 收货地址 + */ +export interface ShopUserAddress { + // 主键ID + id?: number; + // 姓名 + name?: string; + // 手机号码 + phone?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 收货地址 + address?: string; + // 收货地址 + fullAddress?: string; + // + lat?: string; + // + lng?: string; + // 1先生 2女士 + gender?: number; + // 家、公司、学校 + type?: string; + // 默认收货地址 + isDefault?: string; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; +} + +/** + * 收货地址搜索条件 + */ +export interface ShopUserAddressParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopUserCoupon/index.ts b/src/api/shop/shopUserCoupon/index.ts new file mode 100644 index 0000000..936d260 --- /dev/null +++ b/src/api/shop/shopUserCoupon/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserCoupon, ShopUserCouponParam } from './model'; + +/** + * 分页查询用户优惠券 + */ +export async function pageShopUserCoupon(params: ShopUserCouponParam) { + const res = await request.get>>( + '/shop/shop-user-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户优惠券列表 + */ +export async function listShopUserCoupon(params?: ShopUserCouponParam) { + const res = await request.get>( + '/shop/shop-user-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户优惠券 + */ +export async function addShopUserCoupon(data: ShopUserCoupon) { + const res = await request.post>( + '/shop/shop-user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户优惠券 + */ +export async function updateShopUserCoupon(data: ShopUserCoupon) { + const res = await request.put>( + '/shop/shop-user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户优惠券 + */ +export async function removeShopUserCoupon(id?: number) { + const res = await request.delete>( + '/shop/shop-user-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户优惠券 + */ +export async function removeBatchShopUserCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-user-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户优惠券 + */ +export async function getShopUserCoupon(id: number) { + const res = await request.get>( + '/shop/shop-user-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopUserCoupon/model/index.ts b/src/api/shop/shopUserCoupon/model/index.ts new file mode 100644 index 0000000..e9fec3a --- /dev/null +++ b/src/api/shop/shopUserCoupon/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 用户优惠券 + */ +export interface ShopUserCoupon { + // id + id?: string; + // 优惠券模板ID + couponId?: number; + // 用户ID + userId?: number; + // 优惠券名称 + name?: string; + // 优惠券描述 + description?: string; + // 优惠券类型(10满减券 20折扣券 30免费劵) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 适用范围(10全部商品 20指定商品 30指定分类) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 有效期开始时间 + startTime?: string; + // 有效期结束时间 + endTime?: string; + // 使用状态(0未使用 1已使用 2已过期) + status?: number; + // 使用时间 + useTime?: string; + // 使用订单ID + orderId?: string; + // 使用订单号 + orderNo?: string; + // 获取方式(10主动领取 20系统发放 30活动赠送) + obtainType?: number; + // 获取来源描述 + obtainSource?: string; + // 是否删除, 0否, 1是 + deleted?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 用户优惠券搜索条件 + */ +export interface ShopUserCouponParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/shopUserReferee/index.ts b/src/api/shop/shopUserReferee/index.ts new file mode 100644 index 0000000..4f4c663 --- /dev/null +++ b/src/api/shop/shopUserReferee/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserReferee, ShopUserRefereeParam } from './model'; + +/** + * 分页查询用户推荐关系表 + */ +export async function pageShopUserReferee(params: ShopUserRefereeParam) { + const res = await request.get>>( + '/shop/shop-user-referee/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户推荐关系表列表 + */ +export async function listShopUserReferee(params?: ShopUserRefereeParam) { + const res = await request.get>( + '/shop/shop-user-referee', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户推荐关系表 + */ +export async function addShopUserReferee(data: ShopUserReferee) { + const res = await request.post>( + '/shop/shop-user-referee', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户推荐关系表 + */ +export async function updateShopUserReferee(data: ShopUserReferee) { + const res = await request.put>( + '/shop/shop-user-referee', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户推荐关系表 + */ +export async function removeShopUserReferee(id?: number) { + const res = await request.delete>( + '/shop/shop-user-referee/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户推荐关系表 + */ +export async function removeBatchShopUserReferee(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/shop-user-referee/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户推荐关系表 + */ +export async function getShopUserReferee(id: number) { + const res = await request.get>( + '/shop/shop-user-referee/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/shopUserReferee/model/index.ts b/src/api/shop/shopUserReferee/model/index.ts new file mode 100644 index 0000000..06e1ecd --- /dev/null +++ b/src/api/shop/shopUserReferee/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 用户推荐关系表 + */ +export interface ShopUserReferee { + // 主键ID + id?: number; + // 推荐人ID + dealerId?: number; + // 用户id(被推荐人) + userId?: number; + // 推荐关系层级(1,2,3) + level?: number; + // 备注 + comments?: string; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 用户推荐关系表搜索条件 + */ +export interface ShopUserRefereeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/shop/spec/index.ts b/src/api/shop/spec/index.ts new file mode 100644 index 0000000..402722a --- /dev/null +++ b/src/api/shop/spec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Spec, SpecParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格 + */ +export async function pageSpec(params: SpecParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格列表 + */ +export async function listSpec(params?: SpecParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加规格 + */ +export async function addSpec(data: Spec) { + const res = await request.post>( + MODULES_API_URL + '/shop/spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格 + */ +export async function updateSpec(data: Spec) { + const res = await request.put>( + MODULES_API_URL + '/shop/spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格 + */ +export async function removeSpec(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格 + */ +export async function removeBatchSpec(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格 + */ +export async function getSpec(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/spec/model/index.ts b/src/api/shop/spec/model/index.ts new file mode 100644 index 0000000..52ba8dc --- /dev/null +++ b/src/api/shop/spec/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 规格 + */ +export interface Spec { + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 创建用户 + userId?: number; + // 更新者 + updater?: number; + // 商户ID + merchantId?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格搜索条件 + */ +export interface SpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/shop/specValue/index.ts b/src/api/shop/specValue/index.ts new file mode 100644 index 0000000..2e2e398 --- /dev/null +++ b/src/api/shop/specValue/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { SpecValue, SpecValueParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格值 + */ +export async function pageSpecValue(params: SpecValueParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/spec-value/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格值列表 + */ +export async function listSpecValue(params?: SpecValueParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec-value', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加规格值 + */ +export async function addSpecValue(data: SpecValue) { + const res = await request.post>( + MODULES_API_URL + '/shop/spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格值 + */ +export async function updateSpecValue(data: SpecValue) { + const res = await request.put>( + MODULES_API_URL + '/shop/spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格值 + */ +export async function removeSpecValue(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec-value/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchSpecValue(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/spec-value/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格值 + */ +export async function getSpecValue(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/spec-value/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/shop/specValue/model/index.ts b/src/api/shop/specValue/model/index.ts new file mode 100644 index 0000000..eb1e717 --- /dev/null +++ b/src/api/shop/specValue/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 规格值 + */ +export interface SpecValue { + // 规格值ID + specValueId?: number; + // 规格值 + specValue?: string; + // 规格组ID + specId?: number; + // 描述 + comments?: string; + // 排序 + sortNumber?: number; + // 租户id + tenantId?: number; + key?: string; + label?: string; + value?: string; + detail?: [string]; + specName?: string; +} + +/** + * 规格值搜索条件 + */ +export interface SpecValueParam extends PageParam { + specValueId?: number; + specId?: number; + keywords?: string; +} diff --git a/src/api/system/access-key/index.ts b/src/api/system/access-key/index.ts new file mode 100644 index 0000000..ecc7852 --- /dev/null +++ b/src/api/system/access-key/index.ts @@ -0,0 +1,59 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { AccessKey, AccessKeyParam } from './model'; +import { PageResult } from '@/api'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 查询AccessKey列表 + */ +export async function pageAccessKey(params: AccessKeyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/access-key/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加AccessKey + */ +export async function addAccessKey(data: AccessKey) { + const res = await request.post>( + SERVER_API_URL + '/system/access-key', + data + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改AccessKey + */ +export async function updateAccessKey(data: AccessKey) { + const res = await request.put>( + SERVER_API_URL + '/system/access-key', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除AccessKey + */ +export async function removeAccessKey(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/access-key/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/access-key/model/index.ts b/src/api/system/access-key/model/index.ts new file mode 100644 index 0000000..376b577 --- /dev/null +++ b/src/api/system/access-key/model/index.ts @@ -0,0 +1,20 @@ +/** + * AccessKey + */ +export interface AccessKey { + id?: number; + phone?: string; + accessKey?: string; + accessSecret?: string; + createTime?: string; + tenantId?: number; + code?: number; +} + +/** + * AccessKey搜索条件 + */ +export interface AccessKeyParam { + id?: number; + accessKey?: string; +} diff --git a/src/api/system/appstore/index.ts b/src/api/system/appstore/index.ts new file mode 100644 index 0000000..4acad48 --- /dev/null +++ b/src/api/system/appstore/index.ts @@ -0,0 +1,11 @@ +// json数据 +export function appstoreType() { + return [ + { value: '0', label: '全部', text: '全部', comments: '' }, + { value: '1', label: '系统管理', text: '系统管理', comments: '' }, + { value: '2', label: '内容管理', text: '内容管理', comments: '' }, + { value: '3', label: '第三方应用', text: '第三方应用', comments: '' }, + { value: '4', label: '办公协同', text: '办公协同', comments: '' }, + { value: '5', label: '商城模块', text: '商城模块', comments: '' } + ]; +} diff --git a/src/api/system/appstore/model/index.ts b/src/api/system/appstore/model/index.ts new file mode 100644 index 0000000..c3c9c45 --- /dev/null +++ b/src/api/system/appstore/model/index.ts @@ -0,0 +1,13 @@ +/** + * 消息 + */ +export interface Appstore { + // 消息id + id?: number; + // 标题 + title?: string; + // 时间 + time?: string; + // 状态 + status?: number; +} diff --git a/src/api/system/cache/index.ts b/src/api/system/cache/index.ts new file mode 100644 index 0000000..aa4c8e6 --- /dev/null +++ b/src/api/system/cache/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Cache, CacheParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询缓存数据 + */ +export async function listCache(params?: CacheParam) { + const res = await request.get>( + SERVER_API_URL + '/system/cache', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取缓存数据 + * @param key + */ +export async function getCache(key: String) { + const res = await request.get>( + SERVER_API_URL + '/system/cache/' + key + ); + if (res.data.code === 0) { + return res.data.data; + } +} + +/** + * 更新缓存数据 + * @param cache + */ +export async function updateCache(cache: Cache) { + const res = await request.post>( + SERVER_API_URL + '/system/cache', + cache + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除缓存数据 + * @param key + */ +export async function removeCache(key?: String) { + const res = await request.delete>( + SERVER_API_URL + '/system/cache/' + key + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 更新缓存数据 + * @param cache + */ +export async function updateCacheTheme(cache: Cache) { + const res = await request.post>( + SERVER_API_URL + '/system/cache/theme', + cache + ); + if (res.data.code === 0) { + return res.data.message; + } +} diff --git a/src/api/system/cache/model/index.ts b/src/api/system/cache/model/index.ts new file mode 100644 index 0000000..dc28d00 --- /dev/null +++ b/src/api/system/cache/model/index.ts @@ -0,0 +1,18 @@ +import type { PageParam } from '@/api'; + +/** + * 缓存管理 + */ +export interface Cache { + key?: string; + content?: string; + uploadMethod?: any; + expireTime?: number; // 过期时间(秒) +} + +/** + * 搜索条件 + */ +export interface CacheParam extends PageParam { + key?: string; +} diff --git a/src/api/system/chat/index.ts b/src/api/system/chat/index.ts new file mode 100644 index 0000000..e926ecd --- /dev/null +++ b/src/api/system/chat/index.ts @@ -0,0 +1,157 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + ChatConversation, + ChatConversationParam, + ChatMessage, + ChatMessageParam +} from '@/api/system/chat/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询聊天列表 + */ +export async function pageChatConversation(params: ChatConversationParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-conversation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询聊天列表 + */ +export async function pageChatMessage(params: ChatMessageParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-message/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} +/** + * 查询日志列表 + */ +export async function listChatConversation(params?: ChatConversationParam) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-conversation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加日志 + */ +export async function addChatMessage(data: ChatMessage) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.data.code === 0) { + return res.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加日志 + */ +export async function addChatConversation(data: ChatConversation) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-conversation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改日志 + */ +export async function updateChatConversation(data: any) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-conversation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定日志 + */ +export async function bindChatConversation(data: ChatConversation) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-conversation/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加 + */ +export async function addBatchChatConversation(data: ChatConversation[]) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-conversation/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除日志 + */ +export async function removeChatConversation(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/chat-conversation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除日志 + */ +export async function removeBatchChatConversation( + data: (number | undefined)[] +) { + const res = await request.delete>( + SERVER_API_URL + '/system/chat-conversation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/chat/model/index.ts b/src/api/system/chat/model/index.ts new file mode 100644 index 0000000..5ead20e --- /dev/null +++ b/src/api/system/chat/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; +import type { User } from '@/api/system/user/model'; + +export interface ChatConversation { + id?: number; + userId?: number; + friendId?: number; + userInfo?: User; + friendInfo?: User; + content: string; + messages: ChatMessage[]; + unRead: number; + createTime?: string; + updateTime: string | number | Date; +} + +export interface ChatMessage { + id?: number; + formUserId?: number; + formUserInfo?: User; + toUserInfo?: User; + toUserId?: number; + type: string; + content: string; + status?: number; + createTime?: number; + updateTime?: number; +} + +/** + * 搜索条件 + */ +export interface ChatConversationParam extends PageParam { + userId?: number; + status: number; + onlyFake: boolean; + keywords: string; +} + +/** + * 搜索条件 + */ +export interface ChatMessageParam extends PageParam { + formUserId?: number; + toUserId?: number; + type?: string; + status?: number; + keywords: string; +} diff --git a/src/api/system/chatConversation/index.ts b/src/api/system/chatConversation/index.ts new file mode 100644 index 0000000..4c84dc4 --- /dev/null +++ b/src/api/system/chatConversation/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ChatConversation, ChatConversationParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询聊天消息表 + */ +export async function pageChatConversation(params: ChatConversationParam) { + const res = await request.get>>( + MODULES_API_URL + '/shop/chat-conversation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询聊天消息表列表 + */ +export async function listChatConversation(params?: ChatConversationParam) { + const res = await request.get>( + MODULES_API_URL + '/shop/chat-conversation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addChatConversation(data: ChatConversation) { + const res = await request.post>( + MODULES_API_URL + '/shop/chat-conversation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改聊天消息表 + */ +export async function updateChatConversation(data: ChatConversation) { + const res = await request.put>( + MODULES_API_URL + '/shop/chat-conversation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除聊天消息表 + */ +export async function removeChatConversation(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/shop/chat-conversation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除聊天消息表 + */ +export async function removeBatchChatConversation(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/shop/chat-conversation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询聊天消息表 + */ +export async function getChatConversation(id: number) { + const res = await request.get>( + MODULES_API_URL + '/shop/chat-conversation/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/chatConversation/model/index.ts b/src/api/system/chatConversation/model/index.ts new file mode 100644 index 0000000..110806d --- /dev/null +++ b/src/api/system/chatConversation/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 聊天消息表 + */ +export interface ChatConversation { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 好友ID + friendId?: number; + // 消息类型 + type?: number; + // 消息内容 + content?: string; + // 未读消息 + unRead?: number; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 聊天消息表搜索条件 + */ +export interface ChatConversationParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/chatMessage/index.ts b/src/api/system/chatMessage/index.ts new file mode 100644 index 0000000..1cc75d1 --- /dev/null +++ b/src/api/system/chatMessage/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ChatMessage, ChatMessageParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询聊天消息表 + */ +export async function pageChatMessage(params: ChatMessageParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/chat-message/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询聊天消息表列表 + */ +export async function listChatMessage(params?: ChatMessageParam) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-message', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addChatMessage(data: ChatMessage) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加聊天消息表 + */ +export async function addBatchChatMessage(data: ChatMessage[]) { + const res = await request.post>( + SERVER_API_URL + '/system/chat-message/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改聊天消息表 + */ +export async function updateChatMessage(data: ChatMessage) { + const res = await request.put>( + SERVER_API_URL + '/system/chat-message', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除聊天消息表 + */ +export async function removeChatMessage(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/chat-message/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除聊天消息表 + */ +export async function removeBatchChatMessage(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/chat-message/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询聊天消息表 + */ +export async function getChatMessage(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/chat-message/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/chatMessage/model/index.ts b/src/api/system/chatMessage/model/index.ts new file mode 100644 index 0000000..4352a3f --- /dev/null +++ b/src/api/system/chatMessage/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 聊天消息表 + */ +export interface ChatMessage { + // 自增ID + id?: number; + // 发送人ID + formUserId?: number; + // 接收人ID + toUserId?: number; + // 消息类型 + type?: string; + // 消息内容 + content?: string; + // 屏蔽接收方 + sideTo?: number; + // 屏蔽发送方 + sideFrom?: number; + // 是否撤回 + withdraw?: number; + // 文件信息 + fileInfo?: string; + toUserName?: any; + formUserName?: string; + // 批量发送 + toUserIds?: any[]; + // 存在联系方式 + hasContact?: number; + // 状态, 0未读, 1已读 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 聊天消息表搜索条件 + */ +export interface ChatMessageParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/comment/index.ts b/src/api/system/comment/index.ts new file mode 100644 index 0000000..b49f7b5 --- /dev/null +++ b/src/api/system/comment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Comment, CommentParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询应用评论 + */ +export async function pageComment(params: CommentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/comment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用评论列表 + */ +export async function listComment(params?: CommentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/comment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用评论 + */ +export async function addComment(data: Comment) { + const res = await request.post>( + SERVER_API_URL + '/system/comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用评论 + */ +export async function updateComment(data: Comment) { + const res = await request.put>( + SERVER_API_URL + '/system/comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用评论 + */ +export async function removeComment(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/comment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用评论 + */ +export async function removeBatchComment(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/comment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用评论 + */ +export async function getComment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/comment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/comment/model/index.ts b/src/api/system/comment/model/index.ts new file mode 100644 index 0000000..8d644d6 --- /dev/null +++ b/src/api/system/comment/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 应用评论 + */ +export interface Comment { + // ID + id?: number; + // 父级ID + parentId?: number; + // 用户ID + userId?: number; + // 评分 + rate?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 评论内容 + comments?: string; + // 状态 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用评论搜索条件 + */ +export interface CommentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/company/index.ts b/src/api/system/company/index.ts new file mode 100644 index 0000000..f1d021e --- /dev/null +++ b/src/api/system/company/index.ts @@ -0,0 +1,162 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Company, CompanyParam } from './model'; +import { PageResult } from '@/api'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询企业资料 + */ +export async function getCompany(params?: CompanyParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company/profile', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询企业资料不限租户 + */ +export async function getCompanyAll(companyId: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company/profileAll/' + companyId + ); + if (res.data.code === 0 && res.data) { + console.log(res.data); + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询Company列表 + */ +export async function pageCompany(params: CompanyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询Company列表不限租户 + */ +export async function pageCompanyAll(params: CompanyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company/pageAll', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加Company + */ +export async function addCompany(data: Company) { + const res = await request.post>( + SERVER_API_URL + '/system/company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改Company + */ +export async function updateCompany(data: Company) { + const res = await request.put>( + SERVER_API_URL + '/system/company', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改CompanyAll + */ +export async function updateCompanyAll(data: Company) { + const res = await request.put>( + SERVER_API_URL + '/system/company/updateCompanyAll', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除Company + */ +export async function removeCompany(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 销毁租户 +export async function destructionTenant(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company/destruction/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除Company + */ +export async function removeBatchCompany(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/company/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/company/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/company/model/index.ts b/src/api/system/company/model/index.ts new file mode 100644 index 0000000..0ae57e1 --- /dev/null +++ b/src/api/system/company/model/index.ts @@ -0,0 +1,187 @@ +import type { PageParam } from '@/api'; +import type {Menu} from "@/api/system/menu/model"; + +/** + * 企业信息 + */ +export interface Company { + // 企业id + companyId?: number; + // 应用类型 + type?: number; + // 插件ID + menuId?: number; + // 企业简称 + shortName?: string; + // 企业全称 + companyName?: string; + // 企业标识 + companyCode?: string; + // 栏目分类 + categoryId?: number; + // 应用截图 + files?: string; + // 类型 10企业 20政府单位 + companyType?: string; + // 企业类型多选(已废弃) + companyTypeMultiple?: string; + // 应用标识 + companyLogo?: string; + // 封面图 + image?: string; + // 应用详情 + content?: string; + // 应用类型 + appType?: string; + // 免费域名 + freeDomain?: string; + // 绑定域名 + domain?: string; + // 联系电话 + phone?: string; + // 座机电话 + tel?: string; + // 邮箱 + email?: string; + // 发票抬头 + invoiceHeader?: string; + // 企业法人 + businessEntity?: string; + // 服务开始时间 + startTime?: string; + // 服务到期时间 + expirationTime?: string; + // 即将过期 + soon?: number; + // 应用版本 10体验版 20授权版 30永久授权 + version?: string; + // 版本名称 + versionName?: string; + // 版本号 + versionCode?: string; + // 销售价格 + price?: number; + // 计费方式(0免费 1一次性 2按年 3按月 4按天) + chargingMethod?: number; + // 成员数量(人数上限) + members?: number; + // 成员数量(当前) + users?: number; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 部门数量 + departments?: number; + // 存储空间 + storage?: string; + // 存储空间(上限) + storageMax?: string; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 街道地址 + address?: string; + // 详细 + lngAndLat?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 备注 + comments?: string; + // 是否实名认证 + authentication?: number; + // 企业默认主体 + authoritative?: boolean; + // 主控节点 + serverUrl?: string; + // 模块节点 + modulesUrl?: string; + // 重定向 + redirectUrl?: string; + // request合法域名 + requestUrl?: string; + // socket合法域名 + socketUrl?: string; + // 总后台管理入口 + adminUrl?: string; + // 商户端入口 + merchantUrl?: string; + // 网站域名 + websiteUrl?: string; + // 微信小程序二维码 + mpWeixinCode?: string; + // 支付宝小程序二维码 + mpAlipayCode?: string; + // H5端应用二维码 + h5Code?: string; + // 安卓APP二维码 + androidUrl?: string; + // 苹果APP二维码 + iosUrl?: string; + // 是否推荐 + recommend?: number; + // 点赞数量 + likes?: number; + // 点击数量 + clicks?: number; + // 购买数量 + buys?: number; + // 评分 + rate?: number; + // 是否含税, 0不含, 1含 + isTax?: number; + // 当前克隆的租户ID + planId?: number; + // 状态 + status?: number; + // 是否隐藏 + hide?: boolean; + // 是否开启网站 + websiteStatus?: boolean; + // 排序号 + sortNumber?: number; + // 商户ID + merchantId?: number; + // 租户id + tid?: number; + // 用户ID + userId?: number; + // 是否官方自营 + official?: boolean; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 权限 + authorities?: Menu[]; +} + +/** + * 企业信息搜索条件 + */ +export interface CompanyParam extends PageParam { + companyId?: number; + phone?: string; + userId?: string; + type?: number; + tenantId?: number; + version?: number; + shortName?: string; + companyName?: string; + official?: boolean; + deleted?: number; + keywords?: string; +} diff --git a/src/api/system/companyComment/index.ts b/src/api/system/companyComment/index.ts new file mode 100644 index 0000000..2a5a15a --- /dev/null +++ b/src/api/system/companyComment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {CompanyComment, CompanyCommentParam} from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询应用评论 + */ +export async function pageCompanyComment(params: CompanyCommentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-comment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用评论列表 + */ +export async function listCompanyComment(params?: CompanyCommentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-comment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用评论 + */ +export async function addCompanyComment(data: CompanyComment) { + const res = await request.post>( + SERVER_API_URL + '/system/company-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用评论 + */ +export async function updateCompanyComment(data: CompanyComment) { + const res = await request.put>( + SERVER_API_URL + '/system/company-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用评论 + */ +export async function removeCompanyComment(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-comment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用评论 + */ +export async function removeBatchCompanyComment(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-comment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用评论 + */ +export async function getCompanyComment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-comment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/companyComment/model/index.ts b/src/api/system/companyComment/model/index.ts new file mode 100644 index 0000000..ef8cae9 --- /dev/null +++ b/src/api/system/companyComment/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 应用评论 + */ +export interface CompanyComment { + // ID + id?: number; + // 父级ID + parentId?: number; + // 用户ID + userId?: number; + // 企业ID + companyId?: number; + // 评分 + rate?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 评论内容 + comments?: string; + // 状态 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用评论搜索条件 + */ +export interface CompanyCommentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyContent/index.ts b/src/api/system/companyContent/index.ts new file mode 100644 index 0000000..62f2f02 --- /dev/null +++ b/src/api/system/companyContent/index.ts @@ -0,0 +1,121 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyContent, CompanyContentParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询应用详情 + */ +export async function pageCompanyContent(params: CompanyContentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-content/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用详情列表 + */ +export async function listCompanyContent(params?: CompanyContentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-content', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取应用详情 + * @param id + */ +export async function getByCompanyId(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-content/getByCompanyId/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 添加应用详情 + */ +export async function addCompanyContent(data: CompanyContent) { + const res = await request.post>( + SERVER_API_URL + '/system/company-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用详情 + */ +export async function updateCompanyContent(data: CompanyContent) { + const res = await request.put>( + SERVER_API_URL + '/system/company-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用详情 + */ +export async function removeCompanyContent(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-content/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用详情 + */ +export async function removeBatchCompanyContent(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-content/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用详情 + */ +export async function getCompanyContent(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-content/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/companyContent/model/index.ts b/src/api/system/companyContent/model/index.ts new file mode 100644 index 0000000..226f513 --- /dev/null +++ b/src/api/system/companyContent/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 应用详情 + */ +export interface CompanyContent { + // + id?: number; + // 企业ID + companyId?: number; + // 详细内容 + content?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 应用详情搜索条件 + */ +export interface CompanyContentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyGit/index.ts b/src/api/system/companyGit/index.ts new file mode 100644 index 0000000..64b63be --- /dev/null +++ b/src/api/system/companyGit/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyGit, CompanyGitParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询代码仓库 + */ +export async function pageCompanyGit(params: CompanyGitParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-git/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询代码仓库列表 + */ +export async function listCompanyGit(params?: CompanyGitParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-git', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加代码仓库 + */ +export async function addCompanyGit(data: CompanyGit) { + const res = await request.post>( + SERVER_API_URL + '/system/company-git', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改代码仓库 + */ +export async function updateCompanyGit(data: CompanyGit) { + const res = await request.put>( + SERVER_API_URL + '/system/company-git', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除代码仓库 + */ +export async function removeCompanyGit(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-git/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除代码仓库 + */ +export async function removeBatchCompanyGit(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-git/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询代码仓库 + */ +export async function getCompanyGit(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-git/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/companyGit/model/index.ts b/src/api/system/companyGit/model/index.ts new file mode 100644 index 0000000..901a7cd --- /dev/null +++ b/src/api/system/companyGit/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 代码仓库 + */ +export interface CompanyGit { + // 自增ID + id?: number; + // 仓库名称 + title?: string; + // 厂商 0私有仓库 1github 2gitee 3其他 + brand?: string; + // 语言 + language?: string; + // 企业ID + companyId?: number; + // 仓库地址 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 仓库描述 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 代码仓库搜索条件 + */ +export interface CompanyGitParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyParameter/index.ts b/src/api/system/companyParameter/index.ts new file mode 100644 index 0000000..4c5ee60 --- /dev/null +++ b/src/api/system/companyParameter/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyParameter, CompanyParameterParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询应用参数 + */ +export async function pageCompanyParameter(params: CompanyParameterParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-parameter/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listCompanyParameter(params?: CompanyParameterParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-parameter', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用参数 + */ +export async function addCompanyParameter(data: CompanyParameter) { + const res = await request.post>( + SERVER_API_URL + '/system/company-parameter', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用参数 + */ +export async function updateCompanyParameter(data: CompanyParameter) { + const res = await request.put>( + SERVER_API_URL + '/system/company-parameter', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用参数 + */ +export async function removeCompanyParameter(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-parameter/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchCompanyParameter(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-parameter/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getCompanyParameter(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-parameter/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/companyParameter/model/index.ts b/src/api/system/companyParameter/model/index.ts new file mode 100644 index 0000000..bf608d8 --- /dev/null +++ b/src/api/system/companyParameter/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface CompanyParameter { + // 自增ID + id?: number; + // 参数名称 + name?: string; + // 参数内容 + value?: string; + // 企业ID + companyId?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用参数搜索条件 + */ +export interface CompanyParameterParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/companyUrl/index.ts b/src/api/system/companyUrl/index.ts new file mode 100644 index 0000000..e3995da --- /dev/null +++ b/src/api/system/companyUrl/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CompanyUrl, CompanyUrlParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询应用域名 + */ +export async function pageCompanyUrl(params: CompanyUrlParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/company-url/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用域名列表 + */ +export async function listCompanyUrl(params?: CompanyUrlParam) { + const res = await request.get>( + SERVER_API_URL + '/system/company-url', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用域名 + */ +export async function addCompanyUrl(data: CompanyUrl) { + const res = await request.post>( + SERVER_API_URL + '/system/company-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用域名 + */ +export async function updateCompanyUrl(data: CompanyUrl) { + const res = await request.put>( + SERVER_API_URL + '/system/company-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用域名 + */ +export async function removeCompanyUrl(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-url/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用域名 + */ +export async function removeBatchCompanyUrl(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/company-url/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用域名 + */ +export async function getCompanyUrl(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/company-url/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/companyUrl/model/index.ts b/src/api/system/companyUrl/model/index.ts new file mode 100644 index 0000000..1ae38e2 --- /dev/null +++ b/src/api/system/companyUrl/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 应用域名 + */ +export interface CompanyUrl { + // 自增ID + id?: number; + // 域名类型 + type?: string; + // 企业ID + companyId?: number; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 二维码 + qrcode?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用域名搜索条件 + */ +export interface CompanyUrlParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/dict-data/index.ts b/src/api/system/dict-data/index.ts new file mode 100644 index 0000000..ded8ced --- /dev/null +++ b/src/api/system/dict-data/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DictData, DictDataParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询字典数据 + */ +export async function pageDictData(params: DictDataParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/dict-data/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询字典数据列表 + */ +export async function listDictData(params: DictDataParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict-data', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典数据 + */ +export async function addDictData(data: DictData) { + const res = await request.post>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典数据 + */ +export async function updateDictData(data: DictData) { + const res = await request.put>( + SERVER_API_URL + '/system/dict-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典数据 + */ +export async function removeDictData(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict-data/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除字典数据 + */ +export async function removeDictDataBatch(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict-data/batch', + { data } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dict-data/model/index.ts b/src/api/system/dict-data/model/index.ts new file mode 100644 index 0000000..6383ed3 --- /dev/null +++ b/src/api/system/dict-data/model/index.ts @@ -0,0 +1,49 @@ +import { PageParam } from '@/api'; + +/** + * 字典数据 + */ +export interface DictData { + // 字典数据id + dictDataId?: number; + // 字典id + dictId?: number; + // 字典名称 + dictName?: string; + // 字典数据标识 + dictDataCode?: string; + // 字典数据名称 + dictDataName?: string; + // 预设字段(路由地址) + path?: string; + // 预设字段(组件路径) + component?: string; + // 字典标识 + dictCode?: string; + // 排序号 + sortNumber?: any; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + tenantId?: number; + label?: string; + value?: number; +} + +/** + * 字典数据搜索条件 + */ +export interface DictDataParam extends PageParam { + // 关键字 + keywords?: string; + // 字典标识 + dictCode?: string; + // 字典id + dictId?: number; + // + value?: number; + // + label?: string; + dictDataId?: number; +} diff --git a/src/api/system/dict/index.ts b/src/api/system/dict/index.ts new file mode 100644 index 0000000..59ec1db --- /dev/null +++ b/src/api/system/dict/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Dict, DictParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询字典列表 + */ +export async function listDictionaries(params?: DictParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dict', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典 + */ +export async function addDict(data: Dict) { + const res = await request.post>( + SERVER_API_URL + '/system/dict', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典 + */ +export async function updateDict(data: Dict) { + const res = await request.put>( + SERVER_API_URL + '/system/dict', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典 + */ +export async function removeDict(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dict/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dict/model/index.ts b/src/api/system/dict/model/index.ts new file mode 100644 index 0000000..575cb35 --- /dev/null +++ b/src/api/system/dict/model/index.ts @@ -0,0 +1,29 @@ +/** + * 字典 + */ +export interface Dict { + // 字典id + dictId?: number; + // 字典标识 + dictCode?: string; + // 字典名称 + dictName?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + type?: number; + tenantId?: number; +} + +/** + * 字典搜索条件 + */ +export interface DictParam { + dictCode?: string; + dictName?: string; + type?: number; + tenantId?: number; +} diff --git a/src/api/system/dictionary-data/index.ts b/src/api/system/dictionary-data/index.ts new file mode 100644 index 0000000..cc951d3 --- /dev/null +++ b/src/api/system/dictionary-data/index.ts @@ -0,0 +1,87 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { DictionaryData, DictionaryDataParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询字典数据 + */ +export async function pageDictionaryData(params: DictionaryDataParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/dictionary-data/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询字典数据列表 + */ +export async function listDictionaryData(params: DictionaryDataParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dictionary-data', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典数据 + */ +export async function addDictionaryData(data: DictionaryData) { + const res = await request.post>( + SERVER_API_URL + '/system/dictionary-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典数据 + */ +export async function updateDictionaryData(data: DictionaryData) { + const res = await request.put>( + SERVER_API_URL + '/system/dictionary-data', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典数据 + */ +export async function removeDictionaryData(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dictionary-data/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除字典数据 + */ +export async function removeDictionaryDataBatch(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/dictionary-data/batch', + { data } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dictionary-data/model/index.ts b/src/api/system/dictionary-data/model/index.ts new file mode 100644 index 0000000..734485a --- /dev/null +++ b/src/api/system/dictionary-data/model/index.ts @@ -0,0 +1,37 @@ +import { PageParam } from '@/api'; + +/** + * 字典数据 + */ +export interface DictionaryData { + // 字典数据id + dictDataId?: number; + // 字典id + dictId?: number; + // 字典数据标识 + dictDataCode?: string; + // 字典数据名称 + dictDataName?: string; + // 预设字段(路由地址) + path?: string; + // 组件路径 + component?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; +} + +/** + * 字典数据搜索条件 + */ +export interface DictionaryDataParam extends PageParam { + // 关键字 + keywords?: string; + // 字典标识 + dictCode?: string; + // 字典id + dictId?: number; +} diff --git a/src/api/system/dictionary/index.ts b/src/api/system/dictionary/index.ts new file mode 100644 index 0000000..84dcc4c --- /dev/null +++ b/src/api/system/dictionary/index.ts @@ -0,0 +1,61 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Dictionary, DictionaryParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询字典列表 + */ +export async function listDictionaries(params?: DictionaryParam) { + const res = await request.get>( + SERVER_API_URL + '/system/dictionary', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加字典 + */ +export async function addDictionary(data: Dictionary) { + const res = await request.post>( + SERVER_API_URL + '/system/dictionary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改字典 + */ +export async function updateDictionary(data: Dictionary) { + const res = await request.put>( + SERVER_API_URL + '/system/dictionary', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除字典 + */ +export async function removeDictionary(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/dictionary/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/dictionary/model/index.ts b/src/api/system/dictionary/model/index.ts new file mode 100644 index 0000000..d72e7c2 --- /dev/null +++ b/src/api/system/dictionary/model/index.ts @@ -0,0 +1,29 @@ +/** + * 字典 + */ +export interface Dictionary { + // 字典id + dictId?: number; + // 字典标识 + dictCode?: string; + // 字典名称 + dictName?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + type?: number; + tenantId?: number; +} + +/** + * 字典搜索条件 + */ +export interface DictionaryParam { + dictCode?: string; + dictName?: string; + type?: number; + tenantId?: number; +} diff --git a/src/api/system/domain/index.ts b/src/api/system/domain/index.ts new file mode 100644 index 0000000..82c050e --- /dev/null +++ b/src/api/system/domain/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Domain, DomainParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询授权域名 + */ +export async function pageDomain(params: DomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/domain/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询授权域名列表 + */ +export async function listDomain(params?: DomainParam) { + const res = await request.get>( + SERVER_API_URL + '/system/domain', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加授权域名 + */ +export async function addDomain(data: Domain) { + const res = await request.post>( + SERVER_API_URL + '/system/domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改授权域名 + */ +export async function updateDomain(data: Domain) { + const res = await request.put>( + SERVER_API_URL + '/system/domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除授权域名 + */ +export async function removeDomain(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/domain/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除授权域名 + */ +export async function removeBatchDomain(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/domain/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询授权域名 + */ +export async function getDomain(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/domain/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据域名查询授权 + */ +export async function getByDomain(domain: string) { + const res = await request.get>( + SERVER_API_URL + '/system/domain/getByDomain/' + domain + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/domain/model/index.ts b/src/api/system/domain/model/index.ts new file mode 100644 index 0000000..89a73e4 --- /dev/null +++ b/src/api/system/domain/model/index.ts @@ -0,0 +1,38 @@ +import type { PageParam } from '@/api'; + +/** + * 授权域名 + */ +export interface Domain { + // ID + id?: number; + // 域名 + domain?: string; + // 主机记录 + hostName?: string; + // 记录值 + hostValue?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + comments?: string; +} + +/** + * 授权域名搜索条件 + */ +export interface DomainParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/environment/index.ts b/src/api/system/environment/index.ts new file mode 100644 index 0000000..01d542b --- /dev/null +++ b/src/api/system/environment/index.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Environment, EnvironmentParam } from './model/index'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询应用 + */ +export async function pageEnvironment(params?: EnvironmentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/environment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listEnvironment(params?: EnvironmentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/environment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getEnvironment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updateEnvironment(data: Environment) { + const res = await request.put>( + SERVER_API_URL + '/system/environment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 排行榜 +export async function ranking(params?: EnvironmentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/ranking', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 搜索历史 +export async function searchHistory(params?: String) { + const res = await request.get>( + SERVER_API_URL + '/system/environment/search-history', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 制作插件 + */ +export async function createEnvironment(data: Environment) { + const res = await request.post>( + SERVER_API_URL + '/system/environment/environment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/environment/model/index.ts b/src/api/system/environment/model/index.ts new file mode 100644 index 0000000..daa916b --- /dev/null +++ b/src/api/system/environment/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Environment { + id?: number; + environmentName?: string; + environmentCode?: string; + brand?: string; + serverIp?: string; + modulesUrl?: string; + modulesApi?: string; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 插件搜索条件 + */ +export interface EnvironmentParam extends PageParam { + id: number; + environmentName: string; +} diff --git a/src/api/system/file/index.ts b/src/api/system/file/index.ts new file mode 100644 index 0000000..20d4334 --- /dev/null +++ b/src/api/system/file/index.ts @@ -0,0 +1,250 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { FileRecord, FileRecordParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; +import { FILE_SERVER } from '@/config/setting'; + +/** + * 上传文件 + */ +export async function uploadFileLocal(file: File, AppId: number) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + FILE_SERVER + '/api/file/upload', + formData, + { + headers: { AppId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传文件 + */ +export async function uploadFileLocalByCompany(file: File, CompanyId: number) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + FILE_SERVER + '/api/file/upload', + formData, + { + headers: { CompanyId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传文件 + */ +export async function uploadFile(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传 base64 文件 + * @param base64 文件数据 + * @param fileName 文件名称 + */ +export async function uploadBase64File(base64: string, fileName?: string) { + const formData = new FormData(); + formData.append('base64', base64); + if (fileName) { + formData.append('fileName', fileName); + } + const res = await request.post>( + SERVER_API_URL + '/file/upload/base64', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传证书 + */ +export async function uploadCert(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/file/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询文件上传记录 + */ +export async function pageFiles(params: FileRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/file/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文件 + */ +export async function getFile(id: number) { + const res = await request.get>( + SERVER_API_URL + '/file/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文件 + */ +export async function removeFile(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/file/remove/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文件 + */ +export async function removeFiles(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/file/remove/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文件 + */ +export async function addFiles(data: FileRecord) { + const res = await request.post>( + SERVER_API_URL + '/file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文件 + */ +export async function updateFiles(data: FileRecord) { + const res = await request.put>( + SERVER_API_URL + '/file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadOss(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadOssAvatar(file: File, fileName: string) { + const formData = new FormData(); + formData.append('file', file, fileName); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadOssByGroupId(file: File, GroupId: string) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData, + { + headers: { GroupId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 上传阿里云OSS + */ +export async function uploadOssByAppId(file: File, appId: string) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/oss/upload', + formData, + { + headers: { appId } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/file/model/index.ts b/src/api/system/file/model/index.ts new file mode 100644 index 0000000..5a20f8b --- /dev/null +++ b/src/api/system/file/model/index.ts @@ -0,0 +1,55 @@ +import { PageParam } from '@/api'; + +/** + * 文件上传记录 + */ +export interface FileRecord { + // id + id: number; + // 文件名称 + name?: string; + // 文件存储路径 + path?: string; + // 文件大小 + length?: number; + // 文件类型 + contentType?: string; + // 上传人id + createUserId?: number; + // 分组ID + groupId?: number; + groupName?: string; + // 上传时间 + createTime?: string; + // 描述 + comments?: string; + // 文件访问地址 + url?: string; + // 文件缩略图访问地址 + thumbnail?: string; + // 文件下载地址 + downloadUrl?: string; + // 上传人账号 + createUsername?: string; + // 上传人名称 + createNickname?: string; + // 是否编辑状态 + isUpdate?: boolean; + // 商品SKU索引 + index?: any; +} + +/** + * 文件上传记录查询参数 + */ +export interface FileRecordParam extends PageParam { + name?: string; + path?: string; + contentType?: string; + createNickname?: string; + groupId?: number; + groupName?: string; + count?: number; + page?: number; + keywords?: string; +} diff --git a/src/api/system/login-record/index.ts b/src/api/system/login-record/index.ts new file mode 100644 index 0000000..d96f0ca --- /dev/null +++ b/src/api/system/login-record/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { LoginRecord, LoginRecordParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询登录日志 + */ +export async function pageLoginRecords(params: LoginRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/login-record/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询登录日志列表 + */ +export async function listLoginRecords(params?: LoginRecordParam) { + const res = await request.get>( + SERVER_API_URL + '/system/login-record', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/login-record/model/index.ts b/src/api/system/login-record/model/index.ts new file mode 100644 index 0000000..0836eb5 --- /dev/null +++ b/src/api/system/login-record/model/index.ts @@ -0,0 +1,38 @@ +import { PageParam } from '@/api'; + +/** + * 登录日志 + */ +export interface LoginRecord { + // 登录日志id + id: number; + // 用户账号 + username: string; + // 操作系统 + os: string; + // 设备名称 + device: string; + // 浏览器类型 + browser: string; + // ip地址 + ip: string; + // 操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token + loginType: number; + // 备注 + comments: string; + // 操作时间 + createTime: string; + // 用户昵称 + nickname: string; +} + +/** + * 登录日志搜索条件 + */ +export interface LoginRecordParam extends PageParam { + username?: string; + nickname?: string; + createTimeStart?: string; + createTimeEnd?: string; + loginType?: number; +} diff --git a/src/api/system/menu/index.ts b/src/api/system/menu/index.ts new file mode 100644 index 0000000..a2ae069 --- /dev/null +++ b/src/api/system/menu/index.ts @@ -0,0 +1,172 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { Menu, MenuParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 查询菜单列表 + */ +export async function listMenus(params: MenuParam) { + const res = await request.get>( + SERVER_API_URL + '/system/menu', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加菜单 + */ +export async function addMenu(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改菜单 + */ +export async function updateMenu(data: Menu) { + const res = await request.put>( + SERVER_API_URL + '/system/menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除菜单 + */ +export async function removeMenu(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/menu/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除菜单 + */ +export async function removeBatchMenu(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/menu/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 按顶级目录批量删除菜单 + */ +export async function deleteParentMenu(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/menu/deleteParentMenu/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + + +/** + * 安装应用 + */ +export async function installApp(data: any) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/install', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 卸载应用 + */ +export async function uninstallApp(data: any) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/uninstall', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 菜单克隆 +export async function clone(data: any) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/clone', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 制作插件 + */ +export async function createPlug(data: Menu) { + const res = await request.post>( + SERVER_API_URL + '/system/menu/plug', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 安装插件 +export async function installPlug(id?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/menu/install/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入备份 + */ +export async function importSystemMenu(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/system/menu/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/menu/model/index.ts b/src/api/system/menu/model/index.ts new file mode 100644 index 0000000..4b52e95 --- /dev/null +++ b/src/api/system/menu/model/index.ts @@ -0,0 +1,67 @@ +/** + * 菜单 + */ +export interface Menu { + // 菜单id + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title: string; + // 菜单路由地址 + path: string; + // 菜单组件地址 + component: string; + // 模块API + modulesUrl?: string; + // 模块ID + modules?: string; + // 菜单类型, 0菜单, 1按钮 + menuType?: number; + // 排序号 + sortNumber?: number; + // 权限标识 + authority?: string; + // 菜单图标 + icon?: string; + // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) + hide?: number; + // 路由元信息 + meta?: string; + // 创建时间 + createTime?: string; + // 子菜单 + children?: Menu[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + disabled?: boolean; + // + appId?: number; + // + tenantId?: number; + tenantName?: string; + companyId?: number; + // 插件Api + plugUrl?: string; + label?: string; +} + +/** + * 菜单搜索参数 + */ +export interface MenuParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; + menuType?: number; + hide?: number; +} diff --git a/src/api/system/modules/index.ts b/src/api/system/modules/index.ts new file mode 100644 index 0000000..859a703 --- /dev/null +++ b/src/api/system/modules/index.ts @@ -0,0 +1,118 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Modules, ModulesParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询角色module + */ +export async function pageModules(params) { + const res = await request.get>>( + SERVER_API_URL + '/system/modules/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询角色列表 + */ +export async function listModules(params?: ModulesParam) { + const res = await request.get>( + SERVER_API_URL + '/system/modules', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加角色 + */ +export async function addModules(data: Modules) { + const res = await request.post>( + SERVER_API_URL + '/system/modules', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色 + */ +export async function updateModules(data: Modules) { + const res = await request.put>( + SERVER_API_URL + '/system/modules', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除角色 + */ +export async function removeModules(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/modules/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除角色 + */ +export async function removeModulesBath(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/modules/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listModulesMenus(modulesId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/modules-menu/' + modulesId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateModulesMenus(modulesId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/modules-menu/' + modulesId, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/modules/model/index.ts b/src/api/system/modules/model/index.ts new file mode 100644 index 0000000..a1cda9b --- /dev/null +++ b/src/api/system/modules/model/index.ts @@ -0,0 +1,22 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Modules { + id?: number; + modules?: string; + modulesUrl?: string; + sortNumber?: number; + comments?: string; + status?: number; +} + +/** + * 插件搜索条件 + */ +export interface ModulesParam extends PageParam { + id: number; + modules: string; + modulesUrl?: string; +} diff --git a/src/api/system/operation-record/index.ts b/src/api/system/operation-record/index.ts new file mode 100644 index 0000000..216e935 --- /dev/null +++ b/src/api/system/operation-record/index.ts @@ -0,0 +1,32 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OperationRecord, OperationRecordParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询操作日志 + */ +export async function pageOperationRecords(params: OperationRecordParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/operation-record/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询操作日志列表 + */ +export async function listOperationRecords(params?: OperationRecordParam) { + const res = await request.get>( + SERVER_API_URL + '/system/operation-record', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/operation-record/model/index.ts b/src/api/system/operation-record/model/index.ts new file mode 100644 index 0000000..fc1425e --- /dev/null +++ b/src/api/system/operation-record/model/index.ts @@ -0,0 +1,56 @@ +import { PageParam } from '@/api'; + +/** + * 操作日志 + */ +export interface OperationRecord { + // 操作日志id + id?: number; + // 用户id + userId?: number; + // 操作模块 + module: string; + // 操作功能 + description: string; + // 请求地址 + url: string; + // 请求方式 + requestMethod: string; + // 调用方法 + method: string; + // 请求参数 + params: string; + // 返回结果 + result: string; + // 异常信息 + error: string; + // 消耗时间, 单位毫秒 + spendTime: number; + // 操作系统 + os: string; + // 设备名称 + device: string; + // 浏览器类型 + browser: string; + // ip地址 + ip: string; + // 状态, 0成功, 1异常 + status: number; + // 操作时间 + createTime: string; + // 用户昵称 + nickname: string; + // 用户账号 + username: string; +} + +/** + * 操作日志搜索条件 + */ +export interface OperationRecordParam extends PageParam { + username?: string; + module?: string; + createTimeStart?: string; + createTimeEnd?: string; + status?: number; +} diff --git a/src/api/system/order/index.ts b/src/api/system/order/index.ts new file mode 100644 index 0000000..0b19d6b --- /dev/null +++ b/src/api/system/order/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Order, OrderParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询订单 + */ +export async function pageOrder(params: OrderParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单列表 + */ +export async function listOrder(params?: OrderParam) { + const res = await request.get>( + SERVER_API_URL + '/system/order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单 + */ +export async function addOrder(data: Order) { + const res = await request.post>( + SERVER_API_URL + '/system/order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单 + */ +export async function updateOrder(data: Order) { + const res = await request.put>( + SERVER_API_URL + '/system/order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单 + */ +export async function removeOrder(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单 + */ +export async function removeBatchOrder(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单 + */ +export async function getOrder(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/order/model/index.ts b/src/api/system/order/model/index.ts new file mode 100644 index 0000000..39647a7 --- /dev/null +++ b/src/api/system/order/model/index.ts @@ -0,0 +1,98 @@ +import type { PageParam } from '@/api'; + +/** + * 订单 + */ +export interface Order { + // 订单号 + orderId?: number; + // 订单编号 + orderNo?: string; + // 订单类型,0产品 1插件 + type?: number; + // 下单渠道,0网站 1小程序 2其他 + channel?: number; + // 微信支付订单号 + transactionId?: string; + // 微信退款订单号 + refundOrder?: string; + // 使用的优惠券id + couponId?: number; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 订单总额 + totalPrice?: string; + // 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格 + reducePrice?: string; + // 实际付款 + payPrice?: string; + // 用于统计 + price?: string; + // 价钱,用于积分赠送 + money?: string; + // 退款金额 + refundMoney?: string; + // 购买数量 + totalNum?: number; + // 0余额支付, 1微信支付,102微信Native,2会员卡支付,3支付宝,4现金,5POS机 + payType?: number; + // 0未付款,1已付款 + payStatus?: number; + // 0未完成,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡 + couponType?: number; + // 优惠说明 + couponDesc?: string; + // 二维码地址,保存订单号,支付成功后才生成 + qrcode?: string; + // 预约详情开始时间数组 + startTime?: string; + // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 + isInvoice?: string; + // 发票流水号 + invoiceNo?: string; + // 支付时间 + payTime?: string; + // 退款时间 + refundTime?: string; + // 申请退款时间 + refundApplyTime?: string; + // 过期时间 + expirationTime?: string; + // 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单 + checkBill?: number; + // 订单是否已结算(0未结算 1已结算) + isSettled?: number; + // 系统版本号 0当前版本 value=其他版本 + version?: number; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; +} + +/** + * 订单搜索条件 + */ +export interface OrderParam extends PageParam { + orderId?: number; + type?: number; + payStatus?: number; + payType?: number; + isInvoice?: string; + week?: string; + keywords?: string; +} diff --git a/src/api/system/orderGoods/index.ts b/src/api/system/orderGoods/index.ts new file mode 100644 index 0000000..ce37160 --- /dev/null +++ b/src/api/system/orderGoods/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { OrderGoods, OrderGoodsParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询订单商品 + */ +export async function pageOrderGoods(params: OrderGoodsParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/order-goods/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询订单商品列表 + */ +export async function listOrderGoods(params?: OrderGoodsParam) { + const res = await request.get>( + SERVER_API_URL + '/system/order-goods', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加订单商品 + */ +export async function addOrderGoods(data: OrderGoods) { + const res = await request.post>( + SERVER_API_URL + '/system/order-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改订单商品 + */ +export async function updateOrderGoods(data: OrderGoods) { + const res = await request.put>( + SERVER_API_URL + '/system/order-goods', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除订单商品 + */ +export async function removeOrderGoods(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/order-goods/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除订单商品 + */ +export async function removeBatchOrderGoods(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/order-goods/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询订单商品 + */ +export async function getOrderGoods(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/order-goods/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/orderGoods/model/index.ts b/src/api/system/orderGoods/model/index.ts new file mode 100644 index 0000000..ab180bf --- /dev/null +++ b/src/api/system/orderGoods/model/index.ts @@ -0,0 +1,57 @@ +import type { PageParam } from '@/api'; + +/** + * 订单商品 + */ +export interface OrderGoods { + // 订单号 + id?: number; + // 订单类型,0商城 1应用插件 + type?: number; + // 项目ID + itemId?: number; + // 实际付款 + payPrice?: string; + // 购买数量 + totalNum?: number; + // 0未付款,1已付款 + payStatus?: string; + // 0未完成,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款 + orderStatus?: number; + // 预约详情开始时间数组 + startTime?: string; + // 是否已开具发票:0未开发票,1已开发票,2不能开具发票 + isInvoice?: string; + // 发票流水号 + invoiceNo?: string; + // 支付时间 + payTime?: string; + // 过期时间 + expirationTime?: string; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; +} + +/** + * 订单商品搜索条件 + */ +export interface OrderGoodsParam extends PageParam { + id?: number; + itemId?: number; + payStatus?: boolean; + userId?: number; + orderStatus?: number; + keywords?: string; +} diff --git a/src/api/system/organization/index.ts b/src/api/system/organization/index.ts new file mode 100644 index 0000000..3557b1a --- /dev/null +++ b/src/api/system/organization/index.ts @@ -0,0 +1,73 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Organization, OrganizationParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询机构 + */ +export async function pageOrganizations(params: OrganizationParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/organization/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询机构列表 + */ +export async function listOrganizations(params?: OrganizationParam) { + const res = await request.get>( + SERVER_API_URL + '/system/organization', + { params } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加机构 + */ +export async function addOrganization(data: Organization) { + const res = await request.post>( + SERVER_API_URL + '/system/organization', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改机构 + */ +export async function updateOrganization(data: Organization) { + const res = await request.put>( + SERVER_API_URL + '/system/organization', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除机构 + */ +export async function removeOrganization(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/organization/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/organization/model/index.ts b/src/api/system/organization/model/index.ts new file mode 100644 index 0000000..1f9deaa --- /dev/null +++ b/src/api/system/organization/model/index.ts @@ -0,0 +1,42 @@ +import { PageParam } from '@/api'; + +/** + * 机构 + */ +export interface Organization { + // 机构id + organizationId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 机构名称 + organizationName?: string; + // 机构全称 + organizationFullName?: string; + // 机构代码 + organizationCode?: string; + // 机构类型(字典) + organizationType?: string; + // 排序号 + sortNumber?: number; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 机构类型名称 + organizationTypeName?: string; + // + key?: number; + // + value?: number; + // + title?: string; + children?: Organization[]; +} + +/** + * 机构搜索条件 + */ +export interface OrganizationParam extends PageParam { + organizationName?: string; + parentId?: number; +} diff --git a/src/api/system/parameter/index.ts b/src/api/system/parameter/index.ts new file mode 100644 index 0000000..9b8b72d --- /dev/null +++ b/src/api/system/parameter/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Parameter, ParameterParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询应用参数 + */ +export async function pageParameter(params: ParameterParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/parameter/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用参数列表 + */ +export async function listParameter(params?: ParameterParam) { + const res = await request.get>( + SERVER_API_URL + '/system/parameter', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用参数 + */ +export async function addParameter(data: Parameter) { + const res = await request.post>( + SERVER_API_URL + '/system/parameter', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用参数 + */ +export async function updateParameter(data: Parameter) { + const res = await request.put>( + SERVER_API_URL + '/system/parameter', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用参数 + */ +export async function removeParameter(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/parameter/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用参数 + */ +export async function removeBatchParameter(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/parameter/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用参数 + */ +export async function getParameter(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/parameter/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/parameter/model/index.ts b/src/api/system/parameter/model/index.ts new file mode 100644 index 0000000..ae3d159 --- /dev/null +++ b/src/api/system/parameter/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 应用参数 + */ +export interface Parameter { + // 自增ID + id?: number; + // 参数名称 + name?: string; + // 参数内容 + value?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用参数搜索条件 + */ +export interface ParameterParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/payment/index.ts b/src/api/system/payment/index.ts new file mode 100644 index 0000000..20b218c --- /dev/null +++ b/src/api/system/payment/index.ts @@ -0,0 +1,121 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Payment, PaymentParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; +import type { Order } from '@/api/shop/order/model'; + +/** + * 分页查询支付方式 + */ +export async function pagePayment(params: PaymentParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/payment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询支付方式列表 + */ +export async function listPayment(params?: PaymentParam) { + const res = await request.get>( + SERVER_API_URL + '/system/payment', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加支付方式 + */ +export async function addPayment(data: Payment) { + const res = await request.post>( + SERVER_API_URL + '/system/payment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改支付方式 + */ +export async function updatePayment(data: Payment) { + const res = await request.put>( + SERVER_API_URL + '/system/payment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除支付方式 + */ +export async function removePayment(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/payment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除支付方式 + */ +export async function removeBatchPayment(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/payment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询支付方式 + */ +export async function getPayment(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/payment/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 生成支付二维码(微信native) + */ +export async function getNativeCode(data: Order) { + const res = await request.post>( + SERVER_API_URL + '/system/wx-native-pay/codeUrl', + data + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/payment/model/index.ts b/src/api/system/payment/model/index.ts new file mode 100644 index 0000000..07c4ee4 --- /dev/null +++ b/src/api/system/payment/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 支付方式 + */ +export interface Payment { + // ID + id?: number; + // 支付方式 + name?: string; + // 支付类型 + type?: number; + // 标识 + code?: string; + // 支付图标 + image?: string; + // 微信商户号类型 1普通商户2子商户 + wechatType?: number; + // 应用ID + appId?: string; + // 商户号 + mchId?: string; + // 设置APIv3密钥 + apiKey?: string; + // 证书文件 (CERT) + apiclientCert?: string; + // 证书文件 (KEY) + apiclientKey?: string; + // 商户证书序列号 + merchantSerialNumber?: string; + // 支付宝公钥 + pubKey?: string; + // 支付宝公钥ID + pubKeyId?: string; + // 支付结果通过 + notifyUrl?: string; + // 备注 + comments?: string; + // 文章排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0启用, 1禁用 + status?: boolean; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 支付方式搜索条件 + */ +export interface PaymentParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/plug/index.ts b/src/api/system/plug/index.ts new file mode 100644 index 0000000..bd27986 --- /dev/null +++ b/src/api/system/plug/index.ts @@ -0,0 +1,125 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Plug, PlugParam } from './model/index'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询应用 + */ +export async function pagePlug(params: PlugParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/plug/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用列表 + */ +export async function listPlug(params?: PlugParam) { + const res = await request.get>( + SERVER_API_URL + '/system/plug', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用 + */ +export async function getPlug(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用 + */ +export async function updatePlug(data: Plug) { + const res = await request.put>( + SERVER_API_URL + '/system/plug', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 排行榜 +export async function ranking(params?: PlugParam) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/ranking', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +// 搜索历史 +export async function searchHistory(params?: String) { + const res = await request.get>( + SERVER_API_URL + '/system/plug/search-history', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 制作插件 + */ +export async function createPlug(data: Plug) { + const res = await request.post>( + SERVER_API_URL + '/system/plug/plug', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/plug/model/index.ts b/src/api/system/plug/model/index.ts new file mode 100644 index 0000000..e67242f --- /dev/null +++ b/src/api/system/plug/model/index.ts @@ -0,0 +1,67 @@ +import type { PageParam } from '@/api'; + +/** + * 插件 + */ +export interface Plug { + plugId?: number; + plugName?: string; + plugCode?: string; + // 菜单id + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址 + component?: string; + // 菜单类型, 0菜单, 1按钮 + menuType?: number; + // 排序号 + sortNumber?: number; + // 权限标识 + authority?: string; + // 菜单图标 + icon?: string; + // 是否隐藏, 0否,1是(仅注册路由不显示左侧菜单) + hide?: number; + // 路由元信息 + meta?: string; + score?: number; + price?: number; + // 创建时间 + createTime?: string; + // 子菜单 + children?: Plug[]; + // 权限树回显选中状态, 0未选中, 1选中 + checked?: boolean; + shortName?: string; + comments?: string; + content?: string; + // + key?: number; + // + value?: number; + // + parentIds?: number[]; + // + openType?: number; + // + userId?: number; + // + appId?: number; + status?: number; + tenantId?: number; +} + +/** + * 插件搜索条件 + */ +export interface PlugParam extends PageParam { + title?: string; + path?: string; + authority?: string; + parentId?: number; +} diff --git a/src/api/system/role/index.ts b/src/api/system/role/index.ts new file mode 100644 index 0000000..352e352 --- /dev/null +++ b/src/api/system/role/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Role, RoleParam } from './model'; +import type { Menu } from '../menu/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询角色 + */ +export async function pageRoles(params: RoleParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/role/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询角色列表 + */ +export async function listRoles(params?: RoleParam) { + const res = await request.get>( + SERVER_API_URL + '/system/role', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加角色 + */ +export async function addRole(data: Role) { + const res = await request.post>( + SERVER_API_URL + '/system/role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色 + */ +export async function updateRole(data: Role) { + const res = await request.put>( + SERVER_API_URL + '/system/role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除角色 + */ +export async function removeRole(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/role/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除角色 + */ +export async function removeRoles(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/role/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listRoleMenus(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/role-menu/' + roleId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateRoleMenus(roleId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/role-menu/' + roleId, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/role/model/index.ts b/src/api/system/role/model/index.ts new file mode 100644 index 0000000..d4c9a50 --- /dev/null +++ b/src/api/system/role/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 角色 + */ +export interface Role { + // 角色id + roleId?: number; + // 角色标识 + roleCode?: string; + // 角色名称 + roleName?: string; + sortNumber?: any; + // 备注 + comments?: any; + // 创建时间 + createTime?: string; +} + +/** + * 角色搜索条件 + */ +export interface RoleParam extends PageParam { + roleName?: string; + roleCode?: string; + comments?: string; +} diff --git a/src/api/system/setting/index.ts b/src/api/system/setting/index.ts new file mode 100644 index 0000000..e7ca3c0 --- /dev/null +++ b/src/api/system/setting/index.ts @@ -0,0 +1,153 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Setting, SettingParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询设置 + */ +export async function pageSetting(params: SettingParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/setting/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设置列表 + */ +export async function listSetting(params?: SettingParam) { + const res = await request.get>( + SERVER_API_URL + '/system/setting', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getSetting(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据key查询 + */ +export async function getSettingByKey(key: string) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/getByKey/' + key + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设置 + */ +export async function addSetting(data: Setting) { + const res = await request.post>( + SERVER_API_URL + '/system/setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设置 + */ +export async function updateSetting(data: Setting) { + const res = await request.put>( + SERVER_API_URL + '/system/setting', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据Key修改设置 + */ +export async function updateSettingByKey(data: Setting) { + const res = await request.put>( + SERVER_API_URL + '/system/setting/updateByKey', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设置 + */ +export async function removeSetting(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/setting/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设置 + */ +export async function removeBatchSetting(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/setting/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/setting/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/setting/model/index.ts b/src/api/system/setting/model/index.ts new file mode 100644 index 0000000..c0bee23 --- /dev/null +++ b/src/api/system/setting/model/index.ts @@ -0,0 +1,127 @@ +import type { PageParam } from '@/api'; + +/** + * 系统设置 + */ +export interface Setting { + // 公共字段 + settingId?: number; + settingKey?: string; + content?: string; + comments?: string; + tenantName?: string; + tenantId?: string | null; + + // 设置信息 + siteName?: string; + fullName?: string; + tenantCode?: string; + domain?: string; + remarks?: string; + icp?: string; + copyright?: string; + keyword?: string; + phone?: string; + company?: string; + address?: string; + email?: string; + support?: string; + logo?: string; + + // 注册设置 + roleId?: number; + openWxAuth?: number; + openWxBindPhone?: number; + openWxofficialAuth?: number; + openWxofficialBindPhone?: number; + tokenExpireTime?: number; + + // 短信设置 + type?: number; + accessKeyId?: string; + accessKeySecret?: string; + sign?: string; + isNoticeUser?: string; + userTemplateId?: string; + merchantTemplateId?: string; + isNoticeMerchant?: string; + merchantMobiles?: string; + + // 支付设置 + payMethod?: string; + signMode?: string; + alipayAppId?: string; + signType?: string; + appCertPublicKey?: string; + alipayCertPublicKey?: string; + alipayRootCert?: string; + alipayPublicKey?: string; + privateKey?: string; + decryptKey?: string; + balanceIsEnable?: boolean; + wechatIsEnable?: boolean; + alipayIsEnable?: boolean; + wechatType?: string; + mchId?: number; + wechatAppId?: string; + wechatApiKey?: string; + apiclientCert?: string; + apiclientKey?: string; + spAppId?: string; + spMchId?: string; + spApiKey?: string; + spSubAppId?: string; + spSubMchId?: string; + spApiclientCert?: string; + spApiclientKey?: string; + merchantSerialNumber?: string; + + // 微信公众号/小程序设置 + appId?: string; + appSecret?: string; + wxOfficialAccount?: string; + originalId?: string; + + // 企业微信参数 + suiteId?: string; + secret?: string; + corpId?: string; + token?: string; + encodingAESKey?: string; + + // 打印设置 + isOpenPrinter?: string; + printerType?: string; + printerStatus?: string; + printerUser?: string; + printerUserKey?: string; + printerCode?: string; + printerKey?: string; + printerTimes?: string; + + // chatGPT + chatKey?: string; + + // 清除缓存 + clearCache?: string; + + // 主题 + theme?: string; + + // 云存储 + uploadMethod?: any; + fileUrl?: string; + bucketName?: string; + bucketEndpoint?: string; + bucketDomain?: string; + // accessKeyId?: string; 引用上面的 + // accessKeySecret?: string; 引用上面的 +} + +/** + * 系统设置搜索条件 + */ +export interface SettingParam extends PageParam { + settingId?: number; + settingKey?: string; +} diff --git a/src/api/system/tenant/index.ts b/src/api/system/tenant/index.ts new file mode 100644 index 0000000..f09388d --- /dev/null +++ b/src/api/system/tenant/index.ts @@ -0,0 +1,191 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Tenant, TenantParam } from './model'; +import { Menu } from '@/api/system/menu/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询租户 + */ +export async function pageTenant(params: TenantParam) { + // 租户列表查询需要传一个key + // params.tenantCode = 'ZAcxbdmDQFwUKC3e'; + const res = await request.get>>( + SERVER_API_URL + '/system/tenant/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询租户资料 + */ +export async function profile(params?: TenantParam) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/profile', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询租户列表 + */ +export async function listTenant(params?: TenantParam) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getTenant(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加租户 + */ +export async function addTenant(data: Tenant) { + const res = await request.post>( + SERVER_API_URL + '/system/tenant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改租户 + */ +export async function updateTenant(data: Tenant) { + const res = await request.put>( + SERVER_API_URL + '/system/tenant', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除租户 + */ +export async function removeTenant(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/tenant/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除租户 + */ +export async function removeBatchTenant(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/tenant/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 重置用户密码 + */ +export async function updateTenantPassword( + tenantId?: number, + password = 'gxwebsoft.com' +) { + const res = await request.put>( + SERVER_API_URL + '/system/tenant/password', + { + tenantId, + password + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 租户初始化 + */ +export async function initialization(roleId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/tenant/role-menu/' + roleId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据code查询租户 + */ +export async function getByCode(code: string) { + const res = await request.get( + SERVER_API_URL + '/system/tenant/getByCode/' + code + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/tenant/model/index.ts b/src/api/system/tenant/model/index.ts new file mode 100644 index 0000000..de007b2 --- /dev/null +++ b/src/api/system/tenant/model/index.ts @@ -0,0 +1,46 @@ +import type { PageParam } from '@/api'; +import { Company } from '@/api/system/company/model'; + +/** + * 租户 + */ +export interface Tenant { + // 租户id + tenantId?: number; + // 租户名称 + tenantName?: string; + // 应用ID + appId?: string; + // 应用秘钥 + appSecret?: string; + // logo + logo?: string; + // 企业名称 + companyName?: string; + // 关联客户ID + companyId?: string; + // 备注 + comments?: string; + // 创建时间 + createTime?: string; + // 状态 + status?: number; + // + password?: string; + // 企业信息 + company?: Company | null; +} + +/** + * 租户搜索条件 + */ +export interface TenantParam extends PageParam { + tenantName?: string; + appId?: string; + companyId?: number; + companyName?: string; + version?: string; + province?: string; + city?: string; + tenantCode?: string; +} diff --git a/src/api/system/url/index.ts b/src/api/system/url/index.ts new file mode 100644 index 0000000..054c5d3 --- /dev/null +++ b/src/api/system/url/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Url, UrlParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询应用域名 + */ +export async function pageUrl(params: UrlParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/url/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询应用域名列表 + */ +export async function listUrl(params?: UrlParam) { + const res = await request.get>( + SERVER_API_URL + '/system/url', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加应用域名 + */ +export async function addUrl(data: Url) { + const res = await request.post>( + SERVER_API_URL + '/system/url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改应用域名 + */ +export async function updateUrl(data: Url) { + const res = await request.put>( + SERVER_API_URL + '/system/url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除应用域名 + */ +export async function removeUrl(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/url/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除应用域名 + */ +export async function removeBatchUrl(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/url/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询应用域名 + */ +export async function getUrl(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/url/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/url/model/index.ts b/src/api/system/url/model/index.ts new file mode 100644 index 0000000..e5f74d6 --- /dev/null +++ b/src/api/system/url/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 应用域名 + */ +export interface Url { + // 自增ID + id?: number; + // 域名类型 + type?: string; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 二维码 + qrcode?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 应用域名搜索条件 + */ +export interface UrlParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/user-collection/index.ts b/src/api/system/user-collection/index.ts new file mode 100644 index 0000000..85786a0 --- /dev/null +++ b/src/api/system/user-collection/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserCollection, UserCollectionParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询我的收藏 + */ +export async function pageUserCollection(params: UserCollectionParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-collection/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询我的收藏列表 + */ +export async function listUserCollection(params?: UserCollectionParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-collection', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加我的收藏 + */ +export async function addUserCollection(data: UserCollection) { + const res = await request.post>( + SERVER_API_URL + '/system/user-collection', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改我的收藏 + */ +export async function updateUserCollection(data: UserCollection) { + const res = await request.put>( + SERVER_API_URL + '/system/user-collection', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除我的收藏 + */ +export async function removeUserCollection(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-collection/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除我的收藏 + */ +export async function removeBatchUserCollection(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-collection/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询我的收藏 + */ +export async function getUserCollection(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user-collection/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user-collection/model/index.ts b/src/api/system/user-collection/model/index.ts new file mode 100644 index 0000000..ebd88c9 --- /dev/null +++ b/src/api/system/user-collection/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 我的收藏 + */ +export interface UserCollection { + // 主键ID + id?: number; + // 租户ID + tid?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; +} + +/** + * 我的收藏搜索条件 + */ +export interface UserCollectionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/user-file/index.ts b/src/api/system/user-file/index.ts new file mode 100644 index 0000000..67a9c22 --- /dev/null +++ b/src/api/system/user-file/index.ts @@ -0,0 +1,89 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserFile, UserFileParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询用户文件 + */ +export async function pageUserFiles(params: UserFileParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-file/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户文件列表 + */ +export async function listUserFiles(params: UserFileParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-file', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户文件 + */ +export async function addUserFile(data: UserFile) { + const res = await request.post>( + SERVER_API_URL + '/system/user-file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户文件 + */ +export async function updateUserFile(data: UserFile) { + const res = await request.put>( + SERVER_API_URL + '/system/user-file', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户文件 + */ +export async function removeUserFile(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-file/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户文件 + */ +export async function removeUserFiles(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-file/batch', + { data } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user-file/model/index.ts b/src/api/system/user-file/model/index.ts new file mode 100644 index 0000000..ca51256 --- /dev/null +++ b/src/api/system/user-file/model/index.ts @@ -0,0 +1,39 @@ +import { PageParam } from '@/api'; + +/** + * 用户文件 + */ +export interface UserFile { + // id + id?: number; + // 用户id + userId?: number; + // 文件名称 + name?: string; + // 是否是文件夹, 0否, 1是 + isDirectory?: number; + // 上级id + parentId?: number; + // 文件存储路径 + path?: string; + // 文件大小 + length?: number; + // 文件类型 + contentType?: string; + // 上传时间 + createTime?: string; + // 文件访问地址 + url?: string; + // 文件缩略图访问地址 + thumbnail?: string; + // 文件下载地址 + downloadUrl?: string; +} + +/** + * 用户文件查询参数 + */ +export interface UserFileParam extends PageParam { + name?: string; + parentId?: number; +} diff --git a/src/api/system/user-grade/index.ts b/src/api/system/user-grade/index.ts new file mode 100644 index 0000000..c8df87c --- /dev/null +++ b/src/api/system/user-grade/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Grade, GradeParam } from '@/api/user/grade/model'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 分页查询仓库 + */ +export async function pageGrade(params: GradeParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-grade/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询仓库列表 + */ +export async function listGrade(params?: GradeParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-grade', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加仓库 + */ +export async function addGrade(data: Grade) { + const res = await request.post>( + SERVER_API_URL + '/system/user-grade', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改仓库 + */ +export async function updateGrade(data: Grade) { + const res = await request.put>( + SERVER_API_URL + '/system/user-grade', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定仓库 + */ +export async function bindGrade(data: Grade) { + const res = await request.put>( + SERVER_API_URL + '/system/user-grade/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加设备 + */ +export async function addBatchGrade(data: Grade[]) { + const res = await request.post>( + SERVER_API_URL + '/system/user-grade/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除仓库 + */ +export async function removeGrade(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-grade/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchGrade(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-grade/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user-grade/model/index.ts b/src/api/system/user-grade/model/index.ts new file mode 100644 index 0000000..c4d9cc4 --- /dev/null +++ b/src/api/system/user-grade/model/index.ts @@ -0,0 +1,28 @@ +import type { PageParam } from '@/api'; + +export interface Grade { + gradeId?: number; + name?: string; + weight?: string; + upgrade?: string; + equity?: string; + commission?: string; + status?: number; + comments?: string; + sortNumber?: number; + userId?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface GradeParam extends PageParam { + gradeId?: number; + name?: string; + status?: number; + keywords?: string; +} diff --git a/src/api/system/user-group/index.ts b/src/api/system/user-group/index.ts new file mode 100644 index 0000000..6e2aca9 --- /dev/null +++ b/src/api/system/user-group/index.ts @@ -0,0 +1,120 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Group, GroupParam } from '@/api/system/user-group/model'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 分页查询仓库 + */ +export async function pageGroup(params: GroupParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-group/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询仓库列表 + */ +export async function listGroup(params?: GroupParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-group', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加仓库 + */ +export async function addGroup(data: Group) { + const res = await request.post>( + SERVER_API_URL + '/system/user-group', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改仓库 + */ +export async function updateGroup(data: Group) { + const res = await request.put>( + SERVER_API_URL + '/system/user-group', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定仓库 + */ +export async function bindGroup(data: Group) { + const res = await request.put>( + SERVER_API_URL + '/system/user-group/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加设备 + */ +export async function addBatchGroup(data: Group[]) { + const res = await request.post>( + SERVER_API_URL + '/system/user-group/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除仓库 + */ +export async function removeGroup(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-group/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchGroup(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-group/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/user-group/model/index.ts b/src/api/system/user-group/model/index.ts new file mode 100644 index 0000000..dc858cb --- /dev/null +++ b/src/api/system/user-group/model/index.ts @@ -0,0 +1,23 @@ +import type { PageParam } from '@/api'; + +export interface Group { + groupId?: number; + name?: string; + status?: number; + comments?: any; + sortNumber?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface GroupParam extends PageParam { + groupId?: number; + name?: string; + status?: number; + keywords?: string; +} diff --git a/src/api/system/user/index.ts b/src/api/system/user/index.ts new file mode 100644 index 0000000..d466cd4 --- /dev/null +++ b/src/api/system/user/index.ts @@ -0,0 +1,314 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { User, UserParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询用户 + */ +export async function pageUsers(params: UserParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户列表 + */ +export async function listUsers(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户列表 + */ +export async function getStaffs(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户列表 + */ +export async function getCompanyList(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户 + */ +export async function getUser(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户 + */ +export async function addUser(data: User) { + const res = await request.post>( + SERVER_API_URL + '/system/user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加管理员用户 + * @param data + */ +export async function addAdminUser(data: User) { + const res = await request.post>( + SERVER_API_URL + '/system/user/addAdminUser', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户 + */ +export async function updateUser(data: User) { + const res = await request.put>( + SERVER_API_URL + '/system/user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户 + */ +export async function removeUser(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户 + */ +export async function removeUsers(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateUserStatus(userId?: number, status?: number) { + const res = await request.put>( + SERVER_API_URL + '/system/user/status', + { + userId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改推荐状态 + */ +export async function updateUserRecommend(form) { + const res = await request.put>( + SERVER_API_URL + '/system/user/recommend', + form + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 重置用户密码 + */ +export async function updateUserPassword(userId?: number, password = '123456') { + const res = await request.put>( + SERVER_API_URL + '/system/user/password', + { + userId, + password + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入用户 + */ +export async function importUsers(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/system/user/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导入经销商 + */ +export async function importShopAdmins(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + SERVER_API_URL + '/shop/admin/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查用户是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/user/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 统计用户余额 + */ +export async function countUserBalance(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user/countUserBalance', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 选择管理员账号登录 + * @param params + */ +export async function listAdminsByPhoneAll(params?: UserParam){ + const res = await request.get>( + SERVER_API_URL + '/system/user/listAdminsByPhoneAll', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 导出用户列表 + */ +export async function exportUsers(params?: UserParam) { + const res = await request.get( + SERVER_API_URL + '/system/user/export', + { + params, + responseType: 'blob' + } + ); + return res.data; +} +/** + * 查询全部租户用户 + * @param params + */ +export async function pageUserAll(params?: UserParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user/pageAll', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)) +} diff --git a/src/api/system/user/model/count.ts b/src/api/system/user/model/count.ts new file mode 100644 index 0000000..82442c2 --- /dev/null +++ b/src/api/system/user/model/count.ts @@ -0,0 +1,15 @@ +import type { PageParam } from '@/api'; + +/** + * 用户 + */ +export interface Count { + balance?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + organizationId?: number; +} diff --git a/src/api/system/user/model/index.ts b/src/api/system/user/model/index.ts new file mode 100644 index 0000000..be3b50d --- /dev/null +++ b/src/api/system/user/model/index.ts @@ -0,0 +1,161 @@ +import type { PageParam } from '@/api'; +import type { Role } from '../../role/model'; +import type { Menu } from '../../menu/model'; +import { Company } from '@/api/system/company/model'; + +/** + * 用户 + */ +export interface User { + // 账号类型 + type?: number; + // 用户id + userId?: number; + // 账号 + username?: string; + // 密码 + password?: string; + password2?: string; + // 昵称 + nickname?: string; + openId?: string; + officeOpenid?: string; + sessionKey?: string; + // 别名 + alias?: string; + // 头像 + avatar?: string; + // 性别(字典) + sex?: string; + // 手机号 + phone?: string; + // 脱敏手机号 + mobile?: string; + // 邮箱 + email?: string; + // 出生日期 + birthday?: string; + age?: number; + // 详细地址 + address?: string; + longitude?: string; + latitude?: string; + // 会员等级ID + gradeId?: number; + // 个人简介 + introduction?: string; + // 机构id + organizationId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 性别名称 + sexName?: string; + province?: string; + city?: string; + region?: string; + // 机构名称 + organizationName?: string; + // 角色列表 + roles?: Role[]; + roleCode?: string; + roleId?: number; + roleName?: string; + // 权限列表 + authorities?: Menu[]; + payTime?: string; + deliveryTime?: string; + receiptTime?: string; + merchantId?: number; + // 可管理的商户 + merchants?: string; + // 创建时间 + createTime?: string; + // 租户ID + tenantId?: number; + // 租户名称 + tenantName?: string; + logo?: string; + companyId?: number; + companyInfo?: Company; + planId?: number; + code?: string; + smsCode?: string; + // + remember?: boolean; + balance?: number; + points?: number; + payMoney?: number; + setting?: string; + realName?: string; + companyName?: string; + merchantName?: string; + merchantAvatar?: string; + gradeName?: string; + idCard?: string; + comments?: string; + recommend?: number; + system?: any; + // 头像地址 + avatarUrl?: string; + // 1男,2女 + gender?: string; + // 国家 + country?: string; + // 邮箱是否验证, 0否, 1是 + emailVerified?: number; + // 注册时间 + addTime?: number; + // + idcard?: string; + // + truename?: string; + // 是否管理员:1是;2否 + isAdmin?: boolean; + // 客户端ID + clientId?: string; + // 注册来源客户端 (APP、H5、小程序等) + platform?: string; + // 排序 + sortNumber?: number; + isSuperAdmin?: boolean; + deleted?: number; + // 克隆的模板ID + templateId?: number; + // 是否安装 + installed?: boolean; + label?: string; + value?: number; + // 关注数量 + followers?: number; + // 推荐人ID + dealerId?: number; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + keywords?: any; + type?: any; + userId?: number; + username?: string; + nickname?: string; + realName?: string; + gradeId?: unknown; + gradeName?: string; + companyName?: string; + city?: string; + cityMate?: string; + sex?: string; + phone?: string; + status?: number; + organizationId?: number; + parentId?: number; + sexName?: string; + roleId?: string; + isAdmin?: number; + isSuperAdmin?: boolean; + showProfile?: boolean; + isStaff?: boolean; + templateId?: number; +} diff --git a/src/api/system/userOauth/index.ts b/src/api/system/userOauth/index.ts new file mode 100644 index 0000000..0818140 --- /dev/null +++ b/src/api/system/userOauth/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {UserOauth, UserOauthParam} from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询第三方用户信息表 + */ +export async function pageUserOauth(params: UserOauthParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-oauth/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询第三方用户信息表列表 + */ +export async function listUserOauth(params?: UserOauthParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-oauth', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加第三方用户信息表 + */ +export async function addUserOauth(data: UserOauth) { + const res = await request.post>( + SERVER_API_URL + '/system/user-oauth', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改第三方用户信息表 + */ +export async function updateUserOauth(data: UserOauth) { + const res = await request.put>( + SERVER_API_URL + '/system/user-oauth', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除第三方用户信息表 + */ +export async function removeUserOauth(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-oauth/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除第三方用户信息表 + */ +export async function removeBatchUserOauth(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-oauth/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询第三方用户信息表 + */ +export async function getUserOauth(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user-oauth/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/userOauth/model/index.ts b/src/api/system/userOauth/model/index.ts new file mode 100644 index 0000000..4540cc1 --- /dev/null +++ b/src/api/system/userOauth/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 第三方用户信息表 + */ +export interface UserOauth { + // 主键ID + id?: number; + // 用户ID + userId?: number; + // 第三方登陆类型(MP-WEIXIN) + oauthType?: string; + // 第三方用户唯一标识 (uid openid) + oauthId?: string; + // 微信unionID + unionid?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 第三方用户信息表搜索条件 + */ +export interface UserOauthParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/system/userRole/index.ts b/src/api/system/userRole/index.ts new file mode 100644 index 0000000..a78ae49 --- /dev/null +++ b/src/api/system/userRole/index.ts @@ -0,0 +1,48 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { UserRole, UserRoleParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 查询用户列表 + */ +export async function listUserRole(params?: UserRoleParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-role', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户角色 + */ +export async function updateUserRole(data: UserRole) { + const res = await request.put>( + SERVER_API_URL + '/system/user-role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户角色 + */ +export async function addUserRole(data: UserRole) { + const res = await request.post>( + SERVER_API_URL + '/system/user-role', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/userRole/model/index.ts b/src/api/system/userRole/model/index.ts new file mode 100644 index 0000000..6a04ca3 --- /dev/null +++ b/src/api/system/userRole/model/index.ts @@ -0,0 +1,30 @@ +import type { PageParam } from '@/api'; + +/** + * 用户 + */ +export interface UserRole { + id?: number; + // 用户id + userId?: number; + // 角色ID + roleId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 角色名称 + roleName?: string; + // 租户ID + tenantId?: number; +} + +/** + * 用户搜索条件 + */ +export interface UserRoleParam extends PageParam { + keywords?: any; + roleId?: number; + userId?: number; + userIds?: any; +} diff --git a/src/api/system/userVerify/index.ts b/src/api/system/userVerify/index.ts new file mode 100644 index 0000000..4f5e0d2 --- /dev/null +++ b/src/api/system/userVerify/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserVerify, UserVerifyParam } from './model'; +import {SERVER_API_URL} from '@/config/setting'; + +/** + * 分页查询实名认证 + */ +export async function pageUserVerify(params: UserVerifyParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-verify/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询实名认证列表 + */ +export async function listUserVerify(params?: UserVerifyParam) { + const res = await request.get>( + SERVER_API_URL + '/system/user-verify', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加实名认证 + */ +export async function addUserVerify(data: UserVerify) { + const res = await request.post>( + SERVER_API_URL + '/system/user-verify', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改实名认证 + */ +export async function updateUserVerify(data: UserVerify) { + const res = await request.put>( + SERVER_API_URL + '/system/user-verify', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除实名认证 + */ +export async function removeUserVerify(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-verify/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除实名认证 + */ +export async function removeBatchUserVerify(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-verify/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询实名认证 + */ +export async function getUserVerify(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/user-verify/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/userVerify/model/index.ts b/src/api/system/userVerify/model/index.ts new file mode 100644 index 0000000..c13c863 --- /dev/null +++ b/src/api/system/userVerify/model/index.ts @@ -0,0 +1,54 @@ +import type { PageParam } from '@/api'; + +/** + * 实名认证 + */ +export interface UserVerify { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 类型, 0个人, 1企业 + type?: number; + // 主体名称 + name?: string; + // 营业执照号码 + zzCode?: string; + // 营业执照 + zzImg?: string; + // 真实姓名 + realName?: string; + // 手机号码 + phone?: string; + // 证件号码 + idCard?: string; + // 出生日期 + birthday?: string; + // 正面 + sfz1?: string; + // 反面 + sfz2?: string; + // 机构名称 + organizationName?: string; + // 备注 + comments?: string; + // 状态, 0在线, 1离线 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 实名认证搜索条件 + */ +export interface UserVerifyParam extends PageParam { + id?: number; + type?: number; + keywords?: string; +} diff --git a/src/api/system/version/index.ts b/src/api/system/version/index.ts new file mode 100644 index 0000000..aba95d8 --- /dev/null +++ b/src/api/system/version/index.ts @@ -0,0 +1,119 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Version, VersionParam } from './model'; +import type { Menu } from '../menu/model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询角色 + */ +export async function pageVersion(params: VersionParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/version/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询角色列表 + */ +export async function listVersion(params?: VersionParam) { + const res = await request.get>( + SERVER_API_URL + '/system/version', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加角色 + */ +export async function addVersion(data: Version) { + const res = await request.post>( + SERVER_API_URL + '/system/version', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色 + */ +export async function updateVersion(data: Version) { + const res = await request.put>( + SERVER_API_URL + '/system/version', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除角色 + */ +export async function removeVersion(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/version/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除角色 + */ +export async function removeVersions(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/version/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取角色分配的菜单 + */ +export async function listVersionMenus(versionId?: number) { + const res = await request.get>( + SERVER_API_URL + '/system/version-menu/' + versionId + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改角色菜单 + */ +export async function updateVersionMenus(versionId?: number, data?: number[]) { + const res = await request.put>( + SERVER_API_URL + '/system/version-menu/' + versionId, + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/version/model/index.ts b/src/api/system/version/model/index.ts new file mode 100644 index 0000000..8899e2f --- /dev/null +++ b/src/api/system/version/model/index.ts @@ -0,0 +1,26 @@ +import type { PageParam } from '@/api'; + +export interface Version { + id?: number; + versionName?: string; + versionCode?: string; + vueDownloadUrl?: string; + androidDownloadUrl?: string; + iosDownloadUrl?: string; + updateInfo?: any; + isHard?: boolean; + isHot?: boolean; + status?: number; + comments?: string; + tenantId?: number; + createTime?: string; +} + +/** + * 角色搜索条件 + */ +export interface VersionParam extends PageParam { + versionName?: string; + versionCode?: string; + comments?: string; +} diff --git a/src/api/system/website/field/index.ts b/src/api/system/website/field/index.ts new file mode 100644 index 0000000..9380fcc --- /dev/null +++ b/src/api/system/website/field/index.ts @@ -0,0 +1,162 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + Config, + WebsiteField, + WebsiteFieldParam +} from '@/api/system/website/field/model'; +import {SERVER_API_URL, TEMPLATE_ID} from '@/config/setting'; + +/** + * 分页查询项目参数 + */ +export async function pageWebsiteField(params: WebsiteFieldParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/website-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目参数列表 + */ +export async function listWebsiteField(params?: WebsiteFieldParam) { + const res = await request.get>( + SERVER_API_URL + '/system/website-field', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询项目参数 + */ +export async function getWebsiteField(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/website-field/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加项目参数 + */ +export async function addWebsiteField(data: WebsiteField) { + const res = await request.post>( + SERVER_API_URL + '/system/website-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改项目参数 + */ +export async function updateWebsiteField(data: WebsiteField) { + const res = await request.put>( + SERVER_API_URL + '/system/website-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除项目参数 + */ +export async function removeWebsiteField(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/website-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除项目参数 + */ +export async function removeBatchWebsiteField(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/website-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/website-field/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询项目参数列表 + */ +export async function configWebsiteField(params?: WebsiteFieldParam) { + const res = await request.get>( + 'https://cms-api.websoft.top/api/cms/cms-website-field/config', + { + params, + headers: { + TenantId: TEMPLATE_ID + } + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 恢复项目参数 + */ +export async function undeleteWebsiteField(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/cms/website-field/undelete/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/website/field/model/index.ts b/src/api/system/website/field/model/index.ts new file mode 100644 index 0000000..cf32e49 --- /dev/null +++ b/src/api/system/website/field/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 网站参数 + */ +export interface WebsiteField { + id?: number; + name?: string; + value?: string; + comments?: string; + userId?: number; + defaultValue?: string; + modifyRange?: string; + type?: number; + status?: any; + sortNumber?: any; + createTime?: string; + deleted?: number; +} + +// 约定的网站参数名称 +export interface WebsiteParam { + // 网站名称 + site_logo?: string; + // 登录页面标题 + login_name?: string; + // 登录页面的背景图片 + login_bg_img?: string; +} + +// 约定的小程序参数名称 +export interface MpWeixinParam { + // 小程序LOGO + site_logo?: string; + // 我的页面顶部背景图片 + mp_user_top?: string; +} + +/** + * 网站参数搜索条件 + */ +export interface WebsiteFieldParam extends PageParam { + id?: number; + userId?: number; + name?: string; + websiteId?: number; +} + +export interface Config { + siteName?: string; + siteLogo?: string; + domain?: string; + icpNo?: string; + copyright?: string; + loginBgImg?: string; + address?: string; + tel?: string; + kefu2?: string; + kefu1?: string; + email?: string; + loginTitle?: string; + sysLogo?: string; +} diff --git a/src/api/system/website/index.ts b/src/api/system/website/index.ts new file mode 100644 index 0000000..8afbfbf --- /dev/null +++ b/src/api/system/website/index.ts @@ -0,0 +1,169 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Website, WebsiteParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 获取网站信息 + */ +export async function getSiteInfo() { + const res = await request.get>( + SERVER_API_URL + '/system/website/getSiteInfo' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 清除缓存 + */ +export async function removeSiteInfoCache(key?: string) { + const res = await request.delete>( + SERVER_API_URL + '/system/website/clearSiteInfo/' + key + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询网站 + */ +export async function pageWebsite(params: WebsiteParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/website/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询网站列表 + */ +export async function listWebsite(params?: WebsiteParam) { + const res = await request.get>( + SERVER_API_URL + '/system/website', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加网站 + */ +export async function addWebsite(data: Website) { + const res = await request.post>( + SERVER_API_URL + '/system/website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改网站 + */ +export async function updateWebsite(data: Website) { + const res = await request.put>( + SERVER_API_URL + '/system/website', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除网站 + */ +export async function removeWebsite(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/website/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除网站 + */ +export async function removeBatchWebsite(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/website/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateWebsiteStatus(websiteId?: number, status?: number) { + const res = await request.put>( + SERVER_API_URL + '/system/website/status', + { + websiteId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询网站 + */ +export async function getWebsite(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/website/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/website/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/website/model/index.ts b/src/api/system/website/model/index.ts new file mode 100644 index 0000000..a886d3e --- /dev/null +++ b/src/api/system/website/model/index.ts @@ -0,0 +1,97 @@ +import type { PageParam } from '@/api'; + +/** + * 网站信息记录表 + */ +export interface Website { + // 站点ID + websiteId?: number; + // 网站名称 + websiteName?: string; + // 网站标识 + websiteCode?: string; + // 网站LOGO + websiteIcon?: string; + // 网站LOGO + websiteLogo?: string; + // 网站LOGO(深色模式) + websiteDarkLogo?: string; + // 网站类型 + websiteType?: string; + // 网站关键词 + keywords?: string; + // 域名前缀 + prefix?: string; + // 绑定域名 + domain?: string; + // 全局样式 + style?: string; + // 后台管理地址 + adminUrl?: string; + // 应用版本 10免费版 20专业版 30永久授权 + version?: number; + // 服务到期时间 + expirationTime?: string; + // 模版ID + templateId?: number; + // 行业类型(父级) + industryParent?: string; + // 行业类型(子级) + industryChild?: string; + // 企业ID + companyId?: number; + // 所在国家 + country?: string; + // 所在省份 + province?: string; + // 所在城市 + city?: string; + // 所在辖区 + region?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 街道地址 + address?: string; + // 联系电话 + phone?: string; + // 电子邮箱 + email?: string; + // ICP备案号 + icpNo?: string; + // 公安备案 + policeNo?: string; + // 备注 + comments?: string; + // 是否推荐 + recommend?: number; + // 状态 0未开通 1运行中 2维护中 3已关闭 4已欠费停机 5违规关停 + status?: number; + // 维护说明 + statusText?: string; + // 关闭说明 + statusClose?: string; + // 全局样式 + styles?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 网站信息记录表搜索条件 + */ +export interface WebsiteParam extends PageParam { + websiteId?: number; + keywords?: string; +} diff --git a/src/api/system/white-domain/index.ts b/src/api/system/white-domain/index.ts new file mode 100644 index 0000000..3649677 --- /dev/null +++ b/src/api/system/white-domain/index.ts @@ -0,0 +1,146 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { WhiteDomain, WhiteDomainParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询服务器白名单 + */ +export async function pageWhiteDomain(params: WhiteDomainParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/white-domain/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询服务器白名单列表 + */ +export async function listWhiteDomain(params?: WhiteDomainParam) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加服务器白名单 + */ +export async function addWhiteDomain(data: WhiteDomain) { + const res = await request.post>( + SERVER_API_URL + '/system/white-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改服务器白名单 + */ +export async function updateWhiteDomain(data: WhiteDomain) { + const res = await request.put>( + SERVER_API_URL + '/system/white-domain', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除服务器白名单 + */ +export async function removeWhiteDomain(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/white-domain/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除服务器白名单 + */ +export async function removeBatchWhiteDomain(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/white-domain/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户状态 + */ +export async function updateWhiteDomainStatus( + docsId?: number, + status?: number +) { + const res = await request.put>( + SERVER_API_URL + '/system/white-domain/status', + { + docsId, + status + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询服务器白名单 + */ +export async function getWhiteDomain(id: number) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 检查IP是否存在 + */ +export async function checkExistence( + field: string, + value: string, + id?: number +) { + const res = await request.get>( + SERVER_API_URL + '/system/white-domain/existence', + { + params: { field, value, id } + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/system/white-domain/model/index.ts b/src/api/system/white-domain/model/index.ts new file mode 100644 index 0000000..8a231df --- /dev/null +++ b/src/api/system/white-domain/model/index.ts @@ -0,0 +1,27 @@ +import type { PageParam } from '@/api'; + +/** + * 服务器白名单 + */ +export interface WhiteDomain { + // 自增ID + id?: number; + // 域名 + domain?: string; + // 排序 + sortNumber?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 创建时间 + createTime?: string; +} + +/** + * 服务器白名单搜索条件 + */ +export interface WhiteDomainParam extends PageParam { + id?: number; + domain?: string; +} diff --git a/src/api/user/balance-log/index.ts b/src/api/user/balance-log/index.ts new file mode 100644 index 0000000..e37899d --- /dev/null +++ b/src/api/user/balance-log/index.ts @@ -0,0 +1,104 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserBalanceLog, UserBalanceLogParam } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 分页查询余额明细 + */ +export async function pageUserBalanceLog(params: UserBalanceLogParam) { + const res = await request.get>>( + SERVER_API_URL + '/sys/user-balance-log/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询余额明细列表 + */ +export async function listUserBalanceLog(params?: UserBalanceLogParam) { + const res = await request.get>( + SERVER_API_URL + '/sys/user-balance-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询余额明细 + */ +export async function getUserBalanceLog(id: number) { + const res = await request.get>( + SERVER_API_URL + '/sys/user-balance-log/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加余额明细 + */ +export async function addUserBalanceLog(data: UserBalanceLog) { + const res = await request.post>( + SERVER_API_URL + '/sys/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改余额明细 + */ +export async function updateUserBalanceLog(data: UserBalanceLog) { + const res = await request.put>( + SERVER_API_URL + '/sys/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除余额明细 + */ +export async function removeUserBalanceLog(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/sys/user-balance-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除余额明细 + */ +export async function removeUserBalanceLogs(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/sys/user-balance-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/balance-log/model/index.ts b/src/api/user/balance-log/model/index.ts new file mode 100644 index 0000000..71ffd77 --- /dev/null +++ b/src/api/user/balance-log/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 余额明细 + */ +export interface UserBalanceLog { + logId?: number; + userId?: number; + scene?: number; + money?: string; + describe?: string; + remark?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserBalanceLogParam extends PageParam { + logId?: number; + userId?: number; + scene?: number; + createTimeStart?: string; + createTimeEnd?: string; +} diff --git a/src/api/user/feedback/index.ts b/src/api/user/feedback/index.ts new file mode 100644 index 0000000..5862ed3 --- /dev/null +++ b/src/api/user/feedback/index.ts @@ -0,0 +1,103 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserFeedback, UserFeedbackParam } from './model'; + +/** + * 分页查询意见反馈 + */ +export async function pageUserFeedback(params: UserFeedbackParam) { + const res = await request.get>>( + '/shop/user-feedback/page', + { params } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询意见反馈列表 + */ +export async function listUserFeedback(params?: UserFeedbackParam) { + const res = await request.get>( + '/shop/user-feedback', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询意见反馈 + */ +export async function getUserFeedback(id: number) { + const res = await request.get>( + '/shop/user-feedback/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加意见反馈 + */ +export async function addUserFeedback(data: UserFeedback) { + const res = await request.post>( + '/shop/user-feedback', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改意见反馈 + */ +export async function updateUserFeedback(data: UserFeedback) { + const res = await request.put>( + '/shop/user-feedback', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除意见反馈 + */ +export async function removeUserFeedback(id?: number) { + const res = await request.delete>( + '/shop/user-feedback/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除意见反馈 + */ +export async function removeBatchUserFeedbacks(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/user-feedback/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/feedback/model/index.ts b/src/api/user/feedback/model/index.ts new file mode 100644 index 0000000..5b4acfe --- /dev/null +++ b/src/api/user/feedback/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 意见反馈 + */ +export interface UserFeedback { + id?: number; + userId?: number; + type?: string; + content?: string; + images?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserFeedbackParam extends PageParam { + id?: number; + userId?: number; + type?: string; + createTimeStart?: string; + createTimeEnd?: string; +} diff --git a/src/api/user/grade/index.ts b/src/api/user/grade/index.ts new file mode 100644 index 0000000..3803604 --- /dev/null +++ b/src/api/user/grade/index.ts @@ -0,0 +1,114 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Grade, GradeParam } from '@/api/user/grade/model'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 分页查询仓库 + */ +export async function pageGrade(params: GradeParam) { + const res = await request.get>>( + SERVER_API_URL + '/system/user-grade/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询仓库列表 + */ +export async function listGrade(params?: GradeParam) { + const res = await request.get>('/system/user-grade', { + params + }); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加仓库 + */ +export async function addGrade(data: Grade) { + const res = await request.post>( + SERVER_API_URL + '/system/user-grade', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改仓库 + */ +export async function updateGrade(data: Grade) { + const res = await request.put>('/system/user-grade', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定仓库 + */ +export async function bindGrade(data: Grade) { + const res = await request.put>( + SERVER_API_URL + '/system/user-grade/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量添加设备 + */ +export async function addBatchGrade(data: Grade[]) { + const res = await request.post>( + SERVER_API_URL + '/system/user-grade/batch', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除仓库 + */ +export async function removeGrade(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-grade/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除仓库 + */ +export async function removeBatchGrade(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/system/user-grade/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/grade/model/index.ts b/src/api/user/grade/model/index.ts new file mode 100644 index 0000000..c4d9cc4 --- /dev/null +++ b/src/api/user/grade/model/index.ts @@ -0,0 +1,28 @@ +import type { PageParam } from '@/api'; + +export interface Grade { + gradeId?: number; + name?: string; + weight?: string; + upgrade?: string; + equity?: string; + commission?: string; + status?: number; + comments?: string; + sortNumber?: number; + userId?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface GradeParam extends PageParam { + gradeId?: number; + name?: string; + status?: number; + keywords?: string; +} diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000..7f5b610 --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,18 @@ +import request from '@/utils/request'; +import type { ApiResult } from '@/api'; +import type { User } from './model'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 修改当前登录用户信息 + */ +export async function authUser(data: User) { + const res = await request.put>( + SERVER_API_URL + '/auth/user', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/model/index.ts b/src/api/user/model/index.ts new file mode 100644 index 0000000..f73f212 --- /dev/null +++ b/src/api/user/model/index.ts @@ -0,0 +1,57 @@ +import type { PageParam } from '@/api'; + +/** + * 用户 + */ +export interface User { + // 用户id + userId?: number; + // 账号 + username?: string; + // 密码 + password?: string; + // 昵称 + nickname?: string; + // 头像 + avatar?: string; + // 性别(字典) + sex?: string; + // 手机号 + phone?: string; + // 邮箱 + email?: string; + // 出生日期 + birthday?: string; + // 手机号 + address?: string; + // 个人简介 + introduction?: string; + // 机构id + organizationId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 性别名称 + sexName?: string; + // 机构名称 + organizationName?: string; + // 商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; + // 创建时间 + createTime?: string; +} + +/** + * 用户搜索条件 + */ +export interface UserParam extends PageParam { + userId?: number; + username?: string; + nickname?: string; + sex?: string; + phone?: string; + status?: number; + organizationId?: number; + sexName?: string; +} diff --git a/src/api/user/recharge/export/index.ts b/src/api/user/recharge/export/index.ts new file mode 100644 index 0000000..acd5983 --- /dev/null +++ b/src/api/user/recharge/export/index.ts @@ -0,0 +1,109 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + RechargeOrder, + RechargeOrderParam +} from '@/api/user/recharge/export/model'; +import { SERVER_API_URL } from '@/config/setting'; +/** + * 分页查询充值计划 + */ +export async function pageRechargeOrder(params: RechargeOrderParam) { + const res = await request.get>>( + SERVER_API_URL + '/sys/recharge-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询充值计划列表 + */ +export async function listRechargeOrder(params?: RechargeOrderParam) { + const res = await request.get>( + SERVER_API_URL + '/sys/recharge-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加充值计划 + */ +export async function addRechargeOrder(data: RechargeOrder) { + const res = await request.post>( + SERVER_API_URL + '/sys/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改充值计划 + */ +export async function updateRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + SERVER_API_URL + '/sys/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定充值计划 + */ +export async function bindRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + SERVER_API_URL + '/sys/recharge-order/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除充值计划 + */ +export async function removeRechargeOrder(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/sys/recharge-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除充值计划 + */ +export async function removeBatchRechargeOrder(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/sys/recharge-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/recharge/export/model/index.ts b/src/api/user/recharge/export/model/index.ts new file mode 100644 index 0000000..43ef4b0 --- /dev/null +++ b/src/api/user/recharge/export/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +export interface RechargeOrder { + orderId?: number; + organizationId?: number; + organizationName?: string; + rechargeType?: number; + nickname?: string; + realName?: string; + phone?: string; + payPrice?: number; + giftMoney?: number; + actualMoney?: number; + operator?: string; + comments?: string; + createTime?: string; + tenantId?: number; + expendMoney?: string; + userId?: number; +} + +/** + * 搜索条件 + */ +export interface RechargeOrderParam extends PageParam { + exportId?: number; + organizationName?: string; + organizationId?: number; + dayTime?: string; + week?: number; + status?: number; + userId?: number; + createTimeStart?: string; + createTimeEnd?: string; + deliveryTimeStart?: string; + deliveryTimeEnd?: string; +} diff --git a/src/api/user/recharge/order/index.ts b/src/api/user/recharge/order/index.ts new file mode 100644 index 0000000..ac356ae --- /dev/null +++ b/src/api/user/recharge/order/index.ts @@ -0,0 +1,134 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { RechargeOrder, RechargeOrderParam } from './model/index'; +import { SERVER_API_URL } from '@/config/setting'; + +/** + * 充值 + */ +export async function recharge(data: RechargeOrder) { + const res = await request.post>( + SERVER_API_URL + '/sys/recharge-order/recharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 分页查询充值记录 + */ +export async function pageRechargeOrder(params: RechargeOrderParam) { + const res = await request.get>>( + SERVER_API_URL + '/sys/recharge-order/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询充值记录列表 + */ +export async function listRechargeOrder(params?: RechargeOrderParam) { + const res = await request.get>( + SERVER_API_URL + '/sys/recharge-order', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询充值记录 + */ +export async function getRechargeOrder(id: number) { + const res = await request.get>( + SERVER_API_URL + '/sys/recharge-order/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加充值记录 + */ +export async function addRechargeOrder(data: RechargeOrder) { + const res = await request.post>( + SERVER_API_URL + '/sys/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改充值记录 + */ +export async function updateRechargeOrder(data: RechargeOrder) { + const res = await request.put>( + SERVER_API_URL + '/sys/recharge-order', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除充值记录 + */ +export async function removeRechargeOrder(id?: number) { + const res = await request.delete>( + SERVER_API_URL + '/sys/recharge-order/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除充值记录 + */ +export async function removeBatchRechargeOrder(data: (number | undefined)[]) { + const res = await request.delete>( + SERVER_API_URL + '/sys/recharge-order/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量充值操作 + */ +export async function batchRecharge(data: RechargeOrder[]) { + const res = await request.post>( + SERVER_API_URL + '/sys/recharge-order/batchRecharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/recharge/order/model/index.ts b/src/api/user/recharge/order/model/index.ts new file mode 100644 index 0000000..8c762be --- /dev/null +++ b/src/api/user/recharge/order/model/index.ts @@ -0,0 +1,34 @@ +import type { PageParam } from '@/api'; + +/** + * 充值记录 + */ +export interface RechargeOrder { + orderId?: number; + userId?: number; + scene?: number; + orderNo?: string; + money?: string; + payPrice?: number; + actualMoney?: number; + organizationId?: number; + rechargeType?: number; + describe?: string; + remark?: string; + sortNumber?: number; + comments?: string; + status?: number; + deleted?: number; + tenantId?: number; + createTime?: string; + updateTime?: string; + balance?: number; +} + +/** + * 用户搜索条件 + */ +export interface RechargeOrderParam extends PageParam { + orderId?: number; + keywords?: string; +} diff --git a/src/api/user/referee/index.ts b/src/api/user/referee/index.ts new file mode 100644 index 0000000..c926a3b --- /dev/null +++ b/src/api/user/referee/index.ts @@ -0,0 +1,102 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserReferee, UserRefereeParam } from '@/api/user/referee/model'; +/** + * 分页查询推荐关系 + */ +export async function pageUserReferee(params: UserRefereeParam) { + const res = await request.get>>( + '/shop/user-referee/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询推荐关系列表 + */ +export async function listUserReferee(params?: UserRefereeParam) { + const res = await request.get>( + '/shop/user-referee', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加推荐关系 + */ +export async function addUserReferee(data: UserReferee) { + const res = await request.post>( + '/shop/user-referee', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改推荐关系 + */ +export async function updateUserReferee(data: UserReferee) { + const res = await request.put>('/shop/user-referee', data); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 绑定推荐关系 + */ +export async function bindUserReferee(data: UserReferee) { + const res = await request.put>( + '/shop/user-referee/bind', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除推荐关系 + */ +export async function removeUserReferee(id?: number) { + const res = await request.delete>( + '/shop/user-referee/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除推荐关系 + */ +export async function removeBatchUserReferee(data: (number | undefined)[]) { + const res = await request.delete>( + '/shop/user-referee/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/referee/model/index.ts b/src/api/user/referee/model/index.ts new file mode 100644 index 0000000..7f9a5f8 --- /dev/null +++ b/src/api/user/referee/model/index.ts @@ -0,0 +1,24 @@ +import type { PageParam } from '@/api'; + +/** + * 推荐关系 + */ +export interface UserReferee { + id?: number; + dealerId?: number; + userId?: number; + level?: number; + comments?: string; + createTime?: string; + tenantId?: number; +} + +/** + * 搜索条件 + */ +export interface UserRefereeParam extends PageParam { + id?: number; + dealerId?: number; + userId?: number; + level?: number; +} diff --git a/src/api/user/userCoupon/index.ts b/src/api/user/userCoupon/index.ts new file mode 100644 index 0000000..ecfcdfa --- /dev/null +++ b/src/api/user/userCoupon/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserCoupon, UserCouponParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询我的优惠券 + */ +export async function pageUserCoupon(params: UserCouponParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/user-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询我的优惠券列表 + */ +export async function listUserCoupon(params?: UserCouponParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/user-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加我的优惠券 + */ +export async function addUserCoupon(data: UserCoupon) { + const res = await request.post>( + MODULES_API_URL + '/booking/user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改我的优惠券 + */ +export async function updateUserCoupon(data: UserCoupon) { + const res = await request.put>( + MODULES_API_URL + '/booking/user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除我的优惠券 + */ +export async function removeUserCoupon(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/user-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除我的优惠券 + */ +export async function removeBatchUserCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/user-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询我的优惠券 + */ +export async function getUserCoupon(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/user-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/userCoupon/model/index.ts b/src/api/user/userCoupon/model/index.ts new file mode 100644 index 0000000..3649ebb --- /dev/null +++ b/src/api/user/userCoupon/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 我的优惠券 + */ +export interface UserCoupon { + // id + id?: number; + // 优惠劵id + couponId?: number; + // 优惠券名称 + name?: string; + // 优惠券类型(10满减券 20折扣券) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 到期类型(10领取后生效 20固定时间) + expireType?: number; + // 领取后生效-有效天数 + expireDay?: number; + // 有效期开始时间 + startTime?: number; + // 有效期结束时间 + endTime?: number; + // 适用范围(10全部商品 20指定商品) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 是否过期(0未过期 1已过期) + isExpire?: number; + // 是否已使用(0未使用 1已使用) + isUse?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0待使用, 1已使用, 2已失效 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 我的优惠券搜索条件 + */ +export interface UserCouponParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg b/src/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg new file mode 100644 index 0000000..a7b3b75 --- /dev/null +++ b/src/assets/O1CN01yz6fEl1MwaRtkJyvf_!!6000000001499-55-tps-70-70.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/bg-2.jpeg b/src/assets/bg-2.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..5ea2d426e7e226a0ac35c4a54a70f87f66158387 GIT binary patch literal 406999 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

w#*On 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

2l^TfcEqK>*Km|XpGxMXA4vS0-) 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�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�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 literal 0 HcmV?d00001 diff --git a/src/assets/bg-login.jpg b/src/assets/bg-login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26baa6974ba14fc665d0450d1c9aa101e07f8fe2 GIT binary patch literal 66953 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

(iK{r7oPrJR0WB8B2 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%0DQu~0zza?GjXUvO2{O z|89`LQauQ6AxFFR|0OZ7I=5yS7e?xiRcu&*pwrR96T=l{cHgwL@b0(-US@4#BnV?@ zpbVi!YFQ9b=8E?%(yZC-81 zm10&T5{+VV-G&*OEtimT36Xfm_I`dpydR$Doag+`<-<9@=P+CeM-*gt$^rlsoQ~p8 zh$Xajq@~1nn{B`gv4Bxd9B}|Oyxmg(Ad{W&_C%`xEQyp!4ADp(z2Eo%#iZ?jXre+{ zIaYp1d71Jj9`UOeK7f?3Rv$*py4%!mti4u>D=w7ncGj`SuPHv)Dt#=-8Zj$lqDpzp zPeJ21Ekh{N zKtd{>p1gtf?R6C5t zH!QnoA-`F>PbT(_8n<1Rs?@;ocTpRk&t8i@_?4fZk6pIjw`&)ODs4iRE#+v+J-atC zU>%)ydsjbUQ(Ri5<>&t7h|hkyX-gCF9RbsZJHW)_`Pmz0ZwtOdnuPV;%R1nNMx_eO zm3A#5e;Ri$dst<>>|)rQ(0DwOAqf%$e00p%+lNx$Rec^++i!uL@)`-8Q-xM1-*23p zT3u49_Fi-8OYN&wR|FZo-AZBo#E-~j&y?sypVlFA0!t%Vucfxrt1Z@ua~k_Skas%_ z@?czWp_m&HhXE)^o*bvXU;d^%PD)EcBVM~|uoDCW3^YjMn^3>ud`7j0zQk6LM?yfG z=o=oOU+Yu+Z;;nWhC=!`{C_1yg+i@Q_;sa6@6G$+hBIyBM&{JLjKi+ZwNYTE_pz?l zR8BbcGO+w1<{&i6)az=OOmiGp%}k}#-$|?Lq!Zyg0ADG&8c z_nw7o1u}$ziQ9Yp@blX;rwrBXID2Y>;93qH!pPPLEWdZJ&rFKa?i{kVn=(BKx{C}gaNC8|0T;6-VU_-*U++uMYEIY4k6cG-B_%S6}zqPb>ZR=)>%sH?`li;NIRr5SYP$IQ(nsxv56?LjLc6?s{Tp|yq{e36?ybWC_ zGe*!#fH$aei*X+iXY})I=nAK9j~TQCCly{Y_Jnng#U3{FlkBRM1#|B0D^bo3QfLbo z&?O7l#C0M0h~c$b3Y;7-1$C^OpMJjdlkfnn2Lb9z)Obe+HIoj`zfYjs!?oZ*506i! zUpTUTfu=sNuUBd3j~Ui=JV8l?ghUXUB&qQx{{{D9X8mBAOP{dl&V{;aX?07 zk-qKP`RORP6ua|X%D*Z=#>bw76L%GE4RPyr_a}FL*E3YGa-S@XNDcSwUM2^;4^SH_ zyiij3OXyC(uYUAleEcn#s56^dYTmHTev#(;aWJr@sZUW3J$rC~=T)l!4g1!XFZjEW zhIqGLeK~Qcxo9P;ZnL3$fly&9!abKv33*DZ@g07*<3%GNSx7=m%j+sYA-}1IEmY8ccH?Gq zx&Gfq>ka){OyW7C)rnfdTu zZ%swDO`+!Kj%S)M6UTaCpsOIN*@%F#F=}jlLsNX3LkCRVpkjVRu5ZicSn;4*T1ENA zKr!<#HMWaPLESTvvyUMm!Y2(ku5%>hEu+pch@G?tXop6<>C{Pzw%0Jut+;ZN`JBGd z+>gv#k$2|G}e{9N4Wi1OR7TMn7r3{=75%4t*}zGoKDI)Zp(nm7YnJR}9WkM=tT7T< zvacnK>@f@)G-4h-|HAXb``&ZUx%ZxX?(3d&?>pAWK#P%qiva+@sH3fJa;&j`A3gF| zwyWIjJywvviPlYk@8?+s;N-rJ`i(n5_M{xwFS~MQqTiaBe=S}&-j#UsBI=Xa)2RG) z0X6=#Ney~tGW=5_vnd%K8>c2F;9|DxogqG0vnST{q9z6lYfLoNFy0n4$X@O~SmNpK z+4+z+zt1y!?cw^=XB2ad`$?WEchaq37!XC>0Q{iJ?_`DTAsIl}R2#>|pD`$UQ1Klm zYN4v61{@dJEgPtF(6MhFp=XSVi5XZn(3#`IgRp>LE{0(w>Jo}g8U-B{5ej^mnNCU_ zVH3Qi%&H<=a)&qTOm_O1j8TEo=NN43lST(xFOToN2p~~OG#X-m>3x7G3GyU*)D^uO z$R8YVcicyi-H3+LN~I#hnl0j(57vban9k*}3s6C@IJFB0>aSv4iLXXi&WEROOA$>8 zI)oS@^94tuHc@Uhq&9Xjwb4#36jG2{{Y|<|mjDq?6G)NQ!I6D=D4oKoAbH}ZfM3I} zw1bi?MB8wOxAEpBVU=|JlQktaFoD>};R^4LnXcXq}I?FZgGFl-%cZ&g%yhem_{ z`H*%rv|r~yXI9?A(x3DDg`JZ{LhIPD!^kELhJtytwSG>qn7(iE zX!SCvKSR7UZnPD-`);>^57DCft262MpH3C7db>udol1HriY(fGMEOqx@36_nZET2N ze&z*khiw(6K@_&U&Fj|y;OoO#%{8BzL9|bsibzGNUV|E_&0@BT#vSL7Job90dIlN_ zioOCz+O{q+y>Rr^o{(~+8Z)z2@zJ9dR@IZCi2dV1N|Wd}Y=)7YyDRleA2=H6>7 zEQrP-_ww-*qNoCc?#v?)%Az29Xs%8M(}b{M{-o9~5cY7Q z#EOd!)O@L>T}6Rihb$L2Hqdo-;;5Gga1NEoqwHS^TN(l-F7z{nz9$fEd zEDhxO@`T+@#&mmr0J0hpPY`FJG!@nK)!3G#vhHQ7C-ZDq;6RWF#&g^DR_?@?3y(J2 zuz`{S&tU{^EGlJCaN8u93ugChH7W8Jm@|acUN5V( z507dodiznC)+)^8XqT6#;MEGLH>}RGrh3k7{4?bn?TB%F@I?Cu=Xq0zD7}tc-_XAr z-KcKzM)K)^C#!M+G0jNPoE?R&e&)H>!U8a=ZOhUk>v~%Y@qfIpXVtV{0*OP+F2_Cm zqIJ}&mnbkT6n{x@C_WXal`KAlz#HMG-=*|Tc~gVJGTgIMl|iCggB?T+Bs{VHNtGd9 z%TOGBhXPmQ>O?^^eb7BUyUGOgS~Uyk`u95?klBeX;(;G7k^A+}eT3^@nZyGkyEjKp zrr%m@Q`|?mQ`B7!fO%5M?Ul8yLDbBk__#0uCoT*J2$IBnK1+>wjs{{pzz~%?ZK72g zH(kB(VwLT9vaEfwcnKZ3djX?9E8jHoLLjWlN!gKe|8@J5M^ zKy5ZDXb`PdDK!N%I*9&VLg}^zDygf6KS252{|-EsyTB;T1*A+0B`XD+22;}2X0Sbe^; zs<$u8PB-av00Im+b~U^HJ6b5o>FP3O^Ot+2!r!grB==F`*h;1xd><*XZ1a!!_T@z4 zH84myG3h$b5~9hG=+J%!#`f98jyM_9$D-vqksk4 z?g!}^t7XFJ73)S{SRBkmcL`u)tm|?rSI~2VWW${esJhR~8UwbsXi(JCM*5stD z#|=$G3B4sA_&(m@YN1)NQW=mt^{!Vdq<)KeIawnZ`v`ipHaL2l*DPBtIC6JcF2ttn z;fVrXoICT9(50&0#9JuaVu=6Z?Qc^W)*`zw;${EZP?1N*;ELb-JXNlaCn=%^`4cAI zRV`mX%_8r~X%Y{ST#Ygyv_fm3wL*#@3yLE7m(w&LM{j4n6jcf`Y>F{mz?&>$=sysJdI+^g2!C4&qX zG*guy6H&e?MrpJ|hey6@L*oR~mDgjr7Fh+4ImzEnJBux*0YX z0+W(;q{|@aW|=;}A>ul{f?@9%{ap#3u@N^oTz9?PxH$6M_oPwdoB!N+-E5Ad*7>s8 zvK>rx^+=uqCN1b0BGeaCf_#f#=EOM#W*KWJ74*JQXHIbHQ;zh!ccyBsKKw!|QC0gX zE4|Q-yGD!y7yT9kUas>14n0N*_)6I+@9%dCeHv;1K_C*6WmDNWg8sNGT-8v%u5|9C z#rD}S=d;&`jCP{hnEjEt_}+eye>Zd_T`&Zh9{on9#5BU@W zz*NkRj$WLiwk4U0v{pV|b0m|#{>qVzn0uA-%jrNv4!@^wh5qJ&RFtlcb!O8u@Z}eZ zn^Nm9k<;C?AE~ZvIo_&+&sYO2(ZB#Q@Igf3QBUzS{HX*y-Vd%EG~`6TTO4cmJV5@f zSxo{yys5N+A$q#G{60m#yDIm*wTTd`+LWuR{&y^NHHeNaTx5qRHexCTxa z;bO?;qot{P&*QB^Dj0!Pr`4?`K;W_tei9EIAHF@}ReqFqI0Be^N2b2vMgn aq3ErY@aNwsUp)R0038hjb^J}osQ&_rn9h>` literal 0 HcmV?d00001 diff --git a/src/assets/icon/forum.png b/src/assets/icon/forum.png new file mode 100644 index 0000000000000000000000000000000000000000..b8dd2134eba975f0a46cbce905334182aba28afc GIT binary patch literal 2979 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 literal 0 HcmV?d00001 diff --git a/src/assets/icon/openai-avatar.jpeg b/src/assets/icon/openai-avatar.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7b46839fbb534396845e4e0fb99acc24aa3750cc GIT binary patch literal 17990 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 WMN-V-hi8TW0000V43gf;uum9 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 TwB^)wGy*hKbd{?Vts?#lXwpl& literal 0 HcmV?d00001 diff --git a/src/assets/img/app-ui.png b/src/assets/img/app-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..09256bff68153c687ddd90f67c679ad49c38cae0 GIT binary patch literal 19578 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 literal 0 HcmV?d00001 diff --git a/src/assets/img/circular.png b/src/assets/img/circular.png new file mode 100755 index 0000000000000000000000000000000000000000..12f22efb331c667b900f045b3502818a05a3b9b4 GIT binary patch literal 2374 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%0D@=6&x^7=3|6jsNHw`aYL;_Sd5r&pIh+&Yqifq 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 S3p!Ge^XCk8vd>=o>wf?#G^&{Z literal 0 HcmV?d00001 diff --git a/src/assets/logo.svg b/src/assets/logo.svg new file mode 100644 index 0000000..fb8e867 --- /dev/null +++ b/src/assets/logo.svg @@ -0,0 +1,15 @@ + + + + + background + + + + + + + Layer 1 + + + \ No newline at end of file diff --git a/src/assets/oa-logo.svg b/src/assets/oa-logo.svg new file mode 100644 index 0000000..b0a0f23 --- /dev/null +++ b/src/assets/oa-logo.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/components/ByteMdEditor/index.vue b/src/components/ByteMdEditor/index.vue new file mode 100644 index 0000000..5193689 --- /dev/null +++ b/src/components/ByteMdEditor/index.vue @@ -0,0 +1,109 @@ + + + + + + diff --git a/src/components/ByteMdViewer/index.vue b/src/components/ByteMdViewer/index.vue new file mode 100644 index 0000000..22e95a3 --- /dev/null +++ b/src/components/ByteMdViewer/index.vue @@ -0,0 +1,93 @@ + + + + diff --git a/src/components/ChooseDictionary/index.vue b/src/components/ChooseDictionary/index.vue new file mode 100644 index 0000000..65b24dc --- /dev/null +++ b/src/components/ChooseDictionary/index.vue @@ -0,0 +1,73 @@ + + + + diff --git a/src/components/DesignBanner/index.vue b/src/components/DesignBanner/index.vue new file mode 100644 index 0000000..1afeacb --- /dev/null +++ b/src/components/DesignBanner/index.vue @@ -0,0 +1,173 @@ + + + diff --git a/src/components/DesignHeader/index.vue b/src/components/DesignHeader/index.vue new file mode 100644 index 0000000..a79c789 --- /dev/null +++ b/src/components/DesignHeader/index.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/DictRadio/index.vue b/src/components/DictRadio/index.vue new file mode 100644 index 0000000..5332efa --- /dev/null +++ b/src/components/DictRadio/index.vue @@ -0,0 +1,58 @@ + + + + diff --git a/src/components/DictSelect/index.vue b/src/components/DictSelect/index.vue new file mode 100644 index 0000000..bdcc5c8 --- /dev/null +++ b/src/components/DictSelect/index.vue @@ -0,0 +1,75 @@ + + + + diff --git a/src/components/DictSelectMultiple/index.vue b/src/components/DictSelectMultiple/index.vue new file mode 100644 index 0000000..5daaafd --- /dev/null +++ b/src/components/DictSelectMultiple/index.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/components/FormSelect/index.vue b/src/components/FormSelect/index.vue new file mode 100644 index 0000000..f13dc4c --- /dev/null +++ b/src/components/FormSelect/index.vue @@ -0,0 +1,61 @@ + + + + diff --git a/src/components/IndustrySelect/index.vue b/src/components/IndustrySelect/index.vue new file mode 100644 index 0000000..ab49a04 --- /dev/null +++ b/src/components/IndustrySelect/index.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/components/IndustrySelect/load-data.ts b/src/components/IndustrySelect/load-data.ts new file mode 100644 index 0000000..88ef030 --- /dev/null +++ b/src/components/IndustrySelect/load-data.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; +import type { IndustryData } from './types'; +const BASE_URL = import.meta.env.BASE_URL; +let reqPromise: Promise; + +/** + * 获取省市区数据 + */ +export function getIndustryData() { + if (!reqPromise) { + reqPromise = new Promise((resolve, reject) => { + request + .get(BASE_URL + 'json/industry-data.json', { + baseURL: '' + }) + .then((res) => { + resolve(res.data ?? []); + }) + .catch((e) => { + reject(e); + }); + }); + } + return reqPromise; +} diff --git a/src/components/IndustrySelect/types/index.ts b/src/components/IndustrySelect/types/index.ts new file mode 100644 index 0000000..7c49435 --- /dev/null +++ b/src/components/IndustrySelect/types/index.ts @@ -0,0 +1,15 @@ +/** + * 行业类型 + */ +export interface IndustryData { + label: string; + value: string; + children?: { + value: string; + label: string; + children?: { + value: string; + label: string; + }[]; + }[]; +} diff --git a/src/components/MpQrCode/index.vue b/src/components/MpQrCode/index.vue new file mode 100644 index 0000000..db5b520 --- /dev/null +++ b/src/components/MpQrCode/index.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/PayMethod/index.vue b/src/components/PayMethod/index.vue new file mode 100644 index 0000000..3f810e8 --- /dev/null +++ b/src/components/PayMethod/index.vue @@ -0,0 +1,76 @@ + + + + diff --git a/src/components/QrCode/index.vue b/src/components/QrCode/index.vue new file mode 100644 index 0000000..369a404 --- /dev/null +++ b/src/components/QrCode/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/QrLogin/demo.vue b/src/components/QrLogin/demo.vue new file mode 100644 index 0000000..4127c52 --- /dev/null +++ b/src/components/QrLogin/demo.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/src/components/QrLogin/index.vue b/src/components/QrLogin/index.vue new file mode 100644 index 0000000..f0d8397 --- /dev/null +++ b/src/components/QrLogin/index.vue @@ -0,0 +1,312 @@ + + + + + diff --git a/src/components/QuestionIcon/index.vue b/src/components/QuestionIcon/index.vue new file mode 100644 index 0000000..85000fa --- /dev/null +++ b/src/components/QuestionIcon/index.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/RadioGroup/index.vue b/src/components/RadioGroup/index.vue new file mode 100644 index 0000000..1deca38 --- /dev/null +++ b/src/components/RadioGroup/index.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/components/RedirectLayout/index.ts b/src/components/RedirectLayout/index.ts new file mode 100644 index 0000000..6c4def6 --- /dev/null +++ b/src/components/RedirectLayout/index.ts @@ -0,0 +1,21 @@ +/** 用于刷新的路由组件 */ +import { defineComponent, unref, h } from 'vue'; +import { useRouter } from 'vue-router'; +import { setRouteReload } from '@/utils/page-tab-util'; + +export default defineComponent({ + name: 'RedirectLayout', + setup() { + const { currentRoute, replace } = useRouter(); + const { params, query } = unref(currentRoute); + const from = Array.isArray(params.path) + ? params.path.join('/') + : params.path; + const path = '/' + from; + setTimeout(() => { + setRouteReload(null); + replace({ path, query }); + }, 100); + return () => h('div'); + } +}); diff --git a/src/components/RegionsSelect/index.vue b/src/components/RegionsSelect/index.vue new file mode 100644 index 0000000..47fe28e --- /dev/null +++ b/src/components/RegionsSelect/index.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/components/RegionsSelect/load-data.ts b/src/components/RegionsSelect/load-data.ts new file mode 100644 index 0000000..bc7d756 --- /dev/null +++ b/src/components/RegionsSelect/load-data.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; +import type { RegionsData } from './types'; +const BASE_URL = import.meta.env.BASE_URL; +let reqPromise: Promise; + +/** + * 获取省市区数据 + */ +export function getRegionsData() { + if (!reqPromise) { + reqPromise = new Promise((resolve, reject) => { + request + .get(BASE_URL + 'json/regions-data.json', { + baseURL: '' + }) + .then((res) => { + resolve(res.data ?? []); + }) + .catch((e) => { + reject(e); + }); + }); + } + return reqPromise; +} diff --git a/src/components/RegionsSelect/types/index.ts b/src/components/RegionsSelect/types/index.ts new file mode 100644 index 0000000..ebf2eca --- /dev/null +++ b/src/components/RegionsSelect/types/index.ts @@ -0,0 +1,15 @@ +/** + * 省市区数据类型 + */ +export interface RegionsData { + label: string; + value: string; + children?: { + value: string; + label: string; + children?: { + value: string; + label: string; + }[]; + }[]; +} diff --git a/src/components/RouterLayout/index.vue b/src/components/RouterLayout/index.vue new file mode 100644 index 0000000..e304b5c --- /dev/null +++ b/src/components/RouterLayout/index.vue @@ -0,0 +1,26 @@ + + + + diff --git a/src/components/SelectArticle/components/select-data.vue b/src/components/SelectArticle/components/select-data.vue new file mode 100644 index 0000000..901b7c7 --- /dev/null +++ b/src/components/SelectArticle/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectArticle/index.vue b/src/components/SelectArticle/index.vue new file mode 100644 index 0000000..f124514 --- /dev/null +++ b/src/components/SelectArticle/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectArticleCategory/components/select-data.vue b/src/components/SelectArticleCategory/components/select-data.vue new file mode 100644 index 0000000..4a6017c --- /dev/null +++ b/src/components/SelectArticleCategory/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectArticleCategory/index.vue b/src/components/SelectArticleCategory/index.vue new file mode 100644 index 0000000..373dda7 --- /dev/null +++ b/src/components/SelectArticleCategory/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectDesign/components/select-data.vue b/src/components/SelectDesign/components/select-data.vue new file mode 100644 index 0000000..b4ef42c --- /dev/null +++ b/src/components/SelectDesign/components/select-data.vue @@ -0,0 +1,142 @@ + + + + diff --git a/src/components/SelectDesign/index.vue b/src/components/SelectDesign/index.vue new file mode 100644 index 0000000..592dd0c --- /dev/null +++ b/src/components/SelectDesign/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectDict/components/select-data.vue b/src/components/SelectDict/components/select-data.vue new file mode 100644 index 0000000..b2cc7b0 --- /dev/null +++ b/src/components/SelectDict/components/select-data.vue @@ -0,0 +1,146 @@ + + + + diff --git a/src/components/SelectDict/index.vue b/src/components/SelectDict/index.vue new file mode 100644 index 0000000..e01545c --- /dev/null +++ b/src/components/SelectDict/index.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/components/SelectDictDictionary/components/select-data.vue b/src/components/SelectDictDictionary/components/select-data.vue new file mode 100644 index 0000000..a3352c3 --- /dev/null +++ b/src/components/SelectDictDictionary/components/select-data.vue @@ -0,0 +1,151 @@ + + + + diff --git a/src/components/SelectDictDictionary/index.vue b/src/components/SelectDictDictionary/index.vue new file mode 100644 index 0000000..4c6dcc7 --- /dev/null +++ b/src/components/SelectDictDictionary/index.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/components/SelectFence/components/select-data.vue b/src/components/SelectFence/components/select-data.vue new file mode 100644 index 0000000..0f78932 --- /dev/null +++ b/src/components/SelectFence/components/select-data.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/components/SelectFence/index.vue b/src/components/SelectFence/index.vue new file mode 100644 index 0000000..af87f1e --- /dev/null +++ b/src/components/SelectFence/index.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/components/SelectFile/components/file-record-edit.vue b/src/components/SelectFile/components/file-record-edit.vue new file mode 100644 index 0000000..e9aa785 --- /dev/null +++ b/src/components/SelectFile/components/file-record-edit.vue @@ -0,0 +1,179 @@ + + + + diff --git a/src/components/SelectFile/components/select-data.vue b/src/components/SelectFile/components/select-data.vue new file mode 100644 index 0000000..fb05025 --- /dev/null +++ b/src/components/SelectFile/components/select-data.vue @@ -0,0 +1,375 @@ + + + diff --git a/src/components/SelectFile/index.vue b/src/components/SelectFile/index.vue new file mode 100644 index 0000000..4da13ae --- /dev/null +++ b/src/components/SelectFile/index.vue @@ -0,0 +1,135 @@ + + + + diff --git a/src/components/SelectForm/components/select-data.vue b/src/components/SelectForm/components/select-data.vue new file mode 100644 index 0000000..8395752 --- /dev/null +++ b/src/components/SelectForm/components/select-data.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/components/SelectForm/index.vue b/src/components/SelectForm/index.vue new file mode 100644 index 0000000..abdf6b8 --- /dev/null +++ b/src/components/SelectForm/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectGoodsCategory/index.vue b/src/components/SelectGoodsCategory/index.vue new file mode 100644 index 0000000..a55f356 --- /dev/null +++ b/src/components/SelectGoodsCategory/index.vue @@ -0,0 +1,138 @@ + + + + diff --git a/src/components/SelectGoodsCategory/load-data.ts b/src/components/SelectGoodsCategory/load-data.ts new file mode 100644 index 0000000..88ef030 --- /dev/null +++ b/src/components/SelectGoodsCategory/load-data.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; +import type { IndustryData } from './types'; +const BASE_URL = import.meta.env.BASE_URL; +let reqPromise: Promise; + +/** + * 获取省市区数据 + */ +export function getIndustryData() { + if (!reqPromise) { + reqPromise = new Promise((resolve, reject) => { + request + .get(BASE_URL + 'json/industry-data.json', { + baseURL: '' + }) + .then((res) => { + resolve(res.data ?? []); + }) + .catch((e) => { + reject(e); + }); + }); + } + return reqPromise; +} diff --git a/src/components/SelectGoodsCategory/types/index.ts b/src/components/SelectGoodsCategory/types/index.ts new file mode 100644 index 0000000..7c49435 --- /dev/null +++ b/src/components/SelectGoodsCategory/types/index.ts @@ -0,0 +1,15 @@ +/** + * 行业类型 + */ +export interface IndustryData { + label: string; + value: string; + children?: { + value: string; + label: string; + children?: { + value: string; + label: string; + }[]; + }[]; +} diff --git a/src/components/SelectGrade/components/select-data.vue b/src/components/SelectGrade/components/select-data.vue new file mode 100644 index 0000000..20f2a6d --- /dev/null +++ b/src/components/SelectGrade/components/select-data.vue @@ -0,0 +1,137 @@ + + + + diff --git a/src/components/SelectGrade/index.vue b/src/components/SelectGrade/index.vue new file mode 100644 index 0000000..758bda0 --- /dev/null +++ b/src/components/SelectGrade/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectGroup/components/select-data.vue b/src/components/SelectGroup/components/select-data.vue new file mode 100644 index 0000000..c8b4098 --- /dev/null +++ b/src/components/SelectGroup/components/select-data.vue @@ -0,0 +1,137 @@ + + + + diff --git a/src/components/SelectGroup/index.vue b/src/components/SelectGroup/index.vue new file mode 100644 index 0000000..409b710 --- /dev/null +++ b/src/components/SelectGroup/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectMerchant/components/select-data.vue b/src/components/SelectMerchant/components/select-data.vue new file mode 100644 index 0000000..c025075 --- /dev/null +++ b/src/components/SelectMerchant/components/select-data.vue @@ -0,0 +1,161 @@ + + + + diff --git a/src/components/SelectMerchant/index.vue b/src/components/SelectMerchant/index.vue new file mode 100644 index 0000000..69cc753 --- /dev/null +++ b/src/components/SelectMerchant/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/components/SelectModel/components/select-data.vue b/src/components/SelectModel/components/select-data.vue new file mode 100644 index 0000000..a83555c --- /dev/null +++ b/src/components/SelectModel/components/select-data.vue @@ -0,0 +1,147 @@ + + + + diff --git a/src/components/SelectModel/index.vue b/src/components/SelectModel/index.vue new file mode 100644 index 0000000..1230694 --- /dev/null +++ b/src/components/SelectModel/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/SelectModules/components/select-data.vue b/src/components/SelectModules/components/select-data.vue new file mode 100644 index 0000000..198b727 --- /dev/null +++ b/src/components/SelectModules/components/select-data.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/components/SelectModules/index.vue b/src/components/SelectModules/index.vue new file mode 100644 index 0000000..42b4d33 --- /dev/null +++ b/src/components/SelectModules/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/SelectMpPages/components/select-data.vue b/src/components/SelectMpPages/components/select-data.vue new file mode 100644 index 0000000..d3042c7 --- /dev/null +++ b/src/components/SelectMpPages/components/select-data.vue @@ -0,0 +1,144 @@ + + + + diff --git a/src/components/SelectMpPages/index.vue b/src/components/SelectMpPages/index.vue new file mode 100644 index 0000000..f597387 --- /dev/null +++ b/src/components/SelectMpPages/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectNavigsation/components/select-data.vue b/src/components/SelectNavigsation/components/select-data.vue new file mode 100644 index 0000000..2f7d983 --- /dev/null +++ b/src/components/SelectNavigsation/components/select-data.vue @@ -0,0 +1,223 @@ + + + + diff --git a/src/components/SelectNavigsation/index.vue b/src/components/SelectNavigsation/index.vue new file mode 100644 index 0000000..207f71b --- /dev/null +++ b/src/components/SelectNavigsation/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/SelectOrganization/components/select-data.vue b/src/components/SelectOrganization/components/select-data.vue new file mode 100644 index 0000000..341e6dc --- /dev/null +++ b/src/components/SelectOrganization/components/select-data.vue @@ -0,0 +1,224 @@ + + + + diff --git a/src/components/SelectOrganization/components/select-organization.vue b/src/components/SelectOrganization/components/select-organization.vue new file mode 100644 index 0000000..d7399a7 --- /dev/null +++ b/src/components/SelectOrganization/components/select-organization.vue @@ -0,0 +1,123 @@ + + + + diff --git a/src/components/SelectOrganization/index.vue b/src/components/SelectOrganization/index.vue new file mode 100644 index 0000000..1ddc325 --- /dev/null +++ b/src/components/SelectOrganization/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/components/SelectRole/components/select-data.vue b/src/components/SelectRole/components/select-data.vue new file mode 100644 index 0000000..b46972c --- /dev/null +++ b/src/components/SelectRole/components/select-data.vue @@ -0,0 +1,151 @@ + + + + diff --git a/src/components/SelectRole/index.vue b/src/components/SelectRole/index.vue new file mode 100644 index 0000000..6e4f84a --- /dev/null +++ b/src/components/SelectRole/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/SelectSpec/components/select-data.vue b/src/components/SelectSpec/components/select-data.vue new file mode 100644 index 0000000..a5fed56 --- /dev/null +++ b/src/components/SelectSpec/components/select-data.vue @@ -0,0 +1,169 @@ + + + + diff --git a/src/components/SelectSpec/index.vue b/src/components/SelectSpec/index.vue new file mode 100644 index 0000000..459d0d7 --- /dev/null +++ b/src/components/SelectSpec/index.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/components/SelectSpecValue/index.vue b/src/components/SelectSpecValue/index.vue new file mode 100644 index 0000000..6b7f8c9 --- /dev/null +++ b/src/components/SelectSpecValue/index.vue @@ -0,0 +1,81 @@ + + + + diff --git a/src/components/SelectStaff/components/select-data.vue b/src/components/SelectStaff/components/select-data.vue new file mode 100644 index 0000000..4756bd1 --- /dev/null +++ b/src/components/SelectStaff/components/select-data.vue @@ -0,0 +1,144 @@ + + + + diff --git a/src/components/SelectStaff/components/select-user.vue b/src/components/SelectStaff/components/select-user.vue new file mode 100644 index 0000000..e1776d4 --- /dev/null +++ b/src/components/SelectStaff/components/select-user.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/components/SelectStaff/index.vue b/src/components/SelectStaff/index.vue new file mode 100644 index 0000000..8bc7896 --- /dev/null +++ b/src/components/SelectStaff/index.vue @@ -0,0 +1,70 @@ + + + diff --git a/src/components/SelectStudent/components/select-data.vue b/src/components/SelectStudent/components/select-data.vue new file mode 100644 index 0000000..04e9079 --- /dev/null +++ b/src/components/SelectStudent/components/select-data.vue @@ -0,0 +1,137 @@ + + + + diff --git a/src/components/SelectStudent/index.vue b/src/components/SelectStudent/index.vue new file mode 100644 index 0000000..4858056 --- /dev/null +++ b/src/components/SelectStudent/index.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/SelectUser/components/select-data.vue b/src/components/SelectUser/components/select-data.vue new file mode 100644 index 0000000..be956d2 --- /dev/null +++ b/src/components/SelectUser/components/select-data.vue @@ -0,0 +1,151 @@ + + + + diff --git a/src/components/SelectUser/components/select-user.vue b/src/components/SelectUser/components/select-user.vue new file mode 100644 index 0000000..09db656 --- /dev/null +++ b/src/components/SelectUser/components/select-user.vue @@ -0,0 +1,138 @@ + + + + diff --git a/src/components/SelectUser/index.vue b/src/components/SelectUser/index.vue new file mode 100644 index 0000000..c267bde --- /dev/null +++ b/src/components/SelectUser/index.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/components/SelectUserByButton/components/select-data.vue b/src/components/SelectUserByButton/components/select-data.vue new file mode 100644 index 0000000..aaf1ecf --- /dev/null +++ b/src/components/SelectUserByButton/components/select-data.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/components/SelectUserByButton/index.vue b/src/components/SelectUserByButton/index.vue new file mode 100644 index 0000000..0f9dcc0 --- /dev/null +++ b/src/components/SelectUserByButton/index.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/SelectWebsiteField/components/select-data.vue b/src/components/SelectWebsiteField/components/select-data.vue new file mode 100644 index 0000000..6a5c489 --- /dev/null +++ b/src/components/SelectWebsiteField/components/select-data.vue @@ -0,0 +1,169 @@ + + + + diff --git a/src/components/SelectWebsiteField/index.vue b/src/components/SelectWebsiteField/index.vue new file mode 100644 index 0000000..4c2836b --- /dev/null +++ b/src/components/SelectWebsiteField/index.vue @@ -0,0 +1,64 @@ + + + diff --git a/src/components/Simulator/index.vue b/src/components/Simulator/index.vue new file mode 100644 index 0000000..165fc3e --- /dev/null +++ b/src/components/Simulator/index.vue @@ -0,0 +1,510 @@ + + + + + + + diff --git a/src/components/Tag/index.vue b/src/components/Tag/index.vue new file mode 100644 index 0000000..97c5f72 --- /dev/null +++ b/src/components/Tag/index.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/TinymceEditor/index.vue b/src/components/TinymceEditor/index.vue new file mode 100644 index 0000000..7c580f8 --- /dev/null +++ b/src/components/TinymceEditor/index.vue @@ -0,0 +1,247 @@ + + + + + + diff --git a/src/components/TinymceEditor/util.ts b/src/components/TinymceEditor/util.ts new file mode 100644 index 0000000..d5c4127 --- /dev/null +++ b/src/components/TinymceEditor/util.ts @@ -0,0 +1,350 @@ +import type { + Editor as TinyMCEEditor, + EditorEvent, + RawEditorSettings +} from 'tinymce'; +const BASE_URL = import.meta.env.BASE_URL; + +// 默认加载插件 +const PLUGINS: string = [ + 'code', + 'preview', + 'fullscreen', + 'paste', + 'searchreplace', + 'save', + 'autosave', + 'link', + 'autolink', + 'image', + 'media', + 'table', + 'codesample', + 'lists', + 'advlist', + 'hr', + 'charmap', + 'emoticons', + 'anchor', + 'directionality', + 'pagebreak', + 'quickbars', + 'nonbreaking', + 'visualblocks', + 'visualchars', + 'wordcount' +].join(' '); + +// 默认工具栏布局 +const TOOLBAR: string = [ + 'fullscreen', + 'preview', + 'code', + 'codesample', + 'emoticons', + 'image', + 'media', + '|', + 'undo', + 'redo', + '|', + 'forecolor', + 'backcolor', + '|', + 'bold', + 'italic', + 'underline', + 'strikethrough', + '|', + 'alignleft', + 'aligncenter', + 'alignright', + 'alignjustify', + '|', + 'outdent', + 'indent', + 'textindent', + '|', + 'numlist', + 'bullist', + '|', + 'formatselect', + 'fontselect', + 'fontsizeselect', + '|', + 'link', + 'charmap', + 'anchor', + 'pagebreak', + '|', + 'ltr', + 'rtl' +].join(' '); + +// 默认配置 +export const DEFAULT_CONFIG: RawEditorSettings = { + height: 300, + branding: false, + skin_url: BASE_URL + 'tinymce/skins/ui/oxide', + content_css: BASE_URL + 'tinymce/skins/content/default/content.min.css', + language_url: BASE_URL + 'tinymce/langs/zh_CN.js', + language: 'zh_CN', + plugins: PLUGINS, + toolbar: TOOLBAR, + draggable_modal: true, + toolbar_mode: 'sliding', + quickbars_insert_toolbar: '', + images_upload_handler: (blobInfo: any, success: any, error: any) => { + if (blobInfo.blob().size / 1024 > 400) { + error('大小不能超过 400KB'); + return; + } + success('data:image/jpeg;base64,' + blobInfo.base64()); + }, + file_picker_types: 'media', + file_picker_callback: () => {}, + + // 添加自定义样式 + content_style: ` + .text-indent { text-indent: 2em; } + p.text-indent { text-indent: 2em; } + p[style*="text-indent"] { + text-indent: 2em; + } + /* 确保首行缩进在各种情况下都能正确显示 */ + body p { + margin: 0 0 10px 0; + line-height: 1.6; + } + ` +}; + +// 暗黑主题配置 +export const DARK_CONFIG: RawEditorSettings = { + skin_url: BASE_URL + 'tinymce/skins/ui/oxide-dark', + content_css: BASE_URL + 'tinymce/skins/content/dark/content.min.css' +}; + +// 支持监听的事件 +export const VALID_EVENTS = [ + 'onActivate', + 'onAddUndo', + 'onBeforeAddUndo', + 'onBeforeExecCommand', + 'onBeforeGetContent', + 'onBeforeRenderUI', + 'onBeforeSetContent', + 'onBeforePaste', + 'onBlur', + 'onChange', + 'onClearUndos', + 'onClick', + 'onContextMenu', + 'onCopy', + 'onCut', + 'onDblclick', + 'onDeactivate', + 'onDirty', + 'onDrag', + 'onDragDrop', + 'onDragEnd', + 'onDragGesture', + 'onDragOver', + 'onDrop', + 'onExecCommand', + 'onFocus', + 'onFocusIn', + 'onFocusOut', + 'onGetContent', + 'onHide', + 'onInit', + 'onKeyDown', + 'onKeyPress', + 'onKeyUp', + 'onLoadContent', + 'onMouseDown', + 'onMouseEnter', + 'onMouseLeave', + 'onMouseMove', + 'onMouseOut', + 'onMouseOver', + 'onMouseUp', + 'onNodeChange', + 'onObjectResizeStart', + 'onObjectResized', + 'onObjectSelected', + 'onPaste', + 'onPostProcess', + 'onPostRender', + 'onPreProcess', + 'onProgressState', + 'onRedo', + 'onRemove', + 'onReset', + 'onSaveContent', + 'onSelectionChange', + 'onSetAttrib', + 'onSetContent', + 'onShow', + 'onSubmit', + 'onUndo', + 'onVisualAid' +]; + +let unique = 0; + +/** + * 生成编辑器 id + */ +export function uuid(prefix: string): string { + const time = Date.now(); + const random = Math.floor(Math.random() * 1000000000); + unique++; + return prefix + '_' + random + unique + String(time); +} + +/** + * 绑定事件 + */ +export function bindHandlers( + initEvent: EditorEvent, + listeners: Record, + editor: TinyMCEEditor +): void { + const validEvents = VALID_EVENTS.map((event) => event.toLowerCase()); + Object.keys(listeners) + .filter((key: string) => validEvents.includes(key.toLowerCase())) + .forEach((key: string) => { + const handler = listeners[key]; + if (typeof handler === 'function') { + if (key === 'onInit') { + handler(initEvent, editor); + } else { + editor.on(key.substring(2), (e: EditorEvent) => + handler(e, editor) + ); + } + } + }); +} + +/** + * 弹出提示框 + */ +export function openAlert( + editor: TinyMCEEditor | null, + option: AlertOption = {} +) { + editor?.windowManager?.open({ + title: option.title ?? '提示', + body: { + type: 'panel', + items: [ + { + type: 'htmlpanel', + html: `

${option.content ?? ''}

` + } + ] + }, + buttons: [ + { + type: 'cancel', + name: 'closeButton', + text: '确定', + primary: true + } + ] + }); +} + +export interface AlertOption { + title?: string; + content?: string; +} + +/** + * 添加首行缩进功能 + */ +export function setupTextIndent(editor: TinyMCEEditor) { + // 注册首行缩进按钮 + editor.ui.registry.addButton('textindent', { + icon: 'indent', + tooltip: '段落首行缩进 (Ctrl+Shift+I)', + onAction: () => { + const selection = editor.selection; + const selectedNode = selection.getNode(); + + // 获取当前段落元素 + let paragraph = selectedNode; + while (paragraph && paragraph.nodeName !== 'P' && paragraph.nodeName !== 'DIV') { + paragraph = paragraph.parentNode as Element; + } + + if (paragraph && (paragraph.nodeName === 'P' || paragraph.nodeName === 'DIV')) { + const currentIndent = (paragraph as HTMLElement).style.textIndent; + + if (currentIndent === '2em' || currentIndent === '32px') { + // 如果已经有首行缩进,则取消 + (paragraph as HTMLElement).style.textIndent = ''; + editor.notificationManager.open({ + text: '已取消段落首行缩进', + type: 'info', + timeout: 2000 + }); + } else { + // 添加首行缩进 + (paragraph as HTMLElement).style.textIndent = '2em'; + editor.notificationManager.open({ + text: '已应用段落首行缩进', + type: 'success', + timeout: 2000 + }); + } + } else { + // 如果没有选中段落,则对当前行应用首行缩进 + const content = selection.getContent(); + if (content) { + // 如果有选择内容,将选择的内容包装在带缩进的段落中 + editor.execCommand('mceInsertContent', false, `

${content}

`); + } else { + // 如果没有选择内容,在当前位置插入带缩进的段落 + editor.execCommand('FormatBlock', false, 'p'); + const newParagraph = selection.getNode(); + if (newParagraph && newParagraph.nodeName === 'P') { + (newParagraph as HTMLElement).style.textIndent = '2em'; + } + } + editor.notificationManager.open({ + text: '已应用段落首行缩进', + type: 'success', + timeout: 2000 + }); + } + } + }); + + // 注册快捷键 + editor.addShortcut('ctrl+shift+i', '段落首行缩进', () => { + // 触发按钮点击事件 + const button = editor.ui.registry.getAll().buttons.textindent; + // @ts-ignore + if (button && button.onAction) { + // @ts-ignore + button.onAction(); + } + }); + + // 添加菜单项 + editor.ui.registry.addMenuItem('textindent', { + text: '首行缩进', + icon: 'indent', + onAction: () => { + const button = editor.ui.registry.getAll().buttons.textindent; + // @ts-ignore + if (button && button.onAction) { + // @ts-ignore + button.onAction(); + } + } + }); +} diff --git a/src/components/UploadCert/index.vue b/src/components/UploadCert/index.vue new file mode 100644 index 0000000..12bd096 --- /dev/null +++ b/src/components/UploadCert/index.vue @@ -0,0 +1,87 @@ + + + + diff --git a/src/components/UploadFile/index.vue b/src/components/UploadFile/index.vue new file mode 100644 index 0000000..ed26080 --- /dev/null +++ b/src/components/UploadFile/index.vue @@ -0,0 +1,142 @@ + + + + diff --git a/src/components/User/index.vue b/src/components/User/index.vue new file mode 100644 index 0000000..7ea6327 --- /dev/null +++ b/src/components/User/index.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/components/UserChoose/choose-search.vue b/src/components/UserChoose/choose-search.vue new file mode 100644 index 0000000..d4498b5 --- /dev/null +++ b/src/components/UserChoose/choose-search.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/UserChoose/index.vue b/src/components/UserChoose/index.vue new file mode 100644 index 0000000..17ff8f7 --- /dev/null +++ b/src/components/UserChoose/index.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/components/UserChoose/types/index.ts b/src/components/UserChoose/types/index.ts new file mode 100644 index 0000000..27e3a37 --- /dev/null +++ b/src/components/UserChoose/types/index.ts @@ -0,0 +1,9 @@ +/** + * 搜索表单类型 + */ +export interface WhereType { + keywords?: string; + nickname?: string; + userId?: number; + phone?: string; +} diff --git a/src/components/UserSelect/index.vue b/src/components/UserSelect/index.vue new file mode 100644 index 0000000..7acbe43 --- /dev/null +++ b/src/components/UserSelect/index.vue @@ -0,0 +1,144 @@ + + + diff --git a/src/components/UserSelect/types/index.ts b/src/components/UserSelect/types/index.ts new file mode 100644 index 0000000..27e3a37 --- /dev/null +++ b/src/components/UserSelect/types/index.ts @@ -0,0 +1,9 @@ +/** + * 搜索表单类型 + */ +export interface WhereType { + keywords?: string; + nickname?: string; + userId?: number; + phone?: string; +} diff --git a/src/components/UserSelect/user-search.vue b/src/components/UserSelect/user-search.vue new file mode 100644 index 0000000..6d8b298 --- /dev/null +++ b/src/components/UserSelect/user-search.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/composables/useSiteData.ts b/src/composables/useSiteData.ts new file mode 100644 index 0000000..62e29db --- /dev/null +++ b/src/composables/useSiteData.ts @@ -0,0 +1,101 @@ +/** + * 网站数据组合式函数 + * 提供统一的网站信息和统计数据访问接口 + */ +import { computed } from 'vue'; +import { useSiteStore } from '@/store/modules/site'; +import { useStatisticsStore } from '@/store/modules/statistics'; + +export function useSiteData() { + const siteStore = useSiteStore(); + const statisticsStore = useStatisticsStore(); + + // 网站信息相关 + const siteInfo = computed(() => siteStore.siteInfo); + const websiteName = computed(() => siteStore.appName); + const websiteLogo = computed(() => siteStore.logo); + const websiteComments = computed(() => siteStore.description); + const websiteDarkLogo = computed(() => siteStore.logo); + const websiteDomain = computed(() => siteStore.domain); + const websiteId = computed(() => siteStore.appId); + const runDays = computed(() => siteStore.runDays); + const siteLoading = computed(() => siteStore.loading); + + // 统计数据相关 + const statistics = computed(() => statisticsStore.statistics); + const userCount = computed(() => statisticsStore.userCount); + const orderCount = computed(() => statisticsStore.orderCount); + const totalSales = computed(() => statisticsStore.totalSales); + const todaySales = computed(() => statisticsStore.todaySales); + const monthSales = computed(() => statisticsStore.monthSales); + const todayOrders = computed(() => statisticsStore.todayOrders); + const todayUsers = computed(() => statisticsStore.todayUsers); + const statisticsLoading = computed(() => statisticsStore.loading); + + // 整体加载状态 + const loading = computed(() => siteLoading.value || statisticsLoading.value); + + // 方法 + const fetchSiteInfo = (forceRefresh = false) => { + return siteStore.fetchSiteInfo(forceRefresh); + }; + + const fetchStatistics = (forceRefresh = false) => { + return statisticsStore.fetchStatistics(forceRefresh); + }; + + const refreshAll = async (forceRefresh = true) => { + await Promise.all([ + fetchSiteInfo(forceRefresh), + fetchStatistics(forceRefresh) + ]); + }; + + const startAutoRefresh = (interval?: number) => { + statisticsStore.startAutoRefresh(interval); + }; + + const stopAutoRefresh = () => { + statisticsStore.stopAutoRefresh(); + }; + + const clearCache = () => { + siteStore.clearCache(); + statisticsStore.clearCache(); + }; + + return { + // 网站信息 + siteInfo, + websiteName, + websiteLogo, + websiteComments, + websiteDarkLogo, + websiteDomain, + websiteId, + runDays, + siteLoading, + + // 统计数据 + statistics, + userCount, + orderCount, + totalSales, + todaySales, + monthSales, + todayOrders, + todayUsers, + statisticsLoading, + + // 状态 + loading, + + // 方法 + fetchSiteInfo, + fetchStatistics, + refreshAll, + startAutoRefresh, + stopAutoRefresh, + clearCache + }; +} diff --git a/src/config/menu.ts b/src/config/menu.ts new file mode 100644 index 0000000..7053780 --- /dev/null +++ b/src/config/menu.ts @@ -0,0 +1,117 @@ +export default [ + { + path: '/assets/server', + component: '/assets/server', + meta: { title: '服务器管理', icon: 'AuditOutlined' } + }, + { + path: '/project', + component: '/project', + meta: { title: '项目管理', icon: 'CodeOutlined' } + }, + { + path: '/customer', + component: '/customer', + meta: { title: '客户管理', icon: 'CrownOutlined' } + }, + { + path: '/content/article', + component: '/content/article', + meta: { title: '文章管理', icon: 'FileSearchOutlined' } + }, + { + path: '/content/docs/:id', + component: '/content/docs', + meta: { title: '文档管理', icon: 'ReadOutlined' } + }, + { + path: '/task/index', + component: '/task/index', + meta: { title: '任务管理', icon: 'HistoryOutlined' } + }, + { + path: '/appstore', + component: '/appstore', + meta: { title: '应用管理', icon: 'AppstoreOutlined' } + }, + { + path: '/system', + redirect: '/system/user', + meta: { title: '系统管理', icon: 'SettingOutlined' }, + children: [ + { + path: '/system/user', + component: '/system/user' + }, + { + path: '/system/role', + component: '/system/role', + meta: { title: '角色管理', icon: 'IdcardOutlined' } + }, + { + path: '/system/menu', + component: '/system/menu', + meta: { title: '菜单管理', icon: 'AppstoreOutlined' } + }, + { + path: '/system/dictionary', + component: '/system/dictionary', + meta: { title: '字典管理', icon: 'ProfileOutlined' } + }, + { + path: '/system/organization', + component: '/system/organization' + }, + { + path: '/system/file', + component: '/system/file', + meta: { title: '文件管理', icon: 'FolderOutlined' } + }, + { + path: '/system/login-record', + component: '/system/login-record', + meta: { title: '登录日志', icon: 'CalendarOutlined' } + }, + { + path: '/system/operation-record', + component: '/system/operation-record', + meta: { title: '操作日志', icon: 'FileSearchOutlined' } + }, + { + path: '/system/tenant', + component: '/system/tenant', + meta: { title: '租户管理', icon: 'TeamOutlined' } + }, + { + path: '/system/setting', + component: '/system/setting', + meta: { title: '系统设置', icon: 'SettingOutlined' } + } + ] + }, + // 账号中心 + { + path: '/user', + hide: true, + redirect: '/user/profile', + meta: { title: '账号中心' }, + children: [ + { + path: '/user/profile', + component: '/user/profile', + meta: { title: '账号中心', hide: false } + }, + { + path: '/user/message', + component: '/user/message', + meta: { title: '我的消息', hide: false } + } + ] + }, + { + path: '/register', + hide: true, + component: '/passport/register/index.vue', + meta: { title: '免费注册' } + } +]; diff --git a/src/config/performance.ts b/src/config/performance.ts new file mode 100644 index 0000000..14b0085 --- /dev/null +++ b/src/config/performance.ts @@ -0,0 +1,396 @@ +/** + * 性能优化配置 + */ + +// 性能配置接口 +export interface PerformanceConfig { + // 缓存配置 + cache: { + memory: { + maxSize: number; + defaultExpiry: number; + }; + persistent: { + maxSize: number; + defaultExpiry: number; + }; + }; + + // 懒加载配置 + lazyLoad: { + delay: number; + timeout: number; + retries: number; + retryDelay: number; + }; + + // 虚拟滚动配置 + virtualScroll: { + itemHeight: number; + buffer: number; + threshold: number; + }; + + // API 请求配置 + api: { + timeout: number; + retries: number; + retryDelay: number; + concurrency: number; + }; + + // 路由配置 + router: { + preloadDelay: number; + cacheSize: number; + performanceThreshold: number; + }; + + // 监控配置 + monitoring: { + enabled: boolean; + sampleRate: number; + reportInterval: number; + }; +} + +// 默认性能配置 +export const defaultPerformanceConfig: PerformanceConfig = { + cache: { + memory: { + maxSize: 200, + defaultExpiry: 5 * 60 * 1000 // 5分钟 + }, + persistent: { + maxSize: 100, + defaultExpiry: 24 * 60 * 60 * 1000 // 24小时 + } + }, + + lazyLoad: { + delay: 200, + timeout: 30000, + retries: 3, + retryDelay: 1000 + }, + + virtualScroll: { + itemHeight: 50, + buffer: 5, + threshold: 100 + }, + + api: { + timeout: 30000, + retries: 3, + retryDelay: 1000, + concurrency: 5 + }, + + router: { + preloadDelay: 2000, + cacheSize: 20, + performanceThreshold: 1000 + }, + + monitoring: { + enabled: process.env.NODE_ENV === 'production', + sampleRate: 0.1, // 10% 采样率 + reportInterval: 60000 // 1分钟上报一次 + } +}; + +// 性能优化管理器 +export class PerformanceManager { + private config: PerformanceConfig; + private reportTimer: number | null = null; + + constructor(config: Partial = {}) { + this.config = { ...defaultPerformanceConfig, ...config }; + this.init(); + } + + private init() { + // 初始化性能监控 + if (this.config.monitoring.enabled) { + this.startMonitoring(); + } + + // 设置全局错误处理 + this.setupErrorHandling(); + + // 优化控制台输出 + this.optimizeConsole(); + } + + // 开始性能监控 + private startMonitoring() { + this.reportTimer = window.setInterval(() => { + this.reportPerformance(); + }, this.config.monitoring.reportInterval); + } + + // 上报性能数据 + private reportPerformance() { + if (Math.random() > this.config.monitoring.sampleRate) { + return; // 采样控制 + } + + try { + const performanceData = this.collectPerformanceData(); + + // 这里可以发送到监控服务 + console.log('Performance Report:', performanceData); + + // 可以发送到后端 + // this.sendToBackend(performanceData); + } catch (error) { + console.warn('Failed to report performance:', error); + } + } + + // 收集性能数据 + private collectPerformanceData() { + const navigation = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming; + const memory = (performance as any).memory; + + return { + // 页面加载性能 + pageLoad: { + domContentLoaded: navigation?.domContentLoadedEventEnd - navigation?.fetchStart, + loadComplete: navigation?.loadEventEnd - navigation?.fetchStart, + firstByte: navigation?.responseStart - navigation?.fetchStart + }, + + // 内存使用 + memory: memory ? { + used: Math.round(memory.usedJSHeapSize / 1024 / 1024), + total: Math.round(memory.totalJSHeapSize / 1024 / 1024), + limit: Math.round(memory.jsHeapSizeLimit / 1024 / 1024) + } : null, + + // 资源加载 + resources: this.getResourceMetrics(), + + // 时间戳 + timestamp: Date.now() + }; + } + + // 获取资源指标 + private getResourceMetrics() { + const resources = performance.getEntriesByType('resource'); + const metrics = { + total: resources.length, + slow: 0, + failed: 0, + avgDuration: 0 + }; + + let totalDuration = 0; + + resources.forEach(resource => { + const duration = resource.duration; + totalDuration += duration; + + if (duration > 2000) { + metrics.slow++; + } + }); + + metrics.avgDuration = Math.round(totalDuration / resources.length); + + return metrics; + } + + // 设置错误处理 + private setupErrorHandling() { + // 全局错误处理 + window.addEventListener('error', (event) => { + this.handleError('JavaScript Error', event.error); + }); + + // Promise 错误处理 + window.addEventListener('unhandledrejection', (event) => { + this.handleError('Unhandled Promise Rejection', event.reason); + }); + + // Vue 错误处理 + if (window.Vue) { + window.Vue.config.errorHandler = (error, instance, info) => { + this.handleError('Vue Error', { error, instance, info }); + }; + } + } + + // 处理错误 + private handleError(type: string, error: any) { + console.error(`${type}:`, error); + + // 可以发送错误到监控服务 + // this.reportError(type, error); + } + + // 优化控制台输出 + private optimizeConsole() { + if (process.env.NODE_ENV === 'production') { + // 生产环境禁用 console.log + console.log = () => {}; + console.debug = () => {}; + console.info = () => {}; + } + } + + // 获取配置 + getConfig(): PerformanceConfig { + return this.config; + } + + // 更新配置 + updateConfig(newConfig: Partial) { + this.config = { ...this.config, ...newConfig }; + } + + // 清理资源 + destroy() { + if (this.reportTimer) { + clearInterval(this.reportTimer); + } + } +} + +// 性能优化建议 +export class PerformanceAdvisor { + // 分析性能并给出建议 + static analyzeAndAdvise() { + const advice: string[] = []; + + // 检查内存使用 + const memory = (performance as any).memory; + if (memory && memory.usedJSHeapSize > memory.jsHeapSizeLimit * 0.8) { + advice.push('内存使用过高,建议清理不必要的缓存和引用'); + } + + // 检查资源加载 + const resources = performance.getEntriesByType('resource'); + const slowResources = resources.filter(r => r.duration > 2000); + if (slowResources.length > 0) { + advice.push(`发现 ${slowResources.length} 个加载缓慢的资源,建议优化`); + } + + // 检查页面加载时间 + const navigation = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming; + if (navigation) { + const loadTime = navigation.loadEventEnd - navigation.fetchStart; + if (loadTime > 3000) { + advice.push('页面加载时间过长,建议优化首屏渲染'); + } + } + + return advice; + } + + // 获取优化建议 + static getOptimizationTips() { + return [ + '使用虚拟滚动处理长列表', + '启用组件懒加载', + '合理使用缓存策略', + '优化图片资源大小', + '减少不必要的重新渲染', + '使用 Web Workers 处理复杂计算', + '启用 HTTP/2 和资源压缩', + '使用 CDN 加速静态资源' + ]; + } +} + +// 全局性能管理器实例 +export const performanceManager = new PerformanceManager(); + +// 性能装饰器 +export function performanceTrack(name: string) { + return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { + const originalMethod = descriptor.value; + + descriptor.value = function (...args: any[]) { + const startTime = performance.now(); + + try { + const result = originalMethod.apply(this, args); + + // 如果是 Promise,等待完成后记录 + if (result && typeof result.then === 'function') { + return result.finally(() => { + const duration = performance.now() - startTime; + console.log(`${name} 执行时间: ${duration.toFixed(2)}ms`); + }); + } + + const duration = performance.now() - startTime; + console.log(`${name} 执行时间: ${duration.toFixed(2)}ms`); + + return result; + } catch (error) { + const duration = performance.now() - startTime; + console.log(`${name} 执行时间: ${duration.toFixed(2)}ms (出错)`); + throw error; + } + }; + + return descriptor; + }; +} + +// 性能检查工具 +export class PerformanceChecker { + // 检查长任务 + static checkLongTasks() { + if ('PerformanceObserver' in window) { + const observer = new PerformanceObserver((list) => { + list.getEntries().forEach((entry) => { + console.warn(`长任务检测: ${entry.duration.toFixed(2)}ms`, entry); + }); + }); + + observer.observe({ entryTypes: ['longtask'] }); + } + } + + // 检查布局抖动 + static checkLayoutShift() { + if ('PerformanceObserver' in window) { + const observer = new PerformanceObserver((list) => { + let clsValue = 0; + + list.getEntries().forEach((entry) => { + if (!(entry as any).hadRecentInput) { + clsValue += (entry as any).value; + } + }); + + if (clsValue > 0.1) { + console.warn(`布局抖动过大: ${clsValue.toFixed(3)}`); + } + }); + + observer.observe({ entryTypes: ['layout-shift'] }); + } + } + + // 检查首次输入延迟 + static checkFirstInputDelay() { + if ('PerformanceObserver' in window) { + const observer = new PerformanceObserver((list) => { + list.getEntries().forEach((entry) => { + const fid = (entry as any).processingStart - entry.startTime; + if (fid > 100) { + console.warn(`首次输入延迟过大: ${fid.toFixed(2)}ms`); + } + }); + }); + + observer.observe({ entryTypes: ['first-input'] }); + } + } +} diff --git a/src/config/setting.ts b/src/config/setting.ts new file mode 100644 index 0000000..215f907 --- /dev/null +++ b/src/config/setting.ts @@ -0,0 +1,78 @@ +// 租户ID +export const TENANT_ID = import.meta.env.VITE_TENANT_ID || 10411; +// 模板ID +export const TEMPLATE_ID = import.meta.env.VITE_TEMPLATE_ID || 10411; +// appSecret +export const APP_SECRET = import.meta.env.VITE_APP_SECRET || ''; +// 开发商官方网站 +export const domain = import.meta.env.VITE_DOMAIN || 'https://your-domain.com'; +// 主节点 +export const SERVER_API_URL = import.meta.env.VITE_SERVER_API_URL || 'https://your-api.com/api'; +// 模块节点 +export const MODULES_API_URL = import.meta.env.VITE_API_URL; +// 文件服务器地址 +export const FILE_SERVER = import.meta.env.VITE_FILE_SERVER || 'https://your-file-server.com'; + +/** + * 以下配置一般不需要修改 + */ +// 接口地址 +export const API_BASE_URL: string = import.meta.env.VITE_API_URL; +export const PROJECT_NAME: string = import.meta.env.VITE_APP_NAME; +// 不显示侧栏的路由 +export const HIDE_SIDEBARS: string[] = ['/home']; +// 不显示页脚的路由 +export const HIDE_FOOTERS: string[] = [ + '/system/dictionary', + '/system/organization', + '/form/advanced' +]; +// 页签同路由不同参数可重复打开的路由 +export const REPEATABLE_TABS: string[] = []; +// 不需要登录的路由 +export const WHITE_LIST: string[] = [ + '/login', + '/register', + '/dealer/register', + '/forget', + '/wx-work-login', + '/token-login', + '/home', + '/bszx/pay-cert/:id' +]; +// 开启 KeepAlive 后仍然不需要缓存的路由地址 +export const KEEP_ALIVE_EXCLUDES: string[] = []; +// 直接指定菜单数据 +// export const USER_MENUS = menu; +export const USER_MENUS: Array | undefined = undefined; +// 首页名称, 为空则取第一个菜单的名称 +export const HOME_TITLE: string | undefined = undefined; +// 首页路径, 为空则取第一个菜单的地址 +export const HOME_PATH: string | undefined = undefined; +// 外层布局的路由地址 +export const LAYOUT_PATH = '/'; +// 刷新路由的路由地址 +export const REDIRECT_PATH = '/redirect'; +// 开启页签栏是否缓存组件 +//export const TAB_KEEP_ALIVE = !import.meta.env.DEV; +export const TAB_KEEP_ALIVE = true; +// token 传递的 header 名称 +export const TOKEN_HEADER_NAME = 'Authorization'; +// token 存储的名称 +export const TOKEN_STORE_NAME = 'access_token'; +// 主题配置存储的名称 +export const THEME_STORE_NAME = 'theme'; +// i18n 缓存的名称 +export const I18N_CACHE_NAME = 'i18n-lang'; +// 是否开启国际化功能 +export const I18N_ENABLE = true; +// 高德地图 key , 自带的只能用于测试, 正式项目请自行到高德地图官网申请 key +export const MAP_KEY = import.meta.env.VITE_MAP_KEY || ''; +// 高德地图 安全密钥 +export const MAP_CODE = import.meta.env.VITE_MAP_CODE || ''; +// WebSoftAdmin 授权码, 自带的只能用于演示, 正式项目请更换为自己的授权码 +export const LICENSE_CODE = import.meta.env.VITE_LICENSE_CODE || ''; +// 缩略图前缀 +export const FILE_THUMBNAIL = FILE_SERVER + '/thumbnail'; +// 文件下载前缀 +export const FILE_DOWNLOAD = FILE_SERVER + '/download'; diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..942e33f --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,20 @@ +/** + * 国际化配置 + */ +import { createI18n } from 'vue-i18n'; +import { I18N_CACHE_NAME } from '@/config/setting'; +import zh_CN from './lang/zh_CN'; +// import zh_TW from './lang/zh_TW'; +import en from './lang/en'; + +const messages = { zh_CN, en }; + +const i18n = createI18n({ + messages, + legacy: false, + silentTranslationWarn: true, + // 默认语言 + locale: localStorage.getItem(I18N_CACHE_NAME) || 'zh_CN' +}); + +export default i18n; diff --git a/src/i18n/lang/en/index.ts b/src/i18n/lang/en/index.ts new file mode 100644 index 0000000..743cea1 --- /dev/null +++ b/src/i18n/lang/en/index.ts @@ -0,0 +1,14 @@ +/** + * 英语 + */ +import route from './route'; +import layout from './layout'; +import login from './login'; +import list from './list'; + +export default { + route, + layout, + login, + list +}; diff --git a/src/i18n/lang/en/layout.ts b/src/i18n/lang/en/layout.ts new file mode 100644 index 0000000..6296d82 --- /dev/null +++ b/src/i18n/lang/en/layout.ts @@ -0,0 +1,80 @@ +/* 主框架 */ +export default { + system: 'WebsoftCMS', + home: 'Home', + header: { + profile: 'Profile', + password: 'Password', + accessKey: 'AccessKey', + system: 'Setting', + logout: 'SignOut' + }, + footer: { + website: 'Website', + document: 'Document', + authorization: 'Authorization', + copyright: 'Copyright © 2021 WebSoft Inc.' + }, + logout: { + title: 'Confirm', + message: 'Are you sure you want to log out?' + }, + setting: { + title: 'Theme Setting', + sideStyles: { + dark: 'Dark Sidebar', + light: 'Light Sidebar' + }, + headStyles: { + light: 'Light Header', + dark: 'Dark Header', + primary: 'Primary Header' + }, + layoutStyles: { + side: 'Side Menu Layout', + top: 'Top Menu Layout', + mix: 'Mix Menu Layout' + }, + colors: { + default: 'Daybreak Blue', + dust: 'Dust Blue', + sunset: 'Sunset Orange', + volcano: 'Volcano', + purple: 'Golden Purple', + cyan: 'Cyan', + green: 'Polar Green', + geekblue: 'Geek Blue' + }, + darkMode: 'Dark Mode', + layoutStyle: 'Navigation Mode', + sideMenuStyle: 'Sidebar Double Menu', + bodyFull: 'Body Fixed Width', + other: 'Other Setting', + fixedHeader: 'Fixed Header', + fixedSidebar: 'Fixed Sidebar', + fixedBody: 'Fixed Body', + logoAutoSize: 'Logo In Header', + styleResponsive: 'Responsive', + colorfulIcon: 'Colorful Icon', + sideUniqueOpen: 'Menu Unique Open', + weakMode: 'Weak Mode', + showFooter: 'Show Footer', + showTabs: 'Show Tabs', + tabStyle: 'Tab Style', + tabStyles: { + default: 'Default', + dot: 'Dot', + card: 'Card' + }, + transitionName: 'Transition', + transitions: { + slideRight: 'Slide Right', + slideBottom: 'Slide Bottom', + zoomIn: 'Zoom In', + zoomOut: 'Zoom Out', + fade: 'Fade' + }, + reset: 'Reset', + tips: 'It will remember your configuration the next time you open it.' + } +}; diff --git a/src/i18n/lang/en/list.ts b/src/i18n/lang/en/list.ts new file mode 100644 index 0000000..f809452 --- /dev/null +++ b/src/i18n/lang/en/list.ts @@ -0,0 +1,17 @@ +/* 列表页面 */ +export default { + // 基础列表 + basic: { + table: { + avatar: 'Avatar', + username: 'Username', + nickname: 'Nickname', + organizationName: 'Organization', + phone: 'Phone', + sexName: 'Sex', + createTime: 'CreateTime', + status: 'Status', + action: 'Action' + } + } +}; diff --git a/src/i18n/lang/en/login.ts b/src/i18n/lang/en/login.ts new file mode 100644 index 0000000..8008760 --- /dev/null +++ b/src/i18n/lang/en/login.ts @@ -0,0 +1,14 @@ +/* 登录界面 */ +export default { + title: 'User Login', + username: 'please input username', + password: 'please input password', + code: 'please input code', + remember: 'remember', + forget: 'forget', + login: 'login', + loading: 'loading', + oldPassword: 'Old', + newPassword: 'New', + confirm: 'Confirm', +}; diff --git a/src/i18n/lang/en/route.ts b/src/i18n/lang/en/route.ts new file mode 100644 index 0000000..557559e --- /dev/null +++ b/src/i18n/lang/en/route.ts @@ -0,0 +1,22 @@ +/* 菜单路由 */ +export default { + login: { _name: 'Login' }, + forget: { _name: 'Forget' }, + dashboard: { + _name: 'Dashboard', + workplace: { _name: 'Workplace' }, + analysis: { _name: 'Analysis' }, + monitor: { _name: 'Monitor' } + }, + result: { + _name: 'Result', + success: { _name: 'Success' }, + fail: { _name: 'Fail' } + }, + exception: { + _name: 'Exception', + '403': { _name: '403' }, + '404': { _name: '404' }, + '500': { _name: '500' } + } +}; diff --git a/src/i18n/lang/zh_CN/index.ts b/src/i18n/lang/zh_CN/index.ts new file mode 100644 index 0000000..282e79e --- /dev/null +++ b/src/i18n/lang/zh_CN/index.ts @@ -0,0 +1,14 @@ +/** + * 简体中文 + */ +import route from './route'; +import layout from './layout'; +import login from './login'; +import list from './list'; + +export default { + route, + layout, + login, + list +}; diff --git a/src/i18n/lang/zh_CN/layout.ts b/src/i18n/lang/zh_CN/layout.ts new file mode 100644 index 0000000..298c673 --- /dev/null +++ b/src/i18n/lang/zh_CN/layout.ts @@ -0,0 +1,81 @@ +const storeName = localStorage.getItem('StoreName') || 'WebSoft Inc'; +/* 主框架 */ +export default { + system: '网宿软件', + home: '主页', + header: { + profile: '个人资料', + password: '修改密码', + accessKey: '秘钥管理', + system: '系统设置', + logout: '退出登录' + }, + footer: { + website: '官网', + document: '文档', + authorization: '授权', + copyright: `© 2013-${new Date().getFullYear()} ${storeName}` + }, + logout: { + title: '提示', + message: '确定要退出登录吗?' + }, + setting: { + title: '整体风格设置', + sideStyles: { + dark: '暗色侧边栏', + light: '亮色侧边栏' + }, + headStyles: { + light: '亮色顶栏', + dark: '暗色顶栏', + primary: '主色顶栏' + }, + layoutStyles: { + side: '左侧菜单布局', + top: '顶部菜单布局', + mix: '混合菜单布局' + }, + colors: { + default: '拂晓蓝', + dust: '薄暮', + sunset: '日暮', + volcano: '火山', + purple: '酱紫', + cyan: '明青', + green: '极光绿', + geekblue: '极客蓝' + }, + darkMode: '开启暗黑模式', + layoutStyle: '导航模式', + sideMenuStyle: '侧栏双排菜单', + bodyFull: '内容区域定宽', + other: '其它配置', + fixedHeader: '固定顶栏区域', + fixedSidebar: '固定侧栏区域', + fixedBody: '固定主体区域', + logoAutoSize: 'Logo置于顶栏', + styleResponsive: '移动端响应式', + colorfulIcon: '侧栏彩色图标', + sideUniqueOpen: '侧栏排他展开', + weakMode: '开启色弱模式', + showFooter: '开启全局页脚', + showTabs: '开启多页签栏', + tabStyle: '页签显示风格', + tabStyles: { + default: '默认', + dot: '圆点', + card: '卡片' + }, + transitionName: '路由切换动画', + transitions: { + slideRight: '滑动消退', + slideBottom: '底部消退', + zoomIn: '放大渐变', + zoomOut: '缩小渐变', + fade: '淡入淡出' + }, + reset: '重置', + tips: '该功能可实时预览各种布局效果, 修改后会缓存在本地, 下次打开会记忆主题配置.' + } +}; diff --git a/src/i18n/lang/zh_CN/list.ts b/src/i18n/lang/zh_CN/list.ts new file mode 100644 index 0000000..3ac85d6 --- /dev/null +++ b/src/i18n/lang/zh_CN/list.ts @@ -0,0 +1,17 @@ +/* 列表页面 */ +export default { + // 基础列表 + basic: { + table: { + avatar: '头像', + username: '账号', + nickname: '昵称', + organizationName: '成员与部门', + phone: '手机号', + sexName: '性别', + createTime: '创建时间', + status: '状态', + action: '操作' + } + } +}; diff --git a/src/i18n/lang/zh_CN/login.ts b/src/i18n/lang/zh_CN/login.ts new file mode 100644 index 0000000..1eab56f --- /dev/null +++ b/src/i18n/lang/zh_CN/login.ts @@ -0,0 +1,14 @@ +/* 登录界面 */ +export default { + title: '用户登录', + username: '请输入登录账号', + password: '请输入登录密码', + code: '请输入验证码', + remember: '记住密码', + forget: '忘记密码', + login: '登录', + loading: '登录中', + oldPassword: '旧密码', + newPassword: '新密码', + confirm: '确认密码', +}; diff --git a/src/i18n/lang/zh_CN/route.ts b/src/i18n/lang/zh_CN/route.ts new file mode 100644 index 0000000..92944ee --- /dev/null +++ b/src/i18n/lang/zh_CN/route.ts @@ -0,0 +1,16 @@ +/* 菜单路由 */ +export default { + login: { _name: '登录' }, + forget: { _name: '忘记密码' }, + result: { + _name: '结果页面', + success: { _name: '成功页' }, + fail: { _name: '失败页' } + }, + exception: { + _name: '异常页面', + '403': { _name: '403' }, + '404': { _name: '404' }, + '500': { _name: '500' } + } +}; diff --git a/src/i18n/use-locale.ts b/src/i18n/use-locale.ts new file mode 100644 index 0000000..010ee5c --- /dev/null +++ b/src/i18n/use-locale.ts @@ -0,0 +1,35 @@ +/** + * AntDesignVue、WebSoftAdmin、Dayjs 国际化配置 + */ +import { ref, watch } from 'vue'; +import { useI18n } from 'vue-i18n'; +import type { Locale } from 'ant-design-vue/es/locale-provider'; +import type { EleLocale } from 'ele-admin-pro/es'; +// AntDesignVue +import zh_CN from 'ant-design-vue/es/locale/zh_CN'; +import en from 'ant-design-vue/es/locale/en_US'; +// WebSoftAdmin +import eleZh_CN from 'ele-admin-pro/es/lang/zh_CN'; +import eleEn from 'ele-admin-pro/es/lang/en_US'; +// Dayjs +import dayjs from 'dayjs'; +import 'dayjs/locale/zh-cn'; +const antLocales = { zh_CN, en }; +const eleLocales = { zh_CN: eleZh_CN, en: eleEn }; + +export function useLocale() { + const { locale } = useI18n(); + const antLocale = ref(); + const eleLocale = ref(); + + watch( + locale, + () => { + antLocale.value = antLocales[locale.value]; + eleLocale.value = eleLocales[locale.value]; + dayjs.locale(locale.value.toLowerCase().replace(/_/g, '-')); + }, + { immediate: true } + ); + return { antLocale, eleLocale }; +} diff --git a/src/layout/components/header-notice.vue b/src/layout/components/header-notice.vue new file mode 100644 index 0000000..0b1031b --- /dev/null +++ b/src/layout/components/header-notice.vue @@ -0,0 +1,133 @@ + + + + + + + + diff --git a/src/layout/components/header-tools.vue b/src/layout/components/header-tools.vue new file mode 100644 index 0000000..2dfe6d5 --- /dev/null +++ b/src/layout/components/header-tools.vue @@ -0,0 +1,311 @@ + + + + + + + + diff --git a/src/layout/components/header-wechat.vue b/src/layout/components/header-wechat.vue new file mode 100644 index 0000000..e804665 --- /dev/null +++ b/src/layout/components/header-wechat.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/src/layout/components/i18n-icon.vue b/src/layout/components/i18n-icon.vue new file mode 100644 index 0000000..32a360f --- /dev/null +++ b/src/layout/components/i18n-icon.vue @@ -0,0 +1,52 @@ + + + + diff --git a/src/layout/components/menu-title.vue b/src/layout/components/menu-title.vue new file mode 100644 index 0000000..168a697 --- /dev/null +++ b/src/layout/components/menu-title.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/layout/components/page-footer.vue b/src/layout/components/page-footer.vue new file mode 100644 index 0000000..fdbb48e --- /dev/null +++ b/src/layout/components/page-footer.vue @@ -0,0 +1,26 @@ + + + + diff --git a/src/layout/components/password-modal.vue b/src/layout/components/password-modal.vue new file mode 100644 index 0000000..885118b --- /dev/null +++ b/src/layout/components/password-modal.vue @@ -0,0 +1,148 @@ + + + + diff --git a/src/layout/components/setting-drawer.vue b/src/layout/components/setting-drawer.vue new file mode 100644 index 0000000..ea2a5f1 --- /dev/null +++ b/src/layout/components/setting-drawer.vue @@ -0,0 +1,747 @@ + + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..59827d2 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,374 @@ + + + + + + + diff --git a/src/layout/menu-icons.ts b/src/layout/menu-icons.ts new file mode 100644 index 0000000..a33954b --- /dev/null +++ b/src/layout/menu-icons.ts @@ -0,0 +1,153 @@ +/** 菜单用到的图标 */ +export { + HomeOutlined, + SettingOutlined, + TeamOutlined, + DesktopOutlined, + FileTextOutlined, + TableOutlined, + AppstoreOutlined, + CheckCircleOutlined, + ExclamationCircleOutlined, + UserOutlined, + TagOutlined, + IdcardOutlined, + BarChartOutlined, + AuditOutlined, + PicLeftOutlined, + BellOutlined, + CloseCircleOutlined, + QuestionCircleOutlined, + SoundOutlined, + ApartmentOutlined, + DashboardOutlined, + OneToOneOutlined, + DragOutlined, + InteractionOutlined, + BankOutlined, + BlockOutlined, + CheckSquareOutlined, + ProfileOutlined, + WarningOutlined, + FolderOutlined, + YoutubeOutlined, + ControlOutlined, + EllipsisOutlined, + CalendarOutlined, + AppstoreAddOutlined, + FileSearchOutlined, + EnvironmentOutlined, + CompassOutlined, + FontSizeOutlined, + SketchOutlined, + BgColorsOutlined, + PrinterOutlined, + QrcodeOutlined, + BarcodeOutlined, + PictureOutlined, + LinkOutlined, + AlertOutlined, + HistoryOutlined, + ChromeOutlined, + CodeOutlined, + AntDesignOutlined, + ReadOutlined, + CrownOutlined, + LaptopOutlined, + ShoppingCartOutlined, + SkinOutlined, + ShopOutlined, + ShoppingOutlined, + AliyunOutlined, + GiftOutlined, + InsuranceOutlined, + FileZipOutlined, + SearchOutlined, + RedEnvelopeOutlined, + MoneyCollectOutlined, + TagsOutlined, + PayCircleOutlined, + RocketOutlined, + BarsOutlined, + WalletOutlined, + UngroupOutlined, + ToolOutlined, + HourglassOutlined, + FormatPainterOutlined, + CarOutlined, + DownloadOutlined, + UploadOutlined, + MailOutlined, + CloudOutlined, + ClearOutlined, + CoffeeOutlined, + CopyrightOutlined, + CompressOutlined, + CalculatorOutlined, + AimOutlined, + AudioOutlined, + BugOutlined, + CloudSyncOutlined, + CommentOutlined, + DisconnectOutlined, + DingtalkOutlined, + ExpandOutlined, + DollarOutlined, + FolderOpenOutlined, + ExperimentOutlined, + ForkOutlined, + FolderAddOutlined, + FunnelPlotOutlined, + GlobalOutlined, + LikeOutlined, + LayoutOutlined, + MergeCellsOutlined, + MehOutlined, + MobileOutlined, + NodeExpandOutlined, + PaperClipOutlined, + ScanOutlined, + ShakeOutlined, + ThunderboltOutlined, + TrademarkOutlined, + UnlockOutlined, + UsbOutlined, + WhatsAppOutlined, + WomanOutlined, + WifiOutlined, + VerifiedOutlined, + UserSwitchOutlined, + UsergroupAddOutlined, + UsergroupDeleteOutlined, + UserAddOutlined, + UserDeleteOutlined, + TranslationOutlined, + TransactionOutlined, + TrophyOutlined, + StarOutlined, + SplitCellsOutlined, + ShareAltOutlined, + RestOutlined, + PartitionOutlined, + MedicineBoxOutlined, + HeartOutlined, + GatewayOutlined, + FlagOutlined, + FireOutlined, + FieldNumberOutlined, + FieldStringOutlined, + AppleOutlined, + AndroidOutlined, + GithubOutlined, + Html5Outlined, + QqOutlined, + AlipayOutlined, + RedditOutlined, + InstagramOutlined, + WechatOutlined, + BorderOutlined, + PieChartOutlined, + AreaChartOutlined, + KeyOutlined, + LockOutlined +} from '@ant-design/icons-vue'; diff --git a/src/lib/port-manager.ts b/src/lib/port-manager.ts new file mode 100644 index 0000000..43caf40 --- /dev/null +++ b/src/lib/port-manager.ts @@ -0,0 +1,355 @@ +/** + * 智能端口管理系统 + * 类似租户识别系统的端口管理解决方案 + */ + +import { getTenantId } from '@/utils/domain'; + +// 端口配置接口 +export interface PortConfig { + port: number; + host: string; + protocol: 'http' | 'https'; + environment: 'development' | 'test' | 'production'; + tenantId?: string | number; + projectName?: string; + lastUsed: number; + isAvailable: boolean; +} + +// 端口分配策略 +export interface PortStrategy { + basePort: number; + portRange: [number, number]; + tenantOffset: number; + environmentOffset: number; + maxRetries: number; +} + +// 端口缓存管理 +class PortCache { + private static readonly CACHE_KEY = 'port-manager-cache'; + private static readonly CACHE_EXPIRY = 24 * 60 * 60 * 1000; // 24小时 + + static get(): Map { + try { + const cached = localStorage.getItem(this.CACHE_KEY); + if (!cached) return new Map(); + + const data = JSON.parse(cached); + const now = Date.now(); + + // 清理过期缓存 + const validEntries = Object.entries(data).filter( + ([_, config]: [string, any]) => + now - config.lastUsed < this.CACHE_EXPIRY + ); + + return new Map(validEntries); + } catch (error) { + console.warn('端口缓存读取失败:', error); + return new Map(); + } + } + + static set(cache: Map): void { + try { + const data = Object.fromEntries(cache); + localStorage.setItem(this.CACHE_KEY, JSON.stringify(data)); + } catch (error) { + console.warn('端口缓存保存失败:', error); + } + } + + static clear(): void { + localStorage.removeItem(this.CACHE_KEY); + } + + static getStats(): { total: number; expired: number; active: number } { + const cache = this.get(); + const now = Date.now(); + let expired = 0; + let active = 0; + + cache.forEach(config => { + if (now - config.lastUsed > this.CACHE_EXPIRY) { + expired++; + } else { + active++; + } + }); + + return { total: cache.size, expired, active }; + } +} + +// 端口工具函数 +class PortUtils { + /** + * 检查端口是否可用 + */ + static async isPortAvailable(port: number, host: string = 'localhost'): Promise { + try { + // 在浏览器环境中,我们无法直接检测端口占用 + // 这里使用一个模拟的检测方法 + const response = await fetch(`http://${host}:${port}`, { + method: 'HEAD', + mode: 'no-cors', + signal: AbortSignal.timeout(1000) + }); + + // 如果能连接到端口,说明端口被占用 + return false; + } catch (error) { + // 连接失败,说明端口可用 + return true; + } + } + + /** + * 获取端口范围内的可用端口 + */ + static async findAvailablePort( + startPort: number, + endPort: number, + host: string = 'localhost' + ): Promise { + for (let port = startPort; port <= endPort; port++) { + if (await this.isPortAvailable(port, host)) { + return port; + } + } + return null; + } + + /** + * 生成端口键 + */ + static generatePortKey( + tenantId: string | number, + environment: string, + projectName?: string + ): string { + const parts = [tenantId, environment]; + if (projectName) parts.push(projectName); + return parts.join('-'); + } + + /** + * 计算租户端口偏移 + */ + static calculateTenantOffset(tenantId: string | number): number { + const id = typeof tenantId === 'string' ? parseInt(tenantId) || 0 : tenantId; + return (id % 1000) * 10; // 每个租户分配10个端口的空间 + } + + /** + * 计算环境端口偏移 + */ + static calculateEnvironmentOffset(environment: string): number { + const offsets = { + 'development': 0, + 'test': 1000, + 'production': 2000 + }; + return offsets[environment as keyof typeof offsets] || 0; + } +} + +// 智能端口管理器 +export class PortManager { + private cache: Map; + private strategy: PortStrategy; + private environment: string; + + constructor(strategy?: Partial) { + this.environment = process.env.NODE_ENV || 'development'; + this.cache = PortCache.get(); + + // 默认策略 + this.strategy = { + basePort: 3000, + portRange: [3000, 9999], + tenantOffset: 10, + environmentOffset: 1000, + maxRetries: 50, + ...strategy + }; + + console.log('🚀 端口管理器初始化完成', { + environment: this.environment, + strategy: this.strategy, + cacheSize: this.cache.size + }); + } + + /** + * 获取推荐端口(智能分配) + */ + async getRecommendedPort(options?: { + tenantId?: string | number; + projectName?: string; + preferredPort?: number; + }): Promise { + const tenantId = options?.tenantId || await getTenantId(); + const projectName = options?.projectName || 'mp-vue'; + const portKey = PortUtils.generatePortKey(tenantId, this.environment, projectName); + + // 1. 检查缓存中的端口 + const cachedPort = this.cache.get(portKey); + if (cachedPort && await PortUtils.isPortAvailable(cachedPort.port)) { + cachedPort.lastUsed = Date.now(); + this.updateCache(portKey, cachedPort); + console.log('📋 使用缓存端口:', cachedPort.port); + return cachedPort; + } + + // 2. 尝试首选端口 + if (options?.preferredPort) { + if (await PortUtils.isPortAvailable(options.preferredPort)) { + const config = this.createPortConfig(options.preferredPort, tenantId, projectName); + this.updateCache(portKey, config); + console.log('✨ 使用首选端口:', options.preferredPort); + return config; + } + } + + // 3. 智能分配端口 + const recommendedPort = await this.allocateSmartPort(tenantId, projectName); + const config = this.createPortConfig(recommendedPort, tenantId, projectName); + this.updateCache(portKey, config); + + console.log('🎯 智能分配端口:', recommendedPort); + return config; + } + + /** + * 智能端口分配算法 + */ + private async allocateSmartPort( + tenantId: string | number, + projectName: string + ): Promise { + const tenantOffset = PortUtils.calculateTenantOffset(tenantId); + const envOffset = PortUtils.calculateEnvironmentOffset(this.environment); + + // 计算推荐端口 + const recommendedPort = this.strategy.basePort + envOffset + tenantOffset; + + // 在推荐端口附近查找可用端口 + const searchRange = 20; // 在推荐端口前后20个端口范围内搜索 + const startPort = Math.max( + recommendedPort - searchRange, + this.strategy.portRange[0] + ); + const endPort = Math.min( + recommendedPort + searchRange, + this.strategy.portRange[1] + ); + + // 优先尝试推荐端口 + if (await PortUtils.isPortAvailable(recommendedPort)) { + return recommendedPort; + } + + // 在范围内查找可用端口 + const availablePort = await PortUtils.findAvailablePort(startPort, endPort); + if (availablePort) { + return availablePort; + } + + // 如果推荐范围内没有可用端口,扩大搜索范围 + const fallbackPort = await PortUtils.findAvailablePort( + this.strategy.portRange[0], + this.strategy.portRange[1] + ); + + if (fallbackPort) { + return fallbackPort; + } + + // 最后的备选方案 + throw new Error(`无法在端口范围 ${this.strategy.portRange[0]}-${this.strategy.portRange[1]} 内找到可用端口`); + } + + /** + * 创建端口配置 + */ + private createPortConfig( + port: number, + tenantId: string | number, + projectName: string + ): PortConfig { + return { + port, + host: 'localhost', + protocol: 'http', + environment: this.environment as any, + tenantId, + projectName, + lastUsed: Date.now(), + isAvailable: true + }; + } + + /** + * 更新缓存 + */ + private updateCache(key: string, config: PortConfig): void { + this.cache.set(key, config); + PortCache.set(this.cache); + } + + /** + * 获取端口使用统计 + */ + getPortStats(): { + cacheStats: ReturnType; + currentPorts: PortConfig[]; + strategy: PortStrategy; + } { + return { + cacheStats: PortCache.getStats(), + currentPorts: Array.from(this.cache.values()), + strategy: this.strategy + }; + } + + /** + * 清理过期端口缓存 + */ + cleanupExpiredPorts(): number { + const now = Date.now(); + const expiry = 24 * 60 * 60 * 1000; // 24小时 + let cleaned = 0; + + this.cache.forEach((config, key) => { + if (now - config.lastUsed > expiry) { + this.cache.delete(key); + cleaned++; + } + }); + + if (cleaned > 0) { + PortCache.set(this.cache); + console.log(`🧹 清理了 ${cleaned} 个过期端口缓存`); + } + + return cleaned; + } + + /** + * 重置端口缓存 + */ + resetCache(): void { + this.cache.clear(); + PortCache.clear(); + console.log('🔄 端口缓存已重置'); + } +} + +// 导出默认实例 +export const portManager = new PortManager(); + +// 导出工具函数 +export { PortUtils, PortCache }; diff --git a/src/lib/port-strategy.ts b/src/lib/port-strategy.ts new file mode 100644 index 0000000..4cc3da5 --- /dev/null +++ b/src/lib/port-strategy.ts @@ -0,0 +1,415 @@ +/** + * 环境端口策略配置 + * 类似租户识别系统的环境优先级策略 + */ + +import type { PortStrategy } from './port-manager'; + +// 环境类型 +export type Environment = 'development' | 'test' | 'staging' | 'production'; + +// 端口策略优先级 +export interface PortPriority { + environment: Environment; + priority: number; // 数字越小优先级越高 + description: string; +} + +// 环境端口策略配置 +export interface EnvironmentPortStrategy extends PortStrategy { + environment: Environment; + priority: number; + autoDetect: boolean; + fallbackStrategy?: EnvironmentPortStrategy; + restrictions: { + allowedHosts: string[]; + blockedPorts: number[]; + requireHttps: boolean; + }; +} + +// 端口分配模式 +export enum PortAllocationMode { + TENANT_BASED = 'tenant-based', // 基于租户分配 + SEQUENTIAL = 'sequential', // 顺序分配 + RANDOM = 'random', // 随机分配 + HASH_BASED = 'hash-based' // 基于哈希分配 +} + +// 环境检测器 +export class EnvironmentDetector { + /** + * 检测当前环境 + */ + static detectEnvironment(): Environment { + // 1. 检查环境变量 + const nodeEnv = process.env.NODE_ENV; + if (nodeEnv) { + switch (nodeEnv.toLowerCase()) { + case 'development': + case 'dev': + return 'development'; + case 'test': + case 'testing': + return 'test'; + case 'staging': + case 'stage': + return 'staging'; + case 'production': + case 'prod': + return 'production'; + } + } + + // 2. 检查域名 + const hostname = window.location.hostname; + if (hostname.includes('localhost') || hostname.includes('127.0.0.1')) { + return 'development'; + } + if (hostname.includes('test') || hostname.includes('staging')) { + return 'test'; + } + if (hostname.includes('prod') || hostname.includes('www')) { + return 'production'; + } + + // 3. 检查端口 + const port = window.location.port; + if (port && parseInt(port) < 4000) { + return 'development'; + } + + // 默认返回开发环境 + return 'development'; + } + + /** + * 获取环境建议 + */ + static getEnvironmentRecommendation(): { + detected: Environment; + confidence: number; + reasons: string[]; + suggestions: string[]; + } { + const reasons: string[] = []; + const suggestions: string[] = []; + let confidence = 0; + + const nodeEnv = process.env.NODE_ENV; + const hostname = window.location.hostname; + const port = window.location.port; + const protocol = window.location.protocol; + + // 分析环境变量 + if (nodeEnv) { + reasons.push(`NODE_ENV: ${nodeEnv}`); + confidence += 40; + } else { + suggestions.push('建议设置 NODE_ENV 环境变量'); + } + + // 分析域名 + if (hostname.includes('localhost')) { + reasons.push('域名包含 localhost'); + confidence += 30; + } else if (hostname.includes('test')) { + reasons.push('域名包含 test'); + confidence += 25; + } else if (hostname.includes('prod')) { + reasons.push('域名包含 prod'); + confidence += 35; + } + + // 分析协议 + if (protocol === 'https:') { + reasons.push('使用 HTTPS 协议'); + confidence += 10; + } else { + suggestions.push('生产环境建议使用 HTTPS'); + } + + // 分析端口 + if (port) { + const portNum = parseInt(port); + if (portNum >= 3000 && portNum < 4000) { + reasons.push('使用开发端口范围'); + confidence += 15; + } + } + + return { + detected: this.detectEnvironment(), + confidence: Math.min(confidence, 100), + reasons, + suggestions + }; + } +} + +// 端口策略管理器 +export class PortStrategyManager { + private strategies: Map; + private currentEnvironment: Environment; + + constructor() { + this.currentEnvironment = EnvironmentDetector.detectEnvironment(); + this.strategies = new Map(); + this.initializeDefaultStrategies(); + } + + /** + * 初始化默认策略 + */ + private initializeDefaultStrategies(): void { + // 开发环境策略 + this.strategies.set('development', { + environment: 'development', + priority: 1, + basePort: 3000, + portRange: [3000, 3999], + tenantOffset: 10, + environmentOffset: 0, + maxRetries: 50, + autoDetect: true, + restrictions: { + allowedHosts: ['localhost', '127.0.0.1', '0.0.0.0'], + blockedPorts: [], + requireHttps: false + } + }); + + // 测试环境策略 + this.strategies.set('test', { + environment: 'test', + priority: 2, + basePort: 4000, + portRange: [4000, 4999], + tenantOffset: 5, + environmentOffset: 1000, + maxRetries: 30, + autoDetect: true, + restrictions: { + allowedHosts: ['localhost', '127.0.0.1', 'test.local'], + blockedPorts: [4444, 4567], // 避免与其他测试工具冲突 + requireHttps: false + } + }); + + // 预发布环境策略 + this.strategies.set('staging', { + environment: 'staging', + priority: 3, + basePort: 5000, + portRange: [5000, 5999], + tenantOffset: 3, + environmentOffset: 2000, + maxRetries: 20, + autoDetect: true, + restrictions: { + allowedHosts: ['staging.local', 'stage.example.com'], + blockedPorts: [], + requireHttps: true + } + }); + + // 生产环境策略 + this.strategies.set('production', { + environment: 'production', + priority: 4, + basePort: 8080, + portRange: [8080, 8999], + tenantOffset: 1, + environmentOffset: 5000, + maxRetries: 10, + autoDetect: false, // 生产环境不自动检测 + restrictions: { + allowedHosts: ['0.0.0.0'], // 生产环境通常绑定所有接口 + blockedPorts: [8080, 8443], // 避免与常用服务冲突 + requireHttps: true + } + }); + } + + /** + * 获取当前环境策略 + */ + getCurrentStrategy(): EnvironmentPortStrategy { + const strategy = this.strategies.get(this.currentEnvironment); + if (!strategy) { + console.warn(`未找到环境 ${this.currentEnvironment} 的策略,使用开发环境策略`); + return this.strategies.get('development')!; + } + return strategy; + } + + /** + * 获取指定环境策略 + */ + getStrategy(environment: Environment): EnvironmentPortStrategy | undefined { + return this.strategies.get(environment); + } + + /** + * 设置环境策略 + */ + setStrategy(environment: Environment, strategy: EnvironmentPortStrategy): void { + this.strategies.set(environment, strategy); + console.log(`✅ 已更新 ${environment} 环境的端口策略`); + } + + /** + * 获取推荐策略(基于环境优先级) + */ + getRecommendedStrategy(): { + primary: EnvironmentPortStrategy; + fallback: EnvironmentPortStrategy[]; + reasoning: string[]; + } { + const current = this.getCurrentStrategy(); + const reasoning: string[] = []; + const fallback: EnvironmentPortStrategy[] = []; + + reasoning.push(`当前环境: ${this.currentEnvironment}`); + reasoning.push(`优先级: ${current.priority}`); + + // 获取备选策略(按优先级排序) + const allStrategies = Array.from(this.strategies.values()) + .filter(s => s.environment !== this.currentEnvironment) + .sort((a, b) => a.priority - b.priority); + + fallback.push(...allStrategies); + + // 环境特定的推理 + switch (this.currentEnvironment) { + case 'development': + reasoning.push('开发环境优先考虑端口可用性和调试便利性'); + break; + case 'test': + reasoning.push('测试环境需要隔离性和可重复性'); + break; + case 'staging': + reasoning.push('预发布环境模拟生产环境配置'); + break; + case 'production': + reasoning.push('生产环境优先考虑安全性和稳定性'); + break; + } + + return { primary: current, fallback, reasoning }; + } + + /** + * 验证端口策略 + */ + validateStrategy(strategy: EnvironmentPortStrategy): { + isValid: boolean; + errors: string[]; + warnings: string[]; + } { + const errors: string[] = []; + const warnings: string[] = []; + + // 检查端口范围 + if (strategy.portRange[0] >= strategy.portRange[1]) { + errors.push('端口范围无效:起始端口必须小于结束端口'); + } + + if (strategy.portRange[0] < 1024 && strategy.environment === 'production') { + warnings.push('生产环境使用系统端口(<1024)可能需要管理员权限'); + } + + // 检查基础端口 + if (strategy.basePort < strategy.portRange[0] || strategy.basePort > strategy.portRange[1]) { + errors.push('基础端口不在允许的端口范围内'); + } + + // 检查租户偏移 + if (strategy.tenantOffset <= 0) { + warnings.push('租户偏移为0可能导致端口冲突'); + } + + // 检查环境特定规则 + if (strategy.environment === 'production' && !strategy.restrictions.requireHttps) { + warnings.push('生产环境建议启用 HTTPS'); + } + + if (strategy.environment === 'development' && strategy.restrictions.requireHttps) { + warnings.push('开发环境启用 HTTPS 可能增加配置复杂度'); + } + + return { + isValid: errors.length === 0, + errors, + warnings + }; + } + + /** + * 获取环境统计信息 + */ + getEnvironmentStats(): { + current: Environment; + available: Environment[]; + strategies: Array<{ + environment: Environment; + priority: number; + portRange: [number, number]; + isValid: boolean; + }>; + } { + const strategies = Array.from(this.strategies.entries()).map(([env, strategy]) => ({ + environment: env, + priority: strategy.priority, + portRange: strategy.portRange, + isValid: this.validateStrategy(strategy).isValid + })); + + return { + current: this.currentEnvironment, + available: Array.from(this.strategies.keys()), + strategies: strategies.sort((a, b) => a.priority - b.priority) + }; + } + + /** + * 切换环境 + */ + switchEnvironment(environment: Environment): boolean { + if (!this.strategies.has(environment)) { + console.error(`环境 ${environment} 不存在`); + return false; + } + + this.currentEnvironment = environment; + console.log(`🔄 已切换到 ${environment} 环境`); + return true; + } +} + +// 导出默认实例 +export const portStrategyManager = new PortStrategyManager(); + +// 导出环境优先级配置 +export const ENVIRONMENT_PRIORITIES: PortPriority[] = [ + { + environment: 'development', + priority: 1, + description: '开发环境 - 最高优先级,注重便利性' + }, + { + environment: 'test', + priority: 2, + description: '测试环境 - 高优先级,注重隔离性' + }, + { + environment: 'staging', + priority: 3, + description: '预发布环境 - 中等优先级,模拟生产' + }, + { + environment: 'production', + priority: 4, + description: '生产环境 - 最低优先级,注重安全性' + } +]; diff --git a/src/lib/tenant-port-manager.ts b/src/lib/tenant-port-manager.ts new file mode 100644 index 0000000..dd3c93d --- /dev/null +++ b/src/lib/tenant-port-manager.ts @@ -0,0 +1,411 @@ +/** + * 租户端口管理器 + * 集成租户识别系统和端口管理系统 + */ + +import { getTenantId } from '@/utils/domain'; +import { getTenantInfo } from '@/api/layout'; +import { PortManager, type PortConfig } from './port-manager'; +import { portStrategyManager, EnvironmentDetector } from './port-strategy'; +import type { Environment } from './port-strategy'; + +// 租户端口绑定配置 +export interface TenantPortBinding { + tenantId: string | number; + tenantCode: string; + environment: Environment; + assignedPort: number; + customDomain?: string; + isActive: boolean; + createdAt: number; + lastUsed: number; + metadata: { + projectName: string; + version: string; + description?: string; + }; +} + +// 端口分配结果 +export interface PortAllocationResult { + success: boolean; + port?: number; + binding?: TenantPortBinding; + error?: string; + fallbackPorts?: number[]; + recommendations?: string[]; +} + +// 租户端口缓存管理 +class TenantPortCache { + private static readonly CACHE_KEY = 'tenant-port-bindings'; + private static readonly CACHE_EXPIRY = 7 * 24 * 60 * 60 * 1000; // 7天 + + static get(): Map { + try { + const cached = localStorage.getItem(this.CACHE_KEY); + if (!cached) return new Map(); + + const data = JSON.parse(cached); + const now = Date.now(); + + // 清理过期缓存 + const validEntries = Object.entries(data).filter( + ([_, binding]: [string, any]) => + now - binding.lastUsed < this.CACHE_EXPIRY + ); + + return new Map(validEntries); + } catch (error) { + console.warn('租户端口缓存读取失败:', error); + return new Map(); + } + } + + static set(cache: Map): void { + try { + const data = Object.fromEntries(cache); + localStorage.setItem(this.CACHE_KEY, JSON.stringify(data)); + } catch (error) { + console.warn('租户端口缓存保存失败:', error); + } + } + + static clear(): void { + localStorage.removeItem(this.CACHE_KEY); + } + + static generateKey(tenantId: string | number, environment: Environment): string { + return `${tenantId}-${environment}`; + } +} + +// 租户端口管理器 +export class TenantPortManager { + private portManager: PortManager; + private bindings: Map; + private currentEnvironment: Environment; + + constructor() { + this.portManager = new PortManager(); + this.bindings = TenantPortCache.get(); + this.currentEnvironment = EnvironmentDetector.detectEnvironment(); + + console.log('🏢 租户端口管理器初始化完成', { + environment: this.currentEnvironment, + bindingsCount: this.bindings.size + }); + } + + /** + * 为租户分配端口(主要方法) + */ + async allocatePortForTenant(options?: { + tenantId?: string | number; + preferredPort?: number; + forceNew?: boolean; + }): Promise { + try { + // 1. 获取租户信息 + const tenantId = options?.tenantId || await getTenantId(); + const tenantInfo = await getTenantInfo(); + + if (!tenantId) { + return { + success: false, + error: '无法获取租户ID', + recommendations: ['请检查租户配置', '确保已正确设置租户识别'] + }; + } + + // 2. 检查现有绑定 + const bindingKey = TenantPortCache.generateKey(tenantId, this.currentEnvironment); + const existingBinding = this.bindings.get(bindingKey); + + if (existingBinding && !options?.forceNew) { + // 验证现有端口是否仍然可用 + if (await this.validatePortBinding(existingBinding)) { + existingBinding.lastUsed = Date.now(); + this.updateBinding(bindingKey, existingBinding); + + console.log('📋 使用现有租户端口绑定:', existingBinding.assignedPort); + return { + success: true, + port: existingBinding.assignedPort, + binding: existingBinding + }; + } else { + console.warn('⚠️ 现有端口绑定已失效,重新分配'); + this.bindings.delete(bindingKey); + } + } + + // 3. 分配新端口 + const portConfig = await this.portManager.getRecommendedPort({ + tenantId, + projectName: tenantInfo?.name || 'mp-vue', + preferredPort: options?.preferredPort + }); + + // 4. 创建租户端口绑定 + const binding = this.createTenantBinding(tenantId, tenantInfo, portConfig); + this.updateBinding(bindingKey, binding); + + console.log('🎯 为租户分配新端口:', { + tenantId, + port: binding.assignedPort, + environment: this.currentEnvironment + }); + + return { + success: true, + port: binding.assignedPort, + binding, + recommendations: this.generateRecommendations(binding) + }; + + } catch (error) { + console.error('❌ 租户端口分配失败:', error); + return { + success: false, + error: error instanceof Error ? error.message : '未知错误', + recommendations: ['检查网络连接', '验证租户配置', '尝试重新启动服务'] + }; + } + } + + /** + * 验证端口绑定是否有效 + */ + private async validatePortBinding(binding: TenantPortBinding): Promise { + try { + // 检查端口是否仍然可用 + const response = await fetch(`http://localhost:${binding.assignedPort}`, { + method: 'HEAD', + mode: 'no-cors', + signal: AbortSignal.timeout(2000) + }); + + // 如果能连接,说明端口被占用(可能是我们自己的服务) + return true; + } catch (error) { + // 连接失败,端口可能已释放 + return false; + } + } + + /** + * 创建租户端口绑定 + */ + private createTenantBinding( + tenantId: string | number, + tenantInfo: any, + portConfig: PortConfig + ): TenantPortBinding { + return { + tenantId, + tenantCode: tenantInfo?.code || String(tenantId), + environment: this.currentEnvironment, + assignedPort: portConfig.port, + customDomain: tenantInfo?.domain, + isActive: true, + createdAt: Date.now(), + lastUsed: Date.now(), + metadata: { + projectName: portConfig.projectName || 'mp-vue', + version: '1.0.0', + description: `${tenantInfo?.name || '租户'} - ${this.currentEnvironment}环境` + } + }; + } + + /** + * 更新绑定缓存 + */ + private updateBinding(key: string, binding: TenantPortBinding): void { + this.bindings.set(key, binding); + TenantPortCache.set(this.bindings); + } + + /** + * 生成建议 + */ + private generateRecommendations(binding: TenantPortBinding): string[] { + const recommendations: string[] = []; + const strategy = portStrategyManager.getCurrentStrategy(); + + // 环境特定建议 + switch (binding.environment) { + case 'development': + recommendations.push('开发环境:建议配置热重载和调试工具'); + recommendations.push(`访问地址:http://localhost:${binding.assignedPort}`); + break; + case 'test': + recommendations.push('测试环境:建议配置自动化测试和监控'); + break; + case 'production': + recommendations.push('生产环境:建议配置HTTPS和负载均衡'); + if (binding.customDomain) { + recommendations.push(`自定义域名:${binding.customDomain}`); + } + break; + } + + // 端口范围建议 + if (binding.assignedPort < strategy.portRange[0] || binding.assignedPort > strategy.portRange[1]) { + recommendations.push('⚠️ 分配的端口超出推荐范围,可能存在冲突风险'); + } + + return recommendations; + } + + /** + * 获取租户端口信息 + */ + async getTenantPortInfo(tenantId?: string | number): Promise<{ + current?: TenantPortBinding; + history: TenantPortBinding[]; + recommendations: string[]; + }> { + const targetTenantId = tenantId || await getTenantId(); + const history: TenantPortBinding[] = []; + let current: TenantPortBinding | undefined; + + // 查找当前和历史绑定 + this.bindings.forEach(binding => { + if (binding.tenantId === targetTenantId) { + if (binding.environment === this.currentEnvironment && binding.isActive) { + current = binding; + } + history.push(binding); + } + }); + + // 按时间排序 + history.sort((a, b) => b.lastUsed - a.lastUsed); + + const recommendations = current + ? this.generateRecommendations(current) + : ['当前环境暂无端口绑定,建议调用 allocatePortForTenant 分配端口']; + + return { current, history, recommendations }; + } + + /** + * 释放租户端口 + */ + async releaseTenantPort(tenantId?: string | number): Promise { + try { + const targetTenantId = tenantId || await getTenantId(); + const bindingKey = TenantPortCache.generateKey(targetTenantId, this.currentEnvironment); + + const binding = this.bindings.get(bindingKey); + if (binding) { + binding.isActive = false; + this.updateBinding(bindingKey, binding); + console.log(`🔓 已释放租户 ${targetTenantId} 的端口 ${binding.assignedPort}`); + return true; + } + + return false; + } catch (error) { + console.error('释放租户端口失败:', error); + return false; + } + } + + /** + * 获取所有租户端口统计 + */ + getAllTenantsPortStats(): { + totalBindings: number; + activeBindings: number; + environmentStats: Record; + portRangeUsage: { min: number; max: number; average: number }; + topTenants: Array<{ tenantId: string | number; bindingsCount: number }>; + } { + const stats = { + totalBindings: this.bindings.size, + activeBindings: 0, + environmentStats: {} as Record, + portRangeUsage: { min: Infinity, max: 0, average: 0 }, + topTenants: [] as Array<{ tenantId: string | number; bindingsCount: number }> + }; + + const tenantCounts = new Map(); + let portSum = 0; + + this.bindings.forEach(binding => { + // 活跃绑定统计 + if (binding.isActive) { + stats.activeBindings++; + } + + // 环境统计 + stats.environmentStats[binding.environment] = + (stats.environmentStats[binding.environment] || 0) + 1; + + // 端口范围统计 + stats.portRangeUsage.min = Math.min(stats.portRangeUsage.min, binding.assignedPort); + stats.portRangeUsage.max = Math.max(stats.portRangeUsage.max, binding.assignedPort); + portSum += binding.assignedPort; + + // 租户统计 + const count = tenantCounts.get(binding.tenantId) || 0; + tenantCounts.set(binding.tenantId, count + 1); + }); + + // 计算平均端口 + stats.portRangeUsage.average = stats.totalBindings > 0 + ? Math.round(portSum / stats.totalBindings) + : 0; + + // 修复无限大的情况 + if (stats.portRangeUsage.min === Infinity) { + stats.portRangeUsage.min = 0; + } + + // 排序租户使用量 + stats.topTenants = Array.from(tenantCounts.entries()) + .map(([tenantId, count]) => ({ tenantId, bindingsCount: count })) + .sort((a, b) => b.bindingsCount - a.bindingsCount) + .slice(0, 10); + + return stats; + } + + /** + * 清理过期绑定 + */ + cleanupExpiredBindings(): number { + const now = Date.now(); + const expiry = 7 * 24 * 60 * 60 * 1000; // 7天 + let cleaned = 0; + + this.bindings.forEach((binding, key) => { + if (now - binding.lastUsed > expiry) { + this.bindings.delete(key); + cleaned++; + } + }); + + if (cleaned > 0) { + TenantPortCache.set(this.bindings); + console.log(`🧹 清理了 ${cleaned} 个过期的租户端口绑定`); + } + + return cleaned; + } + + /** + * 重置所有绑定 + */ + resetAllBindings(): void { + this.bindings.clear(); + TenantPortCache.clear(); + console.log('🔄 所有租户端口绑定已重置'); + } +} + +// 导出默认实例 +export const tenantPortManager = new TenantPortManager(); diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..876546c --- /dev/null +++ b/src/main.ts @@ -0,0 +1,16 @@ +import { createApp } from 'vue'; +import App from './App.vue'; +import store from './store'; +import router from './router'; +import permission from './utils/permission'; +import i18n from './i18n'; +import './styles/index.less'; + +const app = createApp(App); + +app.use(store); +app.use(router); +app.use(permission); +app.use(i18n); + +app.mount('#app'); diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..23ff73a --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,86 @@ +/** + * 路由配置 + */ +import NProgress from 'nprogress'; +import type { _RouteLocationBase } from 'vue-router'; +import { createRouter, createWebHistory } from 'vue-router'; +import { WHITE_LIST, REDIRECT_PATH, LAYOUT_PATH } from '@/config/setting'; +import { useUserStore } from '@/store/modules/user'; +import { getToken } from '@/utils/token-util'; +import { routes, getMenuRoutes } from './routes'; +// import { useTenantStore } from '@/store/modules/tenant'; + +NProgress.configure({ + speed: 200, + minimum: 0.02, + trickleSpeed: 200, + showSpinner: false +}); + +const router = createRouter({ + routes, + history: createWebHistory(), + scrollBehavior() { + return { top: 0 }; + } +}); + +// 标记动态路由是否已经注册 +let dynamicRoutesRegistered = false; + +// 重置动态路由注册状态的函数 +export function resetDynamicRoutes() { + dynamicRoutesRegistered = false; +} + +/** + * 路由守卫 + */ +router.beforeEach(async (to, from) => { + if (!from.path.includes(REDIRECT_PATH)) { + NProgress.start(); + } + // 租户信息 + // const tenantStore = useTenantStore(); + // await tenantStore.fetchTenantInfo(); + if (!getToken()) { + // 未登录跳转登录界面 + if (!WHITE_LIST.includes(to.path)) { + return { + path: '/login', + query: to.path === LAYOUT_PATH ? {} : { from: to.path } + }; + } + return; + } + + // 注册动态路由 + const userStore = useUserStore(); + if (!userStore.menus && !dynamicRoutesRegistered) { + const { menus, homePath } = await userStore.fetchUserInfo(); + if (menus) { + const menuRoute = getMenuRoutes(menus, homePath); + router.addRoute(menuRoute); + dynamicRoutesRegistered = true; + + // 只有当访问根路径时才跳转到首页 + if (to.path === LAYOUT_PATH) { + return { path: homePath || '/dashboard', replace: true }; + } + + // 对于其他路径,只有在路由确实不存在时才跳转 + // 这避免了已存在页面的不必要跳转 + return { ...to, replace: true }; + } + } +}); + +router.afterEach((to) => { + if (!to.path.includes(REDIRECT_PATH) && NProgress.isStarted()) { + setTimeout(() => { + NProgress.done(true); + }, 200); + } +}); + +export default router; diff --git a/src/router/performance.ts b/src/router/performance.ts new file mode 100644 index 0000000..37d7d43 --- /dev/null +++ b/src/router/performance.ts @@ -0,0 +1,313 @@ +/** + * 路由性能优化 + */ +import type { Router, RouteLocationNormalized } from 'vue-router'; +import { routePerformanceMonitor } from '@/utils/performance'; +import { componentPreloader } from '@/utils/lazy-load'; + +// 路由预加载配置 +const PRELOAD_ROUTES = [ + '/dashboard', + '/user/profile', + '/system/user', + '/system/role' +]; + +// 路由性能优化类 +export class RoutePerformanceOptimizer { + private router: Router; + private preloadTimer: number | null = null; + + constructor(router: Router) { + this.router = router; + this.setupOptimizations(); + } + + private setupOptimizations() { + // 路由性能监控 + this.setupPerformanceMonitoring(); + + // 路由预加载 + this.setupRoutePreloading(); + + // 路由缓存优化 + this.setupRouteCaching(); + } + + // 设置性能监控 + private setupPerformanceMonitoring() { + this.router.beforeEach((to, from) => { + routePerformanceMonitor.startRouteTimer(); + return true; + }); + + this.router.afterEach((to, from) => { + routePerformanceMonitor.endRouteTimer(to.path); + }); + } + + // 设置路由预加载 + private setupRoutePreloading() { + this.router.afterEach((to) => { + // 延迟预加载相关路由 + if (this.preloadTimer) { + clearTimeout(this.preloadTimer); + } + + this.preloadTimer = window.setTimeout(() => { + this.preloadRelatedRoutes(to); + }, 2000); // 2秒后开始预加载 + }); + } + + // 预加载相关路由 + private preloadRelatedRoutes(currentRoute: RouteLocationNormalized) { + const routesToPreload = this.getRelatedRoutes(currentRoute.path); + + routesToPreload.forEach(routePath => { + const route = this.router.resolve(routePath); + if (route.matched.length > 0) { + const component = route.matched[route.matched.length - 1].components?.default; + if (component && typeof component === 'function') { + componentPreloader.preload(routePath, component as () => Promise); + } + } + }); + } + + // 获取相关路由 + private getRelatedRoutes(currentPath: string): string[] { + const related: string[] = []; + + // 根据当前路径推断可能访问的路由 + if (currentPath === '/') { + related.push(...PRELOAD_ROUTES); + } else if (currentPath.startsWith('/system')) { + related.push('/system/user', '/system/role', '/system/menu'); + } else if (currentPath.startsWith('/cms')) { + related.push('/cms/dashboard', '/cms/setting'); + } else if (currentPath.startsWith('/bszx')) { + related.push('/bszx/dashboard', '/bszx/ranking'); + } + + return related.filter(path => path !== currentPath); + } + + // 设置路由缓存 + private setupRouteCaching() { + // 这里可以实现路由级别的缓存策略 + // 例如缓存路由组件、路由数据等 + } + + // 清理资源 + destroy() { + if (this.preloadTimer) { + clearTimeout(this.preloadTimer); + } + } +} + +// 路由懒加载优化 +export function optimizedLazyRoute(loader: () => Promise) { + return async () => { + // 检查是否已经预加载 + const preloaded = componentPreloader.get(loader.toString()); + if (preloaded) { + return preloaded; + } + + // 正常加载 + return loader(); + }; +} + +// 智能路由预取 +export class SmartRoutePrefetcher { + private router: Router; + private prefetchQueue: Set = new Set(); + private isIdle = true; + + constructor(router: Router) { + this.router = router; + this.setupIdleDetection(); + } + + // 设置空闲检测 + private setupIdleDetection() { + let idleTimer: number; + + const resetIdleTimer = () => { + this.isIdle = false; + clearTimeout(idleTimer); + idleTimer = window.setTimeout(() => { + this.isIdle = true; + this.processPrefetchQueue(); + }, 2000); + }; + + // 监听用户活动 + ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart'].forEach(event => { + document.addEventListener(event, resetIdleTimer, true); + }); + + resetIdleTimer(); + } + + // 添加到预取队列 + addToPrefetchQueue(routePath: string) { + this.prefetchQueue.add(routePath); + + if (this.isIdle) { + this.processPrefetchQueue(); + } + } + + // 处理预取队列 + private async processPrefetchQueue() { + if (!this.isIdle || this.prefetchQueue.size === 0) { + return; + } + + const routePath = this.prefetchQueue.values().next().value; + this.prefetchQueue.delete(routePath); + + try { + const route = this.router.resolve(routePath); + if (route.matched.length > 0) { + const component = route.matched[route.matched.length - 1].components?.default; + if (component && typeof component === 'function') { + await componentPreloader.preload(routePath, component as () => Promise); + } + } + } catch (error) { + console.warn(`Failed to prefetch route ${routePath}:`, error); + } + + // 继续处理队列 + if (this.isIdle && this.prefetchQueue.size > 0) { + setTimeout(() => this.processPrefetchQueue(), 100); + } + } +} + +// 路由性能分析器 +export class RoutePerformanceAnalyzer { + private router: Router; + private performanceData: Map = new Map(); + + constructor(router: Router) { + this.router = router; + this.setupAnalysis(); + } + + private setupAnalysis() { + let startTime: number; + + this.router.beforeEach((to) => { + startTime = performance.now(); + return true; + }); + + this.router.afterEach((to) => { + const duration = performance.now() - startTime; + this.recordPerformance(to.path, duration); + }); + } + + private recordPerformance(path: string, duration: number) { + if (!this.performanceData.has(path)) { + this.performanceData.set(path, []); + } + + const data = this.performanceData.get(path)!; + data.push(duration); + + // 只保留最近10次记录 + if (data.length > 10) { + data.shift(); + } + } + + // 获取性能报告 + getPerformanceReport() { + const report: Record = {}; + + this.performanceData.forEach((durations, path) => { + const avg = durations.reduce((sum, d) => sum + d, 0) / durations.length; + const min = Math.min(...durations); + const max = Math.max(...durations); + + report[path] = { + average: Math.round(avg), + min: Math.round(min), + max: Math.round(max), + count: durations.length + }; + }); + + return report; + } + + // 获取慢路由 + getSlowRoutes(threshold: number = 1000) { + const slowRoutes: Array<{ path: string; avgTime: number }> = []; + + this.performanceData.forEach((durations, path) => { + const avg = durations.reduce((sum, d) => sum + d, 0) / durations.length; + if (avg > threshold) { + slowRoutes.push({ path, avgTime: Math.round(avg) }); + } + }); + + return slowRoutes.sort((a, b) => b.avgTime - a.avgTime); + } +} + +// 路由缓存管理器 +export class RouteCacheManager { + private cache = new Map(); + private maxSize: number; + + constructor(maxSize: number = 20) { + this.maxSize = maxSize; + } + + // 缓存路由数据 + set(key: string, data: any) { + if (this.cache.size >= this.maxSize) { + const firstKey = this.cache.keys().next().value; + this.cache.delete(firstKey); + } + + this.cache.set(key, { + data, + timestamp: Date.now() + }); + } + + // 获取缓存数据 + get(key: string, maxAge: number = 5 * 60 * 1000) { + const cached = this.cache.get(key); + + if (!cached) { + return null; + } + + if (Date.now() - cached.timestamp > maxAge) { + this.cache.delete(key); + return null; + } + + return cached.data; + } + + // 清除缓存 + clear() { + this.cache.clear(); + } + + // 删除特定缓存 + delete(key: string) { + return this.cache.delete(key); + } +} diff --git a/src/router/routes.ts b/src/router/routes.ts new file mode 100644 index 0000000..aed0da1 --- /dev/null +++ b/src/router/routes.ts @@ -0,0 +1,113 @@ +import type { RouteRecordRaw } from 'vue-router'; +import type { MenuItemType } from 'ele-admin-pro/es'; +import { menuToRoutes, eachTreeData } from 'ele-admin-pro/es'; +import { HOME_PATH, LAYOUT_PATH, REDIRECT_PATH } from '@/config/setting'; +import EleLayout from '@/layout/index.vue'; +import RedirectLayout from '@/components/RedirectLayout'; +const modules = import.meta.glob('/src/views/**/index.vue'); + +/** + * 静态路由 + */ +export const routes = [ + { + path: '/login', + component: () => import('@/views/passport/login/index.vue'), + meta: { title: '登录' } + }, + { + path: '/token-login', + component: () => import('@/views/passport/loginToken/index.vue'), + meta: { title: 'token登录' } + }, + { + path: '/register', + component: () => import('@/views/passport/register/index.vue'), + meta: { title: '注册' } + }, + { + path: '/dealer/register', + component: () => import('@/views/passport/dealer/register.vue'), + meta: { title: '邀请注册' } + }, + { + path: '/qr-confirm', + component: () => import('@/views/passport/qrConfirm/index.vue'), + meta: { title: '扫码登录确认' } + }, + { + path: '/qr-demo', + component: () => import('@/components/QrLogin/demo.vue'), + meta: { title: '二维码登录演示' } + }, + // { + // path: '/forget', + // component: () => import('@/views/passport/forget/index.vue'), + // meta: { title: '忘记密码' } + // }, + // { + // path: '/wx-work-login', + // component: () => import('@/views/passport/wx-work/index.vue'), + // meta: { title: '企业微信登录' } + // }, + // { + // path: '/token-login', + // component: () => import('@/views/passport/token-login/index.vue'), + // meta: { title: '快捷登录' } + // }, + // { + // path: '/cms/category/:id', + // component: () => import('@/views/cms/category/preview/index.vue'), + // meta: { title: '文章列表' } + // }, + // { + // path: '/cms/article/:id', + // component: () => import('@/views/cms/article/preview/index.vue'), + // meta: { title: '文章详情' } + // }, + // 404 + { + path: '/:path(.*)*', + component: () => import('@/views/result/fail/index.vue') + } +]; + +/** + * 动态路由 + * @param menus 菜单数据 + * @param homePath 主页地址 + */ +export function getMenuRoutes(menus?: MenuItemType[], homePath?: string) { + const routes: RouteRecordRaw[] = [ + // 用于刷新的路由 + { + path: REDIRECT_PATH + '/:path(.*)', + component: RedirectLayout, + meta: { hideFooter: true } + } + ]; + // 路由铺平处理 + eachTreeData(menuToRoutes(menus, getComponent), (route) => { + routes.push(Object.assign({}, route, { children: void 0 })); + }); + return { + path: LAYOUT_PATH, + component: EleLayout, + redirect: HOME_PATH ?? homePath, + children: routes + }; +} + +/** + * 解析路由组件 + * @param component 组件名称 + */ +function getComponent(component?: string) { + if (component) { + const module = modules[`/src/views/${component}.vue`]; + if (!module) { + return modules[`/src/views/${component}/index.vue`]; + } + return module; + } +} diff --git a/src/shims-vue.d.ts b/src/shims-vue.d.ts new file mode 100644 index 0000000..fe7917e --- /dev/null +++ b/src/shims-vue.d.ts @@ -0,0 +1,6 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..bf43b30 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,6 @@ +/** + * pinia + */ +import { createPinia } from 'pinia'; + +export default createPinia(); diff --git a/src/store/modules/bszx-statistics.ts b/src/store/modules/bszx-statistics.ts new file mode 100644 index 0000000..9cbc9c6 --- /dev/null +++ b/src/store/modules/bszx-statistics.ts @@ -0,0 +1,141 @@ +/** + * 百色中学统计数据 store + */ +import { defineStore } from 'pinia'; +import { bszxOrderTotal } from '@/api/bszx/bszxOrder'; +import { safeNumber } from '@/utils/type-guards'; + +export interface BszxStatisticsState { + // 总营业额 + totalPrice: number; + // 加载状态 + loading: boolean; + // 最后更新时间 + lastUpdateTime: number | null; + // 缓存有效期(毫秒)- 5分钟缓存 + cacheExpiry: number; + // 自动刷新定时器 + refreshTimer: number | null; +} + +export const useBszxStatisticsStore = defineStore({ + id: 'bszx-statistics', + state: (): BszxStatisticsState => ({ + totalPrice: 0, + loading: false, + lastUpdateTime: null, + // 默认缓存5分钟 + cacheExpiry: 5 * 60 * 1000, + refreshTimer: null + }), + + getters: { + /** + * 获取总营业额 + */ + bszxTotalPrice: (state): number => { + return safeNumber(state.totalPrice); + }, + + /** + * 检查缓存是否有效 + */ + isCacheValid: (state): boolean => { + if (!state.lastUpdateTime) return false; + const now = Date.now(); + return (now - state.lastUpdateTime) < state.cacheExpiry; + } + }, + + actions: { + /** + * 获取百色中学统计数据 + * @param forceRefresh 是否强制刷新 + */ + async fetchBszxStatistics(forceRefresh = false) { + // 如果缓存有效且不强制刷新,直接返回缓存数据 + if (!forceRefresh && this.isCacheValid && this.totalPrice > 0) { + return this.totalPrice; + } + + this.loading = true; + try { + const result = await bszxOrderTotal(); + + // 处理返回的数据 - bszxOrderTotal 返回 ShopOrder[] 数组 + let totalPrice = 0; + if (Array.isArray(result)) { + // 累加所有订单的金额 + result.forEach((order: any) => { + if (order.payPrice) { + totalPrice += safeNumber(order.payPrice); + } else if (order.totalPrice) { + totalPrice += safeNumber(order.totalPrice); + } + }); + } else if (typeof result === 'number') { + totalPrice = result; + } else if (typeof result === 'string') { + totalPrice = safeNumber(result); + } else if (result && typeof result === 'object' && 'totalPrice' in result) { + totalPrice = safeNumber((result as any).totalPrice); + } + + this.totalPrice = totalPrice; + this.lastUpdateTime = Date.now(); + + return totalPrice; + } catch (error) { + console.error('获取百色中学统计数据失败:', error); + // 发生错误时不重置现有数据,只记录错误 + throw error; + } finally { + this.loading = false; + } + }, + + /** + * 更新统计数据 + */ + updateStatistics(data: Partial) { + Object.assign(this, data); + this.lastUpdateTime = Date.now(); + }, + + /** + * 清除缓存 + */ + clearCache() { + this.totalPrice = 0; + this.lastUpdateTime = null; + }, + + /** + * 设置缓存有效期 + */ + setCacheExpiry(expiry: number) { + this.cacheExpiry = expiry; + }, + + /** + * 开始自动刷新 + * @param interval 刷新间隔(毫秒),默认5分钟 + */ + startAutoRefresh(interval = 5 * 60 * 1000) { + this.stopAutoRefresh(); + this.refreshTimer = window.setInterval(() => { + this.fetchBszxStatistics(true).catch(console.error); + }, interval); + }, + + /** + * 停止自动刷新 + */ + stopAutoRefresh() { + if (this.refreshTimer) { + clearInterval(this.refreshTimer); + this.refreshTimer = null; + } + } + } +}); diff --git a/src/store/modules/chat.ts b/src/store/modules/chat.ts new file mode 100644 index 0000000..612fbbc --- /dev/null +++ b/src/store/modules/chat.ts @@ -0,0 +1,134 @@ +import { defineStore } from 'pinia'; +import { io, Socket } from 'socket.io-client'; +import { getToken } from '@/utils/token-util'; +import { ChatConversation, ChatMessage } from '@/api/system/chat/model'; +import { + pageChatConversation, + updateChatConversation +} from '@/api/system/chat'; +import { emitter } from '@/utils/common'; + +const SOCKET_URL: string = 'wss://server.websoft.top'; + +interface ConnectionOptions { + token: string; + userId: number; + isAdmin: boolean; +} + +export interface ChatState { + socket: Socket | undefined; + conversations: ChatConversation[]; +} + +export const useChatStore = defineStore({ + id: 'chat', + state: (): ChatState => ({ + socket: undefined, + conversations: [] + }), + getters: { + unReadLetter(): number { + return this.conversations.reduce((count, item) => count + item.unRead, 0); + }, + unReadConversations(): ChatConversation[] { + return this.conversations + .filter((item) => item.unRead > 0) + .sort((a, b) => { + return ( + new Date(b.updateTime).getTime() - new Date(a.updateTime).getTime() + ); + }); + } + }, + actions: { + readConversation(id) { + const index = this.conversations.findIndex((item) => item.id === id); + if (index >= 0) { + updateChatConversation({ + id: this.conversations[index].id, + unRead: 0 + }); + this.conversations.splice(index, 1); + } + }, + async connectSocketIO(userId: number) { + console.log( + '---------------------------------connectSocketIO----------------------------------' + ); + const options: ConnectionOptions = { + token: getToken() || '', + userId: userId, + isAdmin: true + }; + + const socket: Socket = io(SOCKET_URL, { + query: options, + transports: ['websocket', 'polling'], + timeout: 5000 + }); + + socket.on('connect', () => { + this.socket = socket; + console.log( + '---------------------------------socket connect----------------------------------' + ); + // 获取聊天列表 + pageChatConversation({ + keywords: '', + status: 1, + page: 1, + limit: 100, + onlyFake: true + }).then((res) => { + if (res?.list) { + this.conversations = res.list; + } + }); + }); + console.log( + '---------------------------------socket----------------------------------', + socket + ); + console.log('收到socket消息>>>'); + // 收到新消息 + socket.on('message', (data: ChatMessage) => { + console.log('收到socket消息>>>'); + const index = this.conversations.findIndex( + (item) => + item.friendId === data.formUserId && item.userId === data.toUserId + ); + let content = ''; + if (data.type == 'image') { + content = '图片'; + } else if (data.type === 'card') { + content = '卡片'; + } else { + content = data.content; + } + if (index >= 0) { + this.conversations[index].unRead++; + this.conversations[index].content = content; + this.conversations[index].updateTime = Date.now(); + } else { + this.conversations.push({ + content: content, + friendInfo: data.formUserInfo, + userInfo: data.toUserInfo, + messages: [], + unRead: 1, + updateTime: Date.now(), + userId: data.toUserId, + friendId: data.formUserId + }); + } + + emitter.emit('message', data); + }); + + socket.on('connect_error', () => { + console.log('connect_error'); + }); + } + } +}); diff --git a/src/store/modules/params.ts b/src/store/modules/params.ts new file mode 100644 index 0000000..1e20ad1 --- /dev/null +++ b/src/store/modules/params.ts @@ -0,0 +1,40 @@ +/** + * 接收传参 store + */ +import { defineStore } from 'pinia'; + +export interface ParamsState { + title: string | null; + comments: string | null; + back: string | null; + redirect: string | null | undefined; +} + +export const useParamsStore = defineStore({ + id: 'params', + state: (): ParamsState => ({ + // 标题 + title: '操作成功', + // 描述 + comments: '您的申请已提交', + // 当前页面路径 + back: null, + // 跳转的页面 + redirect: null + }), + getters: {}, + actions: { + setTitle(value: string) { + this.title = value; + }, + setComments(value: string) { + this.comments = value; + }, + setBack(value: string) { + this.back = value; + }, + setRedirect(value: string) { + this.redirect = value; + } + } +}); diff --git a/src/store/modules/setting.ts b/src/store/modules/setting.ts new file mode 100644 index 0000000..0b654a8 --- /dev/null +++ b/src/store/modules/setting.ts @@ -0,0 +1,25 @@ +/** + * 网站设置 store + */ +import { defineStore } from 'pinia'; + +export interface ParamsState { + setting: any | null; +} + +export const useWebsiteSettingStore = defineStore({ + id: 'setting', + state: (): ParamsState => ({ + // 初始化时确保所有字段都已赋值 + setting: null, + }), + getters: {}, + actions: { + setSetting(value: any) { + this.setting = value; + }, + getSetting(value: any){ + return value; + } + }, +}); diff --git a/src/store/modules/site.ts b/src/store/modules/site.ts new file mode 100644 index 0000000..59f1423 --- /dev/null +++ b/src/store/modules/site.ts @@ -0,0 +1,172 @@ +/** + * 应用信息 store + */ +import { defineStore } from 'pinia'; +import { getSiteInfo } from '@/api/layout'; +import {AppInfo, CmsWebsite} from '@/api/cms/cmsWebsite/model'; + +export interface SiteState { + // 应用信息 + siteInfo: AppInfo | null; + // 加载状态 + loading: boolean; + // 最后更新时间 + lastUpdateTime: number | null; + // 缓存有效期(毫秒) + cacheExpiry: number; +} + +export const useSiteStore = defineStore({ + id: 'site', + state: (): SiteState => ({ + siteInfo: null, + loading: false, + lastUpdateTime: null, + // 默认缓存30分钟 + cacheExpiry: 30 * 60 * 1000 + }), + + getters: { + /** + * 获取应用ID + */ + appId: (state): number | undefined => { + return state.siteInfo?.appId; + }, + /** + * 获取应用名称 + */ + appName: (state): string => { + return state.siteInfo?.appName || ''; + }, + + /** + * 获取应用Logo + */ + logo: (state): string => { + return state.siteInfo?.logo || '/oa.png'; + }, + + /** + * 获取应用描述 + */ + description: (state): string => { + return state.siteInfo?.description || ''; + }, + + /** + * 获取小程序码 + */ + mpQrCode: (state): string => { + return state.siteInfo?.mpQrCode || ''; + }, + + /** + * 获取应用域名 + */ + domain: (state): string => { + return state.siteInfo?.domain || ''; + }, + + /** + * 获取应用版本 + * @param state + */ + version: (state): string => { + if(state.siteInfo?.version == 10){ + return '基础版' + } + if(state.siteInfo?.version == 20){ + return '专业版' + } + if(state.siteInfo?.version == 30){ + return '企业版' + } + return ''; + }, + + statusText: (state): string => { + return state.siteInfo?.statusText || ''; + }, + + /** + * 计算系统运行天数 + */ + runDays: (state): number => { + if (!state.siteInfo?.createTime) return 0; + const createTime = new Date(state.siteInfo.createTime).getTime(); + const now = new Date().getTime(); + return Math.floor((now - createTime) / (24 * 60 * 60 * 1000)); + }, + + /** + * 检查缓存是否有效 + */ + isCacheValid: (state): boolean => { + if (!state.lastUpdateTime) return false; + const now = Date.now(); + return (now - state.lastUpdateTime) < state.cacheExpiry; + } + }, + + actions: { + /** + * 获取应用信息 + * @param forceRefresh 是否强制刷新 + */ + async fetchSiteInfo(forceRefresh = false) { + // 如果缓存有效且不强制刷新,直接返回缓存数据 + if (!forceRefresh && this.isCacheValid && this.siteInfo) { + return this.siteInfo; + } + + this.loading = true; + try { + const data = await getSiteInfo(); + this.siteInfo = data; + this.lastUpdateTime = Date.now(); + + // 更新localStorage中的相关信息 + if (data.websiteId) { + localStorage.setItem('WebsiteId', String(data.websiteId)); + } + if (data.domain) { + localStorage.setItem('Domain', data.domain); + localStorage.setItem('SiteUrl', `${data.prefix || 'https://'}${data.domain}`); + } + + return data; + } catch (error) { + console.error('获取应用信息失败:', error); + throw error; + } finally { + this.loading = false; + } + }, + + /** + * 更新应用信息 + */ + updateSiteInfo(siteInfo: Partial) { + if (this.siteInfo) { + this.siteInfo = { ...this.siteInfo, ...siteInfo }; + this.lastUpdateTime = Date.now(); + } + }, + + /** + * 清除缓存 + */ + clearCache() { + this.siteInfo = null; + this.lastUpdateTime = null; + }, + + /** + * 设置缓存有效期 + */ + setCacheExpiry(expiry: number) { + this.cacheExpiry = expiry; + } + } +}); diff --git a/src/store/modules/statistics.ts b/src/store/modules/statistics.ts new file mode 100644 index 0000000..c0aff55 --- /dev/null +++ b/src/store/modules/statistics.ts @@ -0,0 +1,320 @@ +/** + * 统计数据 store + */ +import { defineStore } from 'pinia'; +import { pageUsers } from '@/api/system/user'; +import { pageShopOrder, shopOrderTotal } from '@/api/shop/shopOrder'; +import { + addCmsStatistics, + listCmsStatistics, + updateCmsStatistics +} from '@/api/cms/cmsStatistics'; +import { CmsStatistics } from '@/api/cms/cmsStatistics/model'; +import { safeNumber, hasValidId } from '@/utils/type-guards'; + +export interface StatisticsState { + // 统计数据 + statistics: CmsStatistics | null; + // 加载状态 + loading: boolean; + // 最后更新时间 + lastUpdateTime: number | null; + // 缓存有效期(毫秒)- 统计数据缓存时间较短 + cacheExpiry: number; + // 自动刷新定时器 + refreshTimer: number | null; +} + +export const useStatisticsStore = defineStore({ + id: 'statistics', + state: (): StatisticsState => ({ + statistics: null, + loading: false, + lastUpdateTime: null, + // 默认缓存5分钟 + cacheExpiry: 5 * 60 * 1000, + refreshTimer: null + }), + + getters: { + /** + * 获取用户总数 + */ + userCount: (state): number => { + return safeNumber(state.statistics?.userCount); + }, + + /** + * 获取订单总数 + */ + orderCount: (state): number => { + return safeNumber(state.statistics?.orderCount); + }, + + /** + * 获取总销售额 + */ + totalSales: (state): number => { + return safeNumber(state.statistics?.totalSales); + }, + + /** + * 获取今日销售额 + */ + todaySales: (state): number => { + return safeNumber(state.statistics?.todaySales); + }, + + /** + * 获取本月销售额 + */ + monthSales: (state): number => { + return safeNumber(state.statistics?.monthSales); + }, + + /** + * 获取今日订单数 + */ + todayOrders: (state): number => { + return safeNumber(state.statistics?.todayOrders); + }, + + /** + * 获取今日新增用户 + */ + todayUsers: (state): number => { + return safeNumber(state.statistics?.todayUsers); + }, + + /** + * 检查缓存是否有效 + */ + isCacheValid: (state): boolean => { + if (!state.lastUpdateTime) return false; + const now = Date.now(); + return now - state.lastUpdateTime < state.cacheExpiry; + } + }, + + actions: { + /** + * 获取统计数据 + * @param forceRefresh 是否强制刷新 + */ + async fetchStatistics(forceRefresh = false) { + // 如果缓存有效且不强制刷新,直接返回缓存数据 + if (!forceRefresh && this.isCacheValid && this.statistics) { + return this.statistics; + } + + this.loading = true; + try { + // 并行获取各种统计数据,使用Promise.allSettled确保部分失败不影响整体 + const [usersResult, ordersResult, totalResult, statisticsResult] = + await Promise.allSettled([ + pageUsers({}), + pageShopOrder({}), + shopOrderTotal(), + listCmsStatistics({}) + ]); + + // 安全提取结果 + const users = + usersResult.status === 'fulfilled' ? usersResult.value : null; + const orders = + ordersResult.status === 'fulfilled' ? ordersResult.value : null; + const total = + totalResult.status === 'fulfilled' ? totalResult.value : null; + const statisticsData = + statisticsResult.status === 'fulfilled' + ? statisticsResult.value + : null; + + // 记录失败的API调用 + if (usersResult.status === 'rejected') { + console.error('❌ 用户API调用失败:', usersResult.reason); + } + if (ordersResult.status === 'rejected') { + console.error('❌ 订单API调用失败:', ordersResult.reason); + } + if (totalResult.status === 'rejected') { + console.error('❌ 订单总额API调用失败:', totalResult.reason); + } + if (statisticsResult.status === 'rejected') { + console.error('❌ 统计数据API调用失败:', statisticsResult.reason); + } + + // 添加调试日志 + console.log('🔍 统计数据获取结果:', { + users: users, + orders: orders, + total: total, + statisticsData: statisticsData + }); + + let statistics: CmsStatistics; + + // 安全获取用户数量,添加更详细的验证 + const userCount = (() => { + if (!users) { + console.warn('⚠️ 用户API返回空数据'); + return 0; + } + if (typeof users === 'object' && 'count' in users) { + const count = users.count; + console.log('✅ 用户数量:', count); + return safeNumber(count); + } + console.warn('⚠️ 用户API返回数据格式不正确:', users); + return 0; + })(); + + // 安全获取订单数量 + const orderCount = (() => { + if (!orders) { + console.warn('⚠️ 订单API返回空数据'); + return 0; + } + if (typeof orders === 'object' && 'count' in orders) { + const count = orders.count; + console.log('✅ 订单数量:', count); + return safeNumber(count); + } + console.warn('⚠️ 订单API返回数据格式不正确:', orders); + return 0; + })(); + + // 安全获取总销售额,处理数组情况 + const totalSales = (() => { + if (!total) { + console.warn('⚠️ 订单总额API返回空数据'); + return 0; + } + if (Array.isArray(total)) { + // 如果是数组,计算总金额 + const sum = total.reduce((acc, order) => { + const amount = order.payPrice || order.totalPrice || 0; + return acc + safeNumber(amount); + }, 0); + console.log('✅ 总销售额(数组计算):', sum); + return sum; + } + const amount = safeNumber(total); + console.log('✅ 总销售额(直接值):', amount); + return amount; + })(); + + if (statisticsData && statisticsData.length > 0) { + // 更新现有统计数据 + const existingStatistics = statisticsData[0]; + + // 确保数据存在且有有效的 ID + if (hasValidId(existingStatistics)) { + const updateData: Partial = { + id: existingStatistics.id, + userCount: userCount, + orderCount: orderCount, + totalSales: totalSales + }; + + // 异步更新数据库 + setTimeout(() => { + updateCmsStatistics(updateData).catch((error) => { + console.error('更新统计数据失败:', error); + }); + }, 1000); + + // 更新本地数据 + statistics = { ...existingStatistics, ...updateData }; + } else { + // 如果现有数据无效,使用基础数据 + statistics = { + userCount: userCount, + orderCount: orderCount, + totalSales: totalSales + }; + } + } else { + // 创建新的统计数据 + statistics = { + userCount: userCount, + orderCount: orderCount, + totalSales: totalSales + }; + + // 异步保存到数据库 + setTimeout(() => { + addCmsStatistics(statistics).catch((error) => { + console.error('保存统计数据失败:', error); + }); + }, 1000); + } + + this.statistics = statistics; + this.lastUpdateTime = Date.now(); + + return statistics; + } catch (error) { + console.error('获取统计数据失败:', error); + throw error; + } finally { + this.loading = false; + } + }, + + /** + * 更新统计数据 + */ + updateStatistics(statistics: Partial) { + if (this.statistics) { + this.statistics = { ...this.statistics, ...statistics }; + this.lastUpdateTime = Date.now(); + } + }, + + /** + * 清除缓存 + */ + clearCache() { + this.statistics = null; + this.lastUpdateTime = null; + }, + + /** + * 强制刷新统计数据 + */ + async forceRefresh() { + console.log('🔄 强制刷新统计数据...'); + this.clearCache(); + return await this.fetchStatistics(true); + }, + + /** + * 设置缓存有效期 + */ + setCacheExpiry(expiry: number) { + this.cacheExpiry = expiry; + }, + + /** + * 开始自动刷新 + * @param interval 刷新间隔(毫秒),默认5分钟 + */ + startAutoRefresh(interval = 5 * 60 * 1000) { + this.stopAutoRefresh(); + this.refreshTimer = window.setInterval(() => { + this.fetchStatistics(true).catch(console.error); + }, interval); + }, + + /** + * 停止自动刷新 + */ + stopAutoRefresh() { + if (this.refreshTimer) { + clearInterval(this.refreshTimer); + this.refreshTimer = null; + } + } + } +}); diff --git a/src/store/modules/template.ts b/src/store/modules/template.ts new file mode 100644 index 0000000..24b8e43 --- /dev/null +++ b/src/store/modules/template.ts @@ -0,0 +1,119 @@ +/** + * 网站配置 store + */ +import { defineStore } from 'pinia'; +import {configWebsiteField} from '@/api/cms/cmsWebsiteField'; +import type { Config } from '@/api/cms/cmsWebsiteField/model'; + +export interface ConfigState { + config: Config | null; + loading: boolean; + error: Error | null; +} + +export const useConfigStore = defineStore({ + id: 'config', + state: (): ConfigState => ({ + // 网站配置数据 + config: null, + // 加载状态 + loading: false, + // 错误信息 + error: null + }), + getters: { + /** + * 获取网站配置 + */ + getConfig(state): Config | null { + return state.config; + }, + + /** + * 获取API地址 + */ + getApiUrl(state): string | undefined { + return state.config?.ApiUrl; + }, + + /** + * 获取网站名称 + */ + getSiteName(state): string | undefined { + return state.config?.siteName; + }, + + /** + * 获取网站Logo + */ + getSiteLogo(state): string | undefined { + return state.config?.siteLogo; + } + }, + actions: { + /** + * 获取网站配置数据 + */ + async fetchConfig() { + try { + this.loading = true; + this.error = null; + const data = await configWebsiteField(); + this.config = data; + + // 保存到localStorage中,供其他地方使用 + localStorage.setItem('config', JSON.stringify(data)); + + // 设置主题 + if (data.theme && !localStorage.getItem('user_theme')) { + localStorage.setItem('user_theme', data.theme); + } + + return data; + } catch (err) { + this.error = err instanceof Error ? err : new Error('获取配置失败'); + console.error('获取网站配置失败:', err); + throw err; + } finally { + this.loading = false; + } + }, + + /** + * 更新配置数据 + */ + setConfig(value: Config) { + this.config = value; + // 同时更新localStorage + localStorage.setItem('config', JSON.stringify(value)); + }, + + /** + * 重新获取配置数据 + */ + async refetchConfig() { + try { + this.loading = true; + this.error = null; + const data = await configWebsiteField(); + this.config = data; + localStorage.setItem('config', JSON.stringify(data)); + return data; + } catch (err) { + this.error = err instanceof Error ? err : new Error('获取配置失败'); + console.error('重新获取网站配置失败:', err); + throw err; + } finally { + this.loading = false; + } + }, + + /** + * 清除配置数据 + */ + clearConfig() { + this.config = null; + localStorage.removeItem('config'); + } + } +}); diff --git a/src/store/modules/tenant.ts b/src/store/modules/tenant.ts new file mode 100644 index 0000000..bf19ca2 --- /dev/null +++ b/src/store/modules/tenant.ts @@ -0,0 +1,70 @@ +/** + * 租户信息 store + */ +import { defineStore } from 'pinia'; +import { formatTreeData } from 'ele-admin-pro'; +import type { MenuItem } from 'ele-admin-pro'; +import { getTenantInfo } from '@/api/layout'; +import { Tenant } from '@/api/system/tenant/model'; +import { Company } from '@/api/system/company/model'; +// const EXTRA_MENUS: any = []; + +export interface UserState { + tenant: Tenant | null; + company: Company | null; + menus: MenuItem[] | null | undefined; +} + +export const useTenantStore = defineStore({ + id: 'tenant', + state: (): UserState => ({ + // 租户信息 + tenant: null, + // 企业信息 + company: null, + // 当前登录用户的菜单 + menus: null + }), + getters: {}, + actions: { + /** + * 请求用户信息、权限、角色、菜单 + */ + async fetchTenantInfo() { + const company = await getTenantInfo().catch(() => void 0); + if (!company) { + return {}; + } + // 租户信息 + this.company = company; + // 企业信息 + if (company) { + this.company = company; + } + }, + /** + * 更新租户信息 + */ + setInfo(value: Tenant) { + this.tenant = value; + }, + /** + * 更新菜单的 badge + */ + setMenuBadge(path: string, value?: number | string, color?: string) { + this.menus = formatTreeData(this.menus, (m) => { + if (path === m.path) { + return { + ...m, + meta: { + ...m.meta, + badge: value, + badgeColor: color + } + }; + } + return m; + }); + } + } +}); diff --git a/src/store/modules/theme.ts b/src/store/modules/theme.ts new file mode 100644 index 0000000..2087cc4 --- /dev/null +++ b/src/store/modules/theme.ts @@ -0,0 +1,698 @@ +/** + * 主题状态管理 + */ +import { defineStore } from 'pinia'; +import { + changeColor, + screenWidth, + screenHeight, + contentWidth, + contentHeight, + WEAK_CLASS, + BODY_LIMIT_CLASS, + DISABLES_CLASS +} from 'ele-admin-pro/es'; +import type { + TabItem, + HeadStyleType, + SideStyleType, + LayoutStyleType, + SideMenuStyleType, + TabStyleType, + TabRemoveOption +} from 'ele-admin-pro/es'; +import { + TAB_KEEP_ALIVE, + KEEP_ALIVE_EXCLUDES, + THEME_STORE_NAME +} from '@/config/setting'; +// import { getCache } from '@/api/system/cache'; + +/** + * state 默认值 + */ +const DEFAULT_STATE: ThemeState = Object.freeze({ + // 页签数据 + tabs: [], + // 是否折叠侧栏 + collapse: false, + // 是否折叠一级侧栏 + sideNavCollapse: true, + // 内容区域是否全屏 + bodyFullscreen: false, + // 是否开启页签栏 + showTabs: false, + // 是否开启页脚 + showFooter: true, + // 顶栏风格: light(亮色), dark(暗色), primary(主色) + headStyle: 'light', + // 侧栏风格: light(亮色), dark(暗色) + sideStyle: 'light', + // 布局风格: side(默认), top(顶栏导航), mix(混合导航) + layoutStyle: 'mix', + // 侧栏菜单风格: default(默认), mix(双排侧栏) + sideMenuStyle: 'default', + // 页签风格: default(默认), dot(圆点), card(卡片) + tabStyle: 'default', + // 路由切换动画 + transitionName: 'fade', + // 是否固定顶栏 + fixedHeader: true, + // 是否固定侧栏 + fixedSidebar: true, + // 是否固定主体 + fixedBody: true, + // 内容区域宽度铺满 + bodyFull: true, + // logo 是否自适应宽度 + logoAutoSize: false, + // 侧栏是否彩色图标 + colorfulIcon: false, + // 侧栏是否只保持一个子菜单展开 + sideUniqueOpen: true, + // 是否是色弱模式 + weakMode: false, + // 是否是暗黑模式 + darkMode: false, + // 主题色 + color: '#2CA8FE', + // 主页的组件名称 + homeComponents: [], + // 刷新路由时的参数 + routeReload: null, + // 屏幕宽度 + screenWidth: screenWidth(), + // 屏幕高度 + screenHeight: screenHeight(), + // 内容区域宽度 + contentWidth: contentWidth(), + // 内容区域高度 + contentHeight: contentHeight(), + // 是否开启响应式 + styleResponsive: true +}); +// 延时操作定时器 +let disableTransitionTimer: number, updateContentSizeTimer: number; + +/** + * 读取缓存配置 + */ +function getCacheSetting(): any { + try { + const value = localStorage.getItem(THEME_STORE_NAME); + if (value) { + const cache = JSON.parse(value); + if (typeof cache === 'object') { + return cache; + } + } + } catch (e) { + console.error(e); + } + return {}; +} + +/** + * 缓存配置 + */ +function cacheSetting(key: string, value: any) { + const cache = getCacheSetting(); + if (cache[key] !== value) { + cache[key] = value; + // console.log(value); + // localStorage.setItem(THEME_STORE_NAME, JSON.stringify(cache)); + // updateCacheTheme({ + // key: 'theme', + // content: JSON.stringify(cache) + // }).then((res) => { + // console.log(res); + // }); + } +} + +/** + * 开关响应式布局 + */ +function changeStyleResponsive(styleResponsive: boolean) { + if (styleResponsive) { + document.body.classList.remove(BODY_LIMIT_CLASS); + } else { + document.body.classList.add(BODY_LIMIT_CLASS); + } +} + +/** + * 切换色弱模式 + */ +function changeWeakMode(weakMode: boolean) { + if (weakMode) { + document.body.classList.add(WEAK_CLASS); + } else { + document.body.classList.remove(WEAK_CLASS); + } +} + +/** + * 切换主题 + */ +function changeTheme(value?: string | null, dark?: boolean) { + return new Promise((resolve, reject) => { + try { + changeColor(value, dark); + resolve(); + } catch (e) { + reject(e); + } + }); +} + +/** + * 切换布局时禁用过渡动画 + */ +function disableTransition() { + disableTransitionTimer && clearTimeout(disableTransitionTimer); + document.body.classList.add(DISABLES_CLASS); + disableTransitionTimer = setTimeout(() => { + document.body.classList.remove(DISABLES_CLASS); + }, 100) as unknown as number; +} + +export const useThemeStore = defineStore({ + id: 'theme', + state: (): ThemeState => { + const state = { ...DEFAULT_STATE }; + // 读取本地缓存 + const cache = getCacheSetting(); + Object.keys(state).forEach((key) => { + if (typeof cache[key] !== 'undefined') { + state[key] = cache[key]; + } + }); + return state; + }, + getters: { + // 需要 keep-alive 的组件 + keepAliveInclude(): string[] { + if (!TAB_KEEP_ALIVE || !this.showTabs) { + return []; + } + const components = new Set(); + const { reloadPath, reloadHome } = this.routeReload || {}; + this.tabs?.forEach((t) => { + const isAlive = t.meta?.keepAlive !== false; + const isExclude = KEEP_ALIVE_EXCLUDES.includes(t.path as string); + const isReload = reloadPath && reloadPath === t.fullPath; + if (isAlive && !isExclude && !isReload && t.components) { + t.components.forEach((c) => { + if (typeof c === 'string' && c) { + components.add(c); + } + }); + } + }); + if (!reloadHome) { + this.homeComponents?.forEach((c) => { + if (typeof c === 'string' && c) { + components.add(c); + } + }); + } + return Array.from(components); + } + }, + actions: { + setTabs(value: TabItem[]) { + this.tabs = value; + //cacheSetting('tabs', value); + }, + setCollapse(value: boolean) { + this.collapse = value; + this.delayUpdateContentSize(800); + }, + setSideNavCollapse(value: boolean) { + this.sideNavCollapse = value; + this.delayUpdateContentSize(800); + }, + setBodyFullscreen(value: boolean) { + disableTransition(); + this.bodyFullscreen = value; + this.delayUpdateContentSize(800); + }, + setShowTabs(value: boolean) { + this.showTabs = value; + cacheSetting('showTabs', value); + this.delayUpdateContentSize(); + }, + setShowFooter(value: boolean) { + this.showFooter = value; + cacheSetting('showFooter', value); + this.delayUpdateContentSize(); + }, + setHeadStyle(value: HeadStyleType) { + this.headStyle = value; + cacheSetting('headStyle', value); + }, + setSideStyle(value: SideStyleType) { + this.sideStyle = value; + cacheSetting('sideStyle', value); + }, + setLayoutStyle(value: LayoutStyleType) { + disableTransition(); + this.layoutStyle = value; + cacheSetting('layoutStyle', value); + this.delayUpdateContentSize(); + }, + setSideMenuStyle(value: SideMenuStyleType) { + disableTransition(); + this.sideMenuStyle = value; + cacheSetting('sideMenuStyle', value); + this.delayUpdateContentSize(); + }, + setTabStyle(value: TabStyleType) { + this.tabStyle = value; + cacheSetting('tabStyle', value); + }, + setTransitionName(value: string) { + this.transitionName = value; + cacheSetting('transitionName', value); + }, + setFixedHeader(value: boolean) { + disableTransition(); + this.fixedHeader = value; + cacheSetting('fixedHeader', value); + }, + setFixedSidebar(value: boolean) { + disableTransition(); + this.fixedSidebar = value; + cacheSetting('fixedSidebar', value); + }, + setFixedBody(value: boolean) { + disableTransition(); + this.fixedBody = value; + cacheSetting('fixedBody', value); + }, + setBodyFull(value: boolean) { + this.bodyFull = value; + cacheSetting('bodyFull', value); + this.delayUpdateContentSize(); + }, + setLogoAutoSize(value: boolean) { + disableTransition(); + this.logoAutoSize = value; + cacheSetting('logoAutoSize', value); + }, + setColorfulIcon(value: boolean) { + this.colorfulIcon = value; + cacheSetting('colorfulIcon', value); + }, + setSideUniqueOpen(value: boolean) { + this.sideUniqueOpen = value; + cacheSetting('sideUniqueOpen', value); + }, + setStyleResponsive(value: boolean) { + changeStyleResponsive(value); + this.styleResponsive = value; + cacheSetting('styleResponsive', value); + }, + /** + * 切换色弱模式 + * @param value 是否是色弱模式 + */ + setWeakMode(value: boolean) { + return new Promise((resolve) => { + changeWeakMode(value); + this.weakMode = value; + cacheSetting('weakMode', value); + resolve(); + }); + }, + /** + * 切换暗黑模式 + * @param value 是否是暗黑模式 + */ + setDarkMode(value: boolean) { + return new Promise((resolve, reject) => { + changeTheme(this.color, value) + .then(() => { + this.darkMode = value; + cacheSetting('darkMode', value); + resolve(); + }) + .catch((e) => { + reject(e); + }); + }); + }, + /** + * 切换主题色 + * @param value 主题色 + */ + setColor(value?: string) { + return new Promise((resolve, reject) => { + changeTheme(value, this.darkMode) + .then(() => { + this.color = value; + cacheSetting('color', value); + resolve(); + }) + .catch((e) => { + reject(e); + }); + }); + }, + /** + * 设置主页路由对应的组件名称 + * @param components 组件名称 + */ + setHomeComponents(components: string[]) { + this.homeComponents = components; + }, + /** + * 设置刷新路由信息 + * @param option 路由刷新参数 + */ + setRouteReload(option: RouteReloadOption | null) { + this.routeReload = option; + }, + /** + * 更新屏幕尺寸 + */ + updateScreenSize() { + this.screenWidth = screenWidth(); + this.screenHeight = screenHeight(); + this.updateContentSize(); + }, + /** + * 更新内容区域尺寸 + */ + updateContentSize() { + this.contentWidth = contentWidth(); + this.contentHeight = contentHeight(); + }, + /** + * 延时更新内容区域尺寸 + * @param delay 延迟时间 + */ + delayUpdateContentSize(delay?: number) { + updateContentSizeTimer && clearTimeout(updateContentSizeTimer); + updateContentSizeTimer = setTimeout(() => { + this.updateContentSize(); + }, delay ?? 100) as unknown as number; + }, + /** + * 重置设置 + */ + resetSetting() { + return new Promise((resolve, reject) => { + disableTransition(); + this.showTabs = DEFAULT_STATE.showTabs; + this.showFooter = DEFAULT_STATE.showFooter; + this.headStyle = DEFAULT_STATE.headStyle; + this.sideStyle = DEFAULT_STATE.sideStyle; + this.layoutStyle = DEFAULT_STATE.layoutStyle; + this.sideMenuStyle = DEFAULT_STATE.sideMenuStyle; + this.tabStyle = DEFAULT_STATE.tabStyle; + this.transitionName = DEFAULT_STATE.transitionName; + this.fixedHeader = DEFAULT_STATE.fixedHeader; + this.fixedSidebar = DEFAULT_STATE.fixedSidebar; + this.fixedBody = DEFAULT_STATE.fixedBody; + this.bodyFull = DEFAULT_STATE.bodyFull; + this.logoAutoSize = DEFAULT_STATE.logoAutoSize; + this.colorfulIcon = DEFAULT_STATE.colorfulIcon; + this.sideUniqueOpen = DEFAULT_STATE.sideUniqueOpen; + this.styleResponsive = DEFAULT_STATE.styleResponsive; + this.weakMode = DEFAULT_STATE.weakMode; + this.darkMode = DEFAULT_STATE.darkMode; + this.color = DEFAULT_STATE.color; + localStorage.removeItem(THEME_STORE_NAME); + Promise.all([ + changeStyleResponsive(this.styleResponsive), + changeWeakMode(this.weakMode), + changeTheme(this.color, this.darkMode) + ]) + .then(() => { + resolve(); + }) + .catch((e) => { + reject(e); + }); + }); + }, + /** + * 恢复主题 + */ + recoverTheme() { + // 关闭响应式布局 + if (!this.styleResponsive) { + changeStyleResponsive(false); + } + // 恢复色弱模式 + if (this.weakMode) { + changeWeakMode(true); + } + // 恢复主题色 + if (this.color || this.darkMode) { + changeTheme(this.color, this.darkMode).catch((e) => { + console.error(e); + }); + } + }, + /** + * 添加页签或更新相同 key 的页签数据 + * @param data 页签数据 + */ + tabAdd(data: TabItem | TabItem[]) { + if (Array.isArray(data)) { + data.forEach((d) => { + this.tabAdd(d); + }); + return; + } + const i = this.tabs.findIndex((d) => d.key === data.key); + if (i === -1) { + this.setTabs(this.tabs.concat([data])); + } else if (data.fullPath !== this.tabs[i].fullPath) { + this.setTabs( + this.tabs + .slice(0, i) + .concat([data]) + .concat(this.tabs.slice(i + 1)) + ); + } + }, + /** + * 关闭页签 + * @param key 页签 key + */ + async tabRemove({ + key, + active + }: TabRemoveOption): Promise { + const i = this.tabs.findIndex((t) => t.key === key || t.fullPath === key); + if (i === -1) { + return {}; + } + const t = this.tabs[i]; + if (!t.closable) { + return Promise.reject(); + } + const path = this.tabs[i - 1]?.fullPath; + this.setTabs(this.tabs.filter((_d, j) => j !== i)); + return t.key === active ? { path, home: !path } : {}; + }, + /** + * 关闭左侧页签 + */ + async tabRemoveLeft({ + key, + active + }: TabRemoveOption): Promise { + let index = -1; // 选中页签的 index + for (let i = 0; i < this.tabs.length; i++) { + if (this.tabs[i].key === active) { + index = i; + } + if (this.tabs[i].key === key) { + if (i === 0) { + break; + } + const temp = this.tabs.filter((d, j) => !d.closable && j < i); + if (temp.length === i + 1) { + break; + } + const path = index === -1 ? void 0 : this.tabs[i].fullPath; + this.setTabs(temp.concat(this.tabs.slice(i))); + return { path }; + } + } + return Promise.reject(); + }, + /** + * 关闭右侧页签 + */ + async tabRemoveRight({ + key, + active + }: TabRemoveOption): Promise { + if (this.tabs.length) { + let index = -1; // 选中页签的 index + for (let i = 0; i < this.tabs.length; i++) { + if (this.tabs[i].key === active) { + index = i; + } + if (this.tabs[i].key === key) { + if (i === this.tabs.length - 1) { + return Promise.reject(); + } + const temp = this.tabs.filter((d, j) => !d.closable && j > i); + if (temp.length === this.tabs.length - i - 1) { + return Promise.reject(); + } + const path = index === -1 ? this.tabs[i].fullPath : void 0; + this.setTabs( + this.tabs + .slice(0, i + 1) + .concat(this.tabs.filter((d, j) => !d.closable && j > i)) + ); + return { path }; + } + } + // 主页时关闭全部 + const temp = this.tabs.filter((d) => !d.closable); + if (temp.length !== this.tabs.length) { + this.setTabs(temp); + return { home: index !== -1 }; + } + } + return Promise.reject(); + }, + /** + * 关闭其它页签 + */ + async tabRemoveOther({ + key, + active + }: TabRemoveOption): Promise { + let index = -1; // 选中页签的 index + let path: string | undefined; // 关闭后跳转的 path + const temp = this.tabs.filter((d, i) => { + if (d.key === active) { + index = i; + } + if (d.key === key) { + path = d.fullPath; + } + return !d.closable || d.key === key; + }); + if (temp.length === this.tabs.length) { + return Promise.reject(); + } + this.setTabs(temp); + if (index === -1) { + return {}; + } + return key === active ? {} : { path, home: !path }; + }, + /** + * 关闭全部页签 + * @param active 选中页签的 key + */ + async tabRemoveAll(active: string): Promise { + const t = this.tabs.find((d) => d.key === active); + const home = typeof t !== 'undefined' && t.closable === true; // 是否跳转主页 + const temp = this.tabs.filter((d) => !d.closable); + if (temp.length === this.tabs.length) { + return Promise.reject(); + } + this.setTabs(temp); + return { home }; + }, + /** + * 修改页签 + * @param data 页签数据 + */ + tabSetItem(data: TabItem) { + let i = -1; + if (data.key) { + i = this.tabs.findIndex((d) => d.key === data.key); + } else if (data.fullPath) { + i = this.tabs.findIndex((d) => d.fullPath === data.fullPath); + } else if (data.path) { + i = this.tabs.findIndex((d) => d.path === data.path); + } + if (i !== -1) { + const item = { ...this.tabs[i] }; + if (data.title) { + item.title = data.title; + } + if (typeof data.closable === 'boolean') { + item.closable = data.closable; + } + if (data.components) { + item.components = data.components; + } + this.setTabs( + this.tabs + .slice(0, i) + .concat([item]) + .concat(this.tabs.slice(i + 1)) + ); + } + } + } +}); + +/** + * 主题 State 类型 + */ +export interface ThemeState { + tabs: TabItem[]; + collapse: boolean; + sideNavCollapse: boolean; + bodyFullscreen: boolean; + showTabs: boolean; + showFooter: boolean; + headStyle: HeadStyleType; + sideStyle: SideStyleType; + layoutStyle: LayoutStyleType; + sideMenuStyle: SideMenuStyleType; + tabStyle: TabStyleType; + transitionName: string; + fixedHeader: boolean; + fixedSidebar: boolean; + fixedBody: boolean; + bodyFull: boolean; + logoAutoSize: boolean; + colorfulIcon: boolean; + sideUniqueOpen: boolean; + weakMode: boolean; + darkMode: boolean; + color?: string | null; + homeComponents: string[]; + routeReload: RouteReloadOption | null; + screenWidth: number; + screenHeight: number; + contentWidth: number; + contentHeight: number; + styleResponsive: boolean; +} + +/** + * 设置路由刷新方法的参数 + */ +export interface RouteReloadOption { + // 是否是刷新主页 + reloadHome?: boolean; + // 要刷新的页签路由地址 + reloadPath?: string; +} + +/** + * 关闭页签返回类型 + */ +export interface TabRemoveResult { + // 关闭后要跳转的地址 + path?: string; + // 关闭后是否跳转到主页 + home?: boolean; +} diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000..3adc040 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,145 @@ +/** + * 登录用户 store + */ +import { defineStore } from 'pinia'; +import { formatMenus, toTreeData, formatTreeData } from 'ele-admin-pro/es'; +import type { MenuItemType } from 'ele-admin-pro/es'; +import type { User } from '@/api/system/user/model'; +import { TOKEN_STORE_NAME, USER_MENUS } from '@/config/setting'; +import {getUserInfo} from '@/api/layout'; +import { initialization } from '@/api/layout'; +import {clone} from "@/api/system/menu"; +import { message } from 'ant-design-vue/es'; +import {logout} from "@/utils/page-tab-util"; +// import { isExternalLink } from 'ele-admin-pro'; +const EXTRA_MENUS: any = []; + +export interface UserState { + info: User | null; + menus: MenuItemType[] | null | undefined; + authorities: (string | undefined)[]; + roles: (string | undefined)[]; +} + +export const useUserStore = defineStore({ + id: 'user', + state: (): UserState => ({ + // 当前登录用户的信息 + info: null, + // 当前登录用户的菜单 + menus: null, + // 当前登录用户的权限 + authorities: [], + // 当前登录用户的角色 + roles: [] + }), + getters: {}, + actions: { + /** + * 请求用户信息、权限、角色、菜单 + */ + async fetchUserInfo() { + // const company = await getTenantInfo().catch(() => void 0); + const result = await getUserInfo().catch(() => {}); + if (!result) { + logout(false, '/login'); + return {}; + } + // 系统初始化 + if (!result.installed && result.username === 'superAdmin') { + const hide = message.loading('正在分配资源请勿刷新页面...', 500); + // @ts-ignore + clone({tenantId: Number(result.templateId)}).then(() => { + if (result.authorities?.length == 0) { + result.roles?.map((d) => { + if (d.roleCode === 'superAdmin') { + initialization(d.roleId).then(() => { + hide(); + location.reload(); + return false; + }); + } + }); + } + }) + } + // 用户信息 + this.info = result; + // 缓存租户信息 + localStorage.setItem('TenantName', `${this.info.tenantName}`); + // 缓存企业信息 + if (this.info.companyInfo) { + localStorage.setItem( + 'CompanyLogo', + `${this.info.companyInfo?.companyLogo}` + ); + localStorage.setItem('PlanId', `${this.info.companyInfo?.planId}`); + localStorage.setItem( + 'ModulesUrl', + `${this.info.companyInfo.modulesUrl}` + ); + } + // 用户权限 + this.authorities = + result.authorities + ?.filter((d) => !!d.authority) + ?.map((d) => d.authority) ?? []; + // 用户角色 + this.roles = result.roles?.map((d) => d.roleCode) ?? []; + // 获取token + const token = localStorage.getItem(TOKEN_STORE_NAME); + // 用户菜单, 过滤掉按钮类型并转为 children 形式 + const { menus, homePath } = formatMenus( + USER_MENUS ?? + toTreeData({ + data: result.authorities + ?.filter((d) => d.menuType !== 1) + .map((d) => { + // 改造子模块的访问路径 + if (d.modulesUrl) { + d.component = `${d.modulesUrl}${d.path}?token=${token}`; + } + return d; + }), + idField: 'menuId', + parentIdField: 'parentId' + }).concat(EXTRA_MENUS) + ); + this.menus = menus; + return { menus, homePath }; + }, + /** + * 更新用户信息 + */ + setInfo(value: User) { + this.info = value; + }, + /** + * 更新菜单的 badge + */ + setMenuBadge(path: string, value?: number | string, color?: string) { + this.menus = formatTreeData(this.menus, (m) => { + if (path === m.path) { + return { + ...m, + meta: { + ...m.meta, + badge: value, + badgeColor: color + } + }; + } + return m; + }); + }, + /** + * 重置用户状态(退出登录时调用) + */ + resetUserState() { + this.info = null; + this.menus = null; + this.authorities = []; + this.roles = []; + } + } +}); diff --git a/src/styles/as-needed.less b/src/styles/as-needed.less new file mode 100644 index 0000000..1bda515 --- /dev/null +++ b/src/styles/as-needed.less @@ -0,0 +1,6 @@ +/** 按需引入 */ +@import 'ant-design-vue/es/message/style/index.less'; +@import 'ant-design-vue/es/notification/style/index.less'; +@import 'ele-admin-pro/es/style/nprogress.less'; +@import 'ele-admin-pro/es/style/display.less'; +@import 'ele-admin-pro/es/style/common.less'; diff --git a/src/styles/component.less b/src/styles/component.less new file mode 100644 index 0000000..4d713e9 --- /dev/null +++ b/src/styles/component.less @@ -0,0 +1,17 @@ +/** 组件样式 */ +//@input-item: 300px; + +/* ele-pro-table 全局美化样式 */ +.ele-pro-table .ant-table-thead > tr > th { + border-bottom: 2px solid #f0f0f0; + background-color: #fafafa; + font-weight: 600; +} + +.ele-pro-table .ant-table-tbody > tr > td { + border-bottom: 1px solid #f5f5f5; +} + +.ele-pro-table .ant-table-tbody > tr:hover > td { + background-color: #f8f9fa; +} diff --git a/src/styles/global-import.less b/src/styles/global-import.less new file mode 100644 index 0000000..7fd1f81 --- /dev/null +++ b/src/styles/global-import.less @@ -0,0 +1,4 @@ +/** 全局引入 */ +@import 'cropperjs/dist/cropper.css'; +@import 'ant-design-vue/dist/antd.less'; +@import 'ele-admin-pro/es/style/index.less'; diff --git a/src/styles/index.less b/src/styles/index.less new file mode 100644 index 0000000..6f059b4 --- /dev/null +++ b/src/styles/index.less @@ -0,0 +1,39 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; +/** 全局样式 */ +@style-entry-file: as-needed; +@import './@{style-entry-file}.less'; +@import './transition/index.less'; +@import "./component.less"; + +// 主题 +@import 'ele-admin-pro/es/style/themes/dynamic.less'; + +:root { + // 灰色主题 + --grey-1: #1b1b1b; + --grey-2: #363636; + --grey-3: #4d4d4d; + --grey-4: #737373; + --grey-5: #a6a6a6; + --grey-6: #d9d9d9; + --grey-7: #e6e6e6; + --grey-8: #f2f2f2; + --grey-9: #f7f7f7; + --grey-10: #fafafa; +} + +.ele-admin-theme-dark { + // 灰色主题 + --grey-1: #fafafa; + --grey-2: #f7f7f7; + --grey-3: #f2f2f2; + --grey-4: #e6e6e6; + --grey-5: #d9d9d9; + --grey-6: #a6a6a6; + --grey-7: #737373; + --grey-8: #4d4d4d; + --grey-9: #363636; + --grey-10: #1b1b1b; +} diff --git a/src/styles/transition/fade.less b/src/styles/transition/fade.less new file mode 100644 index 0000000..9433fc0 --- /dev/null +++ b/src/styles/transition/fade.less @@ -0,0 +1,10 @@ +/* 渐变 */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.2s ease-in-out; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/src/styles/transition/index.less b/src/styles/transition/index.less new file mode 100644 index 0000000..be030fb --- /dev/null +++ b/src/styles/transition/index.less @@ -0,0 +1,4 @@ +/** 路由切换动画 */ +@import './fade.less'; +@import './slide.less'; +@import './zoom.less'; diff --git a/src/styles/transition/slide.less b/src/styles/transition/slide.less new file mode 100644 index 0000000..b1336e1 --- /dev/null +++ b/src/styles/transition/slide.less @@ -0,0 +1,31 @@ +/* 底部消退 */ +.slide-bottom-enter-active, +.slide-bottom-leave-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.slide-bottom-enter-from { + opacity: 0; + transform: translateY(-10%); +} + +.slide-bottom-leave-to { + opacity: 0; + transform: translateY(10%); +} + +/* 右侧消退 */ +.slide-right-leave-active, +.slide-right-enter-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.slide-right-enter-from { + opacity: 0; + transform: translateX(-60px); +} + +.slide-right-leave-to { + opacity: 0; + transform: translateX(60px); +} diff --git a/src/styles/transition/zoom.less b/src/styles/transition/zoom.less new file mode 100644 index 0000000..28fe401 --- /dev/null +++ b/src/styles/transition/zoom.less @@ -0,0 +1,31 @@ +/* 放大渐变 */ +.zoom-in-enter-active, +.zoom-in-leave-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.zoom-in-enter-from { + opacity: 0; + transform: scale(0.9); +} + +.zoom-in-leave-to { + opacity: 0; + transform: scale(1.1); +} + +/* 缩小渐变 */ +.zoom-out-leave-active, +.zoom-out-enter-active { + transition: opacity 0.2s ease-out, transform 0.25s ease-out; +} + +.zoom-out-enter-from { + opacity: 0; + transform: scale(1.2); +} + +.zoom-out-leave-to { + opacity: 0; + transform: scale(0.8); +} diff --git a/src/utils/cache-manager.ts b/src/utils/cache-manager.ts new file mode 100644 index 0000000..8c5c174 --- /dev/null +++ b/src/utils/cache-manager.ts @@ -0,0 +1,429 @@ +/** + * 缓存管理工具 + */ + +// 缓存项接口 +interface CacheItem { + data: T; + timestamp: number; + expiry: number; + version?: string; + tags?: string[]; +} + +// 缓存配置 +interface CacheConfig { + maxSize?: number; + defaultExpiry?: number; + version?: string; + enableCompression?: boolean; +} + +// 内存缓存管理器 +export class MemoryCache { + private cache = new Map(); + private config: Required; + private accessOrder = new Map(); + private accessCounter = 0; + + constructor(config: CacheConfig = {}) { + this.config = { + maxSize: config.maxSize || 100, + defaultExpiry: config.defaultExpiry || 5 * 60 * 1000, // 5分钟 + version: config.version || '1.0.0', + enableCompression: config.enableCompression || false + }; + } + + /** + * 设置缓存 + */ + set(key: string, data: T, expiry?: number, tags?: string[]): void { + const item: CacheItem = { + data, + timestamp: Date.now(), + expiry: expiry || this.config.defaultExpiry, + version: this.config.version, + tags + }; + + // 检查缓存大小限制 + if (this.cache.size >= this.config.maxSize && !this.cache.has(key)) { + this.evictLRU(); + } + + this.cache.set(key, item); + this.updateAccessOrder(key); + } + + /** + * 获取缓存 + */ + get(key: string): T | null { + const item = this.cache.get(key); + + if (!item) { + return null; + } + + // 检查是否过期 + if (this.isExpired(item)) { + this.cache.delete(key); + this.accessOrder.delete(key); + return null; + } + + // 检查版本 + if (item.version !== this.config.version) { + this.cache.delete(key); + this.accessOrder.delete(key); + return null; + } + + this.updateAccessOrder(key); + return item.data; + } + + /** + * 删除缓存 + */ + delete(key: string): boolean { + this.accessOrder.delete(key); + return this.cache.delete(key); + } + + /** + * 清空缓存 + */ + clear(): void { + this.cache.clear(); + this.accessOrder.clear(); + this.accessCounter = 0; + } + + /** + * 根据标签清除缓存 + */ + clearByTags(tags: string[]): void { + for (const [key, item] of this.cache.entries()) { + if (item.tags && item.tags.some(tag => tags.includes(tag))) { + this.delete(key); + } + } + } + + /** + * 检查缓存是否存在且有效 + */ + has(key: string): boolean { + return this.get(key) !== null; + } + + /** + * 获取缓存大小 + */ + size(): number { + return this.cache.size; + } + + /** + * 获取缓存统计信息 + */ + getStats() { + let totalSize = 0; + let expiredCount = 0; + + for (const item of this.cache.values()) { + totalSize += JSON.stringify(item.data).length; + if (this.isExpired(item)) { + expiredCount++; + } + } + + return { + totalItems: this.cache.size, + totalSize, + expiredCount, + maxSize: this.config.maxSize + }; + } + + /** + * 清理过期缓存 + */ + cleanup(): number { + let cleanedCount = 0; + + for (const [key, item] of this.cache.entries()) { + if (this.isExpired(item)) { + this.delete(key); + cleanedCount++; + } + } + + return cleanedCount; + } + + private isExpired(item: CacheItem): boolean { + return Date.now() - item.timestamp > item.expiry; + } + + private updateAccessOrder(key: string): void { + this.accessOrder.set(key, ++this.accessCounter); + } + + private evictLRU(): void { + let lruKey = ''; + let lruAccess = Infinity; + + for (const [key, access] of this.accessOrder.entries()) { + if (access < lruAccess) { + lruAccess = access; + lruKey = key; + } + } + + if (lruKey) { + this.delete(lruKey); + } + } +} + +// 持久化缓存管理器 +export class PersistentCache { + private prefix: string; + private config: Required; + + constructor(prefix: string = 'app_cache', config: CacheConfig = {}) { + this.prefix = prefix; + this.config = { + maxSize: config.maxSize || 50, + defaultExpiry: config.defaultExpiry || 24 * 60 * 60 * 1000, // 24小时 + version: config.version || '1.0.0', + enableCompression: config.enableCompression || true + }; + } + + /** + * 设置持久化缓存 + */ + set(key: string, data: T, expiry?: number, tags?: string[]): void { + try { + const item: CacheItem = { + data, + timestamp: Date.now(), + expiry: expiry || this.config.defaultExpiry, + version: this.config.version, + tags + }; + + const serialized = JSON.stringify(item); + localStorage.setItem(this.getKey(key), serialized); + + // 更新索引 + this.updateIndex(key); + } catch (error) { + console.warn('Failed to set persistent cache:', error); + // 如果存储失败,尝试清理一些空间 + this.cleanup(); + } + } + + /** + * 获取持久化缓存 + */ + get(key: string): T | null { + try { + const serialized = localStorage.getItem(this.getKey(key)); + + if (!serialized) { + return null; + } + + const item: CacheItem = JSON.parse(serialized); + + // 检查是否过期 + if (this.isExpired(item)) { + this.delete(key); + return null; + } + + // 检查版本 + if (item.version !== this.config.version) { + this.delete(key); + return null; + } + + return item.data; + } catch (error) { + console.warn('Failed to get persistent cache:', error); + this.delete(key); + return null; + } + } + + /** + * 删除持久化缓存 + */ + delete(key: string): void { + localStorage.removeItem(this.getKey(key)); + this.removeFromIndex(key); + } + + /** + * 清空所有缓存 + */ + clear(): void { + const keys = this.getAllKeys(); + keys.forEach(key => localStorage.removeItem(key)); + localStorage.removeItem(this.getIndexKey()); + } + + /** + * 根据标签清除缓存 + */ + clearByTags(tags: string[]): void { + const keys = this.getAllKeys(); + + keys.forEach(fullKey => { + try { + const serialized = localStorage.getItem(fullKey); + if (serialized) { + const item: CacheItem = JSON.parse(serialized); + if (item.tags && item.tags.some(tag => tags.includes(tag))) { + const key = fullKey.replace(this.prefix + '_', ''); + this.delete(key); + } + } + } catch (error) { + // 忽略解析错误,直接删除 + localStorage.removeItem(fullKey); + } + }); + } + + /** + * 清理过期缓存 + */ + cleanup(): number { + const keys = this.getAllKeys(); + let cleanedCount = 0; + + keys.forEach(fullKey => { + try { + const serialized = localStorage.getItem(fullKey); + if (serialized) { + const item: CacheItem = JSON.parse(serialized); + if (this.isExpired(item)) { + const key = fullKey.replace(this.prefix + '_', ''); + this.delete(key); + cleanedCount++; + } + } + } catch (error) { + // 如果解析失败,也删除这个项 + localStorage.removeItem(fullKey); + cleanedCount++; + } + }); + + return cleanedCount; + } + + private getKey(key: string): string { + return `${this.prefix}_${key}`; + } + + private getIndexKey(): string { + return `${this.prefix}_index`; + } + + private getAllKeys(): string[] { + const keys: string[] = []; + for (let i = 0; i < localStorage.length; i++) { + const key = localStorage.key(i); + if (key && key.startsWith(this.prefix + '_') && key !== this.getIndexKey()) { + keys.push(key); + } + } + return keys; + } + + private updateIndex(key: string): void { + try { + const indexKey = this.getIndexKey(); + const index = JSON.parse(localStorage.getItem(indexKey) || '[]'); + + if (!index.includes(key)) { + index.push(key); + + // 限制索引大小 + if (index.length > this.config.maxSize) { + const removedKey = index.shift(); + this.delete(removedKey); + } + + localStorage.setItem(indexKey, JSON.stringify(index)); + } + } catch (error) { + console.warn('Failed to update cache index:', error); + } + } + + private removeFromIndex(key: string): void { + try { + const indexKey = this.getIndexKey(); + const index = JSON.parse(localStorage.getItem(indexKey) || '[]'); + const newIndex = index.filter((k: string) => k !== key); + localStorage.setItem(indexKey, JSON.stringify(newIndex)); + } catch (error) { + console.warn('Failed to remove from cache index:', error); + } + } + + private isExpired(item: CacheItem): boolean { + return Date.now() - item.timestamp > item.expiry; + } +} + +// 全局缓存实例 +export const memoryCache = new MemoryCache({ + maxSize: 200, + defaultExpiry: 5 * 60 * 1000 // 5分钟 +}); + +export const persistentCache = new PersistentCache('app_cache', { + maxSize: 100, + defaultExpiry: 24 * 60 * 60 * 1000 // 24小时 +}); + +// 缓存装饰器 +export function cached( + expiry: number = 5 * 60 * 1000, + keyGenerator?: (...args: any[]) => string +) { + return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { + const originalMethod = descriptor.value; + + descriptor.value = async function (...args: any[]) { + const key = keyGenerator + ? keyGenerator(...args) + : `${target.constructor.name}_${propertyKey}_${JSON.stringify(args)}`; + + // 尝试从缓存获取 + let result = memoryCache.get(key); + + if (result === null) { + // 缓存未命中,执行原方法 + result = await originalMethod.apply(this, args); + + // 存入缓存 + memoryCache.set(key, result, expiry); + } + + return result; + }; + + return descriptor; + }; +} diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..bb95696 --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,565 @@ +import { message, SelectProps } from 'ant-design-vue'; +import { isExternalLink, random, toDateString } from 'ele-admin-pro'; +import router from '@/router'; +import { listDictionaryData } from '@/api/system/dictionary-data'; +import { ref, unref } from 'vue'; +import { APP_SECRET, FILE_SERVER } from '@/config/setting'; +import { useUserStore } from '@/store/modules/user'; +import CryptoJS from 'crypto-js'; +// import { useI18n } from 'vue-i18n'; +import { useRouter } from 'vue-router'; +import {getSiteDomain, getTenantId} from '@/utils/domain'; +import { uuid } from 'ele-admin-pro'; +import mitt from 'mitt'; +import {ChatMessage} from "@/api/system/chat/model"; +type Events = { + message: ChatMessage; +}; +export const emitter = mitt(); +/** + * 常用函数封装 + */ + +// 生成编号 +export function createCode(): string { + const data = new Date(); + const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}`; + return code.slice(0); +} + +// 生成商户编号 +export function createMerchantCode(): string { + const data = new Date(); + const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getSeconds()}`; + return code.slice(3); +} + +// 生成订单编号 +export function createOrderNo(): string { + const data = new Date(); + const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}${random( + 8000, + 12000 + )}`; + return code.slice(0); +} + +// 跳转页面函数 +export function openUrl(url: string, params?: any): void { + const isExternal = isExternalLink(url); + if (isExternal) { + window.open(url); + } else { + if (params) { + router.push({ path: url, query: params }); + } else { + router.push(url); + } + } +} + +/** + * 跳转页面函数 + * 携带用于统计用户行为的参数 + * @param path /product/detail.html + * @param id 128 + * @param d 项目数据 + * 拼接规则: {域名}{path}?spm={模型}.{租户ID}.{商户ID}.{父栏目ID}.{栏目ID}.{详情页ID}.{用户ID}.{timestamp}&token={token} + * @return https:///websoft.top/product/detail/128.html?spm=c.5.3057.10005.undefined&token=DDkr1PpE9DouIVMjLEMt9733QsgG7oNV + */ +export function openSpmUrl(path?: string, d?: any, id = 0): void { + // const domain = getSiteDomain(); + let domain = localStorage.getItem('Domain'); + let spm = ''; + let tid = d?.tenantId || 0; + let mid = localStorage.getItem('MerchantId') || 0; + let pid = d?.parentId || 0; + let cid = d?.categoryId || 0; + let uid = localStorage.getItem('UserId') || 0; + let timestamp = ref(Date.now() / 1000); + + if(d?.navigationId > 0){ + cid = d.navigationId; + } + if(d?.itemId > 0){ + id = d.itemId; + } + + // TODO 封装租户ID和店铺ID + spm = `?spm=${d?.model}.${tid}.${mid}.${pid}.${cid}.${id}.${uid}.${ + timestamp.value + }&token=${uuid()}`; + + // TODO 含http直接跳转 + if (path?.startsWith('http')) { + window.open(`${path}`); + return; + } + + // TODO 开发环境 + if (import.meta.env.DEV) { + console.log('开发环境',getTenantId()); + window.open(`http://localhost:${getTenantId()}${path}${spm}`); + return; + } + + // TODO 跳转网站预览地址 + if (domain && domain.length > 0) { + window.open(`https://${domain}${path}${spm}`); + return; + } +} + +/** + * 获取SpmUrl + * 拼接规则: {域名}{path}?spm={模型}.{租户ID}.{商户ID}.{父栏目ID}.{栏目ID}.{详情页ID}.{用户ID}.{timestamp}&token={token} + * @param d + */ +export function getSpmUrl(d?: any): string { + let domain = localStorage.getItem('Domain'); + let path = d?.model; + let tid = d?.tenantId || 0; + let mid = d?.merchantId || 0; + let pid = d?.parentId || 0; + let cid = d?.navigationId; + let id = d?.itemId; + let uid = localStorage.getItem('UserId') || 0; + let timestamp = ref(Date.now() / 1000); + + // TODO 配置cid + if(!cid){ + cid = d?.categoryId; + } + if(!id){ + id = d?.articleId || 0; + } + path = d?.model + '/' + d?.navigationId; + // TODO 首页 + if(d?.model == 'index'){ + path = ''; + } + if(!domain?.startsWith('https:')){ + domain = `https://${domain}` + } + // 开发环境 + if (import.meta.env.DEV) { + domain = `http://localhost:${getTenantId()}` + } + + // TODO 顶级栏目则默认跳转到第一个子栏目 + if(d?.parentId == 0 && d?.children && d?.children.length > 0){ + cid = d?.children?.[0]?.navigationId; + } + + // 文章后缀 + if(d?.suffix){ + path = path + d?.suffix; + } + + // TODO 封装spm + return `${domain}/${path}?spm=${d?.model}.${tid}.${mid}.${pid}.${cid}.${id}.${uid}.${timestamp.value}`; +} + + + +// export function getSpmUrl(path: string, d?: any, id = 0): string { +// let domain = localStorage.getItem('Domain'); +// let spm = ''; +// let tid = localStorage.getItem('TenantId') || 0; +// let mid = localStorage.getItem('MerchantId') || 0; +// let pid = d?.parentId || 0; +// let cid = d?.navigationId || d?.categoryId; +// let uid = localStorage.getItem('UserId') || 0; +// let timestamp = ref(Date.now() / 1000); +// +// // 跳转网站预览地址 +// if(d?.model == 'links'){ +// return d?.path; +// } +// // 详情ID +// if(d?.itemId > 0){ +// id = d?.itemId; +// } +// // 顶级栏目则默认跳转到第一个子栏目 +// if(d?.children && d?.children.length > 0){ +// id = d?.children[0]?.navigationId; +// } +// // TODO 封装spm +// spm = `?spm=${d?.model}.${tid}.${mid}.${pid}.${cid}.${id}.${uid}.${timestamp.value}`; +// +// // 开发环境 +// if (import.meta.env.DEV) { +// return `http://localhost:10317${path}${spm}`; +// } +// return `https://${domain}${path}${spm}` +// } + + +/** + * 弹出新窗口 + * @param url + * @constructor + */ +export function openNew(url: string) { + if (url.slice(0, 4) == 'http') { + return window.open(url); + } + window.open(`http://${url}`); +} + +/** + * 预览地址 + * @param url + * @constructor + */ +export function openPreview(url: string) { + if (url.slice(0, 4) == 'http') { + return window.open(url); + } + return window.open(`${getSiteDomain()}${url}`); +} +/** + * 获取网站域名 + * @param path + */ +export const getDomainPath = (path: string) => { + const domain = localStorage.getItem('Domain'); + return domain + path; +}; + +export const getLang = () => { + if(localStorage.getItem('i18n-lang')){ + return `${localStorage.getItem('i18n-lang')}` + } + // const { locale } = useI18n(); + // return `${locale.value}`; +} +// 预览云存储文件 +export function getUrl(url: string) { + const isExternal = isExternalLink(url); + // const uploadMethod = localStorage.getItem('UploadMethod'); + // const bucketDomain = localStorage.getItem('BucketDomain'); + // if (uploadMethod == 'oss') { + // return bucketDomain + url; + // } + if (!isExternal) { + return FILE_SERVER + url; + } + return url; +} + +// 跳转页面(不弹窗) +export function navTo(d?: any, path?: string, spm?: boolean): string { + let domain = localStorage.getItem('Domain'); + + if(!domain?.startsWith('https:')){ + domain = `https://${domain}` + } + // 开发环境 + if (import.meta.env.DEV) { + domain = `http://localhost:${getTenantId()}` + } + if(d?.model == 'index'){ + return domain + '/'; + } + if(!path){ + path = d?.path; + } + // 国际化配置 + if(getLang()){ + if(getLang() == 'en'){ + path = '/en' + path; + } + } + // 是否移动端 + if(d?.isMobile){ + path = '/m' + path; + } + path = domain + path; + // 是否附加spm参数 + if(spm){ + let uid = localStorage.getItem('UserId') || 0; + let timestamp = ref(Date.now() / 1000); + return `${path}?spm=${d?.tenantId||0}.${d?.merchantId||0}.${d?.parentId||0}.${d?.navigationId||d?.categoryId}.${uid}.${timestamp.value}` + } + return `${path}`; +} + +export function detail(d: any){ + return navTo(d,`/${d.detail}/${d.articleId}.html`); +} + +export function push(path: string) { + router.push(path); +} + +// 手机号脱敏 +export function getMobile(tel: string) { + const reg = /^(\d{3})\d{4}(\d{4})$/; + return tel.replace(reg, '$1****$2'); +} + +// 复制文本 +export const copyText = (text) => { + // 模拟 输入框 + const cInput = document.createElement('input'); + cInput.value = text; + document.body.appendChild(cInput); + cInput.select(); // 选取文本框内容 + + // 执行浏览器复制命令 + // 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签) + // Input要在正常的编辑状态下原生复制方法才会生效 + message.success(`复制成功`); + document.execCommand('copy'); + + // 复制成功后再将构造的标签 移除 + document.body.removeChild(cInput); +}; + +/** + * 计算剩余时间 + * @param endTime + */ +export const getEndTime = (endTime) => { + const setTime = new Date(endTime); + const nowTime = new Date(); + const restSec = setTime.getTime() - nowTime.getTime(); + // 剩余天数 + const lastDay = parseInt(String(restSec / (60 * 60 * 24 * 1000) + 1)); + // let lastHour = parseInt(String((restSec / (60 * 60 * 1000)) % 24)); + // let lastMinu = parseInt(String((restSec / (60 * 1000)) % 60)); + // let lastSec = parseInt(String((restSec / 1000) % 60)); + + // 过期状态 + if (lastDay < 30 && lastDay > 0) { + return `
${toDateString( + endTime, + 'yyyy-MM-dd' + )}(${lastDay}天后过期)
`; + } + if (lastDay < 0) { + return `
${toDateString( + endTime, + 'yyyy-MM-dd' + )}(已过期)
`; + } + return `
${toDateString( + endTime, + 'yyyy-MM-dd' + )}
`; +}; + +/** + * 判断是否是移动设备 + */ +export function isMobileDevice(): boolean { + return (typeof window.orientation !== "undefined") || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); +} + +/** + * 获取字典数据作为下拉选项数据 + * @param dictCode + */ +export const getDictionaryOptions = (dictCode) => { + const dictOptions = ref([]); + // const key = dictCode + ':' + localStorage.getItem('TenantId'); + // const storageData = localStorage.getItem(key); + + listDictionaryData({ + dictCode + }) + .then((list) => { + // 获取远程字典数据 + if (list.length > 0) { + dictOptions.value = list.map((d) => { + return { + key: d.dictDataCode, + value: d.dictDataName, + label: d.dictDataName, + comments: d.comments + }; + }); + } else { + // 未定义则取默认的json数据 + // dictOptions.value = getJson(dictCode); + } + }) + .catch((e) => { + message.error(e.message); + }); + + // if (!storageData) { + // listDictionaryData({ + // dictCode + // }) + // .then((list) => { + // // 获取远程字典数据 + // if (list.length > 0) { + // dictOptions.value = list.map((d) => { + // return { + // value: d.dictDataCode, + // label: d.dictDataName, + // text: d.dictDataName, + // comments: d.comments + // }; + // }); + // // 写入缓存 + // localStorage.setItem(key, JSON.stringify(dictOptions.value)); + // } else { + // // 未定义则取默认的json数据 + // dictOptions.value = getJson(dictCode); + // } + // }) + // .catch((e) => { + // message.error(e.message); + // }); + // } else { + // dictOptions.value = JSON.parse(storageData); + // } + return dictOptions; +}; + +// 判断是否为图片 +/* + * @param: fileName - 文件名称 + */ +export const isImage = (fileName) => { + const split = fileName.split('?'); + // 后缀获取 + let suffix = ''; + try { + const flieArr = split[0].split('.'); + suffix = flieArr[flieArr.length - 1]; + } catch (err) { + suffix = ''; + } + const imgList = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp']; + return imgList.some((item) => { + return item == suffix; + }); +}; + +export const getWeek = (text) => { + const week = [ + '星期日', + '星期一', + '星期二', + '星期三', + '星期四', + '星期五', + '星期六' + ]; + return week[text]; +}; + +/** + * 文件大小转换 + * @param text + */ +export const getFileSize = (text) => { + if (text < 1024) { + return text + 'B'; + } else if (text < 1024 * 1024) { + return (text / 1024).toFixed(1) + 'KB'; + } else if (text < 1024 * 1024 * 1024) { + return (text / 1024 / 1024).toFixed(1) + 'M'; + } else { + return (text / 1024 / 1024 / 1024).toFixed(1) + 'G'; + } +}; + +/* 原图转缩列图 */ +export const thumbnail = (url) => { + if (url.indexOf('/thumbnail') < 0) { + return url.replace(FILE_SERVER, FILE_SERVER + '/thumbnail'); + } + return url; +}; + +/* 缩列转图原图 */ +export const original = (url) => { + if (url.indexOf('/thumbnail') == 0) { + return url.replace('/thumbnail', ''); + } + return url; +}; + +export const getCompanyInfo = () => { + const user = useUserStore(); + if (user.info?.companyInfo) { + return user.info?.companyInfo; + } + return null; +}; + +export const getVersion = () => { + const companyInfo = getCompanyInfo(); + if (companyInfo?.version) { + return companyInfo?.version; + } + return null; +}; + +// AES加密 +export const encrypt = (text) => { + return CryptoJS.AES.encrypt(text, APP_SECRET).toString(); +}; + +// AES解密 +export const decrypt = (encrypt) => { + CryptoJS.AES.decrypt(encrypt, APP_SECRET); + const bytes = CryptoJS.AES.decrypt(encrypt, APP_SECRET); + return bytes.toString(CryptoJS.enc.Utf8); +}; + +// 获取商户ID +export const getMerchantId = () => { + const merchantId = localStorage.getItem('MerchantId'); + if (merchantId) { + return Number(merchantId); + } + return undefined; +}; + +// 获取当前登录用户ID +export const getUserId = () => { + let userId = 0; + const uid = Number(localStorage.getItem('UserId')); + if (uid) { + userId = uid; + return userId; + } + return userId; +}; + +// 获取页签数据 +export const getPageTitle = () => { + const { currentRoute } = useRouter(); + const { meta } = unref(currentRoute); + const { title } = meta; + return title; +}; + +/** + * 提取传参中的ID + * param 12334.html + * return 1234 + * @param index + */ +export const getIdBySpm = (index: number) => { + console.log('split', router.currentRoute.value.query.spm); + const split = String(router.currentRoute.value.query.spm).split('.'); + console.log(split); + return split[index]; +}; + +/** + * 提取传参中的token + */ +export const getTokenBySpm = () => { + const token = router.currentRoute.value.query.token; + if (token) { + return `${token}`; + } +}; diff --git a/src/utils/component-optimization.ts b/src/utils/component-optimization.ts new file mode 100644 index 0000000..24ca53d --- /dev/null +++ b/src/utils/component-optimization.ts @@ -0,0 +1,429 @@ +/** + * 组件性能优化工具 + */ +import { ref, computed, watch, onMounted, onUnmounted, nextTick } from 'vue'; +import type { Ref, ComputedRef, WatchStopHandle } from 'vue'; + +// 防抖函数 +export function useDebounce any>( + fn: T, + delay: number = 300 +): [T, () => void] { + let timeoutId: number | null = null; + + const debouncedFn = ((...args: any[]) => { + if (timeoutId !== null) { + clearTimeout(timeoutId); + } + + timeoutId = window.setTimeout(() => { + fn(...args); + timeoutId = null; + }, delay); + }) as T; + + const cancel = () => { + if (timeoutId !== null) { + clearTimeout(timeoutId); + timeoutId = null; + } + }; + + return [debouncedFn, cancel]; +} + +// 节流函数 +export function useThrottle any>( + fn: T, + delay: number = 300 +): [T, () => void] { + let lastExecTime = 0; + let timeoutId: number | null = null; + + const throttledFn = ((...args: any[]) => { + const now = Date.now(); + + if (now - lastExecTime >= delay) { + fn(...args); + lastExecTime = now; + } else { + if (timeoutId !== null) { + clearTimeout(timeoutId); + } + + timeoutId = window.setTimeout(() => { + fn(...args); + lastExecTime = Date.now(); + timeoutId = null; + }, delay - (now - lastExecTime)); + } + }) as T; + + const cancel = () => { + if (timeoutId !== null) { + clearTimeout(timeoutId); + timeoutId = null; + } + }; + + return [throttledFn, cancel]; +} + +// 虚拟滚动 +export function useVirtualScroll( + items: Ref, + itemHeight: number, + containerHeight: number, + buffer: number = 5 +) { + const scrollTop = ref(0); + const containerRef = ref(); + + const visibleRange = computed(() => { + const start = Math.floor(scrollTop.value / itemHeight); + const end = Math.min( + start + Math.ceil(containerHeight / itemHeight) + buffer, + items.value.length + ); + + return { + start: Math.max(0, start - buffer), + end + }; + }); + + const visibleItems = computed(() => { + const { start, end } = visibleRange.value; + return items.value.slice(start, end).map((item, index) => ({ + item, + index: start + index + })); + }); + + const totalHeight = computed(() => items.value.length * itemHeight); + + const offsetY = computed(() => visibleRange.value.start * itemHeight); + + const handleScroll = useThrottle((event: Event) => { + const target = event.target as HTMLElement; + scrollTop.value = target.scrollTop; + }, 16)[0]; // 60fps + + onMounted(() => { + if (containerRef.value) { + containerRef.value.addEventListener('scroll', handleScroll); + } + }); + + onUnmounted(() => { + if (containerRef.value) { + containerRef.value.removeEventListener('scroll', handleScroll); + } + }); + + return { + containerRef, + visibleItems, + totalHeight, + offsetY + }; +} + +// 图片懒加载 +export function useLazyImage() { + const imageRef = ref(); + const isLoaded = ref(false); + const isError = ref(false); + const isIntersecting = ref(false); + + let observer: IntersectionObserver | null = null; + + const load = (src: string) => { + if (!imageRef.value || isLoaded.value) return; + + const img = new Image(); + img.onload = () => { + if (imageRef.value) { + imageRef.value.src = src; + isLoaded.value = true; + } + }; + img.onerror = () => { + isError.value = true; + }; + img.src = src; + }; + + onMounted(() => { + if (imageRef.value) { + observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + isIntersecting.value = entry.isIntersecting; + }); + }, + { threshold: 0.1 } + ); + + observer.observe(imageRef.value); + } + }); + + onUnmounted(() => { + if (observer) { + observer.disconnect(); + } + }); + + return { + imageRef, + isLoaded, + isError, + isIntersecting, + load + }; +} + +// 无限滚动 +export function useInfiniteScroll( + loadMore: () => Promise, + options: { + threshold?: number; + initialLoad?: boolean; + } = {} +) { + const { threshold = 100, initialLoad = true } = options; + + const items = ref([]); + const loading = ref(false); + const finished = ref(false); + const error = ref(null); + const containerRef = ref(); + + const load = async () => { + if (loading.value || finished.value) return; + + loading.value = true; + error.value = null; + + try { + const newItems = await loadMore(); + + if (newItems.length === 0) { + finished.value = true; + } else { + items.value.push(...newItems); + } + } catch (err) { + error.value = err as Error; + } finally { + loading.value = false; + } + }; + + const checkScroll = useThrottle(() => { + if (!containerRef.value || loading.value || finished.value) return; + + const { scrollTop, scrollHeight, clientHeight } = containerRef.value; + + if (scrollTop + clientHeight >= scrollHeight - threshold) { + load(); + } + }, 100)[0]; + + onMounted(() => { + if (initialLoad) { + load(); + } + + if (containerRef.value) { + containerRef.value.addEventListener('scroll', checkScroll); + } + }); + + onUnmounted(() => { + if (containerRef.value) { + containerRef.value.removeEventListener('scroll', checkScroll); + } + }); + + const reset = () => { + items.value = []; + loading.value = false; + finished.value = false; + error.value = null; + }; + + return { + items, + loading, + finished, + error, + containerRef, + load, + reset + }; +} + +// 响应式断点 +export function useBreakpoints() { + const width = ref(window.innerWidth); + const height = ref(window.innerHeight); + + const updateSize = useThrottle(() => { + width.value = window.innerWidth; + height.value = window.innerHeight; + }, 100)[0]; + + onMounted(() => { + window.addEventListener('resize', updateSize); + }); + + onUnmounted(() => { + window.removeEventListener('resize', updateSize); + }); + + const breakpoints = computed(() => ({ + xs: width.value < 576, + sm: width.value >= 576 && width.value < 768, + md: width.value >= 768 && width.value < 992, + lg: width.value >= 992 && width.value < 1200, + xl: width.value >= 1200 && width.value < 1600, + xxl: width.value >= 1600 + })); + + return { + width, + height, + breakpoints + }; +} + +// 组件可见性检测 +export function useVisibility(threshold: number = 0.1) { + const elementRef = ref(); + const isVisible = ref(false); + + let observer: IntersectionObserver | null = null; + + onMounted(() => { + if (elementRef.value) { + observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + isVisible.value = entry.isIntersecting; + }); + }, + { threshold } + ); + + observer.observe(elementRef.value); + } + }); + + onUnmounted(() => { + if (observer) { + observer.disconnect(); + } + }); + + return { + elementRef, + isVisible + }; +} + +// 长列表优化 +export function useLongList( + data: Ref, + itemHeight: number = 50, + visibleCount: number = 10 +) { + const scrollTop = ref(0); + const containerRef = ref(); + + const startIndex = computed(() => { + return Math.floor(scrollTop.value / itemHeight); + }); + + const endIndex = computed(() => { + return Math.min(startIndex.value + visibleCount, data.value.length); + }); + + const visibleData = computed(() => { + return data.value.slice(startIndex.value, endIndex.value); + }); + + const paddingTop = computed(() => { + return startIndex.value * itemHeight; + }); + + const paddingBottom = computed(() => { + return (data.value.length - endIndex.value) * itemHeight; + }); + + const handleScroll = useThrottle((event: Event) => { + const target = event.target as HTMLElement; + scrollTop.value = target.scrollTop; + }, 16)[0]; + + onMounted(() => { + if (containerRef.value) { + containerRef.value.addEventListener('scroll', handleScroll); + } + }); + + onUnmounted(() => { + if (containerRef.value) { + containerRef.value.removeEventListener('scroll', handleScroll); + } + }); + + return { + containerRef, + visibleData, + paddingTop, + paddingBottom + }; +} + +// 内存泄漏检测 +export function useMemoryLeakDetection(componentName: string) { + const watchers: WatchStopHandle[] = []; + const timers: number[] = []; + const listeners: Array<{ element: EventTarget; event: string; handler: EventListener }> = []; + + const addWatcher = (stopHandle: WatchStopHandle) => { + watchers.push(stopHandle); + }; + + const addTimer = (timerId: number) => { + timers.push(timerId); + }; + + const addListener = (element: EventTarget, event: string, handler: EventListener) => { + element.addEventListener(event, handler); + listeners.push({ element, event, handler }); + }; + + onUnmounted(() => { + // 清理 watchers + watchers.forEach(stop => stop()); + + // 清理 timers + timers.forEach(id => clearTimeout(id)); + + // 清理 listeners + listeners.forEach(({ element, event, handler }) => { + element.removeEventListener(event, handler); + }); + + console.log(`${componentName} 组件已清理完成`); + }); + + return { + addWatcher, + addTimer, + addListener + }; +} diff --git a/src/utils/document-title-util.ts b/src/utils/document-title-util.ts new file mode 100644 index 0000000..18eccde --- /dev/null +++ b/src/utils/document-title-util.ts @@ -0,0 +1,71 @@ +import { watch } from 'vue'; +import { useRouter } from 'vue-router'; +import { useI18n } from 'vue-i18n'; +import type { RouteLocationNormalizedLoaded } from 'vue-router'; +import { + routeI18nKey, + findTabByPath +} from 'ele-admin-pro/es/ele-pro-layout/util'; +import { storeToRefs } from 'pinia'; +import { useThemeStore } from '@/store/modules/theme'; +import { PROJECT_NAME, REDIRECT_PATH, I18N_ENABLE } from '@/config/setting'; + +/** + * 修改浏览器标题 + * @param title 标题 + */ +export function setDocumentTitle(title: string) { + const names: string[] = []; + const tenantName = localStorage.getItem('TenantName'); + if (title) { + names.push(title); + } + if (tenantName) { + names.push(tenantName); + } else { + names.push(PROJECT_NAME); + } + document.title = names.join(' - '); +} + +/** + * 路由切换更新浏览器标题 + */ +export function useSetDocumentTitle() { + const { currentRoute } = useRouter(); + const { t, locale } = useI18n(); + const themeStore = useThemeStore(); + const { tabs } = storeToRefs(themeStore); + + const updateTitle = (route: RouteLocationNormalizedLoaded) => { + const { path, meta, fullPath } = route; + if (path.includes(REDIRECT_PATH)) { + return; + } + const pathKey = routeI18nKey(path); + if (!pathKey) { + return; + } + const tab = findTabByPath(fullPath, tabs.value); + const title = tab?.title || (meta?.title as string); + if (!I18N_ENABLE) { + setDocumentTitle(title); + return; + } + const k = `route.${pathKey}._name`; + const v = t(k); + setDocumentTitle(v === k || !v ? title : v); + }; + + watch( + currentRoute, + (route) => { + updateTitle(route); + }, + { immediate: true } + ); + + watch(locale, () => { + updateTitle(currentRoute.value); + }); +} diff --git a/src/utils/domain.ts b/src/utils/domain.ts new file mode 100644 index 0000000..63f78b0 --- /dev/null +++ b/src/utils/domain.ts @@ -0,0 +1,144 @@ +import { isNumber } from 'ele-admin-pro'; +import {listCmsWebsite} from "@/api/cms/cmsWebsite"; + +// 解析域名结构 +export function getHost(): any { + const host = window.location.host; + return host.split('.'); +} + +// 是否https +export function isHttps() { + const protocol = window.location.protocol; + if (protocol == 'https:') { + return true; + } + return false; +} + +/** + * 获取原始域名 + * @return http://www.domain.com + */ +export function getOriginDomain(): string { + return window.origin; +} + +/** + * 域名的第一部分 + * 获取tenantId + * @return 10140 + */ +export function getDomainPart1(): any { + const split = getHost(); + if (split[0] == '127') { + return undefined; + } + const ip = Number(split[0]); + if(ip < 1000){ + return undefined; + } + if (isNumber(split[0])) { + return split[0]; + } + const tenantId = localStorage.getItem('TenantId'); + if(tenantId){ + return Number(tenantId); + } + return undefined; +} + +/** + * 通过解析泛域名获取租户ID + * https://10140.wsdns.cn + * @return 10140 + */ +export function getTenantId() { + return getDomainPart1(); +} + +/** + * 获取根域名 + * hostname + */ +export function getHostname(): string { + return window.location.hostname; +} + +/** + * 获取域名 + * @return https://www.domain.com + */ +export function getDomain(): string { + return window.location.protocol + '//www.' + getRootDomain(); +} + +/** + * 获取根域名 + * abc.com + */ +export function getRootDomain(): string { + const split = getHost(); + return split[split.length - 2] + '.' + split[split.length - 1]; +} + +/** + * 获取二级域名 + * @return abc.com + */ +export function getSubDomainPath(): string { + const split = getHost(); + if (split.length == 2) { + return ''; + } + return split[split.length - 3]; +} + +/** + * 获取产品标识 + * @return 10048 + */ +export function getProductCode(): string | null { + const subDomain = getSubDomainPath(); + if (subDomain == undefined) { + return null; + } + const split = subDomain.split('-'); + return split[0]; +} + +/** + * 控制台域名 + */ +export function navSubDomain(path): string { + return `${window.location.protocol}//${path}.${getRootDomain()}`; +} + +// 获取网站域名(推荐使用) +export function getSiteDomain(): string { + const siteDomain = localStorage.getItem('Domain'); + if (!siteDomain) { + listCmsWebsite({ limit: 1 }).then((list) => { + if (list.length > 0) { + const d = list[0]; + if (d.domain) { + localStorage.setItem('Domain', `https://${d.domain}`); + } else { + localStorage.setItem('Domain', `https://${d.websiteCode}.wsdns.cn`); + } + return localStorage.getItem('Domain'); + } + }); + } + // 开发环境调试域名 + if (localStorage.getItem('DevDomain')) { + return `${localStorage.getItem('DevDomain')}`; + } + return `${localStorage.getItem('Domain')}`; +} + +// 检查 URL 是否为 HTTPS +export const checkIfHttps = (text: string) => { + const url = new URL(text); + return url.protocol === 'https:'; +}; diff --git a/src/utils/editor.ts b/src/utils/editor.ts new file mode 100644 index 0000000..a315ec2 --- /dev/null +++ b/src/utils/editor.ts @@ -0,0 +1,47 @@ +import { ref } from 'vue'; +import TinymceEditor from '@/components/TinymceEditor/index.vue'; + +const editorRef = ref | null>(null); +// 编辑器配置信息 +export function editorConfig(height?: 500): void { + const resultData = ref({ + height: height, + // 自定义文件上传(这里使用把选择的文件转成 blob 演示) + file_picker_callback: (callback: any, _value: any, meta: any) => { + const input = document.createElement('input'); + input.setAttribute('type', 'file'); + // 设定文件可选类型 + if (meta.filetype === 'image') { + input.setAttribute('accept', 'image/*'); + } else if (meta.filetype === 'media') { + input.setAttribute('accept', 'video/*'); + } + input.onchange = () => { + const file = input.files?.[0]; + if (!file) { + return; + } + if (meta.filetype === 'media') { + if (!file.type.startsWith('video/')) { + editorRef.value?.alert({ content: '只能选择视频文件' }); + return; + } + } + if (file.size / 1024 / 1024 > 20) { + editorRef.value?.alert({ content: '大小不能超过 20MB' }); + return; + } + const reader = new FileReader(); + reader.onload = (e) => { + if (e.target?.result != null) { + const blob = new Blob([e.target.result], { type: file.type }); + callback(URL.createObjectURL(blob)); + } + }; + reader.readAsArrayBuffer(file); + }; + input.click(); + } + }); + return resultData; +} diff --git a/src/utils/enhanced-request.ts b/src/utils/enhanced-request.ts new file mode 100644 index 0000000..77f6be2 --- /dev/null +++ b/src/utils/enhanced-request.ts @@ -0,0 +1,352 @@ +/** + * 增强的 API 请求工具 + */ +import axios, { AxiosRequestConfig, AxiosError } from 'axios'; +import { apiPerformanceMonitor } from './performance'; +import { memoryCache } from './cache-manager'; +import { getToken } from './token-util'; +import { API_BASE_URL, TOKEN_HEADER_NAME } from '@/config/setting'; + +// 请求配置接口 +interface EnhancedRequestConfig extends AxiosRequestConfig { + // 缓存配置 + cache?: { + enabled: boolean; + expiry?: number; + key?: string; + tags?: string[]; + }; + // 重试配置 + retry?: { + times: number; + delay: number; + condition?: (error: AxiosError) => boolean; + }; + // 性能监控 + performance?: boolean; + // 请求去重 + dedupe?: boolean; + // 超时重试 + timeoutRetry?: boolean; +} + +// 请求队列管理 +class RequestQueue { + private pendingRequests = new Map>(); + + // 生成请求键 + private generateKey(config: AxiosRequestConfig): string { + const { method, url, params, data } = config; + return `${method}_${url}_${JSON.stringify(params)}_${JSON.stringify(data)}`; + } + + // 添加请求到队列 + add(config: AxiosRequestConfig, executor: () => Promise): Promise { + const key = this.generateKey(config); + + if (this.pendingRequests.has(key)) { + return this.pendingRequests.get(key); + } + + const promise = executor().finally(() => { + this.pendingRequests.delete(key); + }); + + this.pendingRequests.set(key, promise); + return promise; + } + + // 清除队列 + clear(): void { + this.pendingRequests.clear(); + } +} + +// 重试机制 +class RetryManager { + static async retry( + fn: () => Promise, + config: { times: number; delay: number; condition?: (error: any) => boolean } + ): Promise { + let lastError: any; + + for (let i = 0; i <= config.times; i++) { + try { + return await fn(); + } catch (error) { + lastError = error; + + // 检查是否应该重试 + if (i < config.times && (!config.condition || config.condition(error as AxiosError))) { + await this.delay(config.delay * Math.pow(2, i)); // 指数退避 + console.warn(`请求重试 ${i + 1}/${config.times}:`, error); + } else { + break; + } + } + } + + throw lastError; + } + + private static delay(ms: number): Promise { + return new Promise(resolve => setTimeout(resolve, ms)); + } +} + +// 增强的请求类 +export class EnhancedRequest { + private instance = axios.create({ + baseURL: API_BASE_URL, + timeout: 30000 + }); + + private requestQueue = new RequestQueue(); + + constructor() { + this.setupInterceptors(); + } + + private setupInterceptors() { + // 请求拦截器 + this.instance.interceptors.request.use( + (config) => { + // 添加认证头 + const token = getToken(); + if (token && config.headers) { + config.headers[TOKEN_HEADER_NAME] = token; + } + + // 添加请求时间戳 + (config as any).startTime = Date.now(); + + return config; + }, + (error) => { + return Promise.reject(error); + } + ); + + // 响应拦截器 + this.instance.interceptors.response.use( + (response) => { + // 记录性能数据 + const config = response.config as any; + if (config.startTime) { + const duration = Date.now() - config.startTime; + apiPerformanceMonitor.recordApiCall(config.url, duration); + } + + return response; + }, + (error) => { + // 记录错误的性能数据 + const config = error.config as any; + if (config && config.startTime) { + const duration = Date.now() - config.startTime; + apiPerformanceMonitor.recordApiCall(config.url, duration); + } + + return Promise.reject(error); + } + ); + } + + // 通用请求方法 + async request(config: EnhancedRequestConfig): Promise { + const { + cache, + retry, + performance = true, + dedupe = true, + timeoutRetry = true, + ...axiosConfig + } = config; + + // 生成缓存键 + const cacheKey = cache?.key || this.generateCacheKey(axiosConfig); + + // 尝试从缓存获取 + if (cache?.enabled) { + const cachedData = memoryCache.get(cacheKey); + if (cachedData !== null) { + return cachedData; + } + } + + // 请求执行器 + const executor = async (): Promise => { + const response = await this.instance.request(axiosConfig); + + // 缓存响应数据 + if (cache?.enabled && response.data) { + memoryCache.set( + cacheKey, + response.data, + cache.expiry, + cache.tags + ); + } + + return response.data; + }; + + // 请求去重 + if (dedupe) { + return this.requestQueue.add(axiosConfig, async () => { + // 重试机制 + if (retry) { + return RetryManager.retry(executor, { + ...retry, + condition: retry.condition || this.shouldRetry + }); + } + + return executor(); + }); + } + + // 重试机制 + if (retry) { + return RetryManager.retry(executor, { + ...retry, + condition: retry.condition || this.shouldRetry + }); + } + + return executor(); + } + + // GET 请求 + get(url: string, config?: EnhancedRequestConfig): Promise { + return this.request({ + ...config, + method: 'GET', + url + }); + } + + // POST 请求 + post(url: string, data?: any, config?: EnhancedRequestConfig): Promise { + return this.request({ + ...config, + method: 'POST', + url, + data + }); + } + + // PUT 请求 + put(url: string, data?: any, config?: EnhancedRequestConfig): Promise { + return this.request({ + ...config, + method: 'PUT', + url, + data + }); + } + + // DELETE 请求 + delete(url: string, config?: EnhancedRequestConfig): Promise { + return this.request({ + ...config, + method: 'DELETE', + url + }); + } + + // 批量请求 + async batch(requests: EnhancedRequestConfig[]): Promise { + const promises = requests.map(config => this.request(config)); + return Promise.all(promises); + } + + // 并发控制请求 + async concurrent( + requests: EnhancedRequestConfig[], + limit: number = 5 + ): Promise { + const results: T[] = []; + + for (let i = 0; i < requests.length; i += limit) { + const batch = requests.slice(i, i + limit); + const batchResults = await this.batch(batch); + results.push(...batchResults); + } + + return results; + } + + // 生成缓存键 + private generateCacheKey(config: AxiosRequestConfig): string { + const { method, url, params, data } = config; + return `api_${method}_${url}_${JSON.stringify(params)}_${JSON.stringify(data)}`; + } + + // 判断是否应该重试 + private shouldRetry(error: AxiosError): boolean { + // 网络错误或超时错误重试 + if (!error.response) { + return true; + } + + // 5xx 服务器错误重试 + const status = error.response.status; + return status >= 500 && status < 600; + } + + // 清除缓存 + clearCache(tags?: string[]): void { + if (tags) { + memoryCache.clearByTags(tags); + } else { + memoryCache.clear(); + } + } + + // 取消所有请求 + cancelAll(): void { + this.requestQueue.clear(); + } +} + +// 全局实例 +export const enhancedRequest = new EnhancedRequest(); + +// 便捷方法 +export const { get, post, put, delete: del, batch, concurrent } = enhancedRequest; + +// 带缓存的 GET 请求 +export function cachedGet( + url: string, + config?: Omit & { + expiry?: number; + tags?: string[]; + } +): Promise { + const { expiry = 5 * 60 * 1000, tags, ...restConfig } = config || {}; + + return enhancedRequest.get(url, { + ...restConfig, + cache: { + enabled: true, + expiry, + tags + } + }); +} + +// 带重试的请求 +export function retryRequest( + config: EnhancedRequestConfig, + retryTimes: number = 3, + retryDelay: number = 1000 +): Promise { + return enhancedRequest.request({ + ...config, + retry: { + times: retryTimes, + delay: retryDelay + } + }); +} diff --git a/src/utils/lazy-load.ts b/src/utils/lazy-load.ts new file mode 100644 index 0000000..17aae32 --- /dev/null +++ b/src/utils/lazy-load.ts @@ -0,0 +1,318 @@ +/** + * 组件懒加载工具 + */ +import { defineAsyncComponent, Component } from 'vue'; +import { LoadingOutlined } from '@ant-design/icons-vue'; +import { h } from 'vue'; + +// 加载状态组件 +const LoadingComponent = { + setup() { + return () => h('div', { + style: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + minHeight: '200px', + fontSize: '16px', + color: '#999' + } + }, [ + h(LoadingOutlined, { style: { marginRight: '8px' } }), + '加载中...' + ]); + } +}; + +// 错误状态组件 +const ErrorComponent = { + props: ['error'], + setup(props: { error: Error }) { + return () => h('div', { + style: { + display: 'flex', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'center', + minHeight: '200px', + padding: '20px', + color: '#ff4d4f', + backgroundColor: '#fff2f0', + border: '1px solid #ffccc7', + borderRadius: '6px' + } + }, [ + h('div', { style: { fontSize: '16px', marginBottom: '8px' } }, '组件加载失败'), + h('div', { style: { fontSize: '12px', color: '#999' } }, props.error.message), + h('button', { + style: { + marginTop: '12px', + padding: '4px 12px', + border: '1px solid #d9d9d9', + borderRadius: '4px', + backgroundColor: '#fff', + cursor: 'pointer' + }, + onClick: () => window.location.reload() + }, '重新加载') + ]); + } +}; + +// 懒加载配置选项 +interface LazyLoadOptions { + loading?: Component; + error?: Component; + delay?: number; + timeout?: number; + retries?: number; + retryDelay?: number; +} + +// 默认配置 +const defaultOptions: LazyLoadOptions = { + loading: LoadingComponent, + error: ErrorComponent, + delay: 200, + timeout: 30000, + retries: 3, + retryDelay: 1000 +}; + +/** + * 创建懒加载组件 + * @param loader 组件加载函数 + * @param options 配置选项 + */ +export function createLazyComponent( + loader: () => Promise, + options: LazyLoadOptions = {} +) { + const config = { ...defaultOptions, ...options }; + + return defineAsyncComponent({ + loader: createRetryLoader(loader, config.retries!, config.retryDelay!), + loadingComponent: config.loading, + errorComponent: config.error, + delay: config.delay, + timeout: config.timeout + }); +} + +/** + * 创建带重试机制的加载器 + */ +function createRetryLoader( + loader: () => Promise, + retries: number, + retryDelay: number +) { + return async () => { + let lastError: Error; + + for (let i = 0; i <= retries; i++) { + try { + return await loader(); + } catch (error) { + lastError = error as Error; + + if (i < retries) { + await new Promise(resolve => setTimeout(resolve, retryDelay)); + console.warn(`组件加载失败,正在重试 (${i + 1}/${retries}):`, error); + } + } + } + + throw lastError!; + }; +} + +/** + * 路由懒加载 + */ +export function lazyRoute(loader: () => Promise, options?: LazyLoadOptions) { + return createLazyComponent(loader, { + ...options, + loading: options?.loading || { + setup() { + return () => h('div', { + style: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + minHeight: '60vh', + fontSize: '16px', + color: '#999' + } + }, [ + h(LoadingOutlined, { style: { marginRight: '8px' } }), + '页面加载中...' + ]); + } + } + }); +} + +/** + * 模态框懒加载 + */ +export function lazyModal(loader: () => Promise, options?: LazyLoadOptions) { + return createLazyComponent(loader, { + ...options, + loading: options?.loading || { + setup() { + return () => h('div', { + style: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + minHeight: '300px', + fontSize: '14px', + color: '#999' + } + }, [ + h(LoadingOutlined, { style: { marginRight: '8px' } }), + '加载中...' + ]); + } + } + }); +} + +/** + * 图表懒加载 + */ +export function lazyChart(loader: () => Promise, options?: LazyLoadOptions) { + return createLazyComponent(loader, { + ...options, + loading: options?.loading || { + setup() { + return () => h('div', { + style: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + minHeight: '400px', + backgroundColor: '#fafafa', + border: '1px dashed #d9d9d9', + borderRadius: '6px', + fontSize: '14px', + color: '#999' + } + }, [ + h(LoadingOutlined, { style: { marginRight: '8px' } }), + '图表加载中...' + ]); + } + } + }); +} + +/** + * 预加载组件 + */ +export class ComponentPreloader { + private preloadedComponents = new Map>(); + + /** + * 预加载组件 + */ + preload(key: string, loader: () => Promise) { + if (!this.preloadedComponents.has(key)) { + this.preloadedComponents.set(key, loader()); + } + return this.preloadedComponents.get(key)!; + } + + /** + * 获取预加载的组件 + */ + get(key: string) { + return this.preloadedComponents.get(key); + } + + /** + * 清除预加载的组件 + */ + clear(key?: string) { + if (key) { + this.preloadedComponents.delete(key); + } else { + this.preloadedComponents.clear(); + } + } + + /** + * 批量预加载 + */ + batchPreload(components: Record Promise>) { + Object.entries(components).forEach(([key, loader]) => { + this.preload(key, loader); + }); + } +} + +// 全局预加载器实例 +export const componentPreloader = new ComponentPreloader(); + +/** + * 智能懒加载 - 根据网络状况调整策略 + */ +export function smartLazyComponent( + loader: () => Promise, + options: LazyLoadOptions = {} +) { + // 检测网络状况 + const connection = (navigator as any).connection; + const isSlowNetwork = connection && ( + connection.effectiveType === 'slow-2g' || + connection.effectiveType === '2g' || + connection.saveData + ); + + // 根据网络状况调整配置 + const smartOptions = { + ...options, + timeout: isSlowNetwork ? 60000 : (options.timeout || 30000), + retries: isSlowNetwork ? 5 : (options.retries || 3), + retryDelay: isSlowNetwork ? 2000 : (options.retryDelay || 1000) + }; + + return createLazyComponent(loader, smartOptions); +} + +/** + * 可见性懒加载 - 只有当组件进入视口时才加载 + */ +export function visibilityLazyComponent( + loader: () => Promise, + options: LazyLoadOptions = {} +) { + return defineAsyncComponent({ + loader: () => { + return new Promise((resolve, reject) => { + const observer = new IntersectionObserver((entries) => { + if (entries[0].isIntersecting) { + observer.disconnect(); + loader().then(resolve).catch(reject); + } + }); + + // 创建一个占位元素来观察 + const placeholder = document.createElement('div'); + document.body.appendChild(placeholder); + observer.observe(placeholder); + + // 清理函数 + setTimeout(() => { + observer.disconnect(); + document.body.removeChild(placeholder); + reject(new Error('Visibility timeout')); + }, options.timeout || 30000); + }); + }, + loadingComponent: options.loading || LoadingComponent, + errorComponent: options.error || ErrorComponent, + delay: options.delay || 200 + }); +} diff --git a/src/utils/merchant.ts b/src/utils/merchant.ts new file mode 100644 index 0000000..9002511 --- /dev/null +++ b/src/utils/merchant.ts @@ -0,0 +1,42 @@ +// 获取商户ID +export const getMerchantId = () => { + const merchantId = localStorage.getItem('MerchantId'); + if (merchantId) { + return Number(merchantId); + } + return undefined; +}; + +// 获取商户名称 +export const getMerchantName = () => { + const MerchantName = localStorage.getItem('MerchantName'); + if (MerchantName) { + return MerchantName; + } + return undefined; +}; + +// 获取商户Logo +export const getMerchantAvatar = () => { + const MerchantLogo = localStorage.getItem('MerchantLogo'); + if (MerchantLogo) { + return MerchantLogo; + } + return undefined; +}; + +export const getRoleIdByMerchant = () => { + const id = localStorage.getItem('RoleIdByMerchant'); + if (id) { + return Number(id); + } + return undefined; +}; + +export const getRoleNameByMerchant = () => { + const name = localStorage.getItem('RoleNameByMerchant'); + if (name) { + return name; + } + return undefined; +}; diff --git a/src/utils/on-size-change.ts b/src/utils/on-size-change.ts new file mode 100644 index 0000000..4cce32c --- /dev/null +++ b/src/utils/on-size-change.ts @@ -0,0 +1,18 @@ +/** + * 监听屏幕尺寸改变封装 + */ +import { watch } from 'vue'; +import { storeToRefs } from 'pinia'; +import { useThemeStore } from '@/store/modules/theme'; + +export function onSizeChange(hook: Function) { + if (!hook) { + return; + } + const themeStore = useThemeStore(); + const { contentWidth } = storeToRefs(themeStore); + + watch(contentWidth, () => { + hook(); + }); +} diff --git a/src/utils/oss.js b/src/utils/oss.js new file mode 100644 index 0000000..ace265c --- /dev/null +++ b/src/utils/oss.js @@ -0,0 +1,43 @@ +import OSS from 'ali-oss'; +const baseUrl = 'http://oss-aishangjia.oss-cn-shenzhen.aliyuncs.com'; +export const uploadAliOss = async (file, options) => { + // 构建上传文件参数 + + // 获取上传文件所需要的STS Token + // 直接通过node.js上传 + // console.log(token) + const client = new OSS({ + region: 'oss-cn-shenzhen', + accessKeyId: 'LTAI4GKGZ9Z2Z8JZ77c3GNZP', + accessKeySecret: 'BiDkpS7UXj72HWwDWaFZxiXjNFBNCM', + bucket: 'oss-aishangjia', + secure: true + }); + + const headers = { + // 指定该Object被下载时的网页缓存行为。 + 'Cache-Control': 'no-cache', + // 指定该Object被下载时的名称。 + // 指定该Object被下载时的内容编码格式。 + 'Content-Encoding': 'utf-8', + // 指定过期时间,单位为毫秒。 + Expires: '1000', + // 指定Object的存储类型。 + 'x-oss-storage-class': 'Standard', + // 指定初始化分片上传时是否覆盖同名Object。此处设置为true,表示禁止覆盖同名Object。 + 'x-oss-forbid-overwrite': 'true' + }; + + const suffix = file.name.substring(file.name.lastIndexOf('.')); // .txt + const objectName = Date.now() + suffix; + + // object-name可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。 + const result = await client.multipartUpload(objectName, file, { + ...options, + parallel: 4, + partSize: 1024 * 1024 * 5 + }); + + result.url = `${baseUrl}/${result.name}`; + return Promise.resolve(result); +}; diff --git a/src/utils/page-tab-util.ts b/src/utils/page-tab-util.ts new file mode 100644 index 0000000..b04d4be --- /dev/null +++ b/src/utils/page-tab-util.ts @@ -0,0 +1,261 @@ +/** + * 页签操作封装 + */ +import { unref } from 'vue'; +import type { RouteLocationNormalizedLoaded } from 'vue-router'; +import type { TabItem, TabRemoveOption } from 'ele-admin-pro/es'; +import { message } from 'ant-design-vue/es'; +import router, { resetDynamicRoutes } from '@/router'; +import { useThemeStore } from '@/store/modules/theme'; +import type { RouteReloadOption } from '@/store/modules/theme'; +import { useUserStore } from '@/store/modules/user'; +import { removeToken } from '@/utils/token-util'; +import { setDocumentTitle } from '@/utils/document-title-util'; +import { + HOME_PATH, + LAYOUT_PATH, + REDIRECT_PATH, + REPEATABLE_TABS +} from '@/config/setting'; +const HOME_ROUTE = HOME_PATH || LAYOUT_PATH; +const BASE_URL = import.meta.env.BASE_URL; + +/** + * 刷新页签参数类型 + */ +export interface TabReloadOptions { + // 是否是主页 + isHome?: boolean; + // 路由地址 + fullPath?: string; +} + +/** + * 刷新当前路由 + */ +export function reloadPageTab(option?: TabReloadOptions) { + if (!option) { + // 刷新当前路由 + const { path, fullPath, query } = unref(router.currentRoute); + if (path.includes(REDIRECT_PATH)) { + return; + } + const isHome = isHomeRoute(unref(router.currentRoute)); + setRouteReload({ + reloadHome: isHome, + reloadPath: isHome ? void 0 : fullPath + }); + router.replace({ + path: REDIRECT_PATH + path, + query + }); + } else { + // 刷新指定页签 + const { fullPath, isHome } = option; + setRouteReload({ + reloadHome: isHome, + reloadPath: isHome ? void 0 : fullPath + }); + router.replace(REDIRECT_PATH + fullPath); + } +} + +/** + * 关闭当前页签 + */ +export function finishPageTab() { + const key = getRouteTabKey(); + removePageTab({ key, active: key }); +} + +/** + * 关闭页签 + */ +export function removePageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemove(option) + .then(({ path, home }) => { + if (path) { + router.push(path); + } else if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('当前页签不可关闭'); + }); +} + +/** + * 关闭左侧页签 + */ +export function removeLeftPageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemoveLeft(option) + .then(({ path }) => { + if (path) { + router.push(path); + } + }) + .catch(() => { + message.error('左侧没有可关闭的页签'); + }); +} + +/** + * 关闭右侧页签 + */ +export function removeRightPageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemoveRight(option) + .then(({ path, home }) => { + if (path) { + router.push(path); + } else if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('右侧没有可关闭的页签'); + }); +} + +/** + * 关闭其它页签 + */ +export function removeOtherPageTab(option: TabRemoveOption) { + useThemeStore() + .tabRemoveOther(option) + .then(({ path, home }) => { + if (path) { + router.push(path); + } else if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('没有可关闭的页签'); + }); +} + +/** + * 关闭全部页签 + * @param active 当前选中页签 + */ +export function removeAllPageTab(active: string) { + useThemeStore() + .tabRemoveAll(active) + .then(({ home }) => { + if (home) { + router.push(HOME_ROUTE); + } + }) + .catch(() => { + message.error('没有可关闭的页签'); + }); +} + +/** + * 登录成功后清空页签 + */ +export function cleanPageTabs() { + useThemeStore().setTabs([]); +} + +/** + * 添加页签 + * @param data 页签数据 + */ +export function addPageTab(data: TabItem | TabItem[]) { + useThemeStore().tabAdd(data); +} + +/** + * 修改页签 + * @param data 页签数据 + */ +export function setPageTab(data: TabItem) { + useThemeStore().tabSetItem(data); +} + +/** + * 修改页签标题 + * @param title 标题 + */ +export function setPageTabTitle(title: string) { + setPageTab({ key: getRouteTabKey(), title }); + setDocumentTitle(title); +} + +/** + * 获取当前路由对应的页签 key + */ +export function getRouteTabKey() { + const { path, fullPath, meta } = unref(router.currentRoute); + const isUnique = meta.tabUnique === false || REPEATABLE_TABS.includes(path); + return isUnique ? fullPath : path; +} + +/** + * 设置主页的组件名称 + * @param components 组件名称 + */ +export function setHomeComponents(components: string[]) { + useThemeStore().setHomeComponents(components); +} + +/** + * 设置路由刷新信息 + * @param option 路由刷新参数 + */ +export function setRouteReload(option: RouteReloadOption | null) { + return useThemeStore().setRouteReload(option); +} + +/** + * 判断路由是否是主页 + * @param route 路由信息 + */ +export function isHomeRoute(route: RouteLocationNormalizedLoaded) { + const { path, matched } = route; + if (HOME_ROUTE === path) { + return true; + } + return ( + matched[0] && + matched[0].path === LAYOUT_PATH && + matched[0].redirect === path + ); +} + +/** + * 登录成功后跳转首页 + * @param from 登录前的地址 + */ +export function goHomeRoute(from?: string) { + router.replace(from || HOME_ROUTE); +} + +/** + * 退出登录 + * @param route 是否使用路由跳转 + * @param from 登录后跳转的地址 + */ +export function logout(route?: boolean, from?: string) { + removeToken(); + // 重置动态路由注册状态 + resetDynamicRoutes(); + // 重置用户状态 + const userStore = useUserStore(); + userStore.resetUserState(); + + if (route) { + router.push({ + path: '/login', + query: from ? { from } : void 0 + }); + } else { + // 这样跳转避免再次登录重复注册动态路由 + location.replace(BASE_URL + 'login' + (from ? '?from=' + from : '')); + } +} diff --git a/src/utils/performance.ts b/src/utils/performance.ts new file mode 100644 index 0000000..15d03a6 --- /dev/null +++ b/src/utils/performance.ts @@ -0,0 +1,263 @@ +/** + * 性能监控工具 + */ + +// 性能指标接口 +export interface PerformanceMetrics { + // 页面加载时间 + pageLoadTime: number; + // 首次内容绘制 + fcp: number; + // 最大内容绘制 + lcp: number; + // 首次输入延迟 + fid: number; + // 累积布局偏移 + cls: number; + // 内存使用情况 + memory?: { + used: number; + total: number; + limit: number; + }; +} + +// 性能监控类 +export class PerformanceMonitor { + private metrics: Partial = {}; + private observers: PerformanceObserver[] = []; + + constructor() { + this.init(); + } + + private init() { + // 监听页面加载完成 + if (document.readyState === 'complete') { + this.measurePageLoad(); + } else { + window.addEventListener('load', () => this.measurePageLoad()); + } + + // 监听 Web Vitals + this.observeWebVitals(); + } + + private measurePageLoad() { + const navigation = performance.getEntriesByType('navigation')[0] as PerformanceNavigationTiming; + if (navigation) { + this.metrics.pageLoadTime = navigation.loadEventEnd - navigation.fetchStart; + } + } + + private observeWebVitals() { + // FCP (First Contentful Paint) + this.observePerformance('paint', (entries) => { + const fcpEntry = entries.find(entry => entry.name === 'first-contentful-paint'); + if (fcpEntry) { + this.metrics.fcp = fcpEntry.startTime; + } + }); + + // LCP (Largest Contentful Paint) + this.observePerformance('largest-contentful-paint', (entries) => { + const lcpEntry = entries[entries.length - 1]; + if (lcpEntry) { + this.metrics.lcp = lcpEntry.startTime; + } + }); + + // FID (First Input Delay) + this.observePerformance('first-input', (entries) => { + const fidEntry = entries[0]; + if (fidEntry) { + this.metrics.fid = fidEntry.processingStart - fidEntry.startTime; + } + }); + + // CLS (Cumulative Layout Shift) + this.observePerformance('layout-shift', (entries) => { + let clsValue = 0; + entries.forEach(entry => { + if (!entry.hadRecentInput) { + clsValue += entry.value; + } + }); + this.metrics.cls = clsValue; + }); + } + + private observePerformance(type: string, callback: (entries: PerformanceEntry[]) => void) { + try { + const observer = new PerformanceObserver((list) => { + callback(list.getEntries()); + }); + observer.observe({ type, buffered: true }); + this.observers.push(observer); + } catch (error) { + console.warn(`Performance observer for ${type} not supported:`, error); + } + } + + // 获取内存使用情况 + getMemoryUsage(): PerformanceMetrics['memory'] | null { + if ('memory' in performance) { + const memory = (performance as any).memory; + return { + used: Math.round(memory.usedJSHeapSize / 1024 / 1024), + total: Math.round(memory.totalJSHeapSize / 1024 / 1024), + limit: Math.round(memory.jsHeapSizeLimit / 1024 / 1024) + }; + } + return null; + } + + // 获取所有性能指标 + getMetrics(): PerformanceMetrics { + return { + ...this.metrics, + memory: this.getMemoryUsage() + } as PerformanceMetrics; + } + + // 清理观察器 + disconnect() { + this.observers.forEach(observer => observer.disconnect()); + this.observers = []; + } +} + +// 路由性能监控 +export class RoutePerformanceMonitor { + private routeStartTime: number = 0; + private routeMetrics: Map = new Map(); + + startRouteTimer() { + this.routeStartTime = performance.now(); + } + + endRouteTimer(routeName: string) { + if (this.routeStartTime) { + const duration = performance.now() - this.routeStartTime; + + if (!this.routeMetrics.has(routeName)) { + this.routeMetrics.set(routeName, []); + } + + const metrics = this.routeMetrics.get(routeName)!; + metrics.push(duration); + + // 只保留最近10次记录 + if (metrics.length > 10) { + metrics.shift(); + } + + this.routeStartTime = 0; + } + } + + getRouteMetrics(routeName: string) { + const metrics = this.routeMetrics.get(routeName) || []; + if (metrics.length === 0) return null; + + const avg = metrics.reduce((sum, time) => sum + time, 0) / metrics.length; + const min = Math.min(...metrics); + const max = Math.max(...metrics); + + return { avg, min, max, count: metrics.length }; + } + + getAllRouteMetrics() { + const result: Record = {}; + this.routeMetrics.forEach((metrics, routeName) => { + result[routeName] = this.getRouteMetrics(routeName); + }); + return result; + } +} + +// API 性能监控 +export class ApiPerformanceMonitor { + private apiMetrics: Map = new Map(); + + recordApiCall(url: string, duration: number) { + if (!this.apiMetrics.has(url)) { + this.apiMetrics.set(url, []); + } + + const metrics = this.apiMetrics.get(url)!; + metrics.push(duration); + + // 只保留最近20次记录 + if (metrics.length > 20) { + metrics.shift(); + } + } + + getApiMetrics(url: string) { + const metrics = this.apiMetrics.get(url) || []; + if (metrics.length === 0) return null; + + const avg = metrics.reduce((sum, time) => sum + time, 0) / metrics.length; + const min = Math.min(...metrics); + const max = Math.max(...metrics); + + return { avg, min, max, count: metrics.length }; + } + + getSlowApis(threshold: number = 1000) { + const slowApis: Array<{ url: string; avgTime: number }> = []; + + this.apiMetrics.forEach((metrics, url) => { + const avg = metrics.reduce((sum, time) => sum + time, 0) / metrics.length; + if (avg > threshold) { + slowApis.push({ url, avgTime: avg }); + } + }); + + return slowApis.sort((a, b) => b.avgTime - a.avgTime); + } +} + +// 全局性能监控实例 +export const performanceMonitor = new PerformanceMonitor(); +export const routePerformanceMonitor = new RoutePerformanceMonitor(); +export const apiPerformanceMonitor = new ApiPerformanceMonitor(); + +// 性能报告生成器 +export function generatePerformanceReport() { + const metrics = performanceMonitor.getMetrics(); + const routeMetrics = routePerformanceMonitor.getAllRouteMetrics(); + const slowApis = apiPerformanceMonitor.getSlowApis(); + + return { + webVitals: metrics, + routes: routeMetrics, + slowApis, + timestamp: new Date().toISOString() + }; +} + +// 性能警告 +export function checkPerformanceWarnings() { + const metrics = performanceMonitor.getMetrics(); + const warnings: string[] = []; + + if (metrics.lcp && metrics.lcp > 2500) { + warnings.push(`LCP 过慢: ${metrics.lcp.toFixed(2)}ms (建议 < 2500ms)`); + } + + if (metrics.fid && metrics.fid > 100) { + warnings.push(`FID 过慢: ${metrics.fid.toFixed(2)}ms (建议 < 100ms)`); + } + + if (metrics.cls && metrics.cls > 0.1) { + warnings.push(`CLS 过高: ${metrics.cls.toFixed(3)} (建议 < 0.1)`); + } + + if (metrics.memory && metrics.memory.used > metrics.memory.limit * 0.8) { + warnings.push(`内存使用过高: ${metrics.memory.used}MB / ${metrics.memory.limit}MB`); + } + + return warnings; +} diff --git a/src/utils/permission.ts b/src/utils/permission.ts new file mode 100644 index 0000000..4324d98 --- /dev/null +++ b/src/utils/permission.ts @@ -0,0 +1,119 @@ +/** + * 按钮级权限控制 + */ +import type { App } from 'vue'; +import { useUserStore } from '@/store/modules/user'; + +/* 判断数组是否有某些值 */ +function arrayHas( + array: (string | undefined)[], + value: string | string[] +): boolean { + if (!value) { + return true; + } + if (!array) { + return false; + } + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + if (array.indexOf(value[i]) === -1) { + return false; + } + } + return true; + } + return array.indexOf(value) !== -1; +} + +/* 判断数组是否有任意值 */ +function arrayHasAny( + array: (string | undefined)[], + value: string | string[] +): boolean { + if (!value) { + return true; + } + if (!array) { + return false; + } + if (Array.isArray(value)) { + for (let i = 0; i < value.length; i++) { + if (array.indexOf(value[i]) !== -1) { + return true; + } + } + return false; + } + return array.indexOf(value) !== -1; +} + +/** + * 是否有某些角色 + * @param value 角色字符或字符数组 + */ +export function hasRole(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHas(userStore?.roles, value); +} + +/** + * 是否有任意角色 + * @param value 角色字符或字符数组 + */ +export function hasAnyRole(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHasAny(userStore?.roles, value); +} + +/** + * 是否有某些权限 + * @param value 权限字符或字符数组 + */ +export function hasPermission(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHas(userStore?.authorities, value); +} + +/** + * 是否有任意权限 + * @param value 权限字符或字符数组 + */ +export function hasAnyPermission(value: string | string[]): boolean { + const userStore = useUserStore(); + return arrayHasAny(userStore?.authorities, value); +} + +export default { + install(app: App) { + // 添加自定义指令 + app.directive('role', { + mounted: (el, binding) => { + if (!hasRole(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + app.directive('any-role', { + mounted: (el, binding) => { + if (!hasAnyRole(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + app.directive('permission', { + mounted: (el, binding) => { + if (!hasPermission(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + app.directive('any-permission', { + mounted: (el, binding) => { + if (!hasAnyPermission(binding.value)) { + el.parentNode?.removeChild(el); + } + } + }); + } +}; diff --git a/src/utils/plug-uitl.ts b/src/utils/plug-uitl.ts new file mode 100644 index 0000000..bfbb122 --- /dev/null +++ b/src/utils/plug-uitl.ts @@ -0,0 +1,53 @@ +import { createVNode } from 'vue'; +import { Company } from '@/api/system/company/model'; +import { message, Modal } from 'ant-design-vue'; +import { ExclamationCircleOutlined } from '@ant-design/icons-vue'; +import { messageLoading } from 'ele-admin-pro'; +import { clone } from '@/api/system/menu'; +import useFormData from '@/utils/use-form-data'; +import { Menu } from '@/api/system/menu/model'; + +// 表单数据 +const { form } = useFormData({ + title: '', + icon: '', + path: '', + component: '', + tenantId: undefined, + tenantName: '' +}); + +/** + * 一键克隆 + * @param item + */ +export const onClone = (item: Company) => { + const tenantId = Number(localStorage.getItem('TenantId')); + if (tenantId == item.tenantId) { + message.error('不能克隆自己'); + return false; + } + // 提交状态 + Modal.confirm({ + title: '确认操作吗?', + content: `将复制【${item.tenantName}】的所有菜单和权限(不含数据),原有企业数据不会删除。`, + icon: createVNode(ExclamationCircleOutlined), + maskClosable: true, + onOk: () => { + const hide = messageLoading('模块安装中请稍等...', 0); + form.tenantId = item.tenantId; + clone(form) + .then((msg) => { + hide(); + message.success(msg); + setTimeout(() => { + window.open('/', '_self'); + }, 1000); + }) + .catch((e) => { + hide(); + message.error(e.message); + }); + } + }); +}; diff --git a/src/utils/port-config-manager.ts b/src/utils/port-config-manager.ts new file mode 100644 index 0000000..d9997c9 --- /dev/null +++ b/src/utils/port-config-manager.ts @@ -0,0 +1,357 @@ +/** + * 端口配置管理器 + * 集成环境变量和智能端口管理 + */ + +import type { PortStrategy } from '@/lib/port-manager'; +import type { Environment } from '@/lib/port-strategy'; + +// 端口配置接口 +export interface PortEnvironmentConfig { + // 基础配置 + strategy: 'auto' | 'manual' | 'tenant-based' | 'sequential'; + basePort: number; + portRangeStart: number; + portRangeEnd: number; + + // 租户配置 + tenantPortOffset: number; + environmentPortOffset: number; + + // 行为配置 + autoDetect: boolean; + strictMode: boolean; + cacheEnabled: boolean; + cacheExpiry: number; + + // 开发服务器配置 + devHost: string; + openBrowser: boolean; + corsEnabled: boolean; + httpsEnabled: boolean; +} + +// 配置验证结果 +export interface ConfigValidationResult { + isValid: boolean; + errors: string[]; + warnings: string[]; + recommendations: string[]; +} + +// 端口配置管理器 +export class PortConfigManager { + private config: PortEnvironmentConfig; + private environment: Environment; + + constructor() { + this.environment = this.detectEnvironment(); + this.config = this.loadConfiguration(); + this.validateConfiguration(); + } + + /** + * 检测当前环境 + */ + private detectEnvironment(): Environment { + // 在 Vite 配置阶段,import.meta.env 可能不可用,使用 process.env + const nodeEnv = (typeof process !== 'undefined' ? process.env.NODE_ENV : undefined) || + (typeof import.meta !== 'undefined' && import.meta.env ? import.meta.env.NODE_ENV : undefined) || + 'development'; + + switch (nodeEnv.toLowerCase()) { + case 'production': + case 'prod': + return 'production'; + case 'test': + case 'testing': + return 'test'; + case 'staging': + case 'stage': + return 'staging'; + default: + return 'development'; + } + } + + /** + * 加载配置 + */ + private loadConfiguration(): PortEnvironmentConfig { + // 获取环境变量的辅助函数 + const getEnv = (key: string, defaultValue?: string) => { + if (typeof process !== 'undefined' && process.env) { + return process.env[key]; + } + if (typeof import.meta !== 'undefined' && import.meta.env) { + return import.meta.env[key]; + } + return defaultValue; + }; + + return { + // 基础配置 + strategy: (getEnv('VITE_PORT_STRATEGY') as any) || 'auto', + basePort: parseInt(getEnv('VITE_BASE_PORT') || '3000'), + portRangeStart: parseInt(getEnv('VITE_PORT_RANGE_START') || '3000'), + portRangeEnd: parseInt(getEnv('VITE_PORT_RANGE_END') || '9999'), + + // 租户配置 + tenantPortOffset: parseInt(getEnv('VITE_TENANT_PORT_OFFSET') || '10'), + environmentPortOffset: parseInt(getEnv('VITE_ENVIRONMENT_PORT_OFFSET') || '1000'), + + // 行为配置 + autoDetect: getEnv('VITE_PORT_AUTO_DETECT') !== 'false', + strictMode: getEnv('VITE_PORT_STRICT_MODE') === 'true', + cacheEnabled: getEnv('VITE_PORT_CACHE_ENABLED') !== 'false', + cacheExpiry: parseInt(getEnv('VITE_PORT_CACHE_EXPIRY') || '86400000'), // 24小时 + + // 开发服务器配置 + devHost: getEnv('VITE_DEV_HOST') || 'localhost', + openBrowser: getEnv('VITE_DEV_OPEN_BROWSER') !== 'false', + corsEnabled: getEnv('VITE_DEV_CORS_ENABLED') !== 'false', + httpsEnabled: getEnv('VITE_DEV_HTTPS_ENABLED') === 'true' + }; + } + + /** + * 验证配置 + */ + private validateConfiguration(): ConfigValidationResult { + const errors: string[] = []; + const warnings: string[] = []; + const recommendations: string[] = []; + + // 验证端口范围 + if (this.config.portRangeStart >= this.config.portRangeEnd) { + errors.push('端口范围无效:起始端口必须小于结束端口'); + } + + if (this.config.portRangeStart < 1024 && this.environment === 'production') { + warnings.push('生产环境使用系统端口(<1024)可能需要管理员权限'); + } + + // 验证基础端口 + if (this.config.basePort < this.config.portRangeStart || + this.config.basePort > this.config.portRangeEnd) { + errors.push('基础端口不在允许的端口范围内'); + } + + // 验证租户偏移 + if (this.config.tenantPortOffset <= 0) { + warnings.push('租户端口偏移为0可能导致端口冲突'); + } + + // 环境特定验证 + switch (this.environment) { + case 'development': + if (this.config.httpsEnabled) { + warnings.push('开发环境启用HTTPS可能增加配置复杂度'); + } + if (!this.config.autoDetect) { + recommendations.push('开发环境建议启用端口自动检测'); + } + break; + + case 'production': + if (!this.config.httpsEnabled) { + warnings.push('生产环境建议启用HTTPS'); + } + if (this.config.autoDetect) { + warnings.push('生产环境不建议启用端口自动检测'); + } + if (!this.config.strictMode) { + recommendations.push('生产环境建议启用严格模式'); + } + break; + + case 'test': + if (this.config.openBrowser) { + recommendations.push('测试环境建议禁用自动打开浏览器'); + } + break; + } + + // 缓存配置验证 + if (this.config.cacheEnabled && this.config.cacheExpiry < 60000) { + warnings.push('缓存过期时间过短可能影响性能'); + } + + const result = { + isValid: errors.length === 0, + errors, + warnings, + recommendations + }; + + // 输出验证结果 + if (errors.length > 0) { + console.error('❌ 端口配置验证失败:', errors); + } + if (warnings.length > 0) { + console.warn('⚠️ 端口配置警告:', warnings); + } + if (recommendations.length > 0) { + console.info('💡 端口配置建议:', recommendations); + } + + return result; + } + + /** + * 获取当前配置 + */ + getConfig(): PortEnvironmentConfig { + return { ...this.config }; + } + + /** + * 获取端口策略配置 + */ + getPortStrategy(): PortStrategy { + return { + basePort: this.config.basePort, + portRange: [this.config.portRangeStart, this.config.portRangeEnd], + tenantOffset: this.config.tenantPortOffset, + environmentOffset: this.config.environmentPortOffset, + maxRetries: this.config.strictMode ? 10 : 50 + }; + } + + /** + * 获取开发服务器配置 + */ + getDevServerConfig(): { + host: string; + port?: number; + open: boolean; + cors: boolean; + https: boolean; + strictPort: boolean; + } { + return { + host: this.config.devHost, + open: this.config.openBrowser, + cors: this.config.corsEnabled, + https: this.config.httpsEnabled, + strictPort: this.config.strictMode + }; + } + + /** + * 获取环境信息 + */ + getEnvironmentInfo(): { + current: Environment; + config: PortEnvironmentConfig; + validation: ConfigValidationResult; + recommendations: string[]; + } { + const validation = this.validateConfiguration(); + const recommendations: string[] = []; + + // 基于环境生成建议 + switch (this.environment) { + case 'development': + recommendations.push('开发环境:优先考虑便利性和调试体验'); + recommendations.push('建议启用热重载和自动刷新功能'); + break; + case 'test': + recommendations.push('测试环境:注重隔离性和可重复性'); + recommendations.push('建议配置独立的端口范围避免冲突'); + break; + case 'production': + recommendations.push('生产环境:优先考虑安全性和稳定性'); + recommendations.push('建议使用固定端口和负载均衡'); + break; + } + + return { + current: this.environment, + config: this.config, + validation, + recommendations: [...validation.recommendations, ...recommendations] + }; + } + + /** + * 更新配置 + */ + updateConfig(updates: Partial): ConfigValidationResult { + this.config = { ...this.config, ...updates }; + return this.validateConfiguration(); + } + + /** + * 重置为默认配置 + */ + resetToDefaults(): void { + this.config = this.loadConfiguration(); + console.log('🔄 端口配置已重置为默认值'); + } + + /** + * 导出配置 + */ + exportConfig(): string { + const configLines = [ + '# 智能端口管理配置', + `VITE_PORT_STRATEGY=${this.config.strategy}`, + `VITE_BASE_PORT=${this.config.basePort}`, + `VITE_PORT_RANGE_START=${this.config.portRangeStart}`, + `VITE_PORT_RANGE_END=${this.config.portRangeEnd}`, + `VITE_TENANT_PORT_OFFSET=${this.config.tenantPortOffset}`, + `VITE_ENVIRONMENT_PORT_OFFSET=${this.config.environmentPortOffset}`, + `VITE_PORT_AUTO_DETECT=${this.config.autoDetect}`, + `VITE_PORT_STRICT_MODE=${this.config.strictMode}`, + `VITE_PORT_CACHE_ENABLED=${this.config.cacheEnabled}`, + `VITE_PORT_CACHE_EXPIRY=${this.config.cacheExpiry}`, + '', + '# 开发服务器配置', + `VITE_DEV_HOST=${this.config.devHost}`, + `VITE_DEV_OPEN_BROWSER=${this.config.openBrowser}`, + `VITE_DEV_CORS_ENABLED=${this.config.corsEnabled}`, + `VITE_DEV_HTTPS_ENABLED=${this.config.httpsEnabled}` + ]; + + return configLines.join('\n'); + } + + /** + * 获取配置摘要 + */ + getConfigSummary(): { + environment: Environment; + strategy: string; + portRange: string; + features: string[]; + status: 'healthy' | 'warning' | 'error'; + } { + const validation = this.validateConfiguration(); + const features: string[] = []; + + if (this.config.autoDetect) features.push('自动检测'); + if (this.config.cacheEnabled) features.push('缓存启用'); + if (this.config.strictMode) features.push('严格模式'); + if (this.config.httpsEnabled) features.push('HTTPS'); + if (this.config.corsEnabled) features.push('CORS'); + + let status: 'healthy' | 'warning' | 'error' = 'healthy'; + if (validation.errors.length > 0) { + status = 'error'; + } else if (validation.warnings.length > 0) { + status = 'warning'; + } + + return { + environment: this.environment, + strategy: this.config.strategy, + portRange: `${this.config.portRangeStart}-${this.config.portRangeEnd}`, + features, + status + }; + } +} + +// 导出默认实例 +export const portConfigManager = new PortConfigManager(); diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..bca94d7 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,116 @@ +/** + * axios 实例 + */ +import axios from 'axios'; +import type { AxiosResponse } from 'axios'; +import { unref } from 'vue'; +import router from '@/router'; +import { Modal } from 'ant-design-vue'; +import { API_BASE_URL, TOKEN_HEADER_NAME, LAYOUT_PATH } from '@/config/setting'; +import { getToken, setToken } from './token-util'; +import { logout } from './page-tab-util'; +import type { ApiResult } from '@/api'; +import { getHostname, getTenantId } from '@/utils/domain'; +import { getMerchantId } from "@/utils/merchant"; + +// 获取API基础地址的函数 +const getBaseUrl = (): string => { + // 尝试从配置store获取后台配置的API地址 + try { + // 如果store中没有,则尝试从localStorage获取 + const ApiUrl = localStorage.getItem('ApiUrl'); + if (ApiUrl) { + return ApiUrl; + } + } catch (error) { + console.warn('获取后台配置API地址失败:', error); + } + + // 如果后台没有配置API地址,则使用本地配置 + console.log('使用本地配置的API地址:', API_BASE_URL); + return API_BASE_URL; +}; + +const service = axios.create({ + baseURL: getBaseUrl() +}); + +/** + * 添加请求拦截器 + */ +service.interceptors.request.use( + (config) => { + const TENANT_ID = getTenantId(); + const token = getToken(); + // 添加 token 到 header + if (token && config.headers) { + config.headers.common[TOKEN_HEADER_NAME] = token; + } + // 获取租户ID + if (config.headers) { + // 附加企业ID + const companyId = localStorage.getItem('CompanyId'); + if (companyId) { + config.headers.common['CompanyId'] = companyId; + } + // 附加商户ID + if (getMerchantId()) { + config.headers.common['MerchantId'] = getMerchantId(); + } + // 通过网站域名获取租户ID + if (getHostname()) { + config.headers.common['Domain'] = getHostname(); + } + // 解析二级域名获取租户ID + if (getTenantId()) { + config.headers.common['TenantId'] = getTenantId(); + return config; + } + if (TENANT_ID) { + config.headers.common['TenantId'] = TENANT_ID; + return config; + } + } + return config; + }, + (error) => { + return Promise.reject(error); + } +); + +/** + * 添加响应拦截器 + */ +service.interceptors.response.use( + (res: AxiosResponse>) => { + // 登录过期处理 + if (res.data?.code === 401) { + const currentPath = unref(router.currentRoute).path; + if (currentPath == LAYOUT_PATH) { + logout(true); + } else { + Modal.destroyAll(); + Modal.info({ + title: '系统提示', + content: '登录状态已过期, 请退出重新登录!', + okText: '重新登录', + onOk: () => { + logout(false, currentPath); + } + }); + } + return Promise.reject(new Error(res.data.message)); + } + // token 自动续期 + const token = res.headers[TOKEN_HEADER_NAME.toLowerCase()]; + if (token) { + setToken(token); + } + return res; + }, + (error) => { + return Promise.reject(error); + } +); + +export default service; diff --git a/src/utils/shop.ts b/src/utils/shop.ts new file mode 100644 index 0000000..6fc7aa4 --- /dev/null +++ b/src/utils/shop.ts @@ -0,0 +1,90 @@ +// 支付方式 +export function getPayType(index?: number): any { + const payType = [ + { + value: 0, + label: '余额支付', + }, + { + value: 1, + label: '微信支付', + }, + { + value: 2, + label: '积分', + }, + { + value: 3, + label: '支付宝', + }, + { + value: 4, + label: '现金', + }, + { + value: 5, + label: 'POS机', + }, + { + value: 6, + label: '会员卡', + }, + // { + // value: 7, + // label: 'VIP年卡', + // }, + // { + // value: 8, + // label: 'VIP次卡', + // }, + // { + // value: 9, + // icon: 'IdcardOutlined', + // label: 'IC月卡', + // }, + // { + // value: 10, + // icon: 'IdcardOutlined', + // label: 'IC年卡', + // }, + // { + // value: 11, + // icon: 'IdcardOutlined', + // label: 'IC次卡', + // }, + // { + // value: 12, + // icon: '', + // label: '免费', + // }, + // { + // value: 13, + // icon: 'IdcardOutlined', + // label: 'VIP充值卡', + // }, + // { + // value: 14, + // icon: 'IdcardOutlined', + // label: 'IC充值卡', + // }, + // { + // value: 15, + // icon: '', + // label: '积分支付', + // }, + // { + // value: 16, + // icon: 'IdcardOutlined', + // label: 'VIP季卡', + // }, + // { + // value: 17, + // icon: 'IdcardOutlined', + // label: 'IC季卡', + // }, + ]; + if(index){ + return payType[index].label || ''; + } + return payType; +} diff --git a/src/utils/token-util.ts b/src/utils/token-util.ts new file mode 100644 index 0000000..a878c9d --- /dev/null +++ b/src/utils/token-util.ts @@ -0,0 +1,71 @@ +/** + * token 操作封装 + */ +import { APP_SECRET, TOKEN_STORE_NAME } from '@/config/setting'; +import md5 from 'js-md5'; + +/** + * 获取缓存的 token + */ +export function getToken(): string | null { + const token = localStorage.getItem(TOKEN_STORE_NAME); + if (!token) { + return sessionStorage.getItem(TOKEN_STORE_NAME); + } + return token; +} + +/** + * 缓存 token + * @param token token + * @param remember 是否永久存储 + */ +export function setToken(token?: string, remember?: boolean) { + removeToken(); + if (token) { + if (remember) { + localStorage.setItem(TOKEN_STORE_NAME, token); + } else { + sessionStorage.setItem(TOKEN_STORE_NAME, token); + } + } +} + +/** + * 移除 token + */ +export function removeToken() { + localStorage.removeItem(TOKEN_STORE_NAME); + sessionStorage.removeItem(TOKEN_STORE_NAME); + localStorage.clear(); +} + +// 封装签名 +export function getSign(form) { + if (form == null) { + return false; + } + let sign = ''; + form.timestamp = new Date().getTime(); + form.version = 'v3'; + const arr = objKeySort(form); + Object.keys(arr).forEach((k) => { + if (form[k] != null && form[k] != '') { + sign = sign.concat(form[k]).concat('-'); + } + }); + sign = sign.concat(APP_SECRET); + return md5(sign); +} +// 参数按照字母顺序排序 +export const objKeySort = (obj) => { + //排序的函数 + const newkey = Object.keys(obj).sort(); + //先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组 + const newObj = {}; //创建一个新的对象,用于存放排好序的键值对 + for (let i = 0; i < newkey.length; i++) { + //遍历newkey数组 + newObj[newkey[i]] = obj[newkey[i]]; //向新创建的对象中按照排好的顺序依次增加键值对 + } + return newObj; //返回排好序的新对象 +}; diff --git a/src/utils/type-guards.ts b/src/utils/type-guards.ts new file mode 100644 index 0000000..9e98806 --- /dev/null +++ b/src/utils/type-guards.ts @@ -0,0 +1,105 @@ +/** + * 类型保护工具函数 + */ + +/** + * 检查值是否为有效的数字 + */ +export function isValidNumber(value: unknown): value is number { + return typeof value === 'number' && !isNaN(value) && isFinite(value); +} + +/** + * 检查值是否为有效的字符串 + */ +export function isValidString(value: unknown): value is string { + return typeof value === 'string' && value.length > 0; +} + +/** + * 检查对象是否有有效的 ID + */ +export function hasValidId(obj: unknown): obj is { id: number } { + return ( + typeof obj === 'object' && + obj !== null && + 'id' in obj && + isValidNumber((obj as any).id) + ); +} + +/** + * 安全获取数字值,提供默认值 + */ +export function safeNumber(value: unknown, defaultValue = 0): number { + if (isValidNumber(value)) { + return value; + } + if (typeof value === 'string') { + const parsed = Number(value); + return isValidNumber(parsed) ? parsed : defaultValue; + } + return defaultValue; +} + +/** + * 安全获取字符串值,提供默认值 + */ +export function safeString(value: unknown, defaultValue = ''): string { + return typeof value === 'string' ? value : defaultValue; +} + +/** + * 检查 API 响应是否有效 + */ +export function isValidApiResponse(response: unknown): response is { count: number; list?: T[] } { + return ( + typeof response === 'object' && + response !== null && + 'count' in response && + isValidNumber((response as any).count) + ); +} + +/** + * 检查统计数据是否有效 + */ +export function isValidStatistics(data: unknown): data is { + id?: number; + userCount?: number; + orderCount?: number; + totalSales?: number; +} { + return ( + typeof data === 'object' && + data !== null + ); +} + +/** + * 安全的对象合并,过滤掉 undefined 值 + */ +export function safeMerge>( + target: T, + source: Partial +): T { + const result = { ...target }; + + for (const [key, value] of Object.entries(source)) { + if (value !== undefined) { + result[key as keyof T] = value; + } + } + + return result; +} + +/** + * 创建带有默认值的对象 + */ +export function withDefaults>( + data: Partial, + defaults: T +): T { + return safeMerge(defaults, data); +} diff --git a/src/utils/use-echarts.ts b/src/utils/use-echarts.ts new file mode 100644 index 0000000..06531d8 --- /dev/null +++ b/src/utils/use-echarts.ts @@ -0,0 +1,76 @@ +/** + * echarts 自动切换主题、重置尺寸封装 + */ +import type { Ref } from 'vue'; +import { + ref, + reactive, + unref, + provide, + watch, + onActivated, + onDeactivated, + nextTick +} from 'vue'; +import { storeToRefs } from 'pinia'; +import { THEME_KEY } from 'vue-echarts'; +import type VChart from 'vue-echarts'; +import { ChartTheme, ChartThemeDark } from 'ele-admin-pro/es'; +import { useThemeStore } from '@/store/modules/theme'; +import { onSizeChange } from './on-size-change'; + +export default function (chartRefs: Ref | null>[]) { + // 当前框架是否是暗黑主题 + const themeStore = useThemeStore(); + const { darkMode } = storeToRefs(themeStore); + // 是否为 deactivated 状态 + const deactivated = ref(false); + // 当前图表是否是暗黑主题 + const isDark = ref(unref(darkMode)); + // 当前图表主题 + const chartsTheme = reactive({ + ...(unref(isDark) ? ChartThemeDark : ChartTheme) + }); + + // 设置图表主题 + provide(THEME_KEY, chartsTheme); + + /* 重置图表尺寸 */ + const resizeCharts = () => { + chartRefs.forEach((chartRef) => { + unref(chartRef)?.resize(); + }); + }; + + /* 屏幕尺寸变化监听 */ + onSizeChange(() => { + resizeCharts(); + }); + + /* 更改图表主题 */ + const changeTheme = (dark: boolean) => { + isDark.value = dark; + Object.assign(chartsTheme, dark ? ChartThemeDark : ChartTheme); + }; + + onActivated(() => { + deactivated.value = false; + nextTick(() => { + if (unref(isDark) !== unref(darkMode)) { + changeTheme(unref(darkMode)); + } else { + resizeCharts(); + } + }); + }); + + onDeactivated(() => { + deactivated.value = true; + }); + + watch(darkMode, (dark) => { + if (!unref(deactivated)) { + changeTheme(dark); + } + }); +} diff --git a/src/utils/use-form-data.ts b/src/utils/use-form-data.ts new file mode 100644 index 0000000..a3e6511 --- /dev/null +++ b/src/utils/use-form-data.ts @@ -0,0 +1,29 @@ +import { reactive } from 'vue'; + +/** + * 表单数据 hook + * @param initValue 默认值 + */ +export default function (initValue?: T) { + const form = reactive({ ...initValue } as T); + + const resetFields = () => { + Object.keys(form).forEach((key) => { + form[key] = initValue ? initValue[key] : void 0; + }); + }; + + const assignFields = (data: object) => { + Object.keys(form).forEach((key) => { + form[key] = data[key]; + }); + }; + + return { + form, + // 重置为初始值 + resetFields, + // 赋值不改变字段 + assignFields + }; +} diff --git a/src/utils/use-search.ts b/src/utils/use-search.ts new file mode 100644 index 0000000..5638737 --- /dev/null +++ b/src/utils/use-search.ts @@ -0,0 +1,27 @@ +import { reactive } from 'vue'; + +/** + * 搜索表单 hook + * @param initValue 默认值 + */ +export default function (initValue?: T) { + const where = reactive({ ...initValue } as T); + + const resetFields = () => { + Object.keys(where).forEach((key) => { + where[key] = initValue ? initValue[key] : void 0; + }); + }; + + const assignFields = (data: object) => { + Object.keys(where).forEach((key) => { + where[key] = data[key]; + }); + }; + + return { + where, + resetFields, + assignFields + }; +} diff --git a/src/views/bszx/extra.vue b/src/views/bszx/extra.vue new file mode 100644 index 0000000..70088c9 --- /dev/null +++ b/src/views/bszx/extra.vue @@ -0,0 +1,55 @@ + + + + diff --git a/src/views/cms/clear-cache/index.vue b/src/views/cms/clear-cache/index.vue new file mode 100644 index 0000000..2f3c46e --- /dev/null +++ b/src/views/cms/clear-cache/index.vue @@ -0,0 +1,41 @@ + + + + diff --git a/src/views/cms/cmsAd/components/cmsAdEdit.vue b/src/views/cms/cmsAd/components/cmsAdEdit.vue new file mode 100644 index 0000000..ecc2176 --- /dev/null +++ b/src/views/cms/cmsAd/components/cmsAdEdit.vue @@ -0,0 +1,402 @@ + + + + diff --git a/src/views/cms/cmsAd/components/search.vue b/src/views/cms/cmsAd/components/search.vue new file mode 100644 index 0000000..3bb8202 --- /dev/null +++ b/src/views/cms/cmsAd/components/search.vue @@ -0,0 +1,81 @@ + + + + diff --git a/src/views/cms/cmsAd/index.vue b/src/views/cms/cmsAd/index.vue new file mode 100644 index 0000000..4780aed --- /dev/null +++ b/src/views/cms/cmsAd/index.vue @@ -0,0 +1,288 @@ + + + + + + + diff --git a/src/views/cms/cmsAdRecord/components/cmsAdRecordEdit.vue b/src/views/cms/cmsAdRecord/components/cmsAdRecordEdit.vue new file mode 100644 index 0000000..f00325f --- /dev/null +++ b/src/views/cms/cmsAdRecord/components/cmsAdRecordEdit.vue @@ -0,0 +1,215 @@ + + + + diff --git a/src/views/cms/cmsAdRecord/components/search.vue b/src/views/cms/cmsAdRecord/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsAdRecord/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsAdRecord/index.vue b/src/views/cms/cmsAdRecord/index.vue new file mode 100644 index 0000000..f0485ff --- /dev/null +++ b/src/views/cms/cmsAdRecord/index.vue @@ -0,0 +1,257 @@ + + + + + + + diff --git a/src/views/cms/cmsArticle/components/Import.vue b/src/views/cms/cmsArticle/components/Import.vue new file mode 100644 index 0000000..9f343ec --- /dev/null +++ b/src/views/cms/cmsArticle/components/Import.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/views/cms/cmsArticle/components/articleEdit.vue b/src/views/cms/cmsArticle/components/articleEdit.vue new file mode 100644 index 0000000..3bee8b4 --- /dev/null +++ b/src/views/cms/cmsArticle/components/articleEdit.vue @@ -0,0 +1,1554 @@ + + + + + + diff --git a/src/views/cms/cmsArticle/components/articleUpdate.vue b/src/views/cms/cmsArticle/components/articleUpdate.vue new file mode 100644 index 0000000..d42dbe8 --- /dev/null +++ b/src/views/cms/cmsArticle/components/articleUpdate.vue @@ -0,0 +1,207 @@ + + + + diff --git a/src/views/cms/cmsArticle/components/search.vue b/src/views/cms/cmsArticle/components/search.vue new file mode 100644 index 0000000..559f51f --- /dev/null +++ b/src/views/cms/cmsArticle/components/search.vue @@ -0,0 +1,326 @@ + + + + diff --git a/src/views/cms/cmsArticle/dictionary/source-select.vue b/src/views/cms/cmsArticle/dictionary/source-select.vue new file mode 100644 index 0000000..72598a3 --- /dev/null +++ b/src/views/cms/cmsArticle/dictionary/source-select.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/cms/cmsArticle/index.vue b/src/views/cms/cmsArticle/index.vue new file mode 100644 index 0000000..356f364 --- /dev/null +++ b/src/views/cms/cmsArticle/index.vue @@ -0,0 +1,467 @@ + + + + + diff --git a/src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue b/src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue new file mode 100644 index 0000000..b44bb46 --- /dev/null +++ b/src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue @@ -0,0 +1,306 @@ + + + + diff --git a/src/views/cms/cmsArticleCategory/components/search.vue b/src/views/cms/cmsArticleCategory/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsArticleCategory/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsArticleCategory/index.vue b/src/views/cms/cmsArticleCategory/index.vue new file mode 100644 index 0000000..d0318a4 --- /dev/null +++ b/src/views/cms/cmsArticleCategory/index.vue @@ -0,0 +1,323 @@ + + + + + + + diff --git a/src/views/cms/cmsArticleComment/components/cmsArticleCommentEdit.vue b/src/views/cms/cmsArticleComment/components/cmsArticleCommentEdit.vue new file mode 100644 index 0000000..707b64d --- /dev/null +++ b/src/views/cms/cmsArticleComment/components/cmsArticleCommentEdit.vue @@ -0,0 +1,263 @@ + + + + diff --git a/src/views/cms/cmsArticleComment/components/search.vue b/src/views/cms/cmsArticleComment/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsArticleComment/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsArticleComment/index.vue b/src/views/cms/cmsArticleComment/index.vue new file mode 100644 index 0000000..53a5724 --- /dev/null +++ b/src/views/cms/cmsArticleComment/index.vue @@ -0,0 +1,293 @@ + + + + + + + diff --git a/src/views/cms/cmsArticleContent/components/cmsArticleContentEdit.vue b/src/views/cms/cmsArticleContent/components/cmsArticleContentEdit.vue new file mode 100644 index 0000000..a72e001 --- /dev/null +++ b/src/views/cms/cmsArticleContent/components/cmsArticleContentEdit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/cmsArticleContent/components/search.vue b/src/views/cms/cmsArticleContent/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsArticleContent/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsArticleContent/index.vue b/src/views/cms/cmsArticleContent/index.vue new file mode 100644 index 0000000..08477c5 --- /dev/null +++ b/src/views/cms/cmsArticleContent/index.vue @@ -0,0 +1,227 @@ + + + + + + + diff --git a/src/views/cms/cmsArticleCount/components/cmsArticleCountEdit.vue b/src/views/cms/cmsArticleCount/components/cmsArticleCountEdit.vue new file mode 100644 index 0000000..459909c --- /dev/null +++ b/src/views/cms/cmsArticleCount/components/cmsArticleCountEdit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/cmsArticleCount/components/search.vue b/src/views/cms/cmsArticleCount/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsArticleCount/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsArticleCount/index.vue b/src/views/cms/cmsArticleCount/index.vue new file mode 100644 index 0000000..9e1c744 --- /dev/null +++ b/src/views/cms/cmsArticleCount/index.vue @@ -0,0 +1,227 @@ + + + + + + + diff --git a/src/views/cms/cmsArticleLike/components/cmsArticleLikeEdit.vue b/src/views/cms/cmsArticleLike/components/cmsArticleLikeEdit.vue new file mode 100644 index 0000000..7cc2867 --- /dev/null +++ b/src/views/cms/cmsArticleLike/components/cmsArticleLikeEdit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/cmsArticleLike/components/search.vue b/src/views/cms/cmsArticleLike/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsArticleLike/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsArticleLike/index.vue b/src/views/cms/cmsArticleLike/index.vue new file mode 100644 index 0000000..39b159e --- /dev/null +++ b/src/views/cms/cmsArticleLike/index.vue @@ -0,0 +1,227 @@ + + + + + + + diff --git a/src/views/cms/cmsDesign/components/cmsDesignEdit.vue b/src/views/cms/cmsDesign/components/cmsDesignEdit.vue new file mode 100644 index 0000000..2cab7e2 --- /dev/null +++ b/src/views/cms/cmsDesign/components/cmsDesignEdit.vue @@ -0,0 +1,275 @@ + + + + diff --git a/src/views/cms/cmsDesign/components/search.vue b/src/views/cms/cmsDesign/components/search.vue new file mode 100644 index 0000000..347cfeb --- /dev/null +++ b/src/views/cms/cmsDesign/components/search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/cms/cmsDesign/index.vue b/src/views/cms/cmsDesign/index.vue new file mode 100644 index 0000000..eb1680f --- /dev/null +++ b/src/views/cms/cmsDesign/index.vue @@ -0,0 +1,240 @@ + + + + + + + diff --git a/src/views/cms/cmsDomain/components/cmsDomainEdit.vue b/src/views/cms/cmsDomain/components/cmsDomainEdit.vue new file mode 100644 index 0000000..b60eafd --- /dev/null +++ b/src/views/cms/cmsDomain/components/cmsDomainEdit.vue @@ -0,0 +1,186 @@ + + + + diff --git a/src/views/cms/cmsDomain/components/search.vue b/src/views/cms/cmsDomain/components/search.vue new file mode 100644 index 0000000..29a7248 --- /dev/null +++ b/src/views/cms/cmsDomain/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDomain/index.vue b/src/views/cms/cmsDomain/index.vue new file mode 100644 index 0000000..7908007 --- /dev/null +++ b/src/views/cms/cmsDomain/index.vue @@ -0,0 +1,249 @@ + + + + + + + diff --git a/src/views/cms/cmsForm/components/cmsFormEdit.vue b/src/views/cms/cmsForm/components/cmsFormEdit.vue new file mode 100644 index 0000000..67f73bb --- /dev/null +++ b/src/views/cms/cmsForm/components/cmsFormEdit.vue @@ -0,0 +1,465 @@ + + + + diff --git a/src/views/cms/cmsForm/components/search.vue b/src/views/cms/cmsForm/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsForm/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsForm/index.vue b/src/views/cms/cmsForm/index.vue new file mode 100644 index 0000000..52bbe37 --- /dev/null +++ b/src/views/cms/cmsForm/index.vue @@ -0,0 +1,238 @@ + + + + + + + diff --git a/src/views/cms/cmsFormRecord/components/cmsFormRecordEdit.vue b/src/views/cms/cmsFormRecord/components/cmsFormRecordEdit.vue new file mode 100644 index 0000000..421ac55 --- /dev/null +++ b/src/views/cms/cmsFormRecord/components/cmsFormRecordEdit.vue @@ -0,0 +1,239 @@ + + + + diff --git a/src/views/cms/cmsFormRecord/components/search.vue b/src/views/cms/cmsFormRecord/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsFormRecord/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsFormRecord/index.vue b/src/views/cms/cmsFormRecord/index.vue new file mode 100644 index 0000000..7a3b68c --- /dev/null +++ b/src/views/cms/cmsFormRecord/index.vue @@ -0,0 +1,275 @@ + + + + + + + diff --git a/src/views/cms/cmsLang/components/cmsLangEdit.vue b/src/views/cms/cmsLang/components/cmsLangEdit.vue new file mode 100644 index 0000000..302d2ce --- /dev/null +++ b/src/views/cms/cmsLang/components/cmsLangEdit.vue @@ -0,0 +1,202 @@ + + + + diff --git a/src/views/cms/cmsLang/components/search.vue b/src/views/cms/cmsLang/components/search.vue new file mode 100644 index 0000000..e9dc1ef --- /dev/null +++ b/src/views/cms/cmsLang/components/search.vue @@ -0,0 +1,43 @@ + + + + diff --git a/src/views/cms/cmsLang/index.vue b/src/views/cms/cmsLang/index.vue new file mode 100644 index 0000000..57daed5 --- /dev/null +++ b/src/views/cms/cmsLang/index.vue @@ -0,0 +1,207 @@ + + + + + + + diff --git a/src/views/cms/cmsLangLog/components/cmsLangLogEdit.vue b/src/views/cms/cmsLangLog/components/cmsLangLogEdit.vue new file mode 100644 index 0000000..16251ce --- /dev/null +++ b/src/views/cms/cmsLangLog/components/cmsLangLogEdit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/cmsLangLog/components/search.vue b/src/views/cms/cmsLangLog/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsLangLog/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsLangLog/index.vue b/src/views/cms/cmsLangLog/index.vue new file mode 100644 index 0000000..6b92efe --- /dev/null +++ b/src/views/cms/cmsLangLog/index.vue @@ -0,0 +1,227 @@ + + + + + + + diff --git a/src/views/cms/cmsLink/components/cmsLinkEdit.vue b/src/views/cms/cmsLink/components/cmsLinkEdit.vue new file mode 100644 index 0000000..f8418a8 --- /dev/null +++ b/src/views/cms/cmsLink/components/cmsLinkEdit.vue @@ -0,0 +1,273 @@ + + + + diff --git a/src/views/cms/cmsLink/components/linkUpdate.vue b/src/views/cms/cmsLink/components/linkUpdate.vue new file mode 100644 index 0000000..20c4ed9 --- /dev/null +++ b/src/views/cms/cmsLink/components/linkUpdate.vue @@ -0,0 +1,199 @@ + + + + diff --git a/src/views/cms/cmsLink/components/search.vue b/src/views/cms/cmsLink/components/search.vue new file mode 100644 index 0000000..d2951b4 --- /dev/null +++ b/src/views/cms/cmsLink/components/search.vue @@ -0,0 +1,94 @@ + + + + diff --git a/src/views/cms/cmsLink/index.vue b/src/views/cms/cmsLink/index.vue new file mode 100644 index 0000000..e20c4e3 --- /dev/null +++ b/src/views/cms/cmsLink/index.vue @@ -0,0 +1,273 @@ + + + + + + + diff --git a/src/views/cms/cmsModel/components/cmsModelEdit.vue b/src/views/cms/cmsModel/components/cmsModelEdit.vue new file mode 100644 index 0000000..ea92414 --- /dev/null +++ b/src/views/cms/cmsModel/components/cmsModelEdit.vue @@ -0,0 +1,316 @@ + + + + diff --git a/src/views/cms/cmsModel/components/search.vue b/src/views/cms/cmsModel/components/search.vue new file mode 100644 index 0000000..ad9200f --- /dev/null +++ b/src/views/cms/cmsModel/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsModel/index.vue b/src/views/cms/cmsModel/index.vue new file mode 100644 index 0000000..7b3f62d --- /dev/null +++ b/src/views/cms/cmsModel/index.vue @@ -0,0 +1,260 @@ + + + + + + + diff --git a/src/views/cms/cmsNavigation/components/components/designRecordEdit.vue b/src/views/cms/cmsNavigation/components/components/designRecordEdit.vue new file mode 100644 index 0000000..56d7b03 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/components/designRecordEdit.vue @@ -0,0 +1,245 @@ + + + + diff --git a/src/views/cms/cmsNavigation/components/components/search.vue b/src/views/cms/cmsNavigation/components/components/search.vue new file mode 100644 index 0000000..5c483b2 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsNavigation/components/design-edit.vue b/src/views/cms/cmsNavigation/components/design-edit.vue new file mode 100644 index 0000000..dd62e95 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/design-edit.vue @@ -0,0 +1,482 @@ + + + + diff --git a/src/views/cms/cmsNavigation/components/extra.vue b/src/views/cms/cmsNavigation/components/extra.vue new file mode 100644 index 0000000..939e784 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/extra.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/cms/cmsNavigation/components/navigation-edit.vue b/src/views/cms/cmsNavigation/components/navigation-edit.vue new file mode 100644 index 0000000..6fe9665 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/navigation-edit.vue @@ -0,0 +1,595 @@ + + + + + + diff --git a/src/views/cms/cmsNavigation/components/search.vue b/src/views/cms/cmsNavigation/components/search.vue new file mode 100644 index 0000000..190409e --- /dev/null +++ b/src/views/cms/cmsNavigation/components/search.vue @@ -0,0 +1,184 @@ + + + + \ No newline at end of file diff --git a/src/views/cms/cmsNavigation/index.vue b/src/views/cms/cmsNavigation/index.vue new file mode 100644 index 0000000..6ec725b --- /dev/null +++ b/src/views/cms/cmsNavigation/index.vue @@ -0,0 +1,590 @@ + + + + + diff --git a/src/views/cms/cmsOrder/components/orderInfo.vue b/src/views/cms/cmsOrder/components/orderInfo.vue new file mode 100644 index 0000000..98b9302 --- /dev/null +++ b/src/views/cms/cmsOrder/components/orderInfo.vue @@ -0,0 +1,586 @@ + + + + + + diff --git a/src/views/cms/cmsOrder/components/search.vue b/src/views/cms/cmsOrder/components/search.vue new file mode 100644 index 0000000..d995f61 --- /dev/null +++ b/src/views/cms/cmsOrder/components/search.vue @@ -0,0 +1,222 @@ + + + + diff --git a/src/views/cms/cmsOrder/index.vue b/src/views/cms/cmsOrder/index.vue new file mode 100644 index 0000000..b6fca43 --- /dev/null +++ b/src/views/cms/cmsOrder/index.vue @@ -0,0 +1,374 @@ + + + + + + + diff --git a/src/views/cms/cmsSetting/index.vue b/src/views/cms/cmsSetting/index.vue new file mode 100644 index 0000000..adbc88a --- /dev/null +++ b/src/views/cms/cmsSetting/index.vue @@ -0,0 +1,176 @@ + + + + + + + diff --git a/src/views/cms/cmsStatistics/components/cmsStatisticsEdit.vue b/src/views/cms/cmsStatistics/components/cmsStatisticsEdit.vue new file mode 100644 index 0000000..6589714 --- /dev/null +++ b/src/views/cms/cmsStatistics/components/cmsStatisticsEdit.vue @@ -0,0 +1,387 @@ + + + + diff --git a/src/views/cms/cmsStatistics/components/search.vue b/src/views/cms/cmsStatistics/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsStatistics/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsStatistics/index.vue b/src/views/cms/cmsStatistics/index.vue new file mode 100644 index 0000000..36fc7d6 --- /dev/null +++ b/src/views/cms/cmsStatistics/index.vue @@ -0,0 +1,163 @@ + + + + + diff --git a/src/views/cms/cmsTemplate/components/cmsTemplateEdit.vue b/src/views/cms/cmsTemplate/components/cmsTemplateEdit.vue new file mode 100644 index 0000000..bc1e5f3 --- /dev/null +++ b/src/views/cms/cmsTemplate/components/cmsTemplateEdit.vue @@ -0,0 +1,289 @@ + + + + diff --git a/src/views/cms/cmsTemplate/components/search.vue b/src/views/cms/cmsTemplate/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsTemplate/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsTemplate/index.vue b/src/views/cms/cmsTemplate/index.vue new file mode 100644 index 0000000..c820749 --- /dev/null +++ b/src/views/cms/cmsTemplate/index.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite-10257/components/Extra.vue b/src/views/cms/cmsWebsite-10257/components/Extra.vue new file mode 100644 index 0000000..fcb921b --- /dev/null +++ b/src/views/cms/cmsWebsite-10257/components/Extra.vue @@ -0,0 +1,65 @@ + + + + diff --git a/src/views/cms/cmsWebsite-10257/components/search.vue b/src/views/cms/cmsWebsite-10257/components/search.vue new file mode 100644 index 0000000..9c84b3e --- /dev/null +++ b/src/views/cms/cmsWebsite-10257/components/search.vue @@ -0,0 +1,57 @@ + + + + diff --git a/src/views/cms/cmsWebsite-10257/components/websiteEdit.vue b/src/views/cms/cmsWebsite-10257/components/websiteEdit.vue new file mode 100644 index 0000000..70b6195 --- /dev/null +++ b/src/views/cms/cmsWebsite-10257/components/websiteEdit.vue @@ -0,0 +1,420 @@ + + + + diff --git a/src/views/cms/cmsWebsite-10257/index.vue b/src/views/cms/cmsWebsite-10257/index.vue new file mode 100644 index 0000000..08c38e6 --- /dev/null +++ b/src/views/cms/cmsWebsite-10257/index.vue @@ -0,0 +1,402 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite-10258/index.vue b/src/views/cms/cmsWebsite-10258/index.vue new file mode 100644 index 0000000..0d0ad11 --- /dev/null +++ b/src/views/cms/cmsWebsite-10258/index.vue @@ -0,0 +1,404 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite-10409/index.vue b/src/views/cms/cmsWebsite-10409/index.vue new file mode 100644 index 0000000..4d16509 --- /dev/null +++ b/src/views/cms/cmsWebsite-10409/index.vue @@ -0,0 +1,404 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite-10411/index.vue b/src/views/cms/cmsWebsite-10411/index.vue new file mode 100644 index 0000000..eec8964 --- /dev/null +++ b/src/views/cms/cmsWebsite-10411/index.vue @@ -0,0 +1,404 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite-all/index.vue b/src/views/cms/cmsWebsite-all/index.vue new file mode 100644 index 0000000..aa77b6e --- /dev/null +++ b/src/views/cms/cmsWebsite-all/index.vue @@ -0,0 +1,451 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite-official/index.vue b/src/views/cms/cmsWebsite-official/index.vue new file mode 100644 index 0000000..aaa5d8c --- /dev/null +++ b/src/views/cms/cmsWebsite-official/index.vue @@ -0,0 +1,341 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsite/components/search.vue b/src/views/cms/cmsWebsite/components/search.vue new file mode 100644 index 0000000..c893ea6 --- /dev/null +++ b/src/views/cms/cmsWebsite/components/search.vue @@ -0,0 +1,100 @@ + + + + diff --git a/src/views/cms/cmsWebsite/components/websiteEdit.vue b/src/views/cms/cmsWebsite/components/websiteEdit.vue new file mode 100644 index 0000000..d1bf85f --- /dev/null +++ b/src/views/cms/cmsWebsite/components/websiteEdit.vue @@ -0,0 +1,418 @@ + + + + diff --git a/src/views/cms/cmsWebsite/index.vue b/src/views/cms/cmsWebsite/index.vue new file mode 100644 index 0000000..2001904 --- /dev/null +++ b/src/views/cms/cmsWebsite/index.vue @@ -0,0 +1,320 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsiteField/components/Import.vue b/src/views/cms/cmsWebsiteField/components/Import.vue new file mode 100644 index 0000000..175842a --- /dev/null +++ b/src/views/cms/cmsWebsiteField/components/Import.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/views/cms/cmsWebsiteField/components/cmsWebsiteFieldEdit.vue b/src/views/cms/cmsWebsiteField/components/cmsWebsiteFieldEdit.vue new file mode 100644 index 0000000..3d5592c --- /dev/null +++ b/src/views/cms/cmsWebsiteField/components/cmsWebsiteFieldEdit.vue @@ -0,0 +1,261 @@ + + + + diff --git a/src/views/cms/cmsWebsiteField/components/edit.vue b/src/views/cms/cmsWebsiteField/components/edit.vue new file mode 100644 index 0000000..82af32c --- /dev/null +++ b/src/views/cms/cmsWebsiteField/components/edit.vue @@ -0,0 +1,315 @@ + + + + diff --git a/src/views/cms/cmsWebsiteField/components/search.vue b/src/views/cms/cmsWebsiteField/components/search.vue new file mode 100644 index 0000000..fb1adb0 --- /dev/null +++ b/src/views/cms/cmsWebsiteField/components/search.vue @@ -0,0 +1,114 @@ + + + diff --git a/src/views/cms/cmsWebsiteField/index.vue b/src/views/cms/cmsWebsiteField/index.vue new file mode 100644 index 0000000..bb44c1f --- /dev/null +++ b/src/views/cms/cmsWebsiteField/index.vue @@ -0,0 +1,284 @@ + + + + + diff --git a/src/views/cms/cmsWebsiteSetting/components/cmsWebsiteSettingEdit.vue b/src/views/cms/cmsWebsiteSetting/components/cmsWebsiteSettingEdit.vue new file mode 100644 index 0000000..ca7b8d8 --- /dev/null +++ b/src/views/cms/cmsWebsiteSetting/components/cmsWebsiteSettingEdit.vue @@ -0,0 +1,257 @@ + + + + diff --git a/src/views/cms/cmsWebsiteSetting/components/search.vue b/src/views/cms/cmsWebsiteSetting/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsWebsiteSetting/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsWebsiteSetting/index.vue b/src/views/cms/cmsWebsiteSetting/index.vue new file mode 100644 index 0000000..72ab5f6 --- /dev/null +++ b/src/views/cms/cmsWebsiteSetting/index.vue @@ -0,0 +1,305 @@ + + + + + + + diff --git a/src/views/cms/dashboard/components/search.vue b/src/views/cms/dashboard/components/search.vue new file mode 100644 index 0000000..c893ea6 --- /dev/null +++ b/src/views/cms/dashboard/components/search.vue @@ -0,0 +1,100 @@ + + + + diff --git a/src/views/cms/dashboard/components/websiteEdit.vue b/src/views/cms/dashboard/components/websiteEdit.vue new file mode 100644 index 0000000..d68758f --- /dev/null +++ b/src/views/cms/dashboard/components/websiteEdit.vue @@ -0,0 +1,413 @@ + + + + diff --git a/src/views/cms/dashboard/index.vue b/src/views/cms/dashboard/index.vue new file mode 100644 index 0000000..86e77d0 --- /dev/null +++ b/src/views/cms/dashboard/index.vue @@ -0,0 +1,258 @@ + + + + + diff --git a/src/views/cms/dict/components/dict-edit.vue b/src/views/cms/dict/components/dict-edit.vue new file mode 100644 index 0000000..0dce1dc --- /dev/null +++ b/src/views/cms/dict/components/dict-edit.vue @@ -0,0 +1,177 @@ + + + + diff --git a/src/views/cms/dict/index.vue b/src/views/cms/dict/index.vue new file mode 100644 index 0000000..e4f85e7 --- /dev/null +++ b/src/views/cms/dict/index.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/src/views/cms/file/components/video-edit.vue b/src/views/cms/file/components/video-edit.vue new file mode 100644 index 0000000..255a930 --- /dev/null +++ b/src/views/cms/file/components/video-edit.vue @@ -0,0 +1,241 @@ + + + + diff --git a/src/views/cms/file/index.vue b/src/views/cms/file/index.vue new file mode 100644 index 0000000..f162e85 --- /dev/null +++ b/src/views/cms/file/index.vue @@ -0,0 +1,307 @@ + + + + + diff --git a/src/views/cms/file/player/index.vue b/src/views/cms/file/player/index.vue new file mode 100644 index 0000000..9be0669 --- /dev/null +++ b/src/views/cms/file/player/index.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/cms/help/components/articleEdit.vue b/src/views/cms/help/components/articleEdit.vue new file mode 100644 index 0000000..6fc6515 --- /dev/null +++ b/src/views/cms/help/components/articleEdit.vue @@ -0,0 +1,237 @@ + + + + diff --git a/src/views/cms/help/components/search.vue b/src/views/cms/help/components/search.vue new file mode 100644 index 0000000..31f7000 --- /dev/null +++ b/src/views/cms/help/components/search.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/cms/help/index.vue b/src/views/cms/help/index.vue new file mode 100644 index 0000000..3c92aa8 --- /dev/null +++ b/src/views/cms/help/index.vue @@ -0,0 +1,381 @@ + + + + + diff --git a/src/views/cms/photo/components/Extra.vue b/src/views/cms/photo/components/Extra.vue new file mode 100644 index 0000000..b34c408 --- /dev/null +++ b/src/views/cms/photo/components/Extra.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/views/cms/photo/components/photo-edit.vue b/src/views/cms/photo/components/photo-edit.vue new file mode 100644 index 0000000..8c27ef3 --- /dev/null +++ b/src/views/cms/photo/components/photo-edit.vue @@ -0,0 +1,276 @@ + + + + diff --git a/src/views/cms/photo/dict/components/dict-edit.vue b/src/views/cms/photo/dict/components/dict-edit.vue new file mode 100644 index 0000000..a32c1c4 --- /dev/null +++ b/src/views/cms/photo/dict/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/photo/dict/index.vue b/src/views/cms/photo/dict/index.vue new file mode 100644 index 0000000..ddabefb --- /dev/null +++ b/src/views/cms/photo/dict/index.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/views/cms/photo/image.vue b/src/views/cms/photo/image.vue new file mode 100644 index 0000000..c6f4579 --- /dev/null +++ b/src/views/cms/photo/image.vue @@ -0,0 +1,141 @@ + + + + + + + diff --git a/src/views/cms/photo/index.vue b/src/views/cms/photo/index.vue new file mode 100644 index 0000000..26e92e5 --- /dev/null +++ b/src/views/cms/photo/index.vue @@ -0,0 +1,176 @@ + + + + + + + diff --git a/src/views/cms/photo/list.vue b/src/views/cms/photo/list.vue new file mode 100644 index 0000000..b85d220 --- /dev/null +++ b/src/views/cms/photo/list.vue @@ -0,0 +1,348 @@ + + + + + diff --git a/src/views/cms/photo/player/index.vue b/src/views/cms/photo/player/index.vue new file mode 100644 index 0000000..f5e3310 --- /dev/null +++ b/src/views/cms/photo/player/index.vue @@ -0,0 +1,124 @@ + + + + diff --git a/src/views/cms/setting/components/field.vue b/src/views/cms/setting/components/field.vue new file mode 100644 index 0000000..162d39d --- /dev/null +++ b/src/views/cms/setting/components/field.vue @@ -0,0 +1,250 @@ + + + + + diff --git a/src/views/cms/setting/components/website-field-edit.vue b/src/views/cms/setting/components/website-field-edit.vue new file mode 100644 index 0000000..1a52dce --- /dev/null +++ b/src/views/cms/setting/components/website-field-edit.vue @@ -0,0 +1,181 @@ + + + + diff --git a/src/views/cms/setting/components/website-field-search.vue b/src/views/cms/setting/components/website-field-search.vue new file mode 100644 index 0000000..c72d354 --- /dev/null +++ b/src/views/cms/setting/components/website-field-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/cms/setting/components/website-field.vue b/src/views/cms/setting/components/website-field.vue new file mode 100644 index 0000000..8571a5b --- /dev/null +++ b/src/views/cms/setting/components/website-field.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/views/cms/setting/index.vue b/src/views/cms/setting/index.vue new file mode 100644 index 0000000..1bf3416 --- /dev/null +++ b/src/views/cms/setting/index.vue @@ -0,0 +1,367 @@ + + + + + + diff --git a/src/views/cms/video/components/video-edit.vue b/src/views/cms/video/components/video-edit.vue new file mode 100644 index 0000000..255a930 --- /dev/null +++ b/src/views/cms/video/components/video-edit.vue @@ -0,0 +1,241 @@ + + + + diff --git a/src/views/cms/video/index.vue b/src/views/cms/video/index.vue new file mode 100644 index 0000000..d81a1b0 --- /dev/null +++ b/src/views/cms/video/index.vue @@ -0,0 +1,321 @@ + + + + + diff --git a/src/views/cms/video/player/index.vue b/src/views/cms/video/player/index.vue new file mode 100644 index 0000000..9be0669 --- /dev/null +++ b/src/views/cms/video/player/index.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/house/houseInfo/components/houseInfoEdit.vue b/src/views/house/houseInfo/components/houseInfoEdit.vue new file mode 100644 index 0000000..62415bf --- /dev/null +++ b/src/views/house/houseInfo/components/houseInfoEdit.vue @@ -0,0 +1,478 @@ + + + + diff --git a/src/views/house/houseInfo/components/search.vue b/src/views/house/houseInfo/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/house/houseInfo/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/house/houseInfo/index.vue b/src/views/house/houseInfo/index.vue new file mode 100644 index 0000000..c18be02 --- /dev/null +++ b/src/views/house/houseInfo/index.vue @@ -0,0 +1,469 @@ + + + + + + + diff --git a/src/views/house/houseLikeLog/components/houseLikeLogEdit.vue b/src/views/house/houseLikeLog/components/houseLikeLogEdit.vue new file mode 100644 index 0000000..2f999b7 --- /dev/null +++ b/src/views/house/houseLikeLog/components/houseLikeLogEdit.vue @@ -0,0 +1,202 @@ + + + + diff --git a/src/views/house/houseLikeLog/components/search.vue b/src/views/house/houseLikeLog/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/house/houseLikeLog/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/house/houseLikeLog/index.vue b/src/views/house/houseLikeLog/index.vue new file mode 100644 index 0000000..1093d72 --- /dev/null +++ b/src/views/house/houseLikeLog/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/house/houseReservation/components/houseReservationEdit.vue b/src/views/house/houseReservation/components/houseReservationEdit.vue new file mode 100644 index 0000000..9faf64c --- /dev/null +++ b/src/views/house/houseReservation/components/houseReservationEdit.vue @@ -0,0 +1,332 @@ + + + + diff --git a/src/views/house/houseReservation/components/search.vue b/src/views/house/houseReservation/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/house/houseReservation/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/house/houseReservation/index.vue b/src/views/house/houseReservation/index.vue new file mode 100644 index 0000000..2d09bfe --- /dev/null +++ b/src/views/house/houseReservation/index.vue @@ -0,0 +1,341 @@ + + + + + + + diff --git a/src/views/house/houseUser/components/org-select.vue b/src/views/house/houseUser/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/house/houseUser/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/house/houseUser/components/role-select.vue b/src/views/house/houseUser/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/house/houseUser/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/house/houseUser/components/search.vue b/src/views/house/houseUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/house/houseUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/house/houseUser/components/sex-select.vue b/src/views/house/houseUser/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/house/houseUser/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/house/houseUser/components/user-edit.vue b/src/views/house/houseUser/components/user-edit.vue new file mode 100644 index 0000000..d2e5069 --- /dev/null +++ b/src/views/house/houseUser/components/user-edit.vue @@ -0,0 +1,345 @@ + + + + diff --git a/src/views/house/houseUser/components/user-import.vue b/src/views/house/houseUser/components/user-import.vue new file mode 100644 index 0000000..0d8cbcb --- /dev/null +++ b/src/views/house/houseUser/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/house/houseUser/components/user-info.vue b/src/views/house/houseUser/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/house/houseUser/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/house/houseUser/components/user-search.vue b/src/views/house/houseUser/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/house/houseUser/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/house/houseUser/components/userEdit.vue b/src/views/house/houseUser/components/userEdit.vue new file mode 100644 index 0000000..3a59597 --- /dev/null +++ b/src/views/house/houseUser/components/userEdit.vue @@ -0,0 +1,274 @@ + + + + diff --git a/src/views/house/houseUser/details/index.vue b/src/views/house/houseUser/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/house/houseUser/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/house/houseUser/index.vue b/src/views/house/houseUser/index.vue new file mode 100644 index 0000000..8d36fb3 --- /dev/null +++ b/src/views/house/houseUser/index.vue @@ -0,0 +1,547 @@ + + + + + + + diff --git a/src/views/house/houseViewsLog/components/houseViewsLogEdit.vue b/src/views/house/houseViewsLog/components/houseViewsLogEdit.vue new file mode 100644 index 0000000..de189f2 --- /dev/null +++ b/src/views/house/houseViewsLog/components/houseViewsLogEdit.vue @@ -0,0 +1,202 @@ + + + + diff --git a/src/views/house/houseViewsLog/components/search.vue b/src/views/house/houseViewsLog/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/house/houseViewsLog/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/house/houseViewsLog/index.vue b/src/views/house/houseViewsLog/index.vue new file mode 100644 index 0000000..deda307 --- /dev/null +++ b/src/views/house/houseViewsLog/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/house/info/components/info-edit.vue b/src/views/house/info/components/info-edit.vue new file mode 100644 index 0000000..97e7f50 --- /dev/null +++ b/src/views/house/info/components/info-edit.vue @@ -0,0 +1,801 @@ + + + + + diff --git a/src/views/house/info/components/search.vue b/src/views/house/info/components/search.vue new file mode 100644 index 0000000..097f449 --- /dev/null +++ b/src/views/house/info/components/search.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/views/house/info/index.vue b/src/views/house/info/index.vue new file mode 100644 index 0000000..c715757 --- /dev/null +++ b/src/views/house/info/index.vue @@ -0,0 +1,448 @@ + + + + + + + diff --git a/src/views/house/maimai/components/info-edit.vue b/src/views/house/maimai/components/info-edit.vue new file mode 100644 index 0000000..7391738 --- /dev/null +++ b/src/views/house/maimai/components/info-edit.vue @@ -0,0 +1,772 @@ + + + + + diff --git a/src/views/house/maimai/components/search.vue b/src/views/house/maimai/components/search.vue new file mode 100644 index 0000000..097f449 --- /dev/null +++ b/src/views/house/maimai/components/search.vue @@ -0,0 +1,127 @@ + + + + diff --git a/src/views/house/maimai/index.vue b/src/views/house/maimai/index.vue new file mode 100644 index 0000000..5d47edf --- /dev/null +++ b/src/views/house/maimai/index.vue @@ -0,0 +1,449 @@ + + + + + + + diff --git a/src/views/house/reservation/components/reservation-edit.vue b/src/views/house/reservation/components/reservation-edit.vue new file mode 100644 index 0000000..cc3b31c --- /dev/null +++ b/src/views/house/reservation/components/reservation-edit.vue @@ -0,0 +1,741 @@ + + + + + diff --git a/src/views/house/reservation/components/search.vue b/src/views/house/reservation/components/search.vue new file mode 100644 index 0000000..e0ad415 --- /dev/null +++ b/src/views/house/reservation/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/house/reservation/index.vue b/src/views/house/reservation/index.vue new file mode 100644 index 0000000..d38f1a8 --- /dev/null +++ b/src/views/house/reservation/index.vue @@ -0,0 +1,360 @@ + + + + + + + diff --git a/src/views/oa/index.vue b/src/views/oa/index.vue new file mode 100644 index 0000000..37ffd13 --- /dev/null +++ b/src/views/oa/index.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/views/oa/oaApp/components/oaAppEdit.vue b/src/views/oa/oaApp/components/oaAppEdit.vue new file mode 100644 index 0000000..1a5e703 --- /dev/null +++ b/src/views/oa/oaApp/components/oaAppEdit.vue @@ -0,0 +1,676 @@ + + + + diff --git a/src/views/oa/oaApp/components/search.vue b/src/views/oa/oaApp/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaApp/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaApp/index.vue b/src/views/oa/oaApp/index.vue new file mode 100644 index 0000000..c13d80d --- /dev/null +++ b/src/views/oa/oaApp/index.vue @@ -0,0 +1,599 @@ + + + + + + + diff --git a/src/views/oa/oaAppField/components/oaAppFieldEdit.vue b/src/views/oa/oaAppField/components/oaAppFieldEdit.vue new file mode 100644 index 0000000..c787c7d --- /dev/null +++ b/src/views/oa/oaAppField/components/oaAppFieldEdit.vue @@ -0,0 +1,212 @@ + + + + diff --git a/src/views/oa/oaAppField/components/search.vue b/src/views/oa/oaAppField/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAppField/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAppField/index.vue b/src/views/oa/oaAppField/index.vue new file mode 100644 index 0000000..d50a2bd --- /dev/null +++ b/src/views/oa/oaAppField/index.vue @@ -0,0 +1,251 @@ + + + + + + + diff --git a/src/views/oa/oaAppRenew/components/oaAppRenewEdit.vue b/src/views/oa/oaAppRenew/components/oaAppRenewEdit.vue new file mode 100644 index 0000000..e9380be --- /dev/null +++ b/src/views/oa/oaAppRenew/components/oaAppRenewEdit.vue @@ -0,0 +1,242 @@ + + + + diff --git a/src/views/oa/oaAppRenew/components/search.vue b/src/views/oa/oaAppRenew/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAppRenew/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAppRenew/index.vue b/src/views/oa/oaAppRenew/index.vue new file mode 100644 index 0000000..c4e7375 --- /dev/null +++ b/src/views/oa/oaAppRenew/index.vue @@ -0,0 +1,275 @@ + + + + + + + diff --git a/src/views/oa/oaAppUrl/components/oaAppUrlEdit.vue b/src/views/oa/oaAppUrl/components/oaAppUrlEdit.vue new file mode 100644 index 0000000..24282d1 --- /dev/null +++ b/src/views/oa/oaAppUrl/components/oaAppUrlEdit.vue @@ -0,0 +1,228 @@ + + + + diff --git a/src/views/oa/oaAppUrl/components/search.vue b/src/views/oa/oaAppUrl/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAppUrl/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAppUrl/index.vue b/src/views/oa/oaAppUrl/index.vue new file mode 100644 index 0000000..1476e79 --- /dev/null +++ b/src/views/oa/oaAppUrl/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/oa/oaAppUser/components/oaAppUserEdit.vue b/src/views/oa/oaAppUser/components/oaAppUserEdit.vue new file mode 100644 index 0000000..2318712 --- /dev/null +++ b/src/views/oa/oaAppUser/components/oaAppUserEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/oa/oaAppUser/components/search.vue b/src/views/oa/oaAppUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAppUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAppUser/index.vue b/src/views/oa/oaAppUser/index.vue new file mode 100644 index 0000000..4af42cb --- /dev/null +++ b/src/views/oa/oaAppUser/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/oa/oaAssets/components/extra.vue b/src/views/oa/oaAssets/components/extra.vue new file mode 100644 index 0000000..3558494 --- /dev/null +++ b/src/views/oa/oaAssets/components/extra.vue @@ -0,0 +1,100 @@ + + + + diff --git a/src/views/oa/oaAssets/components/oaAssetsEdit.vue b/src/views/oa/oaAssets/components/oaAssetsEdit.vue new file mode 100644 index 0000000..51c7635 --- /dev/null +++ b/src/views/oa/oaAssets/components/oaAssetsEdit.vue @@ -0,0 +1,379 @@ + + + + diff --git a/src/views/oa/oaAssets/components/search.vue b/src/views/oa/oaAssets/components/search.vue new file mode 100644 index 0000000..c995604 --- /dev/null +++ b/src/views/oa/oaAssets/components/search.vue @@ -0,0 +1,87 @@ + + + + diff --git a/src/views/oa/oaAssets/index.vue b/src/views/oa/oaAssets/index.vue new file mode 100644 index 0000000..1ea5624 --- /dev/null +++ b/src/views/oa/oaAssets/index.vue @@ -0,0 +1,381 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsCode/components/oaAssetsCodeEdit.vue b/src/views/oa/oaAssetsCode/components/oaAssetsCodeEdit.vue new file mode 100644 index 0000000..a3131d4 --- /dev/null +++ b/src/views/oa/oaAssetsCode/components/oaAssetsCodeEdit.vue @@ -0,0 +1,204 @@ + + + + diff --git a/src/views/oa/oaAssetsCode/components/search.vue b/src/views/oa/oaAssetsCode/components/search.vue new file mode 100644 index 0000000..8955127 --- /dev/null +++ b/src/views/oa/oaAssetsCode/components/search.vue @@ -0,0 +1,66 @@ + + + + diff --git a/src/views/oa/oaAssetsCode/index.vue b/src/views/oa/oaAssetsCode/index.vue new file mode 100644 index 0000000..508eef4 --- /dev/null +++ b/src/views/oa/oaAssetsCode/index.vue @@ -0,0 +1,252 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsDomain/components/oaAssetsDomainEdit.vue b/src/views/oa/oaAssetsDomain/components/oaAssetsDomainEdit.vue new file mode 100644 index 0000000..cd7ed8a --- /dev/null +++ b/src/views/oa/oaAssetsDomain/components/oaAssetsDomainEdit.vue @@ -0,0 +1,235 @@ + + + + diff --git a/src/views/oa/oaAssetsDomain/components/search.vue b/src/views/oa/oaAssetsDomain/components/search.vue new file mode 100644 index 0000000..2ff9d0b --- /dev/null +++ b/src/views/oa/oaAssetsDomain/components/search.vue @@ -0,0 +1,63 @@ + + + + diff --git a/src/views/oa/oaAssetsDomain/index.vue b/src/views/oa/oaAssetsDomain/index.vue new file mode 100644 index 0000000..fc4549e --- /dev/null +++ b/src/views/oa/oaAssetsDomain/index.vue @@ -0,0 +1,290 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsEmail/components/oaAssetsEmailEdit.vue b/src/views/oa/oaAssetsEmail/components/oaAssetsEmailEdit.vue new file mode 100644 index 0000000..b49cd52 --- /dev/null +++ b/src/views/oa/oaAssetsEmail/components/oaAssetsEmailEdit.vue @@ -0,0 +1,239 @@ + + + + diff --git a/src/views/oa/oaAssetsEmail/components/search.vue b/src/views/oa/oaAssetsEmail/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAssetsEmail/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAssetsEmail/index.vue b/src/views/oa/oaAssetsEmail/index.vue new file mode 100644 index 0000000..1848402 --- /dev/null +++ b/src/views/oa/oaAssetsEmail/index.vue @@ -0,0 +1,264 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsMysql/components/oaAssetsMysqlEdit.vue b/src/views/oa/oaAssetsMysql/components/oaAssetsMysqlEdit.vue new file mode 100644 index 0000000..2cea2d4 --- /dev/null +++ b/src/views/oa/oaAssetsMysql/components/oaAssetsMysqlEdit.vue @@ -0,0 +1,279 @@ + + + + diff --git a/src/views/oa/oaAssetsMysql/components/search.vue b/src/views/oa/oaAssetsMysql/components/search.vue new file mode 100644 index 0000000..2ad75cb --- /dev/null +++ b/src/views/oa/oaAssetsMysql/components/search.vue @@ -0,0 +1,62 @@ + + + + diff --git a/src/views/oa/oaAssetsMysql/index.vue b/src/views/oa/oaAssetsMysql/index.vue new file mode 100644 index 0000000..5fd11c6 --- /dev/null +++ b/src/views/oa/oaAssetsMysql/index.vue @@ -0,0 +1,282 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsServer/components/oaAssetsServerEdit.vue b/src/views/oa/oaAssetsServer/components/oaAssetsServerEdit.vue new file mode 100644 index 0000000..f2a43ad --- /dev/null +++ b/src/views/oa/oaAssetsServer/components/oaAssetsServerEdit.vue @@ -0,0 +1,213 @@ + + + + diff --git a/src/views/oa/oaAssetsServer/components/search.vue b/src/views/oa/oaAssetsServer/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAssetsServer/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAssetsServer/index.vue b/src/views/oa/oaAssetsServer/index.vue new file mode 100644 index 0000000..f5dc8f5 --- /dev/null +++ b/src/views/oa/oaAssetsServer/index.vue @@ -0,0 +1,242 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsSite/components/oaAssetsSiteEdit.vue b/src/views/oa/oaAssetsSite/components/oaAssetsSiteEdit.vue new file mode 100644 index 0000000..7837566 --- /dev/null +++ b/src/views/oa/oaAssetsSite/components/oaAssetsSiteEdit.vue @@ -0,0 +1,453 @@ + + + + + + diff --git a/src/views/oa/oaAssetsSite/components/search.vue b/src/views/oa/oaAssetsSite/components/search.vue new file mode 100644 index 0000000..e7f71c0 --- /dev/null +++ b/src/views/oa/oaAssetsSite/components/search.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/oa/oaAssetsSite/index.vue b/src/views/oa/oaAssetsSite/index.vue new file mode 100644 index 0000000..025cc77 --- /dev/null +++ b/src/views/oa/oaAssetsSite/index.vue @@ -0,0 +1,311 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsSoftwareCert/components/oaAssetsSoftwareCertEdit.vue b/src/views/oa/oaAssetsSoftwareCert/components/oaAssetsSoftwareCertEdit.vue new file mode 100644 index 0000000..85dd9aa --- /dev/null +++ b/src/views/oa/oaAssetsSoftwareCert/components/oaAssetsSoftwareCertEdit.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/oa/oaAssetsSoftwareCert/components/search.vue b/src/views/oa/oaAssetsSoftwareCert/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAssetsSoftwareCert/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAssetsSoftwareCert/index.vue b/src/views/oa/oaAssetsSoftwareCert/index.vue new file mode 100644 index 0000000..6082063 --- /dev/null +++ b/src/views/oa/oaAssetsSoftwareCert/index.vue @@ -0,0 +1,262 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsSsl/components/oaAssetsSslEdit.vue b/src/views/oa/oaAssetsSsl/components/oaAssetsSslEdit.vue new file mode 100644 index 0000000..44218b3 --- /dev/null +++ b/src/views/oa/oaAssetsSsl/components/oaAssetsSslEdit.vue @@ -0,0 +1,279 @@ + + + + diff --git a/src/views/oa/oaAssetsSsl/components/search.vue b/src/views/oa/oaAssetsSsl/components/search.vue new file mode 100644 index 0000000..0b7e64e --- /dev/null +++ b/src/views/oa/oaAssetsSsl/components/search.vue @@ -0,0 +1,76 @@ + + + + diff --git a/src/views/oa/oaAssetsSsl/index.vue b/src/views/oa/oaAssetsSsl/index.vue new file mode 100644 index 0000000..f84d8ac --- /dev/null +++ b/src/views/oa/oaAssetsSsl/index.vue @@ -0,0 +1,289 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsTrademark/components/oaAssetsTrademarkEdit.vue b/src/views/oa/oaAssetsTrademark/components/oaAssetsTrademarkEdit.vue new file mode 100644 index 0000000..23e498a --- /dev/null +++ b/src/views/oa/oaAssetsTrademark/components/oaAssetsTrademarkEdit.vue @@ -0,0 +1,300 @@ + + + + diff --git a/src/views/oa/oaAssetsTrademark/components/search.vue b/src/views/oa/oaAssetsTrademark/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAssetsTrademark/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAssetsTrademark/index.vue b/src/views/oa/oaAssetsTrademark/index.vue new file mode 100644 index 0000000..7d3a5e4 --- /dev/null +++ b/src/views/oa/oaAssetsTrademark/index.vue @@ -0,0 +1,317 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsUser/components/oaAssetsUserEdit.vue b/src/views/oa/oaAssetsUser/components/oaAssetsUserEdit.vue new file mode 100644 index 0000000..a6dce39 --- /dev/null +++ b/src/views/oa/oaAssetsUser/components/oaAssetsUserEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/oa/oaAssetsUser/components/search.vue b/src/views/oa/oaAssetsUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAssetsUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAssetsUser/index.vue b/src/views/oa/oaAssetsUser/index.vue new file mode 100644 index 0000000..0b42d4d --- /dev/null +++ b/src/views/oa/oaAssetsUser/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/oa/oaAssetsVhost/components/oaAssetsVhostEdit.vue b/src/views/oa/oaAssetsVhost/components/oaAssetsVhostEdit.vue new file mode 100644 index 0000000..d7b5fe1 --- /dev/null +++ b/src/views/oa/oaAssetsVhost/components/oaAssetsVhostEdit.vue @@ -0,0 +1,324 @@ + + + + diff --git a/src/views/oa/oaAssetsVhost/components/search.vue b/src/views/oa/oaAssetsVhost/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaAssetsVhost/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaAssetsVhost/index.vue b/src/views/oa/oaAssetsVhost/index.vue new file mode 100644 index 0000000..e65234d --- /dev/null +++ b/src/views/oa/oaAssetsVhost/index.vue @@ -0,0 +1,278 @@ + + + + + + + diff --git a/src/views/oa/oaCompany/components/oaCompanyEdit.vue b/src/views/oa/oaCompany/components/oaCompanyEdit.vue new file mode 100644 index 0000000..8aa9949 --- /dev/null +++ b/src/views/oa/oaCompany/components/oaCompanyEdit.vue @@ -0,0 +1,548 @@ + + + + diff --git a/src/views/oa/oaCompany/components/search.vue b/src/views/oa/oaCompany/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaCompany/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaCompany/index.vue b/src/views/oa/oaCompany/index.vue new file mode 100644 index 0000000..76f80f1 --- /dev/null +++ b/src/views/oa/oaCompany/index.vue @@ -0,0 +1,503 @@ + + + + + + + diff --git a/src/views/oa/oaCompanyField/components/oaCompanyFieldEdit.vue b/src/views/oa/oaCompanyField/components/oaCompanyFieldEdit.vue new file mode 100644 index 0000000..2c82689 --- /dev/null +++ b/src/views/oa/oaCompanyField/components/oaCompanyFieldEdit.vue @@ -0,0 +1,212 @@ + + + + diff --git a/src/views/oa/oaCompanyField/components/search.vue b/src/views/oa/oaCompanyField/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaCompanyField/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaCompanyField/index.vue b/src/views/oa/oaCompanyField/index.vue new file mode 100644 index 0000000..b8d862b --- /dev/null +++ b/src/views/oa/oaCompanyField/index.vue @@ -0,0 +1,251 @@ + + + + + + + diff --git a/src/views/oa/oaCompanyUser/components/oaCompanyUserEdit.vue b/src/views/oa/oaCompanyUser/components/oaCompanyUserEdit.vue new file mode 100644 index 0000000..104629f --- /dev/null +++ b/src/views/oa/oaCompanyUser/components/oaCompanyUserEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/oa/oaCompanyUser/components/search.vue b/src/views/oa/oaCompanyUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaCompanyUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaCompanyUser/index.vue b/src/views/oa/oaCompanyUser/index.vue new file mode 100644 index 0000000..c479379 --- /dev/null +++ b/src/views/oa/oaCompanyUser/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/oa/oaLink/components/oaLinkEdit.vue b/src/views/oa/oaLink/components/oaLinkEdit.vue new file mode 100644 index 0000000..5fa99ca --- /dev/null +++ b/src/views/oa/oaLink/components/oaLinkEdit.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/oa/oaLink/components/search.vue b/src/views/oa/oaLink/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaLink/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaLink/index.vue b/src/views/oa/oaLink/index.vue new file mode 100644 index 0000000..8c27d85 --- /dev/null +++ b/src/views/oa/oaLink/index.vue @@ -0,0 +1,287 @@ + + + + + + + diff --git a/src/views/oa/oaTask/components/oaTaskEdit.vue b/src/views/oa/oaTask/components/oaTaskEdit.vue new file mode 100644 index 0000000..103fb6c --- /dev/null +++ b/src/views/oa/oaTask/components/oaTaskEdit.vue @@ -0,0 +1,420 @@ + + + + diff --git a/src/views/oa/oaTask/components/search.vue b/src/views/oa/oaTask/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaTask/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaTask/index.vue b/src/views/oa/oaTask/index.vue new file mode 100644 index 0000000..40e2c59 --- /dev/null +++ b/src/views/oa/oaTask/index.vue @@ -0,0 +1,407 @@ + + + + + + + diff --git a/src/views/oa/oaTaskCount/components/oaTaskCountEdit.vue b/src/views/oa/oaTaskCount/components/oaTaskCountEdit.vue new file mode 100644 index 0000000..cef2345 --- /dev/null +++ b/src/views/oa/oaTaskCount/components/oaTaskCountEdit.vue @@ -0,0 +1,258 @@ + + + + diff --git a/src/views/oa/oaTaskCount/components/search.vue b/src/views/oa/oaTaskCount/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaTaskCount/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaTaskCount/index.vue b/src/views/oa/oaTaskCount/index.vue new file mode 100644 index 0000000..01789c2 --- /dev/null +++ b/src/views/oa/oaTaskCount/index.vue @@ -0,0 +1,287 @@ + + + + + + + diff --git a/src/views/oa/oaTaskRecord/components/oaTaskRecordEdit.vue b/src/views/oa/oaTaskRecord/components/oaTaskRecordEdit.vue new file mode 100644 index 0000000..5c63768 --- /dev/null +++ b/src/views/oa/oaTaskRecord/components/oaTaskRecordEdit.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/oa/oaTaskRecord/components/search.vue b/src/views/oa/oaTaskRecord/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaTaskRecord/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaTaskRecord/index.vue b/src/views/oa/oaTaskRecord/index.vue new file mode 100644 index 0000000..da05bea --- /dev/null +++ b/src/views/oa/oaTaskRecord/index.vue @@ -0,0 +1,287 @@ + + + + + + + diff --git a/src/views/oa/oaTaskUser/components/oaTaskUserEdit.vue b/src/views/oa/oaTaskUser/components/oaTaskUserEdit.vue new file mode 100644 index 0000000..b530b1d --- /dev/null +++ b/src/views/oa/oaTaskUser/components/oaTaskUserEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/oa/oaTaskUser/components/search.vue b/src/views/oa/oaTaskUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/oa/oaTaskUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/oa/oaTaskUser/index.vue b/src/views/oa/oaTaskUser/index.vue new file mode 100644 index 0000000..afcbdb3 --- /dev/null +++ b/src/views/oa/oaTaskUser/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/passport/dealer/register.vue b/src/views/passport/dealer/register.vue new file mode 100644 index 0000000..a8be2a3 --- /dev/null +++ b/src/views/passport/dealer/register.vue @@ -0,0 +1,685 @@ + + + + + diff --git a/src/views/passport/login/components/register/step/components/step-confirm.vue b/src/views/passport/login/components/register/step/components/step-confirm.vue new file mode 100644 index 0000000..45bb340 --- /dev/null +++ b/src/views/passport/login/components/register/step/components/step-confirm.vue @@ -0,0 +1,279 @@ + + + + + diff --git a/src/views/passport/login/components/register/step/components/step-edit.vue b/src/views/passport/login/components/register/step/components/step-edit.vue new file mode 100644 index 0000000..bf618a2 --- /dev/null +++ b/src/views/passport/login/components/register/step/components/step-edit.vue @@ -0,0 +1,286 @@ + + + + diff --git a/src/views/passport/login/components/register/step/components/step-success.vue b/src/views/passport/login/components/register/step/components/step-success.vue new file mode 100644 index 0000000..21f5042 --- /dev/null +++ b/src/views/passport/login/components/register/step/components/step-success.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/views/passport/login/components/register/step/index.vue b/src/views/passport/login/components/register/step/index.vue new file mode 100644 index 0000000..b682053 --- /dev/null +++ b/src/views/passport/login/components/register/step/index.vue @@ -0,0 +1,67 @@ + + + + + + + diff --git a/src/views/passport/login/components/register/step/model/index.ts b/src/views/passport/login/components/register/step/model/index.ts new file mode 100644 index 0000000..c6038ae --- /dev/null +++ b/src/views/passport/login/components/register/step/model/index.ts @@ -0,0 +1,12 @@ +export interface StepForm { + type?: number; + apply?: string; + username?: string; + password?: string; + password2?: string; + phone?: string; + code?: string; + nickname?: string; + companyName?: string; + tenantId?: number; +} diff --git a/src/views/passport/login/components/wx-work.vue b/src/views/passport/login/components/wx-work.vue new file mode 100644 index 0000000..a491d60 --- /dev/null +++ b/src/views/passport/login/components/wx-work.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/passport/login/index.vue b/src/views/passport/login/index.vue new file mode 100644 index 0000000..fded8ab --- /dev/null +++ b/src/views/passport/login/index.vue @@ -0,0 +1,783 @@ + + + + + diff --git a/src/views/passport/loginToken/index.vue b/src/views/passport/loginToken/index.vue new file mode 100644 index 0000000..9a000b8 --- /dev/null +++ b/src/views/passport/loginToken/index.vue @@ -0,0 +1,31 @@ + + + + diff --git a/src/views/passport/qrConfirm/index.vue b/src/views/passport/qrConfirm/index.vue new file mode 100644 index 0000000..4e59834 --- /dev/null +++ b/src/views/passport/qrConfirm/index.vue @@ -0,0 +1,371 @@ + + + + + diff --git a/src/views/passport/register/index.vue b/src/views/passport/register/index.vue new file mode 100644 index 0000000..6877f7a --- /dev/null +++ b/src/views/passport/register/index.vue @@ -0,0 +1,807 @@ + + + + + diff --git a/src/views/passport/register2/index.vue b/src/views/passport/register2/index.vue new file mode 100644 index 0000000..eca38fd --- /dev/null +++ b/src/views/passport/register2/index.vue @@ -0,0 +1,804 @@ + + + + + diff --git a/src/views/project/project/components/extra.vue b/src/views/project/project/components/extra.vue new file mode 100644 index 0000000..6eefd51 --- /dev/null +++ b/src/views/project/project/components/extra.vue @@ -0,0 +1,75 @@ + + + + diff --git a/src/views/project/project/components/projectEdit.vue b/src/views/project/project/components/projectEdit.vue new file mode 100644 index 0000000..ee5005d --- /dev/null +++ b/src/views/project/project/components/projectEdit.vue @@ -0,0 +1,353 @@ + + + + diff --git a/src/views/project/project/components/search.vue b/src/views/project/project/components/search.vue new file mode 100644 index 0000000..ffc2432 --- /dev/null +++ b/src/views/project/project/components/search.vue @@ -0,0 +1,154 @@ + + + + diff --git a/src/views/project/project/index.vue b/src/views/project/project/index.vue new file mode 100644 index 0000000..e8ddde0 --- /dev/null +++ b/src/views/project/project/index.vue @@ -0,0 +1,529 @@ + + + + + + + diff --git a/src/views/project/projectCollection/components/projectCollectionEdit.vue b/src/views/project/projectCollection/components/projectCollectionEdit.vue new file mode 100644 index 0000000..3453713 --- /dev/null +++ b/src/views/project/projectCollection/components/projectCollectionEdit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/project/projectCollection/components/search.vue b/src/views/project/projectCollection/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/project/projectCollection/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/project/projectCollection/index.vue b/src/views/project/projectCollection/index.vue new file mode 100644 index 0000000..49b90ea --- /dev/null +++ b/src/views/project/projectCollection/index.vue @@ -0,0 +1,227 @@ + + + + + + + diff --git a/src/views/project/projectDetail/components/app-about-edit.vue b/src/views/project/projectDetail/components/app-about-edit.vue new file mode 100644 index 0000000..d07c745 --- /dev/null +++ b/src/views/project/projectDetail/components/app-about-edit.vue @@ -0,0 +1,213 @@ + + + + diff --git a/src/views/project/projectDetail/components/app-about.vue b/src/views/project/projectDetail/components/app-about.vue new file mode 100644 index 0000000..cc05cf1 --- /dev/null +++ b/src/views/project/projectDetail/components/app-about.vue @@ -0,0 +1,49 @@ + + diff --git a/src/views/project/projectDetail/components/app-annex-edit.vue b/src/views/project/projectDetail/components/app-annex-edit.vue new file mode 100644 index 0000000..e35e936 --- /dev/null +++ b/src/views/project/projectDetail/components/app-annex-edit.vue @@ -0,0 +1,221 @@ + + + + diff --git a/src/views/project/projectDetail/components/app-annex.vue b/src/views/project/projectDetail/components/app-annex.vue new file mode 100644 index 0000000..53fc35b --- /dev/null +++ b/src/views/project/projectDetail/components/app-annex.vue @@ -0,0 +1,337 @@ + + + + + diff --git a/src/views/project/projectDetail/components/app-field-edit.vue b/src/views/project/projectDetail/components/app-field-edit.vue new file mode 100644 index 0000000..4d5baa8 --- /dev/null +++ b/src/views/project/projectDetail/components/app-field-edit.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/src/views/project/projectDetail/components/app-field-search.vue b/src/views/project/projectDetail/components/app-field-search.vue new file mode 100644 index 0000000..652b94b --- /dev/null +++ b/src/views/project/projectDetail/components/app-field-search.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/views/project/projectDetail/components/app-field.vue b/src/views/project/projectDetail/components/app-field.vue new file mode 100644 index 0000000..c85cc88 --- /dev/null +++ b/src/views/project/projectDetail/components/app-field.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/src/views/project/projectDetail/components/app-info-edit.vue b/src/views/project/projectDetail/components/app-info-edit.vue new file mode 100644 index 0000000..5731d7b --- /dev/null +++ b/src/views/project/projectDetail/components/app-info-edit.vue @@ -0,0 +1,564 @@ + + + + + diff --git a/src/views/project/projectDetail/components/app-info.vue b/src/views/project/projectDetail/components/app-info.vue new file mode 100644 index 0000000..30f27da --- /dev/null +++ b/src/views/project/projectDetail/components/app-info.vue @@ -0,0 +1,171 @@ + + diff --git a/src/views/project/projectDetail/components/app-order-edit.vue b/src/views/project/projectDetail/components/app-order-edit.vue new file mode 100644 index 0000000..4e0a3ef --- /dev/null +++ b/src/views/project/projectDetail/components/app-order-edit.vue @@ -0,0 +1,164 @@ + + + + diff --git a/src/views/project/projectDetail/components/app-order-search.vue b/src/views/project/projectDetail/components/app-order-search.vue new file mode 100644 index 0000000..e5f9361 --- /dev/null +++ b/src/views/project/projectDetail/components/app-order-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/project/projectDetail/components/app-order.vue b/src/views/project/projectDetail/components/app-order.vue new file mode 100644 index 0000000..26e1ab9 --- /dev/null +++ b/src/views/project/projectDetail/components/app-order.vue @@ -0,0 +1,271 @@ + + + + + diff --git a/src/views/project/projectDetail/components/app-photo-edit.vue b/src/views/project/projectDetail/components/app-photo-edit.vue new file mode 100644 index 0000000..cb26f47 --- /dev/null +++ b/src/views/project/projectDetail/components/app-photo-edit.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/views/project/projectDetail/components/app-photo.vue b/src/views/project/projectDetail/components/app-photo.vue new file mode 100644 index 0000000..43c1eee --- /dev/null +++ b/src/views/project/projectDetail/components/app-photo.vue @@ -0,0 +1,91 @@ + + diff --git a/src/views/project/projectDetail/components/app-profile-edit.vue b/src/views/project/projectDetail/components/app-profile-edit.vue new file mode 100644 index 0000000..a1d45c3 --- /dev/null +++ b/src/views/project/projectDetail/components/app-profile-edit.vue @@ -0,0 +1,228 @@ + + + + diff --git a/src/views/project/projectDetail/components/app-profile.vue b/src/views/project/projectDetail/components/app-profile.vue new file mode 100644 index 0000000..28d2b64 --- /dev/null +++ b/src/views/project/projectDetail/components/app-profile.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/views/project/projectDetail/components/app-secret-form.vue b/src/views/project/projectDetail/components/app-secret-form.vue new file mode 100644 index 0000000..a2a5d7b --- /dev/null +++ b/src/views/project/projectDetail/components/app-secret-form.vue @@ -0,0 +1,210 @@ + + + + + + diff --git a/src/views/project/projectDetail/components/app-task-search.vue b/src/views/project/projectDetail/components/app-task-search.vue new file mode 100644 index 0000000..75a557d --- /dev/null +++ b/src/views/project/projectDetail/components/app-task-search.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/views/project/projectDetail/components/app-task.vue b/src/views/project/projectDetail/components/app-task.vue new file mode 100644 index 0000000..178fc4a --- /dev/null +++ b/src/views/project/projectDetail/components/app-task.vue @@ -0,0 +1,299 @@ + + + + + + + diff --git a/src/views/project/projectDetail/components/app-url-edit.vue b/src/views/project/projectDetail/components/app-url-edit.vue new file mode 100644 index 0000000..ed36865 --- /dev/null +++ b/src/views/project/projectDetail/components/app-url-edit.vue @@ -0,0 +1,193 @@ + + + + diff --git a/src/views/project/projectDetail/components/app-url-search.vue b/src/views/project/projectDetail/components/app-url-search.vue new file mode 100644 index 0000000..0e8c40f --- /dev/null +++ b/src/views/project/projectDetail/components/app-url-search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/project/projectDetail/components/app-url.vue b/src/views/project/projectDetail/components/app-url.vue new file mode 100644 index 0000000..a786d63 --- /dev/null +++ b/src/views/project/projectDetail/components/app-url.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/src/views/project/projectDetail/components/app-users.vue b/src/views/project/projectDetail/components/app-users.vue new file mode 100644 index 0000000..b2a568b --- /dev/null +++ b/src/views/project/projectDetail/components/app-users.vue @@ -0,0 +1,139 @@ + + diff --git a/src/views/project/projectDetail/index.vue b/src/views/project/projectDetail/index.vue new file mode 100644 index 0000000..71f06c0 --- /dev/null +++ b/src/views/project/projectDetail/index.vue @@ -0,0 +1,381 @@ + + + + + diff --git a/src/views/project/projectField/components/projectFieldEdit.vue b/src/views/project/projectField/components/projectFieldEdit.vue new file mode 100644 index 0000000..9ee28cd --- /dev/null +++ b/src/views/project/projectField/components/projectFieldEdit.vue @@ -0,0 +1,212 @@ + + + + diff --git a/src/views/project/projectField/components/search.vue b/src/views/project/projectField/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/project/projectField/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/project/projectField/index.vue b/src/views/project/projectField/index.vue new file mode 100644 index 0000000..390fd30 --- /dev/null +++ b/src/views/project/projectField/index.vue @@ -0,0 +1,251 @@ + + + + + + + diff --git a/src/views/project/projectNoRenew/components/expirationTimeEdit.vue b/src/views/project/projectNoRenew/components/expirationTimeEdit.vue new file mode 100644 index 0000000..5ea22e2 --- /dev/null +++ b/src/views/project/projectNoRenew/components/expirationTimeEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/project/projectNoRenew/components/projectRenewEdit.vue b/src/views/project/projectNoRenew/components/projectRenewEdit.vue new file mode 100644 index 0000000..e9eca4b --- /dev/null +++ b/src/views/project/projectNoRenew/components/projectRenewEdit.vue @@ -0,0 +1,361 @@ + + + + diff --git a/src/views/project/projectNoRenew/components/search.vue b/src/views/project/projectNoRenew/components/search.vue new file mode 100644 index 0000000..f620b35 --- /dev/null +++ b/src/views/project/projectNoRenew/components/search.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/views/project/projectNoRenew/index.vue b/src/views/project/projectNoRenew/index.vue new file mode 100644 index 0000000..8b0a92b --- /dev/null +++ b/src/views/project/projectNoRenew/index.vue @@ -0,0 +1,289 @@ + + + + + + + diff --git a/src/views/project/projectRenew/components/expirationTimeEdit.vue b/src/views/project/projectRenew/components/expirationTimeEdit.vue new file mode 100644 index 0000000..5ea22e2 --- /dev/null +++ b/src/views/project/projectRenew/components/expirationTimeEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/project/projectRenew/components/projectRenewEdit.vue b/src/views/project/projectRenew/components/projectRenewEdit.vue new file mode 100644 index 0000000..0c682bc --- /dev/null +++ b/src/views/project/projectRenew/components/projectRenewEdit.vue @@ -0,0 +1,361 @@ + + + + diff --git a/src/views/project/projectRenew/components/search.vue b/src/views/project/projectRenew/components/search.vue new file mode 100644 index 0000000..e072127 --- /dev/null +++ b/src/views/project/projectRenew/components/search.vue @@ -0,0 +1,166 @@ + + + + diff --git a/src/views/project/projectRenew/index.vue b/src/views/project/projectRenew/index.vue new file mode 100644 index 0000000..0013642 --- /dev/null +++ b/src/views/project/projectRenew/index.vue @@ -0,0 +1,332 @@ + + + + + + + diff --git a/src/views/project/projectRenewLog/components/projectRenewEdit.vue b/src/views/project/projectRenewLog/components/projectRenewEdit.vue new file mode 100644 index 0000000..9078495 --- /dev/null +++ b/src/views/project/projectRenewLog/components/projectRenewEdit.vue @@ -0,0 +1,349 @@ + + + + diff --git a/src/views/project/projectRenewLog/components/search.vue b/src/views/project/projectRenewLog/components/search.vue new file mode 100644 index 0000000..43cd1ea --- /dev/null +++ b/src/views/project/projectRenewLog/components/search.vue @@ -0,0 +1,119 @@ + + + + diff --git a/src/views/project/projectRenewLog/index.vue b/src/views/project/projectRenewLog/index.vue new file mode 100644 index 0000000..abf13cd --- /dev/null +++ b/src/views/project/projectRenewLog/index.vue @@ -0,0 +1,314 @@ + + + + + + + diff --git a/src/views/project/projectUrl/components/projectUrlEdit.vue b/src/views/project/projectUrl/components/projectUrlEdit.vue new file mode 100644 index 0000000..1eb0bd2 --- /dev/null +++ b/src/views/project/projectUrl/components/projectUrlEdit.vue @@ -0,0 +1,228 @@ + + + + diff --git a/src/views/project/projectUrl/components/search.vue b/src/views/project/projectUrl/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/project/projectUrl/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/project/projectUrl/index.vue b/src/views/project/projectUrl/index.vue new file mode 100644 index 0000000..f5712f0 --- /dev/null +++ b/src/views/project/projectUrl/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/project/projectUser/components/projectUserEdit.vue b/src/views/project/projectUser/components/projectUserEdit.vue new file mode 100644 index 0000000..fb83855 --- /dev/null +++ b/src/views/project/projectUser/components/projectUserEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/project/projectUser/components/search.vue b/src/views/project/projectUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/project/projectUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/project/projectUser/index.vue b/src/views/project/projectUser/index.vue new file mode 100644 index 0000000..cc32408 --- /dev/null +++ b/src/views/project/projectUser/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/pwl/count/index.vue b/src/views/pwl/count/index.vue new file mode 100644 index 0000000..9e70feb --- /dev/null +++ b/src/views/pwl/count/index.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/views/pwl/pwlProject/components/Import.vue b/src/views/pwl/pwlProject/components/Import.vue new file mode 100644 index 0000000..e3cab8f --- /dev/null +++ b/src/views/pwl/pwlProject/components/Import.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/views/pwl/pwlProject/components/extra.vue b/src/views/pwl/pwlProject/components/extra.vue new file mode 100644 index 0000000..347875d --- /dev/null +++ b/src/views/pwl/pwlProject/components/extra.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/pwl/pwlProject/components/pwlProjectEdit.vue b/src/views/pwl/pwlProject/components/pwlProjectEdit.vue new file mode 100644 index 0000000..02bd654 --- /dev/null +++ b/src/views/pwl/pwlProject/components/pwlProjectEdit.vue @@ -0,0 +1,634 @@ + + + + diff --git a/src/views/pwl/pwlProject/components/search.vue b/src/views/pwl/pwlProject/components/search.vue new file mode 100644 index 0000000..a309315 --- /dev/null +++ b/src/views/pwl/pwlProject/components/search.vue @@ -0,0 +1,231 @@ + + + + diff --git a/src/views/pwl/pwlProject/index.vue b/src/views/pwl/pwlProject/index.vue new file mode 100644 index 0000000..cb612ab --- /dev/null +++ b/src/views/pwl/pwlProject/index.vue @@ -0,0 +1,457 @@ + + + + + + + diff --git a/src/views/pwl/pwlProjectLibrary/components/pwlProjectLibraryEdit.vue b/src/views/pwl/pwlProjectLibrary/components/pwlProjectLibraryEdit.vue new file mode 100644 index 0000000..1a65226 --- /dev/null +++ b/src/views/pwl/pwlProjectLibrary/components/pwlProjectLibraryEdit.vue @@ -0,0 +1,265 @@ + + + + diff --git a/src/views/pwl/pwlProjectLibrary/components/search.vue b/src/views/pwl/pwlProjectLibrary/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/pwl/pwlProjectLibrary/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/pwl/pwlProjectLibrary/index.vue b/src/views/pwl/pwlProjectLibrary/index.vue new file mode 100644 index 0000000..2db0348 --- /dev/null +++ b/src/views/pwl/pwlProjectLibrary/index.vue @@ -0,0 +1,293 @@ + + + + + + + diff --git a/src/views/result/fail/index.vue b/src/views/result/fail/index.vue new file mode 100644 index 0000000..5f14729 --- /dev/null +++ b/src/views/result/fail/index.vue @@ -0,0 +1,62 @@ + + + + + + + diff --git a/src/views/result/success/index.vue b/src/views/result/success/index.vue new file mode 100644 index 0000000..f34fa01 --- /dev/null +++ b/src/views/result/success/index.vue @@ -0,0 +1,34 @@ + + + + diff --git a/src/views/shop/dashboard/components/search.vue b/src/views/shop/dashboard/components/search.vue new file mode 100644 index 0000000..c893ea6 --- /dev/null +++ b/src/views/shop/dashboard/components/search.vue @@ -0,0 +1,100 @@ + + + + diff --git a/src/views/shop/dashboard/components/websiteEdit.vue b/src/views/shop/dashboard/components/websiteEdit.vue new file mode 100644 index 0000000..d68758f --- /dev/null +++ b/src/views/shop/dashboard/components/websiteEdit.vue @@ -0,0 +1,413 @@ + + + + diff --git a/src/views/shop/dashboard/index.vue b/src/views/shop/dashboard/index.vue new file mode 100644 index 0000000..658bb26 --- /dev/null +++ b/src/views/shop/dashboard/index.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/src/views/shop/shopAdmin/components/invitation-modal.vue b/src/views/shop/shopAdmin/components/invitation-modal.vue new file mode 100644 index 0000000..74c7d82 --- /dev/null +++ b/src/views/shop/shopAdmin/components/invitation-modal.vue @@ -0,0 +1,293 @@ + + + + + diff --git a/src/views/shop/shopAdmin/components/org-select.vue b/src/views/shop/shopAdmin/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/shop/shopAdmin/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/shop/shopAdmin/components/search.vue b/src/views/shop/shopAdmin/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopAdmin/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopAdmin/components/super-admin.vue b/src/views/shop/shopAdmin/components/super-admin.vue new file mode 100644 index 0000000..b856ea7 --- /dev/null +++ b/src/views/shop/shopAdmin/components/super-admin.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/views/shop/shopAdmin/components/user-edit.vue b/src/views/shop/shopAdmin/components/user-edit.vue new file mode 100644 index 0000000..7d39cea --- /dev/null +++ b/src/views/shop/shopAdmin/components/user-edit.vue @@ -0,0 +1,275 @@ + + + + diff --git a/src/views/shop/shopAdmin/components/user-import.vue b/src/views/shop/shopAdmin/components/user-import.vue new file mode 100644 index 0000000..7431d6f --- /dev/null +++ b/src/views/shop/shopAdmin/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/shop/shopAdmin/index.vue b/src/views/shop/shopAdmin/index.vue new file mode 100644 index 0000000..6bb32d3 --- /dev/null +++ b/src/views/shop/shopAdmin/index.vue @@ -0,0 +1,432 @@ + + + + + + + + diff --git a/src/views/shop/shopCoupon/components/search.vue b/src/views/shop/shopCoupon/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopCoupon/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopCoupon/components/shopCouponEdit.vue b/src/views/shop/shopCoupon/components/shopCouponEdit.vue new file mode 100644 index 0000000..afed7bc --- /dev/null +++ b/src/views/shop/shopCoupon/components/shopCouponEdit.vue @@ -0,0 +1,930 @@ + + + + + + diff --git a/src/views/shop/shopCoupon/index.vue b/src/views/shop/shopCoupon/index.vue new file mode 100644 index 0000000..73d28f6 --- /dev/null +++ b/src/views/shop/shopCoupon/index.vue @@ -0,0 +1,708 @@ + + + + + + + diff --git a/src/views/shop/shopDealerApply/components/search.vue b/src/views/shop/shopDealerApply/components/search.vue new file mode 100644 index 0000000..3a97655 --- /dev/null +++ b/src/views/shop/shopDealerApply/components/search.vue @@ -0,0 +1,219 @@ + + + + + + diff --git a/src/views/shop/shopDealerApply/components/shopDealerApplyEdit.vue b/src/views/shop/shopDealerApply/components/shopDealerApplyEdit.vue new file mode 100644 index 0000000..bad4d1f --- /dev/null +++ b/src/views/shop/shopDealerApply/components/shopDealerApplyEdit.vue @@ -0,0 +1,407 @@ + + + + + + diff --git a/src/views/shop/shopDealerApply/index.vue b/src/views/shop/shopDealerApply/index.vue new file mode 100644 index 0000000..17ebf8e --- /dev/null +++ b/src/views/shop/shopDealerApply/index.vue @@ -0,0 +1,494 @@ + + + + + + + diff --git a/src/views/shop/shopDealerCapital/components/search.vue b/src/views/shop/shopDealerCapital/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopDealerCapital/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopDealerCapital/components/shopDealerCapitalEdit.vue b/src/views/shop/shopDealerCapital/components/shopDealerCapitalEdit.vue new file mode 100644 index 0000000..6557d9c --- /dev/null +++ b/src/views/shop/shopDealerCapital/components/shopDealerCapitalEdit.vue @@ -0,0 +1,398 @@ + + + + + + diff --git a/src/views/shop/shopDealerCapital/index.vue b/src/views/shop/shopDealerCapital/index.vue new file mode 100644 index 0000000..737b624 --- /dev/null +++ b/src/views/shop/shopDealerCapital/index.vue @@ -0,0 +1,291 @@ + + + + + + + diff --git a/src/views/shop/shopDealerOrder/components/Import.vue b/src/views/shop/shopDealerOrder/components/Import.vue new file mode 100644 index 0000000..0b81392 --- /dev/null +++ b/src/views/shop/shopDealerOrder/components/Import.vue @@ -0,0 +1,79 @@ + + + + diff --git a/src/views/shop/shopDealerOrder/components/search.vue b/src/views/shop/shopDealerOrder/components/search.vue new file mode 100644 index 0000000..5bd12df --- /dev/null +++ b/src/views/shop/shopDealerOrder/components/search.vue @@ -0,0 +1,196 @@ + + + + + diff --git a/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue b/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue new file mode 100644 index 0000000..e550eca --- /dev/null +++ b/src/views/shop/shopDealerOrder/components/shopDealerOrderEdit.vue @@ -0,0 +1,458 @@ + + + + + + diff --git a/src/views/shop/shopDealerOrder/index.vue b/src/views/shop/shopDealerOrder/index.vue new file mode 100644 index 0000000..047512f --- /dev/null +++ b/src/views/shop/shopDealerOrder/index.vue @@ -0,0 +1,486 @@ + + + + + + + diff --git a/src/views/shop/shopDealerPoster/index.vue b/src/views/shop/shopDealerPoster/index.vue new file mode 100644 index 0000000..cc5ba8b --- /dev/null +++ b/src/views/shop/shopDealerPoster/index.vue @@ -0,0 +1,751 @@ + + + + + + + diff --git a/src/views/shop/shopDealerReferee/components/search.vue b/src/views/shop/shopDealerReferee/components/search.vue new file mode 100644 index 0000000..b41c7a5 --- /dev/null +++ b/src/views/shop/shopDealerReferee/components/search.vue @@ -0,0 +1,192 @@ + + + + + + diff --git a/src/views/shop/shopDealerReferee/components/shopDealerRefereeEdit.vue b/src/views/shop/shopDealerReferee/components/shopDealerRefereeEdit.vue new file mode 100644 index 0000000..381cdab --- /dev/null +++ b/src/views/shop/shopDealerReferee/components/shopDealerRefereeEdit.vue @@ -0,0 +1,185 @@ + + + + diff --git a/src/views/shop/shopDealerReferee/index.vue b/src/views/shop/shopDealerReferee/index.vue new file mode 100644 index 0000000..6548bdd --- /dev/null +++ b/src/views/shop/shopDealerReferee/index.vue @@ -0,0 +1,490 @@ + + + + + + + diff --git a/src/views/shop/shopDealerSetting/components/search.vue b/src/views/shop/shopDealerSetting/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopDealerSetting/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopDealerSetting/components/shopDealerSettingEdit.vue b/src/views/shop/shopDealerSetting/components/shopDealerSettingEdit.vue new file mode 100644 index 0000000..bec054c --- /dev/null +++ b/src/views/shop/shopDealerSetting/components/shopDealerSettingEdit.vue @@ -0,0 +1,744 @@ + + + + + + + diff --git a/src/views/shop/shopDealerSetting/index.vue b/src/views/shop/shopDealerSetting/index.vue new file mode 100644 index 0000000..7613f58 --- /dev/null +++ b/src/views/shop/shopDealerSetting/index.vue @@ -0,0 +1,403 @@ + + + + + + + diff --git a/src/views/shop/shopDealerUser/components/Import.vue b/src/views/shop/shopDealerUser/components/Import.vue new file mode 100644 index 0000000..fbf5244 --- /dev/null +++ b/src/views/shop/shopDealerUser/components/Import.vue @@ -0,0 +1,110 @@ + + + + + + diff --git a/src/views/shop/shopDealerUser/components/search.vue b/src/views/shop/shopDealerUser/components/search.vue new file mode 100644 index 0000000..19e7393 --- /dev/null +++ b/src/views/shop/shopDealerUser/components/search.vue @@ -0,0 +1,206 @@ + + + + diff --git a/src/views/shop/shopDealerUser/components/shopDealerUserEdit.vue b/src/views/shop/shopDealerUser/components/shopDealerUserEdit.vue new file mode 100644 index 0000000..e2afb6b --- /dev/null +++ b/src/views/shop/shopDealerUser/components/shopDealerUserEdit.vue @@ -0,0 +1,516 @@ + + + + + + diff --git a/src/views/shop/shopDealerUser/index.vue b/src/views/shop/shopDealerUser/index.vue new file mode 100644 index 0000000..4cb4efa --- /dev/null +++ b/src/views/shop/shopDealerUser/index.vue @@ -0,0 +1,394 @@ + + + + + + + diff --git a/src/views/shop/shopDealerWithdraw/components/search.vue b/src/views/shop/shopDealerWithdraw/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopDealerWithdraw/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopDealerWithdraw/components/shopDealerWithdrawEdit.vue b/src/views/shop/shopDealerWithdraw/components/shopDealerWithdrawEdit.vue new file mode 100644 index 0000000..72b26e0 --- /dev/null +++ b/src/views/shop/shopDealerWithdraw/components/shopDealerWithdrawEdit.vue @@ -0,0 +1,698 @@ + + + + + + diff --git a/src/views/shop/shopDealerWithdraw/index.vue b/src/views/shop/shopDealerWithdraw/index.vue new file mode 100644 index 0000000..5a485d2 --- /dev/null +++ b/src/views/shop/shopDealerWithdraw/index.vue @@ -0,0 +1,468 @@ + + + + + + + diff --git a/src/views/shop/shopExpress/components/search.vue b/src/views/shop/shopExpress/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopExpress/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopExpress/components/shopExpressEdit.vue b/src/views/shop/shopExpress/components/shopExpressEdit.vue new file mode 100644 index 0000000..035f541 --- /dev/null +++ b/src/views/shop/shopExpress/components/shopExpressEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/shop/shopExpress/index.vue b/src/views/shop/shopExpress/index.vue new file mode 100644 index 0000000..70dde1f --- /dev/null +++ b/src/views/shop/shopExpress/index.vue @@ -0,0 +1,244 @@ + + + + + + + diff --git a/src/views/shop/shopExpressTemplate/components/search.vue b/src/views/shop/shopExpressTemplate/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopExpressTemplate/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopExpressTemplate/components/shopExpressTemplateEdit.vue b/src/views/shop/shopExpressTemplate/components/shopExpressTemplateEdit.vue new file mode 100644 index 0000000..5725c87 --- /dev/null +++ b/src/views/shop/shopExpressTemplate/components/shopExpressTemplateEdit.vue @@ -0,0 +1,239 @@ + + + + diff --git a/src/views/shop/shopExpressTemplate/index.vue b/src/views/shop/shopExpressTemplate/index.vue new file mode 100644 index 0000000..0314f9e --- /dev/null +++ b/src/views/shop/shopExpressTemplate/index.vue @@ -0,0 +1,274 @@ + + + + + + + diff --git a/src/views/shop/shopExpressTemplateDetail/components/search.vue b/src/views/shop/shopExpressTemplateDetail/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopExpressTemplateDetail/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopExpressTemplateDetail/components/shopExpressTemplateDetailEdit.vue b/src/views/shop/shopExpressTemplateDetail/components/shopExpressTemplateDetailEdit.vue new file mode 100644 index 0000000..d0646fb --- /dev/null +++ b/src/views/shop/shopExpressTemplateDetail/components/shopExpressTemplateDetailEdit.vue @@ -0,0 +1,232 @@ + + + + diff --git a/src/views/shop/shopExpressTemplateDetail/index.vue b/src/views/shop/shopExpressTemplateDetail/index.vue new file mode 100644 index 0000000..66f2ef9 --- /dev/null +++ b/src/views/shop/shopExpressTemplateDetail/index.vue @@ -0,0 +1,286 @@ + + + + + + + diff --git a/src/views/shop/shopGift/components/makeCard.vue b/src/views/shop/shopGift/components/makeCard.vue new file mode 100644 index 0000000..d96256c --- /dev/null +++ b/src/views/shop/shopGift/components/makeCard.vue @@ -0,0 +1,370 @@ + + + + + + diff --git a/src/views/shop/shopGift/components/search.vue b/src/views/shop/shopGift/components/search.vue new file mode 100644 index 0000000..820601b --- /dev/null +++ b/src/views/shop/shopGift/components/search.vue @@ -0,0 +1,627 @@ + + + + diff --git a/src/views/shop/shopGift/components/shopGiftEdit.vue b/src/views/shop/shopGift/components/shopGiftEdit.vue new file mode 100644 index 0000000..81342c2 --- /dev/null +++ b/src/views/shop/shopGift/components/shopGiftEdit.vue @@ -0,0 +1,707 @@ + + + + + + diff --git a/src/views/shop/shopGift/index.vue b/src/views/shop/shopGift/index.vue new file mode 100644 index 0000000..e6a58ad --- /dev/null +++ b/src/views/shop/shopGift/index.vue @@ -0,0 +1,253 @@ + + + + + + + diff --git a/src/views/shop/shopGoods/components/extra.vue b/src/views/shop/shopGoods/components/extra.vue new file mode 100644 index 0000000..3b8e758 --- /dev/null +++ b/src/views/shop/shopGoods/components/extra.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/shop/shopGoods/components/search.vue b/src/views/shop/shopGoods/components/search.vue new file mode 100644 index 0000000..c8a508b --- /dev/null +++ b/src/views/shop/shopGoods/components/search.vue @@ -0,0 +1,158 @@ + + + + diff --git a/src/views/shop/shopGoods/components/shopGoodsEdit.vue b/src/views/shop/shopGoods/components/shopGoodsEdit.vue new file mode 100644 index 0000000..6e7b9ba --- /dev/null +++ b/src/views/shop/shopGoods/components/shopGoodsEdit.vue @@ -0,0 +1,1947 @@ + + + + diff --git a/src/views/shop/shopGoods/index.vue b/src/views/shop/shopGoods/index.vue new file mode 100644 index 0000000..fe26807 --- /dev/null +++ b/src/views/shop/shopGoods/index.vue @@ -0,0 +1,323 @@ + + + + + + + diff --git a/src/views/shop/shopGoodsCoupon/components/search.vue b/src/views/shop/shopGoodsCoupon/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopGoodsCoupon/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopGoodsCoupon/components/shopGoodsCouponEdit.vue b/src/views/shop/shopGoodsCoupon/components/shopGoodsCouponEdit.vue new file mode 100644 index 0000000..2964d92 --- /dev/null +++ b/src/views/shop/shopGoodsCoupon/components/shopGoodsCouponEdit.vue @@ -0,0 +1,193 @@ + + + + diff --git a/src/views/shop/shopGoodsCoupon/index.vue b/src/views/shop/shopGoodsCoupon/index.vue new file mode 100644 index 0000000..e2e74ab --- /dev/null +++ b/src/views/shop/shopGoodsCoupon/index.vue @@ -0,0 +1,257 @@ + + + + + + + diff --git a/src/views/shop/shopGoodsSku/components/search.vue b/src/views/shop/shopGoodsSku/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopGoodsSku/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopGoodsSku/components/shopGoodsSkuEdit.vue b/src/views/shop/shopGoodsSku/components/shopGoodsSkuEdit.vue new file mode 100644 index 0000000..3ed094b --- /dev/null +++ b/src/views/shop/shopGoodsSku/components/shopGoodsSkuEdit.vue @@ -0,0 +1,273 @@ + + + + diff --git a/src/views/shop/shopGoodsSku/index.vue b/src/views/shop/shopGoodsSku/index.vue new file mode 100644 index 0000000..1582229 --- /dev/null +++ b/src/views/shop/shopGoodsSku/index.vue @@ -0,0 +1,299 @@ + + + + + + + diff --git a/src/views/shop/shopGoodsSpec/components/search.vue b/src/views/shop/shopGoodsSpec/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopGoodsSpec/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopGoodsSpec/components/shopGoodsSpecEdit.vue b/src/views/shop/shopGoodsSpec/components/shopGoodsSpecEdit.vue new file mode 100644 index 0000000..858300a --- /dev/null +++ b/src/views/shop/shopGoodsSpec/components/shopGoodsSpecEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/shop/shopGoodsSpec/index.vue b/src/views/shop/shopGoodsSpec/index.vue new file mode 100644 index 0000000..4c56f3c --- /dev/null +++ b/src/views/shop/shopGoodsSpec/index.vue @@ -0,0 +1,236 @@ + + + + + + + diff --git a/src/views/shop/shopMerchant/components/search.vue b/src/views/shop/shopMerchant/components/search.vue new file mode 100644 index 0000000..9f23b97 --- /dev/null +++ b/src/views/shop/shopMerchant/components/search.vue @@ -0,0 +1,41 @@ + + + + diff --git a/src/views/shop/shopMerchant/components/shopMerchantEdit.vue b/src/views/shop/shopMerchant/components/shopMerchantEdit.vue new file mode 100644 index 0000000..d4c9538 --- /dev/null +++ b/src/views/shop/shopMerchant/components/shopMerchantEdit.vue @@ -0,0 +1,454 @@ + + + + diff --git a/src/views/shop/shopMerchant/index.vue b/src/views/shop/shopMerchant/index.vue new file mode 100644 index 0000000..0f55add --- /dev/null +++ b/src/views/shop/shopMerchant/index.vue @@ -0,0 +1,244 @@ + + + + + + + diff --git a/src/views/shop/shopOrder/components/deliveryModal.vue b/src/views/shop/shopOrder/components/deliveryModal.vue new file mode 100644 index 0000000..8b8a290 --- /dev/null +++ b/src/views/shop/shopOrder/components/deliveryModal.vue @@ -0,0 +1,311 @@ + + + + + + diff --git a/src/views/shop/shopOrder/components/expressSettingModal.vue b/src/views/shop/shopOrder/components/expressSettingModal.vue new file mode 100644 index 0000000..007c1ca --- /dev/null +++ b/src/views/shop/shopOrder/components/expressSettingModal.vue @@ -0,0 +1,369 @@ + + + + + + diff --git a/src/views/shop/shopOrder/components/orderInfo.vue b/src/views/shop/shopOrder/components/orderInfo.vue new file mode 100644 index 0000000..cc8f387 --- /dev/null +++ b/src/views/shop/shopOrder/components/orderInfo.vue @@ -0,0 +1,1034 @@ + + + + + + diff --git a/src/views/shop/shopOrder/components/search.vue b/src/views/shop/shopOrder/components/search.vue new file mode 100644 index 0000000..f7f76bd --- /dev/null +++ b/src/views/shop/shopOrder/components/search.vue @@ -0,0 +1,273 @@ + + + + diff --git a/src/views/shop/shopOrder/index.vue b/src/views/shop/shopOrder/index.vue new file mode 100644 index 0000000..c8d3c71 --- /dev/null +++ b/src/views/shop/shopOrder/index.vue @@ -0,0 +1,675 @@ + + + + + + + diff --git a/src/views/shop/shopOrderGoods/components/search.vue b/src/views/shop/shopOrderGoods/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopOrderGoods/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopOrderGoods/components/shopOrderGoodsEdit.vue b/src/views/shop/shopOrderGoods/components/shopOrderGoodsEdit.vue new file mode 100644 index 0000000..95a0e31 --- /dev/null +++ b/src/views/shop/shopOrderGoods/components/shopOrderGoodsEdit.vue @@ -0,0 +1,354 @@ + + + + diff --git a/src/views/shop/shopOrderGoods/index.vue b/src/views/shop/shopOrderGoods/index.vue new file mode 100644 index 0000000..86452cf --- /dev/null +++ b/src/views/shop/shopOrderGoods/index.vue @@ -0,0 +1,359 @@ + + + + + + + diff --git a/src/views/shop/shopSpec/components/search.vue b/src/views/shop/shopSpec/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopSpec/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopSpec/components/shopSpecEdit.vue b/src/views/shop/shopSpec/components/shopSpecEdit.vue new file mode 100644 index 0000000..d7e337e --- /dev/null +++ b/src/views/shop/shopSpec/components/shopSpecEdit.vue @@ -0,0 +1,223 @@ + + + + diff --git a/src/views/shop/shopSpec/index.vue b/src/views/shop/shopSpec/index.vue new file mode 100644 index 0000000..fb01ec1 --- /dev/null +++ b/src/views/shop/shopSpec/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/shop/shopSpecValue/components/search.vue b/src/views/shop/shopSpecValue/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopSpecValue/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopSpecValue/components/shopSpecValueEdit.vue b/src/views/shop/shopSpecValue/components/shopSpecValueEdit.vue new file mode 100644 index 0000000..0743500 --- /dev/null +++ b/src/views/shop/shopSpecValue/components/shopSpecValueEdit.vue @@ -0,0 +1,192 @@ + + + + diff --git a/src/views/shop/shopSpecValue/index.vue b/src/views/shop/shopSpecValue/index.vue new file mode 100644 index 0000000..f0076b6 --- /dev/null +++ b/src/views/shop/shopSpecValue/index.vue @@ -0,0 +1,239 @@ + + + + + + + diff --git a/src/views/shop/shopUser/components/org-select.vue b/src/views/shop/shopUser/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/shop/shopUser/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/shop/shopUser/components/search.vue b/src/views/shop/shopUser/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopUser/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopUser/components/user-edit.vue b/src/views/shop/shopUser/components/user-edit.vue new file mode 100644 index 0000000..27ff0f3 --- /dev/null +++ b/src/views/shop/shopUser/components/user-edit.vue @@ -0,0 +1,278 @@ + + + + diff --git a/src/views/shop/shopUser/components/user-import.vue b/src/views/shop/shopUser/components/user-import.vue new file mode 100644 index 0000000..7431d6f --- /dev/null +++ b/src/views/shop/shopUser/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/shop/shopUser/index.vue b/src/views/shop/shopUser/index.vue new file mode 100644 index 0000000..ebf619c --- /dev/null +++ b/src/views/shop/shopUser/index.vue @@ -0,0 +1,608 @@ + + + + + + + + diff --git a/src/views/shop/shopUserCoupon/components/search.vue b/src/views/shop/shopUserCoupon/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopUserCoupon/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopUserCoupon/components/shopUserCouponEdit.vue b/src/views/shop/shopUserCoupon/components/shopUserCouponEdit.vue new file mode 100644 index 0000000..3eb2bc0 --- /dev/null +++ b/src/views/shop/shopUserCoupon/components/shopUserCouponEdit.vue @@ -0,0 +1,316 @@ + + + + diff --git a/src/views/shop/shopUserCoupon/index.vue b/src/views/shop/shopUserCoupon/index.vue new file mode 100644 index 0000000..076d577 --- /dev/null +++ b/src/views/shop/shopUserCoupon/index.vue @@ -0,0 +1,334 @@ + + + + + + + diff --git a/src/views/shop/shopUserReferee/components/search.vue b/src/views/shop/shopUserReferee/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/shop/shopUserReferee/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/shopUserReferee/components/shopUserRefereeEdit.vue b/src/views/shop/shopUserReferee/components/shopUserRefereeEdit.vue new file mode 100644 index 0000000..2ce3894 --- /dev/null +++ b/src/views/shop/shopUserReferee/components/shopUserRefereeEdit.vue @@ -0,0 +1,206 @@ + + + + diff --git a/src/views/shop/shopUserReferee/index.vue b/src/views/shop/shopUserReferee/index.vue new file mode 100644 index 0000000..2087452 --- /dev/null +++ b/src/views/shop/shopUserReferee/index.vue @@ -0,0 +1,250 @@ + + + + + + + diff --git a/src/views/system/access-key/components/accesskey-edit.vue b/src/views/system/access-key/components/accesskey-edit.vue new file mode 100644 index 0000000..74cbea2 --- /dev/null +++ b/src/views/system/access-key/components/accesskey-edit.vue @@ -0,0 +1,130 @@ + + + + diff --git a/src/views/system/access-key/index.vue b/src/views/system/access-key/index.vue new file mode 100644 index 0000000..11965ac --- /dev/null +++ b/src/views/system/access-key/index.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/src/views/system/admin/components/org-select.vue b/src/views/system/admin/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/system/admin/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/admin/components/role-select.vue b/src/views/system/admin/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/system/admin/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/system/admin/components/search.vue b/src/views/system/admin/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/admin/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/admin/components/sex-select.vue b/src/views/system/admin/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/admin/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/admin/components/user-edit.vue b/src/views/system/admin/components/user-edit.vue new file mode 100644 index 0000000..4c676fa --- /dev/null +++ b/src/views/system/admin/components/user-edit.vue @@ -0,0 +1,299 @@ + + + + diff --git a/src/views/system/admin/components/user-import.vue b/src/views/system/admin/components/user-import.vue new file mode 100644 index 0000000..f5b1088 --- /dev/null +++ b/src/views/system/admin/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/system/admin/components/user-info.vue b/src/views/system/admin/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/system/admin/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/system/admin/components/user-search.vue b/src/views/system/admin/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/system/admin/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/system/admin/components/userEdit.vue b/src/views/system/admin/components/userEdit.vue new file mode 100644 index 0000000..3a59597 --- /dev/null +++ b/src/views/system/admin/components/userEdit.vue @@ -0,0 +1,274 @@ + + + + diff --git a/src/views/system/admin/details/index.vue b/src/views/system/admin/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/system/admin/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/system/admin/index.vue b/src/views/system/admin/index.vue new file mode 100644 index 0000000..cfc663d --- /dev/null +++ b/src/views/system/admin/index.vue @@ -0,0 +1,434 @@ + + + + + + + diff --git a/src/views/system/cache/components/cache-edit.vue b/src/views/system/cache/components/cache-edit.vue new file mode 100644 index 0000000..b1eb5bc --- /dev/null +++ b/src/views/system/cache/components/cache-edit.vue @@ -0,0 +1,165 @@ + + + + + + diff --git a/src/views/system/cache/components/send-sms.vue b/src/views/system/cache/components/send-sms.vue new file mode 100644 index 0000000..9807008 --- /dev/null +++ b/src/views/system/cache/components/send-sms.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/src/views/system/cache/index.vue b/src/views/system/cache/index.vue new file mode 100644 index 0000000..8de4d19 --- /dev/null +++ b/src/views/system/cache/index.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/src/views/system/chatConversation/components/chatConversationEdit.vue b/src/views/system/chatConversation/components/chatConversationEdit.vue new file mode 100644 index 0000000..0fb93fe --- /dev/null +++ b/src/views/system/chatConversation/components/chatConversationEdit.vue @@ -0,0 +1,218 @@ + + + + diff --git a/src/views/system/chatConversation/components/search.vue b/src/views/system/chatConversation/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/chatConversation/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/chatConversation/index.vue b/src/views/system/chatConversation/index.vue new file mode 100644 index 0000000..7e40e50 --- /dev/null +++ b/src/views/system/chatConversation/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/system/chatMessage/components/chatMessageEdit.vue b/src/views/system/chatMessage/components/chatMessageEdit.vue new file mode 100644 index 0000000..e1b58ff --- /dev/null +++ b/src/views/system/chatMessage/components/chatMessageEdit.vue @@ -0,0 +1,254 @@ + + + + diff --git a/src/views/system/chatMessage/components/search.vue b/src/views/system/chatMessage/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/chatMessage/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/chatMessage/index.vue b/src/views/system/chatMessage/index.vue new file mode 100644 index 0000000..8b4688d --- /dev/null +++ b/src/views/system/chatMessage/index.vue @@ -0,0 +1,287 @@ + + + + + + + diff --git a/src/views/system/demo/index.vue b/src/views/system/demo/index.vue new file mode 100644 index 0000000..6c39fa2 --- /dev/null +++ b/src/views/system/demo/index.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/src/views/system/developer/components/CodeInfo.vue b/src/views/system/developer/components/CodeInfo.vue new file mode 100644 index 0000000..dd54b2d --- /dev/null +++ b/src/views/system/developer/components/CodeInfo.vue @@ -0,0 +1,68 @@ + + diff --git a/src/views/system/developer/components/ParamInfo.vue b/src/views/system/developer/components/ParamInfo.vue new file mode 100644 index 0000000..ba6b016 --- /dev/null +++ b/src/views/system/developer/components/ParamInfo.vue @@ -0,0 +1,68 @@ + + diff --git a/src/views/system/developer/components/ServerInfo.vue b/src/views/system/developer/components/ServerInfo.vue new file mode 100644 index 0000000..aa07ea2 --- /dev/null +++ b/src/views/system/developer/components/ServerInfo.vue @@ -0,0 +1,28 @@ + + diff --git a/src/views/system/developer/components/TenantInfo.vue b/src/views/system/developer/components/TenantInfo.vue new file mode 100644 index 0000000..832e742 --- /dev/null +++ b/src/views/system/developer/components/TenantInfo.vue @@ -0,0 +1,46 @@ + + diff --git a/src/views/system/developer/index.vue b/src/views/system/developer/index.vue new file mode 100644 index 0000000..2c5e5b5 --- /dev/null +++ b/src/views/system/developer/index.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/views/system/dict/components/dict-data-edit.vue b/src/views/system/dict/components/dict-data-edit.vue new file mode 100644 index 0000000..6dcb527 --- /dev/null +++ b/src/views/system/dict/components/dict-data-edit.vue @@ -0,0 +1,176 @@ + + + + diff --git a/src/views/system/dict/components/dict-data-search.vue b/src/views/system/dict/components/dict-data-search.vue new file mode 100644 index 0000000..b43643f --- /dev/null +++ b/src/views/system/dict/components/dict-data-search.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/views/system/dict/components/dict-data.vue b/src/views/system/dict/components/dict-data.vue new file mode 100644 index 0000000..6878d2c --- /dev/null +++ b/src/views/system/dict/components/dict-data.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/src/views/system/dict/components/dict-edit.vue b/src/views/system/dict/components/dict-edit.vue new file mode 100644 index 0000000..9dd9bf0 --- /dev/null +++ b/src/views/system/dict/components/dict-edit.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue new file mode 100644 index 0000000..07ba43f --- /dev/null +++ b/src/views/system/dict/index.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/src/views/system/dict/list.vue b/src/views/system/dict/list.vue new file mode 100644 index 0000000..800b102 --- /dev/null +++ b/src/views/system/dict/list.vue @@ -0,0 +1,215 @@ + + + + + + + diff --git a/src/views/system/dictionary/components/dict-data-edit.vue b/src/views/system/dictionary/components/dict-data-edit.vue new file mode 100644 index 0000000..eda1e4b --- /dev/null +++ b/src/views/system/dictionary/components/dict-data-edit.vue @@ -0,0 +1,181 @@ + + + + diff --git a/src/views/system/dictionary/components/dict-data-search.vue b/src/views/system/dictionary/components/dict-data-search.vue new file mode 100644 index 0000000..34d24d1 --- /dev/null +++ b/src/views/system/dictionary/components/dict-data-search.vue @@ -0,0 +1,70 @@ + + + + diff --git a/src/views/system/dictionary/components/dict-data.vue b/src/views/system/dictionary/components/dict-data.vue new file mode 100644 index 0000000..e329110 --- /dev/null +++ b/src/views/system/dictionary/components/dict-data.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/src/views/system/dictionary/components/dict-edit.vue b/src/views/system/dictionary/components/dict-edit.vue new file mode 100644 index 0000000..9fa4070 --- /dev/null +++ b/src/views/system/dictionary/components/dict-edit.vue @@ -0,0 +1,160 @@ + + + + diff --git a/src/views/system/dictionary/index.vue b/src/views/system/dictionary/index.vue new file mode 100644 index 0000000..85f8183 --- /dev/null +++ b/src/views/system/dictionary/index.vue @@ -0,0 +1,203 @@ + + + + + + + diff --git a/src/views/system/dictionary/list.vue b/src/views/system/dictionary/list.vue new file mode 100644 index 0000000..8dea81f --- /dev/null +++ b/src/views/system/dictionary/list.vue @@ -0,0 +1,195 @@ + + + + + + + diff --git a/src/views/system/domain/components/domainEdit.vue b/src/views/system/domain/components/domainEdit.vue new file mode 100644 index 0000000..059f378 --- /dev/null +++ b/src/views/system/domain/components/domainEdit.vue @@ -0,0 +1,193 @@ + + + + diff --git a/src/views/system/domain/components/search.vue b/src/views/system/domain/components/search.vue new file mode 100644 index 0000000..180b9c1 --- /dev/null +++ b/src/views/system/domain/components/search.vue @@ -0,0 +1,53 @@ + + + + diff --git a/src/views/system/domain/index.vue b/src/views/system/domain/index.vue new file mode 100644 index 0000000..e1e2dc2 --- /dev/null +++ b/src/views/system/domain/index.vue @@ -0,0 +1,250 @@ + + + + + + + diff --git a/src/views/system/exception/403/index.vue b/src/views/system/exception/403/index.vue new file mode 100644 index 0000000..6b2bc27 --- /dev/null +++ b/src/views/system/exception/403/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/system/exception/404/index.vue b/src/views/system/exception/404/index.vue new file mode 100644 index 0000000..b156e83 --- /dev/null +++ b/src/views/system/exception/404/index.vue @@ -0,0 +1,70 @@ + + + + + + + diff --git a/src/views/system/exception/500/index.vue b/src/views/system/exception/500/index.vue new file mode 100644 index 0000000..ff7c853 --- /dev/null +++ b/src/views/system/exception/500/index.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/views/system/field/components/edit.vue b/src/views/system/field/components/edit.vue new file mode 100644 index 0000000..3ca157b --- /dev/null +++ b/src/views/system/field/components/edit.vue @@ -0,0 +1,237 @@ + + + + diff --git a/src/views/system/field/components/search.vue b/src/views/system/field/components/search.vue new file mode 100644 index 0000000..c72d354 --- /dev/null +++ b/src/views/system/field/components/search.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/system/field/index.vue b/src/views/system/field/index.vue new file mode 100644 index 0000000..5fa761d --- /dev/null +++ b/src/views/system/field/index.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/src/views/system/file/components/file-search.vue b/src/views/system/file/components/file-search.vue new file mode 100644 index 0000000..bd9ded8 --- /dev/null +++ b/src/views/system/file/components/file-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/file/index.vue b/src/views/system/file/index.vue new file mode 100644 index 0000000..d31c687 --- /dev/null +++ b/src/views/system/file/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/src/views/system/grade/components/grade-edit.vue b/src/views/system/grade/components/grade-edit.vue new file mode 100644 index 0000000..0901a26 --- /dev/null +++ b/src/views/system/grade/components/grade-edit.vue @@ -0,0 +1,191 @@ + + + + diff --git a/src/views/system/grade/components/search.vue b/src/views/system/grade/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/grade/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/grade/index.vue b/src/views/system/grade/index.vue new file mode 100644 index 0000000..cbb225d --- /dev/null +++ b/src/views/system/grade/index.vue @@ -0,0 +1,296 @@ + + + + + + + diff --git a/src/views/system/login-record/components/login-record-search.vue b/src/views/system/login-record/components/login-record-search.vue new file mode 100644 index 0000000..0dfc6f5 --- /dev/null +++ b/src/views/system/login-record/components/login-record-search.vue @@ -0,0 +1,115 @@ + + + + diff --git a/src/views/system/login-record/index.vue b/src/views/system/login-record/index.vue new file mode 100644 index 0000000..e2c951a --- /dev/null +++ b/src/views/system/login-record/index.vue @@ -0,0 +1,235 @@ + + + + + diff --git a/src/views/system/menu/components/Import.vue b/src/views/system/menu/components/Import.vue new file mode 100644 index 0000000..684e059 --- /dev/null +++ b/src/views/system/menu/components/Import.vue @@ -0,0 +1,79 @@ + + + + \ No newline at end of file diff --git a/src/views/system/menu/components/clone.vue b/src/views/system/menu/components/clone.vue new file mode 100644 index 0000000..7779e42 --- /dev/null +++ b/src/views/system/menu/components/clone.vue @@ -0,0 +1,216 @@ + + + + + + diff --git a/src/views/system/menu/components/delete.vue b/src/views/system/menu/components/delete.vue new file mode 100644 index 0000000..da4b611 --- /dev/null +++ b/src/views/system/menu/components/delete.vue @@ -0,0 +1,175 @@ + + + + + + diff --git a/src/views/system/menu/components/menu-edit.vue b/src/views/system/menu/components/menu-edit.vue new file mode 100644 index 0000000..a306cf4 --- /dev/null +++ b/src/views/system/menu/components/menu-edit.vue @@ -0,0 +1,474 @@ + + + + + + diff --git a/src/views/system/menu/components/menu-plug.vue b/src/views/system/menu/components/menu-plug.vue new file mode 100644 index 0000000..4fac699 --- /dev/null +++ b/src/views/system/menu/components/menu-plug.vue @@ -0,0 +1,168 @@ + + + + + + diff --git a/src/views/system/menu/components/menu-search-original.vue b/src/views/system/menu/components/menu-search-original.vue new file mode 100644 index 0000000..81afbf5 --- /dev/null +++ b/src/views/system/menu/components/menu-search-original.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/menu/components/menu-search.vue b/src/views/system/menu/components/menu-search.vue new file mode 100644 index 0000000..65721bd --- /dev/null +++ b/src/views/system/menu/components/menu-search.vue @@ -0,0 +1,174 @@ + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..b6f633a --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,392 @@ + + + + + diff --git a/src/views/system/modules/components/modules-edit.vue b/src/views/system/modules/components/modules-edit.vue new file mode 100644 index 0000000..eeeb4f5 --- /dev/null +++ b/src/views/system/modules/components/modules-edit.vue @@ -0,0 +1,171 @@ + + + + diff --git a/src/views/system/modules/components/modules-search.vue b/src/views/system/modules/components/modules-search.vue new file mode 100644 index 0000000..d505fd8 --- /dev/null +++ b/src/views/system/modules/components/modules-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/modules/index.vue b/src/views/system/modules/index.vue new file mode 100644 index 0000000..429d575 --- /dev/null +++ b/src/views/system/modules/index.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/views/system/operation-record/components/operation-record-detail.vue b/src/views/system/operation-record/components/operation-record-detail.vue new file mode 100644 index 0000000..deb5740 --- /dev/null +++ b/src/views/system/operation-record/components/operation-record-detail.vue @@ -0,0 +1,131 @@ + + + + diff --git a/src/views/system/operation-record/components/operation-record-search.vue b/src/views/system/operation-record/components/operation-record-search.vue new file mode 100644 index 0000000..d6e4309 --- /dev/null +++ b/src/views/system/operation-record/components/operation-record-search.vue @@ -0,0 +1,112 @@ + + + + diff --git a/src/views/system/operation-record/components/text-ellipsis.vue b/src/views/system/operation-record/components/text-ellipsis.vue new file mode 100644 index 0000000..05b204a --- /dev/null +++ b/src/views/system/operation-record/components/text-ellipsis.vue @@ -0,0 +1,59 @@ + + + + + + diff --git a/src/views/system/operation-record/index.vue b/src/views/system/operation-record/index.vue new file mode 100644 index 0000000..a2de40f --- /dev/null +++ b/src/views/system/operation-record/index.vue @@ -0,0 +1,273 @@ + + + + + diff --git a/src/views/system/order/components/order-edit.vue b/src/views/system/order/components/order-edit.vue new file mode 100644 index 0000000..087a794 --- /dev/null +++ b/src/views/system/order/components/order-edit.vue @@ -0,0 +1,175 @@ + + + + diff --git a/src/views/system/order/components/orderEdit.vue b/src/views/system/order/components/orderEdit.vue new file mode 100644 index 0000000..935eb3e --- /dev/null +++ b/src/views/system/order/components/orderEdit.vue @@ -0,0 +1,453 @@ + + + + diff --git a/src/views/system/order/components/search.vue b/src/views/system/order/components/search.vue new file mode 100644 index 0000000..a4b3986 --- /dev/null +++ b/src/views/system/order/components/search.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/views/system/order/index.vue b/src/views/system/order/index.vue new file mode 100644 index 0000000..efed314 --- /dev/null +++ b/src/views/system/order/index.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/views/system/organization/components/org-edit.vue b/src/views/system/organization/components/org-edit.vue new file mode 100644 index 0000000..2a4ac35 --- /dev/null +++ b/src/views/system/organization/components/org-edit.vue @@ -0,0 +1,229 @@ + + + + diff --git a/src/views/system/organization/components/org-select.vue b/src/views/system/organization/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/system/organization/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/organization/components/org-type-select.vue b/src/views/system/organization/components/org-type-select.vue new file mode 100644 index 0000000..c969d57 --- /dev/null +++ b/src/views/system/organization/components/org-type-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/organization/components/org-user-edit.vue b/src/views/system/organization/components/org-user-edit.vue new file mode 100644 index 0000000..478f648 --- /dev/null +++ b/src/views/system/organization/components/org-user-edit.vue @@ -0,0 +1,509 @@ + + + + diff --git a/src/views/system/organization/components/org-user-list.vue b/src/views/system/organization/components/org-user-list.vue new file mode 100644 index 0000000..b1d9f42 --- /dev/null +++ b/src/views/system/organization/components/org-user-list.vue @@ -0,0 +1,201 @@ + + + diff --git a/src/views/system/organization/components/org-user-search.vue b/src/views/system/organization/components/org-user-search.vue new file mode 100644 index 0000000..a378252 --- /dev/null +++ b/src/views/system/organization/components/org-user-search.vue @@ -0,0 +1,31 @@ + + + + diff --git a/src/views/system/organization/components/role-select.vue b/src/views/system/organization/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/system/organization/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/system/organization/components/sex-select.vue b/src/views/system/organization/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/organization/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/organization/index.vue b/src/views/system/organization/index.vue new file mode 100644 index 0000000..290fe6d --- /dev/null +++ b/src/views/system/organization/index.vue @@ -0,0 +1,214 @@ + + + + + + + diff --git a/src/views/system/payment/components/paymentEdit.vue b/src/views/system/payment/components/paymentEdit.vue new file mode 100644 index 0000000..7e33c5f --- /dev/null +++ b/src/views/system/payment/components/paymentEdit.vue @@ -0,0 +1,369 @@ + + + + diff --git a/src/views/system/payment/components/search.vue b/src/views/system/payment/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/payment/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/payment/index.vue b/src/views/system/payment/index.vue new file mode 100644 index 0000000..65c8362 --- /dev/null +++ b/src/views/system/payment/index.vue @@ -0,0 +1,252 @@ + + + + + + + diff --git a/src/views/system/plug/components/companyEdit.vue b/src/views/system/plug/components/companyEdit.vue new file mode 100644 index 0000000..bb5938b --- /dev/null +++ b/src/views/system/plug/components/companyEdit.vue @@ -0,0 +1,1012 @@ + + + + + diff --git a/src/views/system/plug/components/menu-edit.vue b/src/views/system/plug/components/menu-edit.vue new file mode 100644 index 0000000..5346a07 --- /dev/null +++ b/src/views/system/plug/components/menu-edit.vue @@ -0,0 +1,416 @@ + + + + + + diff --git a/src/views/system/plug/components/menu-search.vue b/src/views/system/plug/components/menu-search.vue new file mode 100644 index 0000000..81afbf5 --- /dev/null +++ b/src/views/system/plug/components/menu-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/plug/components/plug-edit.vue b/src/views/system/plug/components/plug-edit.vue new file mode 100644 index 0000000..e722b6b --- /dev/null +++ b/src/views/system/plug/components/plug-edit.vue @@ -0,0 +1,253 @@ + + + + + + diff --git a/src/views/system/plug/components/plug-search.vue b/src/views/system/plug/components/plug-search.vue new file mode 100644 index 0000000..0340488 --- /dev/null +++ b/src/views/system/plug/components/plug-search.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/system/plug/components/plug.vue b/src/views/system/plug/components/plug.vue new file mode 100644 index 0000000..cc8a49e --- /dev/null +++ b/src/views/system/plug/components/plug.vue @@ -0,0 +1,194 @@ + + diff --git a/src/views/system/plug/components/search.vue b/src/views/system/plug/components/search.vue new file mode 100644 index 0000000..4bf2e11 --- /dev/null +++ b/src/views/system/plug/components/search.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/views/system/plug/components/tenant.vue b/src/views/system/plug/components/tenant.vue new file mode 100644 index 0000000..da06a82 --- /dev/null +++ b/src/views/system/plug/components/tenant.vue @@ -0,0 +1,239 @@ + + + diff --git a/src/views/system/plug/create/components/clone.vue b/src/views/system/plug/create/components/clone.vue new file mode 100644 index 0000000..e2c30c7 --- /dev/null +++ b/src/views/system/plug/create/components/clone.vue @@ -0,0 +1,186 @@ + + + + + + diff --git a/src/views/system/plug/create/components/plug-edit.vue b/src/views/system/plug/create/components/plug-edit.vue new file mode 100644 index 0000000..0fb3559 --- /dev/null +++ b/src/views/system/plug/create/components/plug-edit.vue @@ -0,0 +1,261 @@ + + + + + + + diff --git a/src/views/system/plug/create/components/plug-search.vue b/src/views/system/plug/create/components/plug-search.vue new file mode 100644 index 0000000..a4d0cd0 --- /dev/null +++ b/src/views/system/plug/create/components/plug-search.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/views/system/plug/create/index.vue b/src/views/system/plug/create/index.vue new file mode 100644 index 0000000..c12fa1c --- /dev/null +++ b/src/views/system/plug/create/index.vue @@ -0,0 +1,296 @@ + + + + + + + diff --git a/src/views/system/plug/detail/index.vue b/src/views/system/plug/detail/index.vue new file mode 100644 index 0000000..a83845d --- /dev/null +++ b/src/views/system/plug/detail/index.vue @@ -0,0 +1,308 @@ + + + + + + + diff --git a/src/views/system/plug/index.vue b/src/views/system/plug/index.vue new file mode 100644 index 0000000..f202e07 --- /dev/null +++ b/src/views/system/plug/index.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/views/system/plug/list/index.vue b/src/views/system/plug/list/index.vue new file mode 100644 index 0000000..3a388a9 --- /dev/null +++ b/src/views/system/plug/list/index.vue @@ -0,0 +1,253 @@ + + + + + + + diff --git a/src/views/system/plug/search/index.vue b/src/views/system/plug/search/index.vue new file mode 100644 index 0000000..3a539ef --- /dev/null +++ b/src/views/system/plug/search/index.vue @@ -0,0 +1,285 @@ + + + + + + + diff --git a/src/views/system/profile/components/field.vue b/src/views/system/profile/components/field.vue new file mode 100644 index 0000000..c64d363 --- /dev/null +++ b/src/views/system/profile/components/field.vue @@ -0,0 +1,274 @@ + + + + + diff --git a/src/views/system/profile/components/sex-select.vue b/src/views/system/profile/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/profile/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/profile/components/version.vue b/src/views/system/profile/components/version.vue new file mode 100644 index 0000000..ee4a2ab --- /dev/null +++ b/src/views/system/profile/components/version.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/src/views/system/profile/index.vue b/src/views/system/profile/index.vue new file mode 100644 index 0000000..a2c7c24 --- /dev/null +++ b/src/views/system/profile/index.vue @@ -0,0 +1,449 @@ + + + + + + diff --git a/src/views/system/role/components/role-auth.vue b/src/views/system/role/components/role-auth.vue new file mode 100644 index 0000000..ae3ff0b --- /dev/null +++ b/src/views/system/role/components/role-auth.vue @@ -0,0 +1,159 @@ + + + + + + diff --git a/src/views/system/role/components/role-edit.vue b/src/views/system/role/components/role-edit.vue new file mode 100644 index 0000000..82e044f --- /dev/null +++ b/src/views/system/role/components/role-edit.vue @@ -0,0 +1,169 @@ + + + + diff --git a/src/views/system/role/components/role-search.vue b/src/views/system/role/components/role-search.vue new file mode 100644 index 0000000..2169dca --- /dev/null +++ b/src/views/system/role/components/role-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 0000000..11d6caa --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,209 @@ + + + + + diff --git a/src/views/system/setting/components/basic.vue b/src/views/system/setting/components/basic.vue new file mode 100644 index 0000000..2271bc2 --- /dev/null +++ b/src/views/system/setting/components/basic.vue @@ -0,0 +1,316 @@ + + + diff --git a/src/views/system/setting/components/clear.vue b/src/views/system/setting/components/clear.vue new file mode 100644 index 0000000..30e78f1 --- /dev/null +++ b/src/views/system/setting/components/clear.vue @@ -0,0 +1,137 @@ + + + diff --git a/src/views/system/setting/components/developer.vue b/src/views/system/setting/components/developer.vue new file mode 100644 index 0000000..4dc4887 --- /dev/null +++ b/src/views/system/setting/components/developer.vue @@ -0,0 +1,202 @@ + + + diff --git a/src/views/system/setting/components/mp-weixin.vue b/src/views/system/setting/components/mp-weixin.vue new file mode 100644 index 0000000..4e3c9a7 --- /dev/null +++ b/src/views/system/setting/components/mp-weixin.vue @@ -0,0 +1,217 @@ + + + + + diff --git a/src/views/system/setting/components/payment.vue b/src/views/system/setting/components/payment.vue new file mode 100644 index 0000000..1f7a2b1 --- /dev/null +++ b/src/views/system/setting/components/payment.vue @@ -0,0 +1,526 @@ + + + + + diff --git a/src/views/system/setting/components/printer.vue b/src/views/system/setting/components/printer.vue new file mode 100644 index 0000000..aee9642 --- /dev/null +++ b/src/views/system/setting/components/printer.vue @@ -0,0 +1,214 @@ + + + diff --git a/src/views/system/setting/components/privacy.vue b/src/views/system/setting/components/privacy.vue new file mode 100644 index 0000000..a3cd93d --- /dev/null +++ b/src/views/system/setting/components/privacy.vue @@ -0,0 +1,102 @@ + + + diff --git a/src/views/system/setting/components/register.vue b/src/views/system/setting/components/register.vue new file mode 100644 index 0000000..96f0b05 --- /dev/null +++ b/src/views/system/setting/components/register.vue @@ -0,0 +1,236 @@ + + + diff --git a/src/views/system/setting/components/role-select.vue b/src/views/system/setting/components/role-select.vue new file mode 100644 index 0000000..61d43dd --- /dev/null +++ b/src/views/system/setting/components/role-select.vue @@ -0,0 +1,64 @@ + + + + diff --git a/src/views/system/setting/components/sms.vue b/src/views/system/setting/components/sms.vue new file mode 100644 index 0000000..b9b8723 --- /dev/null +++ b/src/views/system/setting/components/sms.vue @@ -0,0 +1,246 @@ + + + diff --git a/src/views/system/setting/components/upload.vue b/src/views/system/setting/components/upload.vue new file mode 100644 index 0000000..b578b19 --- /dev/null +++ b/src/views/system/setting/components/upload.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/src/views/system/setting/components/website.vue b/src/views/system/setting/components/website.vue new file mode 100644 index 0000000..7f51719 --- /dev/null +++ b/src/views/system/setting/components/website.vue @@ -0,0 +1,187 @@ + + + diff --git a/src/views/system/setting/components/wx-official.vue b/src/views/system/setting/components/wx-official.vue new file mode 100644 index 0000000..c14335f --- /dev/null +++ b/src/views/system/setting/components/wx-official.vue @@ -0,0 +1,176 @@ + + + diff --git a/src/views/system/setting/components/wx-work.vue b/src/views/system/setting/components/wx-work.vue new file mode 100644 index 0000000..b905607 --- /dev/null +++ b/src/views/system/setting/components/wx-work.vue @@ -0,0 +1,210 @@ + + + diff --git a/src/views/system/setting/index.vue b/src/views/system/setting/index.vue new file mode 100644 index 0000000..a5201bd --- /dev/null +++ b/src/views/system/setting/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/src/views/system/user-group/components/category-select.vue b/src/views/system/user-group/components/category-select.vue new file mode 100644 index 0000000..e87cc38 --- /dev/null +++ b/src/views/system/user-group/components/category-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/user-group/components/group-edit.vue b/src/views/system/user-group/components/group-edit.vue new file mode 100644 index 0000000..4bd763e --- /dev/null +++ b/src/views/system/user-group/components/group-edit.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/src/views/system/user-group/components/search.vue b/src/views/system/user-group/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/user-group/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/user-group/index.vue b/src/views/system/user-group/index.vue new file mode 100644 index 0000000..f18ce18 --- /dev/null +++ b/src/views/system/user-group/index.vue @@ -0,0 +1,267 @@ + + + + + + + diff --git a/src/views/system/user-info/index.vue b/src/views/system/user-info/index.vue new file mode 100644 index 0000000..3f10214 --- /dev/null +++ b/src/views/system/user-info/index.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/views/system/user/components/Extra.vue b/src/views/system/user/components/Extra.vue new file mode 100644 index 0000000..77aec38 --- /dev/null +++ b/src/views/system/user/components/Extra.vue @@ -0,0 +1,55 @@ + + + + diff --git a/src/views/system/user/components/org-select.vue b/src/views/system/user/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/system/user/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/system/user/components/role-select.vue b/src/views/system/user/components/role-select.vue new file mode 100644 index 0000000..60fc5ad --- /dev/null +++ b/src/views/system/user/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/system/user/components/search.vue b/src/views/system/user/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/user/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/user/components/sex-select.vue b/src/views/system/user/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/system/user/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/system/user/components/user-edit.vue b/src/views/system/user/components/user-edit.vue new file mode 100644 index 0000000..bf34412 --- /dev/null +++ b/src/views/system/user/components/user-edit.vue @@ -0,0 +1,363 @@ + + + + diff --git a/src/views/system/user/components/user-import.vue b/src/views/system/user/components/user-import.vue new file mode 100644 index 0000000..f5b1088 --- /dev/null +++ b/src/views/system/user/components/user-import.vue @@ -0,0 +1,88 @@ + + + + diff --git a/src/views/system/user/components/user-info.vue b/src/views/system/user/components/user-info.vue new file mode 100644 index 0000000..a737d2f --- /dev/null +++ b/src/views/system/user/components/user-info.vue @@ -0,0 +1,143 @@ + + + + diff --git a/src/views/system/user/components/user-search.vue b/src/views/system/user/components/user-search.vue new file mode 100644 index 0000000..b68abad --- /dev/null +++ b/src/views/system/user/components/user-search.vue @@ -0,0 +1,111 @@ + + + + diff --git a/src/views/system/user/components/userEdit.vue b/src/views/system/user/components/userEdit.vue new file mode 100644 index 0000000..3a59597 --- /dev/null +++ b/src/views/system/user/components/userEdit.vue @@ -0,0 +1,274 @@ + + + + diff --git a/src/views/system/user/details/index.vue b/src/views/system/user/details/index.vue new file mode 100644 index 0000000..9e535df --- /dev/null +++ b/src/views/system/user/details/index.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue new file mode 100644 index 0000000..7eab860 --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,681 @@ + + + + + + + diff --git a/src/views/system/userOauth/components/search.vue b/src/views/system/userOauth/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/userOauth/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/userOauth/components/userOauthEdit.vue b/src/views/system/userOauth/components/userOauthEdit.vue new file mode 100644 index 0000000..0907ff8 --- /dev/null +++ b/src/views/system/userOauth/components/userOauthEdit.vue @@ -0,0 +1,209 @@ + + + + diff --git a/src/views/system/userOauth/index.vue b/src/views/system/userOauth/index.vue new file mode 100644 index 0000000..588caab --- /dev/null +++ b/src/views/system/userOauth/index.vue @@ -0,0 +1,223 @@ + + + + + + + diff --git a/src/views/system/userVerify/components/search.vue b/src/views/system/userVerify/components/search.vue new file mode 100644 index 0000000..4194d41 --- /dev/null +++ b/src/views/system/userVerify/components/search.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/system/userVerify/components/userVerifyEdit.vue b/src/views/system/userVerify/components/userVerifyEdit.vue new file mode 100644 index 0000000..be52123 --- /dev/null +++ b/src/views/system/userVerify/components/userVerifyEdit.vue @@ -0,0 +1,300 @@ + + + + diff --git a/src/views/system/userVerify/index.vue b/src/views/system/userVerify/index.vue new file mode 100644 index 0000000..a6e94a3 --- /dev/null +++ b/src/views/system/userVerify/index.vue @@ -0,0 +1,273 @@ + + + + + + + diff --git a/src/views/system/userVerify2/components/search.vue b/src/views/system/userVerify2/components/search.vue new file mode 100644 index 0000000..869cea1 --- /dev/null +++ b/src/views/system/userVerify2/components/search.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/system/userVerify2/components/userVerifyEdit.vue b/src/views/system/userVerify2/components/userVerifyEdit.vue new file mode 100644 index 0000000..c690f5f --- /dev/null +++ b/src/views/system/userVerify2/components/userVerifyEdit.vue @@ -0,0 +1,376 @@ + + + + diff --git a/src/views/system/userVerify2/index.vue b/src/views/system/userVerify2/index.vue new file mode 100644 index 0000000..0ac72f6 --- /dev/null +++ b/src/views/system/userVerify2/index.vue @@ -0,0 +1,273 @@ + + + + + + + diff --git a/src/views/system/version/components/version-edit.vue b/src/views/system/version/components/version-edit.vue new file mode 100644 index 0000000..102a816 --- /dev/null +++ b/src/views/system/version/components/version-edit.vue @@ -0,0 +1,266 @@ + + + + diff --git a/src/views/system/version/index.vue b/src/views/system/version/index.vue new file mode 100644 index 0000000..880916e --- /dev/null +++ b/src/views/system/version/index.vue @@ -0,0 +1,212 @@ + + + + + + diff --git a/src/views/system/white-domain/components/search.vue b/src/views/system/white-domain/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/system/white-domain/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/system/white-domain/components/white-domain-edit.vue b/src/views/system/white-domain/components/white-domain-edit.vue new file mode 100644 index 0000000..3ee684f --- /dev/null +++ b/src/views/system/white-domain/components/white-domain-edit.vue @@ -0,0 +1,156 @@ + + + + diff --git a/src/views/system/white-domain/index.vue b/src/views/system/white-domain/index.vue new file mode 100644 index 0000000..97e7911 --- /dev/null +++ b/src/views/system/white-domain/index.vue @@ -0,0 +1,203 @@ + + + + diff --git a/src/views/user/chat-conversation/components/chatConversationEdit.vue b/src/views/user/chat-conversation/components/chatConversationEdit.vue new file mode 100644 index 0000000..b89b169 --- /dev/null +++ b/src/views/user/chat-conversation/components/chatConversationEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/user/chat-conversation/components/search.vue b/src/views/user/chat-conversation/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/user/chat-conversation/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/user/chat-conversation/index.vue b/src/views/user/chat-conversation/index.vue new file mode 100644 index 0000000..7e40e50 --- /dev/null +++ b/src/views/user/chat-conversation/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/user/chat-message/components/chatMessageEdit.vue b/src/views/user/chat-message/components/chatMessageEdit.vue new file mode 100644 index 0000000..a98c974 --- /dev/null +++ b/src/views/user/chat-message/components/chatMessageEdit.vue @@ -0,0 +1,299 @@ + + + + + + diff --git a/src/views/user/chat-message/components/search.vue b/src/views/user/chat-message/components/search.vue new file mode 100644 index 0000000..96c8b18 --- /dev/null +++ b/src/views/user/chat-message/components/search.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/user/chat-message/index.vue b/src/views/user/chat-message/index.vue new file mode 100644 index 0000000..ae1a552 --- /dev/null +++ b/src/views/user/chat-message/index.vue @@ -0,0 +1,243 @@ + + + + + + + diff --git a/src/views/user/profile/components/sex-select.vue b/src/views/user/profile/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/user/profile/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/user/profile/index.vue b/src/views/user/profile/index.vue new file mode 100644 index 0000000..b17ff2f --- /dev/null +++ b/src/views/user/profile/index.vue @@ -0,0 +1,454 @@ + + + + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..94915ea --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,11 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'], + theme: { + extend: {} + }, + plugins: [], + corePlugins: { + preflight: false + } +}; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..dd32d4b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,37 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "forceConsistentCasingInFileNames": true, + "allowSyntheticDefaultImports": true, + "strictFunctionTypes": false, + "jsx": "preserve", + "baseUrl": "./", + "allowJs": true, + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "experimentalDecorators": true, + "lib": ["esnext", "dom"], + "types": ["vite/client"], + "typeRoots": ["./node_modules/@types/"], + "noImplicitAny": false, + "skipLibCheck": true, + "paths": { + "@/*": ["src/*"] + } + }, + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue", + "components.d.ts", + "vite.config.ts" + ], + "exclude": ["node_modules", "dist", "**/*.js"] +} diff --git a/version.json b/version.json new file mode 100644 index 0000000..e0faa51 --- /dev/null +++ b/version.json @@ -0,0 +1,3 @@ +{ + "version": "3.0.16" +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..029a98b --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,229 @@ +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import ViteCompression from 'vite-plugin-compression'; +import ViteComponents from 'unplugin-vue-components/vite'; +import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'; +import { EleAdminResolver } from 'ele-admin-pro/lib/utils/resolvers'; +import { DynamicAntdLess } from 'ele-admin-pro/lib/utils/dynamic-theme'; +import { resolve } from 'path'; +import { visualizer } from 'rollup-plugin-visualizer'; +import { splitVendorChunkPlugin } from 'vite'; + +// 简化的智能端口管理(避免构建时模块解析问题) +function getSmartPort() { + try { + // 从环境变量获取基础配置 + const basePort = parseInt(process.env.VITE_BASE_PORT || '3000'); + const tenantId = process.env.VITE_TENANT_ID || '10411'; + const environment = process.env.NODE_ENV || 'development'; + + // 简化的端口计算 + let recommendedPort = basePort; + + if (environment === 'development') { + // 开发环境:基础端口 + 租户偏移 + const tenantOffset = (parseInt(tenantId) % 1000) * 10; + recommendedPort = basePort + tenantOffset; + } else if (environment === 'test') { + recommendedPort = basePort + 1000; + } else if (environment === 'production') { + recommendedPort = 8080; // 生产环境使用标准端口 + } + + console.log('🎯 智能端口计算:', { + environment, + tenantId, + basePort, + recommendedPort + }); + + return recommendedPort; + } catch (error) { + console.warn('⚠️ 端口计算失败,使用默认端口 3000:', error); + return 3000; + } +} + +export default defineConfig(({ command }) => { + const isBuild = command === 'build'; + + // 智能端口配置(仅在开发模式下) + const smartPort = !isBuild ? getSmartPort() : undefined; + + return { + // 在这里增加 base 写子路径 + base: '/', + resolve: { + alias: { + '@/': resolve('src') + '/', + 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js' + } + }, + // 智能服务器配置 + server: { + port: smartPort || 3000, + host: '0.0.0.0', // 允许外部访问 + open: true, // 自动打开浏览器 + cors: true, // 启用 CORS + // 代理配置 + proxy: { + '/api': { + target: process.env.VITE_API_URL || 'http://192.168.222.129:8000', + changeOrigin: true, + secure: false, + configure: (proxy, _options) => { + proxy.on('error', (err, _req, _res) => { + console.log('proxy error', err); + }); + proxy.on('proxyReq', (proxyReq, req, _res) => { + console.log('Sending Request to the Target:', req.method, req.url); + }); + proxy.on('proxyRes', (proxyRes, req, _res) => { + console.log('Received Response from the Target:', proxyRes.statusCode, req.url); + }); + }, + } + }, + // 端口冲突时的处理 + strictPort: false, // 允许自动选择其他端口 + }, + // 预览服务器配置(用于生产构建预览) + preview: { + port: smartPort ? smartPort + 1000 : 4173, + host: '0.0.0.0', + open: true, + cors: true, + strictPort: false, + }, + plugins: [ + vue({ + script: { + defineModel: true, + propsDestructure: true + } + }), + // 组件按需引入 + ViteComponents({ + dts: false, + resolvers: [ + AntDesignVueResolver({ + importStyle: isBuild ? 'less' : false + }), + EleAdminResolver({ + importStyle: isBuild ? 'less' : false + }) + ], + directoryAsNamespace: true + }), + // 代码分割 + splitVendorChunkPlugin(), + // gzip 压缩 + ViteCompression({ + disable: !isBuild, + threshold: 10240, + algorithm: 'gzip', + ext: '.gz' + }), + // brotli 压缩 + ViteCompression({ + disable: !isBuild, + threshold: 10240, + algorithm: 'brotliCompress', + ext: '.br' + }), + // 打包分析 + isBuild && visualizer({ + filename: 'dist/stats.html', + open: false, + gzipSize: true, + brotliSize: true + }) + ].filter(Boolean), + css: { + preprocessorOptions: { + less: { + javascriptEnabled: true, + plugins: [new DynamicAntdLess()], + modifyVars: { + // 组件样式开发环境全局引入生产环境按需引入 + 'style-entry-file': isBuild ? 'as-needed' : 'global-import' + } + } + } + }, + optimizeDeps: { + include: [ + 'sortablejs', + 'vuedraggable', + 'echarts/core', + 'echarts/charts', + 'echarts/renderers', + 'echarts/components', + 'vue-echarts', + 'echarts-wordcloud', + 'xlsx', + 'lodash-es', + 'dayjs', + 'crypto-js', + 'js-md5', + 'qrcode', + 'nprogress' + ], + exclude: ['@iconify/json'] + }, + build: { + target: 'es2015', + cssCodeSplit: true, + chunkSizeWarningLimit: 1000, + rollupOptions: { + output: { + // 手动分包 + manualChunks: { + // Vue 生态 + 'vue-vendor': ['vue', 'vue-router', 'pinia'], + // UI 组件库 + 'ui-vendor': ['ant-design-vue', 'ele-admin-pro'], + // 工具库 + 'utils-vendor': ['lodash-es', 'dayjs', 'crypto-js', 'js-md5'], + // 图表库 + 'charts-vendor': ['echarts', 'vue-echarts', 'echarts-wordcloud'], + // 编辑器 + 'editor-vendor': ['tinymce', 'bytemd', 'md-editor-v3'], + // 文件处理 + 'file-vendor': ['xlsx', 'exceljs', 'file-saver', 'ali-oss'] + }, + // 文件命名 + chunkFileNames: (chunkInfo) => { + const facadeModuleId = chunkInfo.facadeModuleId + ? chunkInfo.facadeModuleId.split('/').pop().replace(/\.\w+$/, '') + : 'chunk'; + return `js/${facadeModuleId}-[hash].js`; + }, + assetFileNames: (assetInfo) => { + const info = assetInfo.name.split('.'); + const ext = info[info.length - 1]; + if (/\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/i.test(assetInfo.name)) { + return `media/[name]-[hash].${ext}`; + } + if (/\.(png|jpe?g|gif|svg)(\?.*)?$/.test(assetInfo.name)) { + return `images/[name]-[hash].${ext}`; + } + if (/\.(woff2?|eot|ttf|otf)(\?.*)?$/i.test(assetInfo.name)) { + return `fonts/[name]-[hash].${ext}`; + } + return `assets/[name]-[hash].${ext}`; + } + } + }, + // 压缩配置 + minify: 'terser', + terserOptions: { + compress: { + drop_console: true, + drop_debugger: true, + pure_funcs: ['console.log'] + } + } + } + }; +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..fbc3b32 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,6512 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@amap/amap-jsapi-loader@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@amap/amap-jsapi-loader/-/amap-jsapi-loader-1.0.1.tgz#9ec4b4d5d2467eac451f6c852e35db69e9f9f0c0" + integrity sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw== + +"@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/icons-svg@^4.2.1": + version "4.4.2" + resolved "https://registry.npmjs.org/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz#ed2be7fb4d82ac7e1d45a54a5b06d6cecf8be6f6" + integrity sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA== + +"@ant-design/icons-vue@^6.1.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@ant-design/icons-vue/-/icons-vue-6.1.0.tgz#f9324fdc0eb4cea943cf626d2bf3db9a4ff4c074" + integrity sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + +"@antfu/utils@^0.7.2": + version "0.7.10" + resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.10.tgz#ae829f170158e297a9b6a28f161a8e487d00814d" + integrity sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww== + +"@antv/component@^2.1.3": + version "2.1.5" + resolved "https://registry.npmjs.org/@antv/component/-/component-2.1.5.tgz#dd6846163e86424706d2e516964be84965211da5" + integrity sha512-+Pqu6CLkGTvYZw+UQK03B/yiR0h2Zu65tyUGUQkNuPv49Zwe4WqDZqqu94bqT1F07OAAVjeXLCTvhBb954DLXQ== + dependencies: + "@antv/g" "^6.1.11" + "@antv/scale" "^0.4.16" + "@antv/util" "^3.3.10" + svg-path-parser "^1.1.0" + +"@antv/coord@^0.4.7": + version "0.4.7" + resolved "https://registry.npmjs.org/@antv/coord/-/coord-0.4.7.tgz#3ef6c6e3f9ca0f024b90888549946061f35df77a" + integrity sha512-UTbrMLhwJUkKzqJx5KFnSRpU3BqrdLORJbwUbHK2zHSCT3q3bjcFA//ZYLVfIlwqFDXp/hzfMyRtp0c77A9ZVA== + dependencies: + "@antv/scale" "^0.4.12" + "@antv/util" "^2.0.13" + gl-matrix "^3.4.3" + +"@antv/event-emitter@^0.1.3": + version "0.1.3" + resolved "https://registry.npmjs.org/@antv/event-emitter/-/event-emitter-0.1.3.tgz#3e06323b9dcd55a3241ddc7c5458cfabd2095164" + integrity sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg== + +"@antv/expr@^1.0.2": + version "1.0.2" + resolved "https://registry.npmjs.org/@antv/expr/-/expr-1.0.2.tgz#a75fa0a0f132fe47bedf6c8b93a847997ffe53ff" + integrity sha512-vrfdmPHkTuiS5voVutKl2l06w1ihBh9A8SFdQPEE+2KMVpkymzGOF1eWpfkbGZ7tiFE15GodVdhhHomD/hdIwg== + +"@antv/g-camera-api@2.0.41": + version "2.0.41" + resolved "https://registry.npmjs.org/@antv/g-camera-api/-/g-camera-api-2.0.41.tgz#7c3efaf92f1fdea25913084adfed493cda64f0be" + integrity sha512-dF52/wpzHDKi7ZzPlaHurEjWrF9aBKL2udDwQkEeVtfkJ0DHaavr3BAvhuGhtHoecRYQJvpzP1OkGNDLQJQQlw== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-canvas@^2.0.43": + version "2.0.48" + resolved "https://registry.npmjs.org/@antv/g-canvas/-/g-canvas-2.0.48.tgz#7c2e90f644ab3c7390ec271e718c75d8ed6f5e3c" + integrity sha512-P98cTLRbKbCAcUVgHqMjKcvOany6nR7wvt+g+sazIfKSMUCWgjLTOjlLezux2up3At29mt80StaV2AR3d61YQA== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/g-plugin-canvas-path-generator" "2.1.22" + "@antv/g-plugin-canvas-picker" "2.1.27" + "@antv/g-plugin-canvas-renderer" "2.3.3" + "@antv/g-plugin-dom-interaction" "2.1.27" + "@antv/g-plugin-html-renderer" "2.1.27" + "@antv/g-plugin-image-loader" "2.1.26" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + tslib "^2.5.3" + +"@antv/g-dom-mutation-observer-api@2.0.38": + version "2.0.38" + resolved "https://registry.npmjs.org/@antv/g-dom-mutation-observer-api/-/g-dom-mutation-observer-api-2.0.38.tgz#46cab75ca319625e72d48bdd56a145326346afdd" + integrity sha512-xzgbt8GUOiToBeDVv+jmGkDE+HtI9tD6uO8TirJbCya88DKcY/jurQALq0NdWKgMJLn7WPiUKyDwHWimwQcBJw== + dependencies: + "@antv/g-lite" "2.3.2" + "@babel/runtime" "^7.25.6" + +"@antv/g-lite@2.3.2": + version "2.3.2" + resolved "https://registry.npmjs.org/@antv/g-lite/-/g-lite-2.3.2.tgz#48365e2963d6272dcc4041e7c788a4e6d3f170a4" + integrity sha512-fkIxRoqLOGsNPwsp26bPp58cPWuX3E4wQ9cfkB/DHy5LtLrPpvOwHWB3+MBPgZwzk8jTTjchiXa756ZFOAWyQQ== + dependencies: + "@antv/g-math" "3.0.1" + "@antv/util" "^3.3.5" + "@antv/vendor" "^1.0.3" + "@babel/runtime" "^7.25.6" + eventemitter3 "^5.0.1" + gl-matrix "^3.4.3" + rbush "^3.0.1" + tslib "^2.5.3" + +"@antv/g-math@3.0.1": + version "3.0.1" + resolved "https://registry.npmjs.org/@antv/g-math/-/g-math-3.0.1.tgz#8c95b96c04a656345f8bfff9d100fa0b5708a2f0" + integrity sha512-FvkDBNRpj+HsLINunrL2PW0OlG368MlpHuihbxleuajGim5kra8tgISwCLmAf8Yz2b1CgZ9PvpohqiLzHS7HLg== + dependencies: + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-plugin-canvas-path-generator@2.1.22": + version "2.1.22" + resolved "https://registry.npmjs.org/@antv/g-plugin-canvas-path-generator/-/g-plugin-canvas-path-generator-2.1.22.tgz#8e6f0e56884f1c1dd182f84dd9814faa33612925" + integrity sha512-Z0IawzTGgTppa9IpkNNKsqgoU89oOjUsiU8GZZlkDkUggQTHP0wOxTeLAb43YgClx3aTI3bRs44uMQutNdSVxw== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/g-math" "3.0.1" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + tslib "^2.5.3" + +"@antv/g-plugin-canvas-picker@2.1.27": + version "2.1.27" + resolved "https://registry.npmjs.org/@antv/g-plugin-canvas-picker/-/g-plugin-canvas-picker-2.1.27.tgz#8d15efd539cf844d02011e41d78eb731d81f0962" + integrity sha512-DHQ0YLYNXAm6O63pW6nKs/R0fuqlUYfehNs/EtzrmqyUkKASd/Vhs4HLNeHTMUdBMgg41T+x5qay0GGttK4Xdw== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/g-math" "3.0.1" + "@antv/g-plugin-canvas-path-generator" "2.1.22" + "@antv/g-plugin-canvas-renderer" "2.3.3" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-plugin-canvas-renderer@2.3.3": + version "2.3.3" + resolved "https://registry.npmjs.org/@antv/g-plugin-canvas-renderer/-/g-plugin-canvas-renderer-2.3.3.tgz#008b309073bb7da8a083c65f81a83bad17bc424c" + integrity sha512-d6JkZy1YmLnvI9wsbO8QVpBz7z7tl6JRQkF5hx9XLDtf2fD4n83KINeMq13skiNwaiudS771WWiBtfzUHB73pQ== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/g-math" "3.0.1" + "@antv/g-plugin-canvas-path-generator" "2.1.22" + "@antv/g-plugin-image-loader" "2.1.26" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-plugin-dom-interaction@2.1.27": + version "2.1.27" + resolved "https://registry.npmjs.org/@antv/g-plugin-dom-interaction/-/g-plugin-dom-interaction-2.1.27.tgz#7ba49e2dd0459f421346fb2521b1972ad0e15799" + integrity sha512-hltVZZH+bj0uXmGSR+6BIwhCFYyHmDIQi3vrj/Wn1Dn6PgufvMCXfjr3DfmkQnY+FFP8ZCpg5N9MaE0BE9OddA== + dependencies: + "@antv/g-lite" "2.3.2" + "@babel/runtime" "^7.25.6" + tslib "^2.5.3" + +"@antv/g-plugin-dragndrop@^2.0.35": + version "2.0.38" + resolved "https://registry.npmjs.org/@antv/g-plugin-dragndrop/-/g-plugin-dragndrop-2.0.38.tgz#5cb4c65c33add0dcce92df7511387a0563fa6bce" + integrity sha512-yCef5ER759i0WpuOekFQ+AcDTu0N/COMbkPOG6YuswVnhQH447GUpuNm7Le+Mq26qONlXTDyjxuMHoUOWwJ7Cw== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + tslib "^2.5.3" + +"@antv/g-plugin-html-renderer@2.1.27": + version "2.1.27" + resolved "https://registry.npmjs.org/@antv/g-plugin-html-renderer/-/g-plugin-html-renderer-2.1.27.tgz#897bb923a8d903e7c1d29030a8a85268270a76cd" + integrity sha512-NnI4GxDBb71o/XZzoRdi0xI3xg7GJmthyO5xP5/MiOFmwJ/jW/QDz17vUonmzUVbCt6upikHV5GyYOaogRqdVg== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-plugin-image-loader@2.1.26": + version "2.1.26" + resolved "https://registry.npmjs.org/@antv/g-plugin-image-loader/-/g-plugin-image-loader-2.1.26.tgz#2684485efab950269344d751ac56eba891e43d87" + integrity sha512-AElV0QOX2LAhB3jr9XtvkynntuKhcaU5n7avu5ynM5VoAtMaJRANhCyefA2G3myeJxWcHk4nWDX6u4YMaZnnvw== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-web-animations-api@2.1.28": + version "2.1.28" + resolved "https://registry.npmjs.org/@antv/g-web-animations-api/-/g-web-animations-api-2.1.28.tgz#fad245d3bfd0f4e7d5a215e4d42485d22035458e" + integrity sha512-V5g8bO2D1hb8fRMMi5hXL/De+1UDRzW3C5EX07oazR0q71GONASP+sVwniZdt9R1HAmJSN5dvW3SqWeU3EEstQ== + dependencies: + "@antv/g-lite" "2.3.2" + "@antv/util" "^3.3.5" + "@babel/runtime" "^7.25.6" + tslib "^2.5.3" + +"@antv/g2@^5.1.22": + version "5.3.5" + resolved "https://registry.npmjs.org/@antv/g2/-/g2-5.3.5.tgz#6c012b6f8b6e4aeed599733da1376bcf3e8be48d" + integrity sha512-Q2TPfWTf2fMwe02Uqk4Uvgy/RGXpGQXfSMPHKLkwTUh6WrFImpgzU4mHhUewKVu5ppPGGfvlwIbZcHeBnNb5ug== + dependencies: + "@antv/component" "^2.1.3" + "@antv/coord" "^0.4.7" + "@antv/event-emitter" "^0.1.3" + "@antv/expr" "^1.0.2" + "@antv/g" "^6.1.24" + "@antv/g-canvas" "^2.0.43" + "@antv/g-plugin-dragndrop" "^2.0.35" + "@antv/scale" "^0.4.16" + "@antv/util" "^3.3.10" + "@antv/vendor" "^1.0.11" + flru "^1.0.2" + pdfast "^0.2.0" + +"@antv/g@^6.1.11", "@antv/g@^6.1.24": + version "6.1.28" + resolved "https://registry.npmjs.org/@antv/g/-/g-6.1.28.tgz#7ffb82777e91b7c84ff992b812c4172d1755bf32" + integrity sha512-BwavpbKGR4NEJD3BtVxfBFjCcxy5gsWoUNnBisfG1qfjhGTt7QvUYHFH46+mHJjHMIdYjuFw2T0ZYVtxBddxSg== + dependencies: + "@antv/g-camera-api" "2.0.41" + "@antv/g-dom-mutation-observer-api" "2.0.38" + "@antv/g-lite" "2.3.2" + "@antv/g-web-animations-api" "2.1.28" + "@babel/runtime" "^7.25.6" + +"@antv/scale@^0.4.12", "@antv/scale@^0.4.16": + version "0.4.16" + resolved "https://registry.npmjs.org/@antv/scale/-/scale-0.4.16.tgz#60557470668ccfe5217e482a01f05c0cbb706b62" + integrity sha512-5wg/zB5kXHxpTV5OYwJD3ja6R8yTiqIOkjOhmpEJiowkzRlbEC/BOyMvNUq5fqFIHnMCE9woO7+c3zxEQCKPjw== + dependencies: + "@antv/util" "^3.3.7" + color-string "^1.5.5" + fecha "^4.2.1" + +"@antv/util@^2.0.13": + version "2.0.17" + resolved "https://registry.npmjs.org/@antv/util/-/util-2.0.17.tgz#e8ef42aca7892815b229269f3dd10c6b3c7597a9" + integrity sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q== + dependencies: + csstype "^3.0.8" + tslib "^2.0.3" + +"@antv/util@^3.3.10", "@antv/util@^3.3.5", "@antv/util@^3.3.7": + version "3.3.11" + resolved "https://registry.npmjs.org/@antv/util/-/util-3.3.11.tgz#32c552731cd000eed9adf9ad613738da4c077640" + integrity sha512-FII08DFM4ABh2q5rPYdr0hMtKXRgeZazvXaFYCs7J7uTcWDHUhczab2qOCJLNDugoj8jFag1djb7wS9ehaRYBg== + dependencies: + fast-deep-equal "^3.1.3" + gl-matrix "^3.3.0" + tslib "^2.3.1" + +"@antv/vendor@^1.0.11", "@antv/vendor@^1.0.3": + version "1.0.11" + resolved "https://registry.npmjs.org/@antv/vendor/-/vendor-1.0.11.tgz#8a87aa964410d9fcc431a74c8757021a942252f2" + integrity sha512-LmhPEQ+aapk3barntaiIxJ5VHno/Tyab2JnfdcPzp5xONh/8VSfed4bo/9xKo5HcUAEydko38vYLfj6lJliLiw== + dependencies: + "@types/d3-array" "^3.2.1" + "@types/d3-color" "^3.1.3" + "@types/d3-dispatch" "^3.0.6" + "@types/d3-dsv" "^3.0.7" + "@types/d3-ease" "^3.0.2" + "@types/d3-fetch" "^3.0.7" + "@types/d3-force" "^3.0.10" + "@types/d3-format" "^3.0.4" + "@types/d3-geo" "^3.1.0" + "@types/d3-hierarchy" "^3.1.7" + "@types/d3-interpolate" "^3.0.4" + "@types/d3-path" "^3.1.0" + "@types/d3-quadtree" "^3.0.6" + "@types/d3-random" "^3.0.3" + "@types/d3-scale" "^4.0.9" + "@types/d3-scale-chromatic" "^3.1.0" + "@types/d3-shape" "^3.1.7" + "@types/d3-time" "^3.0.4" + "@types/d3-timer" "^3.0.2" + d3-array "^3.2.4" + d3-color "^3.1.0" + d3-dispatch "^3.0.1" + d3-dsv "^3.0.1" + d3-ease "^3.0.1" + d3-fetch "^3.0.1" + d3-force "^3.0.0" + d3-force-3d "^3.0.5" + d3-format "^3.1.0" + d3-geo "^3.1.1" + d3-geo-projection "^4.0.0" + d3-hierarchy "^3.1.2" + d3-interpolate "^3.0.1" + d3-path "^3.1.0" + d3-quadtree "^3.0.1" + d3-random "^3.0.1" + d3-regression "^1.3.10" + d3-scale "^4.0.2" + d3-scale-chromatic "^3.1.0" + d3-shape "^3.2.0" + d3-time "^3.1.0" + d3-timer "^3.0.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/parser@^7.25.3", "@babel/parser@^7.28.3": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz#d2d25b814621bca5fe9d172bc93792547e7a2a71" + integrity sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA== + dependencies: + "@babel/types" "^7.28.2" + +"@babel/runtime@^7.10.5", "@babel/runtime@^7.25.6": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz#75c5034b55ba868121668be5d5bb31cc64e6e61a" + integrity sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA== + +"@babel/standalone@^7.20.0": + version "7.28.3" + resolved "https://registry.npmjs.org/@babel/standalone/-/standalone-7.28.3.tgz#0e126deef7b88b08481c233c7ac0e94c9629d7cd" + integrity sha512-VHmaaU23OkxShTtkwXlte7/uHDK8v55J9YLMqlucjnYujeB9YgrYCHU6LREqUegTVq+/KlLgjoUu8lbeI3XQPA== + +"@babel/types@^7.28.2": + version "7.28.2" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b" + integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@bytemd/plugin-gfm@^1.17.2": + version "1.22.0" + resolved "https://registry.npmjs.org/@bytemd/plugin-gfm/-/plugin-gfm-1.22.0.tgz#a5d17f12dea851f8b01dd3234b9f0024c4050e72" + integrity sha512-ICmDwK5pCKrsoM2btNUo11R2Cpvaaz8dF/BAVrZ/w7mdY8985f7l8zIc7yX3tO5i3KYVvxBKhTCmerOS4xAcig== + dependencies: + remark-gfm "^3.0.1" + +"@bytemd/plugin-highlight-ssr@^1.20.2": + version "1.22.0" + resolved "https://registry.npmjs.org/@bytemd/plugin-highlight-ssr/-/plugin-highlight-ssr-1.22.0.tgz#f29ed79bf521a07e3639004f1c1c75695edc1059" + integrity sha512-xUbCzxkvAQj6EWoZz0lYxVivaeTzCYY8ssJpbfg+uamNAdzAeIJtD2L9r05/izylEnRzjN+tZYieFXNDLkkrHg== + dependencies: + rehype-highlight "^6.0.0" + +"@bytemd/plugin-highlight@^1.17.4": + version "1.22.0" + resolved "https://registry.npmjs.org/@bytemd/plugin-highlight/-/plugin-highlight-1.22.0.tgz#b28656a82bcf9d1a83747acdc9f8ad63ecd0921e" + integrity sha512-fMLEvsY8KQrVrtokIWeBFu8/JGGSX0V3Hf6Fhbdn9Q8vsz6u/WuI+wo78xRX7OWhUHpx99UxUcwEy/Hq4+NbpQ== + dependencies: + highlight.js "^11.7.0" + +"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.18.6", "@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1": + version "6.18.6" + resolved "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz#de26e864a1ec8192a1b241eb86addbb612964ddb" + integrity sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + +"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.8.1": + version "6.8.1" + resolved "https://registry.npmjs.org/@codemirror/commands/-/commands-6.8.1.tgz#639f5559d2f33f2582a2429c58cb0c1b925c7a30" + integrity sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw== + dependencies: + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.4.0" + "@codemirror/view" "^6.27.0" + "@lezer/common" "^1.1.0" + +"@codemirror/lang-angular@^0.1.0": + version "0.1.4" + resolved "https://registry.npmjs.org/@codemirror/lang-angular/-/lang-angular-0.1.4.tgz#5b9e940786ba201a9a42eab6db9501fa3fe2292a" + integrity sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g== + dependencies: + "@codemirror/lang-html" "^6.0.0" + "@codemirror/lang-javascript" "^6.1.2" + "@codemirror/language" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.3.3" + +"@codemirror/lang-cpp@^6.0.0": + version "6.0.3" + resolved "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.3.tgz#b175b59fcde8dd6e563b7feee8bbed81963a9491" + integrity sha512-URM26M3vunFFn9/sm6rzqrBzDgfWuDixp85uTY49wKudToc2jTHUrKIGGKs+QWND+YLofNNZpxcNGRynFJfvgA== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/cpp" "^1.0.0" + +"@codemirror/lang-css@^6.0.0", "@codemirror/lang-css@^6.2.0": + version "6.3.1" + resolved "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz#763ca41aee81bb2431be55e3cfcc7cc8e91421a3" + integrity sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.2" + "@lezer/css" "^1.1.7" + +"@codemirror/lang-go@^6.0.0": + version "6.0.1" + resolved "https://registry.npmjs.org/@codemirror/lang-go/-/lang-go-6.0.1.tgz#598222c90f56eae28d11069c612ca64d0306b057" + integrity sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.6.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/go" "^1.0.0" + +"@codemirror/lang-html@^6.0.0": + version "6.4.9" + resolved "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.9.tgz#d586f2cc9c341391ae07d1d7c545990dfa069727" + integrity sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/language" "^6.4.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + "@lezer/css" "^1.1.0" + "@lezer/html" "^1.3.0" + +"@codemirror/lang-java@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.2.tgz#601d5b3d774a4a997d11647ccb6c05702c54bd5b" + integrity sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/java" "^1.0.0" + +"@codemirror/lang-javascript@^6.0.0", "@codemirror/lang-javascript@^6.1.2": + version "6.2.4" + resolved "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.4.tgz#eef2227d1892aae762f3a0f212f72bec868a02c5" + integrity sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.6.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.17.0" + "@lezer/common" "^1.0.0" + "@lezer/javascript" "^1.0.0" + +"@codemirror/lang-json@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.2.tgz#054b160671306667e25d80385286049841836179" + integrity sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/json" "^1.0.0" + +"@codemirror/lang-less@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-less/-/lang-less-6.0.2.tgz#2e3d82a3ddb8710e6409689cd4a28c66558d0cb8" + integrity sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ== + dependencies: + "@codemirror/lang-css" "^6.2.0" + "@codemirror/language" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@codemirror/lang-liquid@^6.0.0": + version "6.3.0" + resolved "https://registry.npmjs.org/@codemirror/lang-liquid/-/lang-liquid-6.3.0.tgz#f77fdc4b6c5062ba7ce5525f9839d1e9d7a0e356" + integrity sha512-fY1YsUExcieXRTsCiwX/bQ9+PbCTA/Fumv7C7mTUZHoFkibfESnaXwpr2aKH6zZVwysEunsHHkaIpM/pl3xETQ== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/lang-html" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.3.1" + +"@codemirror/lang-markdown@^6.0.0", "@codemirror/lang-markdown@^6.3.0": + version "6.3.4" + resolved "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.3.4.tgz#c1c021ba65ba21c4e9b1f6d5add809b4c9e02c8d" + integrity sha512-fBm0BO03azXnTAsxhONDYHi/qWSI+uSEIpzKM7h/bkIc9fHnFp9y7KTMXKON0teNT97pFhc1a9DQTtWBYEZ7ug== + dependencies: + "@codemirror/autocomplete" "^6.7.1" + "@codemirror/lang-html" "^6.0.0" + "@codemirror/language" "^6.3.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.2.1" + "@lezer/markdown" "^1.0.0" + +"@codemirror/lang-php@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.2.tgz#bdc439d195c8e73513bc5b971a99a57b5c99ee55" + integrity sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA== + dependencies: + "@codemirror/lang-html" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/php" "^1.0.0" + +"@codemirror/lang-python@^6.0.0": + version "6.2.1" + resolved "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.2.1.tgz#37c9930716110156865a95c548aa0eef5552863a" + integrity sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw== + dependencies: + "@codemirror/autocomplete" "^6.3.2" + "@codemirror/language" "^6.8.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.2.1" + "@lezer/python" "^1.1.4" + +"@codemirror/lang-rust@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.2.tgz#69146e6b3e8f961ef149059aecb9e07bfd7bf3bd" + integrity sha512-EZaGjCUegtiU7kSMvOfEZpaCReowEf3yNidYu7+vfuGTm9ow4mthAparY5hisJqOHmJowVH3Upu+eJlUji6qqA== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/rust" "^1.0.0" + +"@codemirror/lang-sass@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz#38c1b0a1326cc9f5cb2741d2cd51cfbcd7abc0b2" + integrity sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q== + dependencies: + "@codemirror/lang-css" "^6.2.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.0.2" + "@lezer/sass" "^1.0.0" + +"@codemirror/lang-sql@^6.0.0": + version "6.9.1" + resolved "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.9.1.tgz#9eb9f7203afef6f0f344dbaf306c8a2c6279001d" + integrity sha512-ecSk3gm/mlINcURMcvkCZmXgdzPSq8r/yfCtTB4vgqGGIbBC2IJIAy7GqYTy5pgBEooTVmHP2GZK6Z7h63CDGg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@codemirror/lang-vue@^0.1.1": + version "0.1.3" + resolved "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz#bf79b9152cc18b4903d64c1f67e186ae045c8a97" + integrity sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug== + dependencies: + "@codemirror/lang-html" "^6.0.0" + "@codemirror/lang-javascript" "^6.1.2" + "@codemirror/language" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.3.1" + +"@codemirror/lang-wast@^6.0.0": + version "6.0.2" + resolved "https://registry.npmjs.org/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz#d2b14175e5e80d7878cbbb29e20ec90dc12d3a2b" + integrity sha512-Imi2KTpVGm7TKuUkqyJ5NRmeFWF7aMpNiwHnLQe0x9kmrxElndyH0K6H/gXtWwY6UshMRAhpENsgfpSwsgmC6Q== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@codemirror/lang-xml@^6.0.0": + version "6.1.0" + resolved "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz#e3e786e1a89fdc9520efe75c1d6d3de1c40eb91c" + integrity sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.4.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + "@lezer/common" "^1.0.0" + "@lezer/xml" "^1.0.0" + +"@codemirror/lang-yaml@^6.0.0": + version "6.1.2" + resolved "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz#c84280c68fa7af456a355d91183b5e537e9b7038" + integrity sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.2.0" + "@lezer/lr" "^1.0.0" + "@lezer/yaml" "^1.0.0" + +"@codemirror/language-data@^6.5.1": + version "6.5.1" + resolved "https://registry.npmjs.org/@codemirror/language-data/-/language-data-6.5.1.tgz#5cb9413d5225ef27a577c23781bbc0b36c58bb67" + integrity sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w== + dependencies: + "@codemirror/lang-angular" "^0.1.0" + "@codemirror/lang-cpp" "^6.0.0" + "@codemirror/lang-css" "^6.0.0" + "@codemirror/lang-go" "^6.0.0" + "@codemirror/lang-html" "^6.0.0" + "@codemirror/lang-java" "^6.0.0" + "@codemirror/lang-javascript" "^6.0.0" + "@codemirror/lang-json" "^6.0.0" + "@codemirror/lang-less" "^6.0.0" + "@codemirror/lang-liquid" "^6.0.0" + "@codemirror/lang-markdown" "^6.0.0" + "@codemirror/lang-php" "^6.0.0" + "@codemirror/lang-python" "^6.0.0" + "@codemirror/lang-rust" "^6.0.0" + "@codemirror/lang-sass" "^6.0.0" + "@codemirror/lang-sql" "^6.0.0" + "@codemirror/lang-vue" "^0.1.1" + "@codemirror/lang-wast" "^6.0.0" + "@codemirror/lang-xml" "^6.0.0" + "@codemirror/lang-yaml" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/legacy-modes" "^6.4.0" + +"@codemirror/language@^6.0.0", "@codemirror/language@^6.11.0", "@codemirror/language@^6.3.0", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0": + version "6.11.3" + resolved "https://registry.npmjs.org/@codemirror/language/-/language-6.11.3.tgz#8e6632df566a7ed13a1bd307f9837765bb1abfdd" + integrity sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.23.0" + "@lezer/common" "^1.1.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + style-mod "^4.0.0" + +"@codemirror/legacy-modes@^6.4.0": + version "6.5.1" + resolved "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.1.tgz#6bd13fac94f67a825e5420017e0d2f3c35d09342" + integrity sha512-DJYQQ00N1/KdESpZV7jg9hafof/iBNp9h7TYo1SLMk86TWl9uDsVdho2dzd81K+v4retmK6mdC7WpuOQDytQqw== + dependencies: + "@codemirror/language" "^6.0.0" + +"@codemirror/lint@^6.0.0": + version "6.8.5" + resolved "https://registry.npmjs.org/@codemirror/lint/-/lint-6.8.5.tgz#9edaa808e764e28e07665b015951934c8ec3a418" + integrity sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.35.0" + crelt "^1.0.5" + +"@codemirror/search@^6.0.0", "@codemirror/search@^6.5.11": + version "6.5.11" + resolved "https://registry.npmjs.org/@codemirror/search/-/search-6.5.11.tgz#a324ffee36e032b7f67aa31c4fb9f3e6f9f3ed63" + integrity sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + crelt "^1.0.5" + +"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0", "@codemirror/state@^6.5.2": + version "6.5.2" + resolved "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz#8eca3a64212a83367dc85475b7d78d5c9b7076c6" + integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA== + dependencies: + "@marijn/find-cluster-break" "^1.0.0" + +"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.36.8": + version "6.38.1" + resolved "https://registry.npmjs.org/@codemirror/view/-/view-6.38.1.tgz#74214434351719ec0710431363a85f7a01e80a73" + integrity sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ== + dependencies: + "@codemirror/state" "^6.5.0" + crelt "^1.0.6" + style-mod "^4.1.0" + w3c-keyname "^2.2.4" + +"@ctrl/tinycolor@^3.4.0": + version "3.6.1" + resolved "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" + integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + +"@esbuild/android-arm@0.15.18": + version "0.15.18" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80" + integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw== + +"@esbuild/linux-loong64@0.15.18": + version "0.15.18" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239" + integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ== + +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": + version "4.7.0" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + 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" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@fast-csv/format@4.3.5": + version "4.3.5" + resolved "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz#90d83d1b47b6aaf67be70d6118f84f3e12ee1ff3" + integrity sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A== + dependencies: + "@types/node" "^14.0.1" + lodash.escaperegexp "^4.1.2" + lodash.isboolean "^3.0.3" + lodash.isequal "^4.5.0" + lodash.isfunction "^3.0.9" + lodash.isnil "^4.0.0" + +"@fast-csv/parse@4.3.6": + version "4.3.6" + resolved "https://registry.npmjs.org/@fast-csv/parse/-/parse-4.3.6.tgz#ee47d0640ca0291034c7aa94039a744cfb019264" + integrity sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA== + dependencies: + "@types/node" "^14.0.1" + lodash.escaperegexp "^4.1.2" + lodash.groupby "^4.6.0" + lodash.isfunction "^3.0.9" + lodash.isnil "^4.0.0" + lodash.isundefined "^3.0.1" + lodash.uniq "^4.5.0" + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@intlify/core-base@9.14.5": + version "9.14.5" + resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.5.tgz#cfed631e98b34f4f6fe1312e6c02dd8ace180197" + integrity sha512-5ah5FqZG4pOoHjkvs8mjtv+gPKYU0zCISaYNjBNNqYiaITxW8ZtVih3GS/oTOqN8d9/mDLyrjD46GBApNxmlsA== + dependencies: + "@intlify/message-compiler" "9.14.5" + "@intlify/shared" "9.14.5" + +"@intlify/message-compiler@9.14.5": + version "9.14.5" + resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.5.tgz#03b0a358c93cb2eed95936531c8a5871fd3841b0" + integrity sha512-IHzgEu61/YIpQV5Pc3aRWScDcnFKWvQA9kigcINcCBXN8mbW+vk9SK+lDxA6STzKQsVJxUPg9ACC52pKKo3SVQ== + dependencies: + "@intlify/shared" "9.14.5" + source-map-js "^1.0.2" + +"@intlify/shared@9.14.5": + version "9.14.5" + resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.5.tgz#2e42193b8356db20ee28c15d1ee6c8f0fda6c0b9" + integrity sha512-9gB+E53BYuAEMhbCAxVgG38EZrk59sxBtv3jSizNL2hEWlgjBjAw1AwpLHtNaeda12pe6W20OGEa0TwuMSRbyQ== + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + 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" + +"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5": + version "1.5.5" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.30" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz#4a76c4daeee5df09f5d3940e087442fb36ce2b99" + integrity sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1": + version "1.2.3" + resolved "https://registry.npmjs.org/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd" + integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== + +"@lezer/cpp@^1.0.0": + version "1.1.3" + resolved "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.1.3.tgz#3029a542f4624fba0ed28f96511b34b8e7906352" + integrity sha512-ykYvuFQKGsRi6IcE+/hCSGUhb/I4WPjd3ELhEblm2wS2cOznDFzO+ubK2c+ioysOnlZ3EduV+MVQFCPzAIoY3w== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/css@^1.1.0", "@lezer/css@^1.1.7": + version "1.3.0" + resolved "https://registry.npmjs.org/@lezer/css/-/css-1.3.0.tgz#296f298814782c2fad42a936f3510042cdcd2034" + integrity sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.3.0" + +"@lezer/go@^1.0.0": + version "1.0.1" + resolved "https://registry.npmjs.org/@lezer/go/-/go-1.0.1.tgz#3004b54f5e4c9719edcba98653f380baf8c0d1a2" + integrity sha512-xToRsYxwsgJNHTgNdStpcvmbVuKxTapV0dM0wey1geMMRc9aggoVyKgzYp41D2/vVOx+Ii4hmE206kvxIXBVXQ== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.3.0" + +"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3", "@lezer/highlight@^1.2.0", "@lezer/highlight@^1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b" + integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/html@^1.3.0": + version "1.3.10" + resolved "https://registry.npmjs.org/@lezer/html/-/html-1.3.10.tgz#1be9a029a6fe835c823b20a98a449a630416b2af" + integrity sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/java@^1.0.0": + version "1.1.3" + resolved "https://registry.npmjs.org/@lezer/java/-/java-1.1.3.tgz#9efd6a29b4142d07f211076a6fb5e8061c85e147" + integrity sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/javascript@^1.0.0": + version "1.5.1" + resolved "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.1.tgz#2a424a6ec29f1d4ef3c34cbccc5447e373618ad8" + integrity sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.1.3" + "@lezer/lr" "^1.3.0" + +"@lezer/json@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz#e773a012ad0088fbf07ce49cfba875cc9e5bc05f" + integrity sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/lr@^1.0.0", "@lezer/lr@^1.1.0", "@lezer/lr@^1.3.0", "@lezer/lr@^1.3.1", "@lezer/lr@^1.3.3", "@lezer/lr@^1.4.0": + version "1.4.2" + resolved "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727" + integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/markdown@^1.0.0": + version "1.4.3" + resolved "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.4.3.tgz#a742ed5e782ac4913a621dfd1e6a8e409f4dd589" + integrity sha512-kfw+2uMrQ/wy/+ONfrH83OkdFNM0ye5Xq96cLlaCy7h5UT9FO54DU4oRoIc0CSBh5NWmWuiIJA7NGLMJbQ+Oxg== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + +"@lezer/php@^1.0.0": + version "1.0.4" + resolved "https://registry.npmjs.org/@lezer/php/-/php-1.0.4.tgz#b759a4ac71ca318aa7855971bdb65082b9d69e65" + integrity sha512-D2dJ0t8Z28/G1guztRczMFvPDUqzeMLSQbdWQmaiHV7urc8NlEOnjYk9UrZ531OcLiRxD4Ihcbv7AsDpNKDRaQ== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.1.0" + +"@lezer/python@^1.1.4": + version "1.1.18" + resolved "https://registry.npmjs.org/@lezer/python/-/python-1.1.18.tgz#fa02fbf492741c82dc2dc98a0a042bd0d4d7f1d3" + integrity sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/rust@^1.0.0": + version "1.0.2" + resolved "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.2.tgz#cc9a75605d67182a0e799ac40b1965a61dcc6ef0" + integrity sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/sass@^1.0.0": + version "1.1.0" + resolved "https://registry.npmjs.org/@lezer/sass/-/sass-1.1.0.tgz#c82e660aa5b39303d1de763923aef979fef1d3a4" + integrity sha512-3mMGdCTUZ/84ArHOuXWQr37pnf7f+Nw9ycPUeKX+wu19b7pSMcZGLbaXwvD2APMBDOGxPmpK/O6S1v1EvLoqgQ== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/xml@^1.0.0": + version "1.0.6" + resolved "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.6.tgz#908c203923288f854eb8e2f4d9b06c437e8610b9" + integrity sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/yaml@^1.0.0": + version "1.0.3" + resolved "https://registry.npmjs.org/@lezer/yaml/-/yaml-1.0.3.tgz#b23770ab42b390056da6b187d861b998fd60b1ff" + integrity sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.4.0" + +"@marijn/find-cluster-break@^1.0.0": + version "1.0.2" + resolved "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8" + integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@popperjs/core@^2.11.7", "@popperjs/core@^2.9.0": + version "2.11.8" + resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + +"@rollup/pluginutils@^5.0.2": + version "5.2.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz#eac25ca5b0bdda4ba735ddaca5fbf26bd435f602" + integrity sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^4.0.2" + +"@simonwep/pickr@~1.8.0": + version "1.8.2" + resolved "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.8.2.tgz#96dc86675940d7cad63d69c22083dd1cbb9797cb" + integrity sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA== + dependencies: + core-js "^3.15.1" + nanopop "^2.1.0" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + +"@types/codemirror@^5.60.7": + version "5.60.16" + resolved "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.16.tgz#1f462f9771113bd8e1c6130c666b17db8e1087c2" + integrity sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw== + dependencies: + "@types/tern" "*" + +"@types/d3-array@^3.2.1": + version "3.2.1" + resolved "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" + integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== + +"@types/d3-color@*", "@types/d3-color@^3.1.3": + version "3.1.3" + resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-dispatch@^3.0.6": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.7.tgz#ef004d8a128046cfce434d17182f834e44ef95b2" + integrity sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA== + +"@types/d3-dsv@*", "@types/d3-dsv@^3.0.7": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" + integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== + +"@types/d3-ease@^3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-fetch@^3.0.7": + version "3.0.7" + resolved "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" + integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@^3.0.10": + version "3.0.10" + resolved "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a" + integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== + +"@types/d3-format@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + +"@types/d3-geo@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz#b9e56a079449174f0a2c8684a9a4df3f60522440" + integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@^3.1.7": + version "3.1.7" + resolved "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" + integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== + +"@types/d3-interpolate@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*", "@types/d3-path@^3.1.0": + version "3.1.1" + resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-quadtree@^3.0.6": + version "3.0.6" + resolved "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" + integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== + +"@types/d3-random@^3.0.3": + version "3.0.3" + resolved "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz#ed995c71ecb15e0cd31e22d9d5d23942e3300cfb" + integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== + +"@types/d3-scale-chromatic@^3.1.0": + version "3.1.0" + resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@^4.0.9": + version "4.0.9" + resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-shape@^3.1.7": + version "3.1.7" + resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz#2b7b423dc2dfe69c8c93596e673e37443348c555" + integrity sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time@*", "@types/d3-time@^3.0.4": + version "3.0.4" + resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/d3-timer@^3.0.2": + version "3.0.2" + resolved "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.8" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/file-saver@^2.0.7": + version "2.0.7" + resolved "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.7.tgz#8dbb2f24bdc7486c54aa854eb414940bbd056f7d" + integrity sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A== + +"@types/geojson@*": + version "7946.0.16" + resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== + +"@types/hast@^2.0.0", "@types/hast@^2.3.4": + version "2.3.10" + resolved "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz#5c9d9e0b304bbb8879b857225c5ebab2d81d7643" + integrity sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw== + dependencies: + "@types/unist" "^2" + +"@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/linkify-it@^5": + version "5.0.0" + resolved "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz#21413001973106cda1c3a9b91eedd4ccd5469d76" + integrity sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q== + +"@types/lodash-es@^4.17.6", "@types/lodash-es@^4.17.7": + version "4.17.12" + resolved "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b" + integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.17.20" + resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz#1ca77361d7363432d29f5e55950d9ec1e1c6ea93" + integrity sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA== + +"@types/markdown-it@^14.0.1": + version "14.1.2" + resolved "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz#57f2532a0800067d9b934f3521429a2e8bfb4c61" + integrity sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog== + dependencies: + "@types/linkify-it" "^5" + "@types/mdurl" "^2" + +"@types/mdast@^3.0.0", "@types/mdast@^3.0.11": + version "3.0.15" + resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" + integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== + dependencies: + "@types/unist" "^2" + +"@types/mdurl@^2": + version "2.0.0" + resolved "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz#d43878b5b20222682163ae6f897b20447233bdfd" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== + +"@types/ms@*": + version "2.1.0" + resolved "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + +"@types/node@*", "@types/node@^24.0.1": + version "24.3.0" + resolved "https://registry.npmjs.org/@types/node/-/node-24.3.0.tgz#89b09f45cb9a8ee69466f18ee5864e4c3eb84dec" + integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow== + dependencies: + undici-types "~7.10.0" + +"@types/node@^14.0.1": + version "14.18.63" + resolved "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz#1788fa8da838dbb5f9ea994b834278205db6ca2b" + integrity sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ== + +"@types/node@^18.7.14": + version "18.19.123" + resolved "https://registry.npmjs.org/@types/node/-/node-18.19.123.tgz#08a3e4f5e0c73b8840c677b7635ce59d5dc1f76d" + integrity sha512-K7DIaHnh0mzVxreCR9qwgNxp3MH9dltPNIEddW9MYUlcKAzm+3grKNSTe2vCJHI1FaLpvpL5JGJrz1UZDKYvDg== + dependencies: + undici-types "~5.26.4" + +"@types/nprogress@^0.2.0": + version "0.2.3" + resolved "https://registry.npmjs.org/@types/nprogress/-/nprogress-0.2.3.tgz#b2150b054a13622fabcba12cf6f0b54c48b14287" + integrity sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA== + +"@types/parse5@^6.0.0": + version "6.0.3" + resolved "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + +"@types/qrcode@^1.5.5": + version "1.5.5" + resolved "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz#993ff7c6b584277eee7aac0a20861eab682f9dac" + integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg== + dependencies: + "@types/node" "*" + +"@types/semver@^7.3.12": + version "7.7.0" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" + integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== + +"@types/sortablejs@^1.13.0": + version "1.15.8" + resolved "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.8.tgz#11ed555076046e00869a5ef85d1e7651e7a66ef6" + integrity sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg== + +"@types/tern@*": + version "0.23.9" + resolved "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz#6f6093a4a9af3e6bb8dde528e024924d196b367c" + integrity sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw== + dependencies: + "@types/estree" "*" + +"@types/unist@^2", "@types/unist@^2.0.0": + version "2.0.11" + resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz#11af57b127e32487774841f7a4e54eab166d03c4" + integrity sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA== + +"@typescript-eslint/eslint-plugin@^5.36.1": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + 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" + +"@typescript-eslint/parser@^5.36.1": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + 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" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + 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" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + 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" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@vavt/copy2clipboard@^1.0.1": + version "1.0.3" + resolved "https://registry.npmjs.org/@vavt/copy2clipboard/-/copy2clipboard-1.0.3.tgz#eae77af8e83835cae5d932c3dc025e8838bb4c12" + integrity sha512-HtG48r2FBYp9eRvGB3QGmtRBH1zzRRAVvFbGgFstOwz4/DDaNiX0uZc3YVKPydqgOav26pibr9MtoCaWxn7aeA== + +"@vavt/util@^2.1.0": + version "2.1.0" + resolved "https://registry.npmjs.org/@vavt/util/-/util-2.1.0.tgz#b8a28da361675195fd6331a1db7cbfd02f68f590" + integrity sha512-YIfAvArSFVXmWvoF+DEGD0FhkhVNcCtVWWkfYtj76eSrwHh/wuEEFhiEubg1XLNM3tChO8FH8xJCT/hnizjgFQ== + +"@vitejs/plugin-legacy@^2.0.1": + version "2.3.1" + resolved "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-2.3.1.tgz#44d8e608e66ef03ff82ae176588c7a621d56c524" + integrity sha512-J5KaGBlSt2tEYPVjM/C8dA6DkRzkFkbPe+Xb4IX5G+XOV5OGbVAfkMjKywdrkO3gGynO8S98i71Lmsff4cWkCQ== + 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" + +"@vitejs/plugin-vue@^3.0.3": + version "3.2.0" + resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz#a1484089dd85d6528f435743f84cdd0d215bbb54" + integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw== + +"@volar/code-gen@0.40.13": + version "0.40.13" + resolved "https://registry.npmjs.org/@volar/code-gen/-/code-gen-0.40.13.tgz#cd69a67b11462b93d79ea2139f9f1e0a76e15111" + integrity sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA== + dependencies: + "@volar/source-map" "0.40.13" + +"@volar/source-map@0.40.13": + version "0.40.13" + resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-0.40.13.tgz#9acbc47614bbd8fa710d233d10fff1b18cb78a80" + integrity sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg== + dependencies: + "@vue/reactivity" "3.2.38" + +"@volar/typescript-faster@0.40.13": + version "0.40.13" + resolved "https://registry.npmjs.org/@volar/typescript-faster/-/typescript-faster-0.40.13.tgz#5d9600333cc250ad53e8604ff6a2a32e4acfbc86" + integrity sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw== + dependencies: + semver "^7.3.7" + +"@volar/vue-language-core@0.40.13": + version "0.40.13" + resolved "https://registry.npmjs.org/@volar/vue-language-core/-/vue-language-core-0.40.13.tgz#13a79c29ef63d66a40afd1b29166404703b240c4" + integrity sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q== + dependencies: + "@volar/code-gen" "0.40.13" + "@volar/source-map" "0.40.13" + "@vue/compiler-core" "^3.2.38" + "@vue/compiler-dom" "^3.2.38" + "@vue/compiler-sfc" "^3.2.38" + "@vue/reactivity" "^3.2.38" + "@vue/shared" "^3.2.38" + +"@volar/vue-typescript@0.40.13": + version "0.40.13" + resolved "https://registry.npmjs.org/@volar/vue-typescript/-/vue-typescript-0.40.13.tgz#50fe8e0965f4e14596eca57550b5ca13388c244c" + integrity sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ== + dependencies: + "@volar/code-gen" "0.40.13" + "@volar/typescript-faster" "0.40.13" + "@volar/vue-language-core" "0.40.13" + +"@vue/compiler-core@3.5.19", "@vue/compiler-core@^3.2.38": + version "3.5.19" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.19.tgz#f141d35b61b55ce72c3cbb4dc9eeca3821d451aa" + integrity sha512-/afpyvlkrSNYbPo94Qu8GtIOWS+g5TRdOvs6XZNw6pWQQmj5pBgSZvEPOIZlqWq0YvoUhDDQaQ2TnzuJdOV4hA== + dependencies: + "@babel/parser" "^7.28.3" + "@vue/shared" "3.5.19" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.1" + +"@vue/compiler-core@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.3.tgz#93476cc858c8a4e5e9670c9a9185661026136dee" + integrity sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA== + dependencies: + "@babel/parser" "^7.25.3" + "@vue/shared" "3.5.3" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.0" + +"@vue/compiler-dom@3.5.19", "@vue/compiler-dom@^3.2.38": + version "3.5.19" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.19.tgz#fc57d9dca4987df67d6ce64dbddaac6d73f1a6ef" + integrity sha512-Drs6rPHQZx/pN9S6ml3Z3K/TWCIRPvzG2B/o5kFK9X0MNHt8/E+38tiRfojufrYBfA6FQUFB2qBBRXlcSXWtOA== + dependencies: + "@vue/compiler-core" "3.5.19" + "@vue/shared" "3.5.19" + +"@vue/compiler-dom@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz#195f21b2c700477e4c3e21f4c98edc7032aedca3" + integrity sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA== + dependencies: + "@vue/compiler-core" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/compiler-sfc@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.3.tgz#d44c1cafe94d26f74fa4864cabc948c3908a27de" + integrity sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ== + dependencies: + "@babel/parser" "^7.25.3" + "@vue/compiler-core" "3.5.3" + "@vue/compiler-dom" "3.5.3" + "@vue/compiler-ssr" "3.5.3" + "@vue/shared" "3.5.3" + estree-walker "^2.0.2" + magic-string "^0.30.11" + postcss "^8.4.44" + source-map-js "^1.2.0" + +"@vue/compiler-sfc@^3.2.38": + version "3.5.19" + resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.19.tgz#7f9792ad7de5d4be9b6a32129c75e1f6cd4da015" + integrity sha512-YWCm1CYaJ+2RvNmhCwI7t3I3nU+hOrWGWMsn+Z/kmm1jy5iinnVtlmkiZwbLlbV1SRizX7vHsc0/bG5dj0zRTg== + dependencies: + "@babel/parser" "^7.28.3" + "@vue/compiler-core" "3.5.19" + "@vue/compiler-dom" "3.5.19" + "@vue/compiler-ssr" "3.5.19" + "@vue/shared" "3.5.19" + estree-walker "^2.0.2" + magic-string "^0.30.17" + postcss "^8.5.6" + source-map-js "^1.2.1" + +"@vue/compiler-ssr@3.5.19": + version "3.5.19" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.19.tgz#1719e7fda6d54f5696ca63d4d40281668c0e601c" + integrity sha512-/wx0VZtkWOPdiQLWPeQeqpHWR/LuNC7bHfSX7OayBTtUy8wur6vT6EQIX6Et86aED6J+y8tTw43qo2uoqGg5sw== + dependencies: + "@vue/compiler-dom" "3.5.19" + "@vue/shared" "3.5.19" + +"@vue/compiler-ssr@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.3.tgz#ef8a98385f571e36798a82d783ac369a06d24f5c" + integrity sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w== + dependencies: + "@vue/compiler-dom" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.6.3", "@vue/devtools-api@^6.6.4": + version "6.6.4" + resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343" + integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== + +"@vue/reactivity@3.2.38": + version "3.2.38" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.38.tgz#d576fdcea98eefb96a1f1ad456e289263e87292e" + integrity sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw== + dependencies: + "@vue/shared" "3.2.38" + +"@vue/reactivity@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.3.tgz#0bdc6031d5be973ee0f807f82259d5579fb46fb6" + integrity sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw== + dependencies: + "@vue/shared" "3.5.3" + +"@vue/reactivity@^3.2.38": + version "3.5.19" + resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.19.tgz#c06f172da26e2fc74060cc490d1c3aaffc024622" + integrity sha512-4bueZg2qs5MSsK2dQk3sssV0cfvxb/QZntTC8v7J448GLgmfPkQ+27aDjlt40+XFqOwUq5yRxK5uQh14Fc9eVA== + dependencies: + "@vue/shared" "3.5.19" + +"@vue/runtime-core@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.3.tgz#8126927e4b0cf87a8a7d32822abe8170b8c99edf" + integrity sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw== + dependencies: + "@vue/reactivity" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/runtime-dom@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.3.tgz#f07ba3faecfd39feb54c4d13d8cc4416ca28f111" + integrity sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg== + dependencies: + "@vue/reactivity" "3.5.3" + "@vue/runtime-core" "3.5.3" + "@vue/shared" "3.5.3" + csstype "^3.1.3" + +"@vue/server-renderer@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.3.tgz#1cbf7bb83cf1a6c7cdcea4ae3afca65c3cf6cf29" + integrity sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q== + dependencies: + "@vue/compiler-ssr" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/shared@3.2.38": + version "3.2.38" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.2.38.tgz#e823f0cb2e85b6bf43430c0d6811b1441c300f3c" + integrity sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg== + +"@vue/shared@3.5.19", "@vue/shared@^3.2.38": + version "3.5.19" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.19.tgz#5301967a910cb62145e4f17131f3bee88b463c83" + integrity sha512-IhXCOn08wgKrLQxRFKKlSacWg4Goi1BolrdEeLYn6tgHjJNXVrWJ5nzoxZqNwl5p88aLlQ8LOaoMa3AYvaKJ/Q== + +"@vue/shared@3.5.3": + version "3.5.3" + resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.3.tgz#fb7149372cf5768b9a9f980067c5d0ebac8dc833" + integrity sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA== + +"@wecom/jssdk@^1.3.1": + version "1.4.5" + resolved "https://registry.npmjs.org/@wecom/jssdk/-/jssdk-1.4.5.tgz#7d8f3670feb1ad82e283d92ee8462b763983f1fc" + integrity sha512-1SSmcDUid7QOQNNFaM4d884NXJQYuoO+oLZtM9TRO5uMXYj2s69hmuAoPUr3D3br6VDgv4H+tbIG5A5A+uB9lA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.14.0, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +address@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + +agentkeepalive@^3.4.1: + version "3.5.3" + resolved "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.3.tgz#c210afce942b4287e2df2fbfe6c0d57eda2ce634" + integrity sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw== + dependencies: + humanize-ms "^1.2.1" + +ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ali-oss@^6.18.0: + version "6.23.0" + resolved "https://registry.npmjs.org/ali-oss/-/ali-oss-6.23.0.tgz#0bb236428307986ece0bf9243d77d7029d7b6ed2" + integrity sha512-FipRmyd16Pr/tEey/YaaQ/24Pc3HEpLM9S1DRakEuXlSLXNIJnu1oJtHM53eVYpvW3dXapSjrip3xylZUTIZVQ== + dependencies: + address "^1.2.2" + agentkeepalive "^3.4.1" + bowser "^1.6.0" + copy-to "^2.0.1" + dateformat "^2.0.0" + debug "^4.3.4" + destroy "^1.0.4" + end-or-error "^1.0.1" + get-ready "^1.0.0" + humanize-ms "^1.2.0" + is-type-of "^1.4.0" + js-base64 "^2.5.2" + jstoxml "^2.0.0" + lodash "^4.17.21" + merge-descriptors "^1.0.1" + mime "^2.4.5" + platform "^1.3.1" + pump "^3.0.0" + qs "^6.4.0" + sdk-base "^2.0.1" + stream-http "2.8.2" + stream-wormhole "^1.0.4" + urllib "^2.44.0" + utility "^1.18.0" + xml2js "^0.6.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz#2f302e7550431b1b7762705fffb52cf1ffa20447" + integrity sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ant-design-vue@^3.2.11: + version "3.2.20" + resolved "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-3.2.20.tgz#552f5f08e2acbcc10bd4089145d4cc2b15d4cfec" + integrity sha512-YWpMfGaGoRastIXEYfCoJiaRiDHk4chqtYhlKQM5GqPt6NfvrM1Vg2e60yHtjxlZjed91wCMm0rAmyUr7Hwzdg== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-vue" "^6.1.0" + "@babel/runtime" "^7.10.5" + "@ctrl/tinycolor" "^3.4.0" + "@simonwep/pickr" "~1.8.0" + array-tree-filter "^2.1.0" + async-validator "^4.0.0" + dayjs "^1.10.5" + dom-align "^1.12.1" + dom-scroll-into-view "^2.0.0" + lodash "^4.17.21" + lodash-es "^4.17.15" + resize-observer-polyfill "^1.5.1" + scroll-into-view-if-needed "^2.2.25" + shallow-equal "^1.0.0" + vue-types "^3.0.0" + warning "^4.0.0" + +any-promise@^1.0.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archiver-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz#e8a460e94b693c3e3da182a098ca6285ba9249e2" + integrity sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw== + dependencies: + glob "^7.1.4" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^2.0.0" + +archiver-utils@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz#a0d201f1cf8fce7af3b5a05aea0a337329e96ec7" + integrity sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw== + dependencies: + glob "^7.2.3" + graceful-fs "^4.2.0" + lazystream "^1.0.0" + lodash.defaults "^4.2.0" + lodash.difference "^4.5.0" + lodash.flatten "^4.4.0" + lodash.isplainobject "^4.0.6" + lodash.union "^4.6.0" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +archiver@^5.0.0: + version "5.3.2" + resolved "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz#99991d5957e53bd0303a392979276ac4ddccf3b0" + integrity sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw== + dependencies: + archiver-utils "^2.1.0" + async "^3.2.4" + buffer-crc32 "^0.2.1" + readable-stream "^3.6.0" + readdir-glob "^1.1.2" + tar-stream "^2.2.0" + zip-stream "^4.1.0" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-tree-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +async-validator@^4.0.0: + version "4.2.5" + resolved "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + +async@^3.2.4: + version "3.2.6" + resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" + integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@^10.4.19: + version "10.4.21" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" + integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== + dependencies: + browserslist "^4.24.4" + caniuse-lite "^1.0.30001702" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +axios@^0.27.2: + version "0.27.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972" + integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ== + dependencies: + follow-redirects "^1.14.9" + form-data "^4.0.0" + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big-integer@^1.6.17: + version "1.6.52" + resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" + integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bowser@^1.6.0: + version "1.9.4" + resolved "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz#890c58a2813a9d3243704334fa81b96a5c150c9a" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.4: + version "4.25.3" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz#9167c9cbb40473f15f75f85189290678b99b16c5" + integrity sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ== + dependencies: + caniuse-lite "^1.0.30001735" + electron-to-chromium "^1.5.204" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof-polyfill@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" + integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ== + +bytemd@^1.17.2: + version "1.22.0" + resolved "https://registry.npmjs.org/bytemd/-/bytemd-1.22.0.tgz#b7f79f824a8caeeeddf442ec40a4c26d8ff64608" + integrity sha512-2vmegXnnsOxNufRrrQGHYKwgTmx6H+h40ZZs3DAw/SS5O4mBzO9evc1HD39CqW9wglGNBJxMg257pv9pgAGl+A== + dependencies: + "@popperjs/core" "^2.11.7" + "@types/codemirror" "^5.60.7" + "@types/hast" "^2.3.4" + "@types/lodash-es" "^4.17.7" + "@types/mdast" "^3.0.11" + codemirror-ssr "^0.65.0" + hast-util-sanitize "^4.1.0" + lodash-es "^4.17.21" + rehype-raw "^6.1.1" + rehype-sanitize "^5.0.1" + rehype-stringify "^9.0.3" + remark-parse "^10.0.1" + remark-rehype "^10.1.0" + select-files "^1.0.1" + tippy.js "^6.3.7" + unified "^10.1.2" + unist-util-visit "^4.1.2" + vfile "^5.3.7" + word-count "^0.2.2" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001735: + version "1.0.30001737" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001737.tgz#8292bb7591932ff09e9a765f12fdf5629a241ccc" + integrity sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +cfb@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44" + integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA== + dependencies: + adler-32 "~1.3.0" + crc-32 "~1.2.0" + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== + dependencies: + traverse ">=0.3.0 <0.4" + +chalk@^2.3.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-html4@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" + integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== + +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + +chokidar@^3.5.3, chokidar@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + 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" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +codemirror-ssr@^0.65.0: + version "0.65.0" + resolved "https://registry.npmjs.org/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz#2da55cb21fbe6142df10aece7e286834734c0fb3" + integrity sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g== + +codemirror@^6.0.1: + version "6.0.2" + resolved "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz#4d3fea1ad60b6753f97ca835f2f48c6936a8946e" + integrity sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw== + dependencies: + "@codemirror/autocomplete" "^6.0.0" + "@codemirror/commands" "^6.0.0" + "@codemirror/language" "^6.0.0" + "@codemirror/lint" "^6.0.0" + "@codemirror/search" "^6.0.0" + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.0.0" + +codepage@~1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab" + integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.5: + version "1.9.1" + resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" + integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== + +commander@7: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@^2.15.1, commander@^2.20.0, commander@^2.20.3: + version "2.20.3" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +compress-commons@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz#6542e59cb63e1f46a8b21b0e06f9a32e4c8b06df" + integrity sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg== + dependencies: + buffer-crc32 "^0.2.13" + crc32-stream "^4.0.2" + normalize-path "^3.0.0" + readable-stream "^3.6.0" + +compute-scroll-into-view@^1.0.20: + version "1.0.20" + resolved "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" + integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-type@^1.0.2: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-to@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" + integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== + +core-js@^3.15.1, core-js@^3.26.0: + version "3.45.1" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.45.1.tgz#5810e04a1b4e9bc5ddaa4dd12e702ff67300634d" + integrity sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg== + +core-util-is@^1.0.2, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +countup.js@^2.3.2: + version "2.9.0" + resolved "https://registry.npmjs.org/countup.js/-/countup.js-2.9.0.tgz#599e6482e502e5e3f00f8816637120c9b21856ed" + integrity sha512-llqrvyXztRFPp6+i8jx25phHWcVWhrHO4Nlt0uAOSKHB8778zzQswa4MU3qKBvkXfJKftRYFJuVHez67lyKdHg== + +crc-32@^1.2.0, crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz#85dd677eb78fa7cad1ba17cc506a597d41fc6f33" + integrity sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw== + dependencies: + crc-32 "^1.2.0" + readable-stream "^3.4.0" + +crelt@^1.0.5, crelt@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + +cropperjs@^1.5.12: + version "1.6.2" + resolved "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz#d1a5d627d880581cca41b7901f06923500e4201b" + integrity sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA== + +cross-spawn@^7.0.2, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +csstype@^3.0.8, csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +"d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@^3.2.4: + version "3.2.4" + resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +d3-binarytree@1: + version "1.0.2" + resolved "https://registry.npmjs.org/d3-binarytree/-/d3-binarytree-1.0.2.tgz#ed43ebc13c70fbabfdd62df17480bc5a425753cc" + integrity sha512-cElUNH+sHu95L04m92pG73t2MEJXKu+GeKUN1TJkFsu93E5W8E9Sc3kHEGJKgenGvj19m6upSn2EunvMgMD2Yw== + +"d3-color@1 - 3", d3-color@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +"d3-dispatch@1 - 3", d3-dispatch@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +"d3-dsv@1 - 3", d3-dsv@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +d3-ease@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force-3d@^3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/d3-force-3d/-/d3-force-3d-3.0.6.tgz#7ea4c26d7937b82993bd9444f570ed52f661d4aa" + integrity sha512-4tsKHUPLOVkyfEffZo1v6sFHvGFwAIIjt/W8IThbp08DYAsXZck+2pSHEG5W1+gQgEvFLdZkYvmJAbRM2EzMnA== + dependencies: + d3-binarytree "1" + d3-dispatch "1 - 3" + d3-octree "1" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +d3-force@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== + +d3-geo-projection@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-4.0.0.tgz#dc229e5ead78d31869a4e87cf1f45bd2716c48ca" + integrity sha512-p0bK60CEzph1iqmnxut7d/1kyTmm3UWtPlwdkM31AU+LW+BXazd5zJdoCn7VFxNCHXRngPHRnsNn5uGjLRGndg== + dependencies: + commander "7" + d3-array "1 - 3" + d3-geo "1.12.0 - 3" + +"d3-geo@1.12.0 - 3", d3-geo@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" + integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-octree@1: + version "1.1.0" + resolved "https://registry.npmjs.org/d3-octree/-/d3-octree-1.1.0.tgz#f07e353b76df872644e7130ab1a74c5ef2f4287e" + integrity sha512-F8gPlqpP+HwRPMO/8uOu5wjH110+6q4cgJvgJT6vlpy3BEaDIKlTZrgHKZSp/i1InRpVfh4puY/kvL6MxK930A== + +d3-path@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + +"d3-quadtree@1 - 3", d3-quadtree@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-regression@^1.3.10: + version "1.3.10" + resolved "https://registry.npmjs.org/d3-regression/-/d3-regression-1.3.10.tgz#d1a411ab45044d9e8d5b8aec05f2e598e1a621c9" + integrity sha512-PF8GWEL70cHHWpx2jUQXc68r1pyPHIA+St16muk/XRokETzlegj5LriNKg7o4LR0TySug4nHYPJNNRz/W+/Niw== + +d3-scale-chromatic@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +d3-shape@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +"d3-time-format@2 - 4": + version "4.1.0" + resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + +"d3-timer@1 - 3", d3-timer@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== + +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +danmu.js@^1.1.2: + version "1.1.13" + resolved "https://registry.npmjs.org/danmu.js/-/danmu.js-1.1.13.tgz#615aa3099c662605018724d966b1967c65d7a48b" + integrity sha512-knFd0/cB2HA4FFWiA7eB2suc5vCvoHdqio33FyyCSfP7C+1A+zQcTvnvwfxaZhrxsGj4qaQI2I8XiTqedRaVmg== + dependencies: + event-emitter "^0.3.5" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw== + +dayjs@^1.10.5, dayjs@^1.11.5, dayjs@^1.8.34: + version "1.11.13" + resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + +debug@^4.0.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.4.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +debug@~4.3.1, debug@~4.3.2: + version "4.3.7" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decode-named-character-reference@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" + integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== + dependencies: + character-entities "^2.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +default-user-agent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz#16c46efdcaba3edc45f24f2bd4868b01b7c2adc6" + integrity sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw== + dependencies: + os-name "~1.0.3" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +digest-header@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/digest-header/-/digest-header-1.1.0.tgz#e16ab6cf4545bc4eea878c8c35acd1b89664d800" + integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg== + +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +docx@^9.5.0: + version "9.5.1" + resolved "https://registry.npmjs.org/docx/-/docx-9.5.1.tgz#325c9c45dccf052e5780515d6068e80fdee81960" + integrity sha512-ABDI7JEirFD2+bHhOBlsGZxaG1UgZb2M/QMKhLSDGgVNhxDesTCDcP+qoDnDGjZ4EOXTRfUjUgwHVuZ6VSTfWQ== + dependencies: + "@types/node" "^24.0.1" + hash.js "^1.1.7" + jszip "^3.10.1" + nanoid "^5.1.3" + xml "^1.0.1" + xml-js "^1.6.8" + +dom-align@^1.12.1: + version "1.12.4" + resolved "https://registry.npmjs.org/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" + integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== + +dom-scroll-into-view@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz#0decc8522801fd8d3f1c6ba355a74d382c5f989b" + integrity sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w== + +downloadjs@1.4.7: + version "1.4.7" + resolved "https://registry.npmjs.org/downloadjs/-/downloadjs-1.4.7.tgz#f69f96f940e0d0553dac291139865a3cd0101e3c" + integrity sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q== + +draggabilly@^2.2.0: + version "2.4.1" + resolved "https://registry.npmjs.org/draggabilly/-/draggabilly-2.4.1.tgz#df02b9e2c3a837d42591af807a0d250b3816887f" + integrity sha512-HHHLPEPZqRXIDQDFRFdK7RONZausNlJ4WkA73ST7Z6O2HPWttxFHVwHo8nccuDLzXWwiVKRVuc6fTkW+CQA++A== + dependencies: + get-size "^2.0.2" + unidragger "^2.4.0" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== + dependencies: + readable-stream "^2.0.2" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +echarts-wordcloud@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz#c3de6fe267044f6c3343e4ff0e05eedb01c05096" + integrity sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ== + +echarts@^5.3.3: + version "5.6.0" + resolved "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6" + integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA== + dependencies: + tslib "2.3.0" + zrender "5.6.1" + +ee-first@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +ele-admin-pro@^1.10.1: + version "1.11.1" + resolved "https://registry.npmjs.org/ele-admin-pro/-/ele-admin-pro-1.11.1.tgz#ae801cdd5808ce1d5ca60e2d28ed5d6da4117779" + integrity sha512-3gTCTrQ6XCnfMP8nNZZFXaoRcNpOMLpK2mEsu+21f3w5ID/BFhyOxWSngJL/LMPelwSpK+PwRclp0r3Wu16J7Q== + +electron-to-chromium@^1.5.204: + version "1.5.208" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.208.tgz#609c29502fd7257b4d721e3446f3ae391a0ca1b3" + integrity sha512-ozZyibehoe7tOhNaf16lKmljVf+3npZcJIEbJRVftVsmAg5TeA1mGS9dVCZzOwr2xT7xK15V0p7+GZqSPgkuPg== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.5" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +end-or-error@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/end-or-error/-/end-or-error-1.0.1.tgz#dc7a6210fe78d372fee24a8b4899dbd155414dcb" + integrity sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ== + +engine.io-client@~6.6.1: + version "6.6.3" + resolved "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz#815393fa24f30b8e6afa8f77ccca2f28146be6de" + integrity sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" + xmlhttprequest-ssl "~2.1.1" + +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== + +entities@^4.4.0, entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.64, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +esbuild-android-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5" + integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA== + +esbuild-android-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04" + integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ== + +esbuild-darwin-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz#428e1730ea819d500808f220fbc5207aea6d4410" + integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg== + +esbuild-darwin-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337" + integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA== + +esbuild-freebsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2" + integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA== + +esbuild-freebsd-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635" + integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA== + +esbuild-linux-32@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce" + integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg== + +esbuild-linux-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c" + integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw== + +esbuild-linux-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d" + integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug== + +esbuild-linux-arm@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc" + integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA== + +esbuild-linux-mips64le@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb" + integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ== + +esbuild-linux-ppc64le@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507" + integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w== + +esbuild-linux-riscv64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6" + integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg== + +esbuild-linux-s390x@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb" + integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ== + +esbuild-netbsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998" + integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg== + +esbuild-openbsd-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8" + integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ== + +esbuild-sunos-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971" + integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw== + +esbuild-windows-32@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3" + integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ== + +esbuild-windows-64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0" + integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw== + +esbuild-windows-arm64@0.15.18: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7" + integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ== + +esbuild@^0.15.9: + version "0.15.18" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz#ea894adaf3fbc036d32320a00d4d6e4978a2f36d" + integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q== + 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" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" + integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== + +eslint-config-prettier@^8.5.0: + version "8.10.2" + resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz#0642e53625ebc62c31c24726b0f050df6bd97a2e" + integrity sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A== + +eslint-define-config@^1.7.0: + version "1.24.1" + resolved "https://registry.npmjs.org/eslint-define-config/-/eslint-define-config-1.24.1.tgz#54254d2b2a280c74778ef21b9ccc39e6b56b9bc8" + integrity sha512-o36vBhPSWyIQlHoMqGhhcGmOOm2A2ccBVIdLTG/AWdm9YmjpsLpf+5ntf9LlHR6dduLREgxtGwvwPwSt7vnXJg== + +eslint-plugin-prettier@^4.2.1: + version "4.2.5" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz#91ca3f2f01a84f1272cce04e9717550494c0fe06" + integrity sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-vue@^9.4.0: + version "9.33.0" + resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.33.0.tgz#de33eba8f78e1d172c59c8ec7fbfd60c6ca35c39" + integrity sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + globals "^13.24.0" + natural-compare "^1.4.0" + nth-check "^2.1.1" + postcss-selector-parser "^6.0.15" + semver "^7.6.3" + vue-eslint-parser "^9.4.3" + xml-name-validator "^4.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1, eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.23.0: + version "8.57.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@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" + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@~1.2.2: + version "1.2.5" + resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" + integrity sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ== + +esquery@^1.4.0, esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ev-emitter@^1.0.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz#8f18b0ce5c76a5d18017f71c0a795c65b9138f2a" + integrity sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +exceljs@^4.3.0: + version "4.4.0" + resolved "https://registry.npmjs.org/exceljs/-/exceljs-4.4.0.tgz#cfb1cb8dcc82c760a9fc9faa9e52dadab66b0156" + integrity sha512-XctvKaEMaj1Ii9oDOqbW/6e1gXknSY4g/aLCDicOXqBE4M0nRWkUu0PTp++UPNzoFY12BNHMfs/VadKIS6llvg== + dependencies: + archiver "^5.0.0" + dayjs "^1.8.34" + fast-csv "^4.3.1" + jszip "^3.10.1" + readable-stream "^3.6.0" + saxes "^5.0.1" + tmp "^0.2.0" + unzipper "^0.10.11" + uuid "^8.3.0" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-csv@^4.3.1: + version "4.3.6" + resolved "https://registry.npmjs.org/fast-csv/-/fast-csv-4.3.6.tgz#70349bdd8fe4d66b1130d8c91820b64a21bc4a63" + integrity sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw== + dependencies: + "@fast-csv/format" "4.3.5" + "@fast-csv/parse" "4.3.6" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + 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.8" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + +fault@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz#d47ca9f37ca26e4bd38374a7c500b5a384755b6c" + integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== + dependencies: + format "^0.2.0" + +fecha@^4.2.1: + version "4.2.3" + resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" + integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-saver@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38" + integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +flru@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/flru/-/flru-1.0.2.tgz#1ae514c62b8b035ffff9ca9e4563ddcc817f4845" + integrity sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog== + +follow-redirects@^1.14.9: + version "1.15.11" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +foreground-child@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +form-data@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npmjs.org/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +formstream@^1.1.0: + version "1.5.2" + resolved "https://registry.npmjs.org/formstream/-/formstream-1.5.2.tgz#81f282571665b8afd82e0df39399862cb2527c6d" + integrity sha512-NASf0lgxC1AyKNXQIrXTEYkiX99LhCEXTkiGObXAkpBui86a4u8FjH1o2bGb3PpqI3kafC+yw4zWeK6l6VHTgg== + dependencies: + destroy "^1.0.4" + mime "^2.5.2" + node-hex "^1.0.1" + pause-stream "~0.0.11" + +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd" + integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +generate-source-map@0.0.5: + version "0.0.5" + resolved "https://registry.npmjs.org/generate-source-map/-/generate-source-map-0.0.5.tgz#f1255f31653cb0231e6713a7dc8375af4f33a509" + integrity sha512-jqiE7f3FEaeMcjnMSEYLjMa39bdx+RrrdfhxdJpMm9S/8IugHF4vLQLZ9sxHylWyxpsBILukC/l/7B0/O0zhNg== + dependencies: + esprima "~1.2.2" + source-map "~0.1.34" + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-ready@^1.0.0, get-ready@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-ready/-/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782" + integrity sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw== + +get-size@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz#54a1d0256b20ea7ac646516756202769941ad2ef" + integrity sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q== + +github-markdown-css@^5.1.0: + version "5.8.1" + resolved "https://registry.npmjs.org/github-markdown-css/-/github-markdown-css-5.8.1.tgz#2a53cf17f0c9bde5ff9e83710a3310a02f5278a7" + integrity sha512-8G+PFvqigBQSWLQjyzgpa2ThD9bo7+kDsriUIidGcRhXgmcaAWUIpCZf8DavJgc+xifjbCG+GvMyWr0XMXmc7g== + +gl-matrix@^3.3.0, gl-matrix@^3.4.3: + version "3.4.4" + resolved "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.4.tgz#7789ee4982f62c7a7af447ee488f3bd6b0c77003" + integrity sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" + integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^3.1.2" + minimatch "^9.0.4" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^1.11.1" + +glob@^7.1.3, glob@^7.1.4, glob@^7.2.3: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + 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" + +globals@^13.19.0, globals@^13.24.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + 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" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hast-util-from-parse5@^7.0.0: + version "7.1.2" + resolved "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0" + integrity sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + hastscript "^7.0.0" + property-information "^6.0.0" + vfile "^5.0.0" + vfile-location "^4.0.0" + web-namespaces "^2.0.0" + +hast-util-is-element@^2.0.0: + version "2.1.3" + resolved "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz#cd3279cfefb70da6d45496068f020742256fc471" + integrity sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + +hast-util-parse-selector@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2" + integrity sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-raw@^7.0.0, hast-util-raw@^7.2.0: + version "7.2.3" + resolved "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz#dcb5b22a22073436dbdc4aa09660a644f4991d99" + integrity sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg== + dependencies: + "@types/hast" "^2.0.0" + "@types/parse5" "^6.0.0" + hast-util-from-parse5 "^7.0.0" + hast-util-to-parse5 "^7.0.0" + html-void-elements "^2.0.0" + parse5 "^6.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + vfile "^5.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-sanitize@^4.0.0, hast-util-sanitize@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.1.0.tgz#d90f8521f5083547095c5c63a7e03150303e0286" + integrity sha512-Hd9tU0ltknMGRDv+d6Ro/4XKzBqQnP/EZrpiTbpFYfXv/uOhWeKc+2uajcbEvAEH98VZd7eII2PiXm13RihnLw== + dependencies: + "@types/hast" "^2.0.0" + +hast-util-to-html@^8.0.0: + version "8.0.4" + resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz#0269ef33fa3f6599b260a8dc94f733b8e39e41fc" + integrity sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + ccount "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-raw "^7.0.0" + hast-util-whitespace "^2.0.0" + html-void-elements "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + stringify-entities "^4.0.0" + zwitch "^2.0.4" + +hast-util-to-parse5@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz#c49391bf8f151973e0c9adcd116b561e8daf29f3" + integrity sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^2.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + web-namespaces "^2.0.0" + zwitch "^2.0.0" + +hast-util-to-text@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz#ecf30c47141f41e91a5d32d0b1e1859fd2ac04f2" + integrity sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw== + dependencies: + "@types/hast" "^2.0.0" + "@types/unist" "^2.0.0" + hast-util-is-element "^2.0.0" + unist-util-find-after "^4.0.0" + +hast-util-whitespace@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" + integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== + +hastscript@^7.0.0: + version "7.2.0" + resolved "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b" + integrity sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw== + dependencies: + "@types/hast" "^2.0.0" + comma-separated-tokens "^2.0.0" + hast-util-parse-selector "^3.0.0" + property-information "^6.0.0" + space-separated-tokens "^2.0.0" + +highlight.js@^11.7.0: + version "11.11.1" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz#fca06fa0e5aeecf6c4d437239135fabc15213585" + integrity sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w== + +highlight.js@~11.8.0: + version "11.8.0" + resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz#966518ea83257bae2e7c9a48596231856555bb65" + integrity sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg== + +html-void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" + integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== + +humanize-ms@^1.2.0, humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@0.6, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.3.2" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +import-fresh@^3.2.1: + version "3.3.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-class-hotfix@~0.0.6: + version "0.0.6" + resolved "https://registry.npmjs.org/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz#a527d31fb23279281dde5f385c77b5de70a72435" + integrity sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ== + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" + integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== + +is-plain-object@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== + +is-type-of@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/is-type-of/-/is-type-of-1.4.0.tgz#3ed175a0eee888b1da4983332e7714feb8a8fb2b" + integrity sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ== + dependencies: + core-util-is "^1.0.2" + is-class-hotfix "~0.0.6" + isstream "~0.1.2" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.6: + version "1.21.7" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" + integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== + +js-base64@^2.5.2: + version "2.6.4" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + +js-md5@^0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz#b4f2fbb0b327455f598d6727e38ec272cd09c3f2" + integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbarcode@^3.11.5: + version "3.12.1" + resolved "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.12.1.tgz#9ee84826efd8112e017aaf00f72217eae81823b9" + integrity sha512-QZQSqIknC2Rr/YOUyOkCBqsoiBAOTYK+7yNN3JsqfoUtJtkazxNw1dmPpxuv7VVvqW13kA3/mKiLq+s/e3o9hQ== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.2.0" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jstoxml@^2.0.0: + version "2.2.9" + resolved "https://registry.npmjs.org/jstoxml/-/jstoxml-2.2.9.tgz#2eebd5e55383fe66a375022ca0aa88f77bc4fb84" + integrity sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw== + +jszip@^3.10.1: + version "3.10.1" + resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +lazystream@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz#494c831062f1f9408251ec44db1cba29242a2638" + integrity sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw== + dependencies: + readable-stream "^2.0.5" + +less@^4.1.3: + version "4.4.1" + resolved "https://registry.npmjs.org/less/-/less-4.4.1.tgz#2f97168bf887ca6a9957ee69e16cc34f8b007cc7" + integrity sha512-X9HKyiXPi0f/ed0XhgUlBeFfxrlDP3xR4M7768Zl+WXLUViuL9AOPPJP4nCV0tgRWvTYvpNmN0SFhZOQzy16PA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lilconfig@^3.0.0, lilconfig@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz#a1bcfd6257f9585bf5ae14ceeebb7b559025e4c4" + integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421" + integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== + dependencies: + uc.micro "^2.0.0" + +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== + +local-pkg@^0.4.2: + version "0.4.3" + resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963" + integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash-es@^4.17.15, lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ== + +lodash.difference@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz#9ccb4e505d486b91651345772885a2df27fd017c" + integrity sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA== + +lodash.escaperegexp@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz#64762c48618082518ac3df4ccf5d5886dae20347" + integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g== + +lodash.groupby@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1" + integrity sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw== + +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + integrity sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz#06de25df4db327ac931981d1bdb067e5af68d051" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isnil@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz#49e28cd559013458c814c5479d3c663a21bfaa6c" + integrity sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng== + +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA== + +lodash.isundefined@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz#23ef3d9535565203a66cefd5b830f848911afb48" + integrity sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +longest-streak@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" + integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowlight@^2.0.0: + version "2.9.0" + resolved "https://registry.npmjs.org/lowlight/-/lowlight-2.9.0.tgz#70da647a4319c7bfd8e97721a679b13ef5621496" + integrity sha512-OpcaUTCLmHuVuBcyNckKfH5B0oA4JUavb/M/8n9iAvanJYNQkrVm4pvyX0SUaqkBG4dnWHKt7p50B3ngAG2Rfw== + dependencies: + "@types/hast" "^2.0.0" + fault "^2.0.0" + highlight.js "~11.8.0" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^11.0.1: + version "11.1.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" + integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== + +lucide-vue-next@^0.453.0: + version "0.453.0" + resolved "https://registry.npmjs.org/lucide-vue-next/-/lucide-vue-next-0.453.0.tgz#946e99f3afbb5a4bbb46f521e362cd276e91eef5" + integrity sha512-5zmv83vxAs9SVoe22veDBi8Dw0Fh2F+oTngWgKnKOkrZVbZjceXLQ3tescV2boB0zlaf9R2Sd9RuUP2766xvsQ== + +magic-string@^0.26.7: + version "0.26.7" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.27.0: + version "0.27.0" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" + integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.13" + +magic-string@^0.30.11, magic-string@^0.30.17: + version "0.30.18" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.18.tgz#905bfbbc6aa5692703a93db26a9edcaa0007d2bb" + integrity sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +markdown-it-image-figures@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/markdown-it-image-figures/-/markdown-it-image-figures-2.1.1.tgz#fd32a2d0cec60ed8c3916d74fea70d5f9b56e4c7" + integrity sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g== + +markdown-it-sub@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/markdown-it-sub/-/markdown-it-sub-2.0.0.tgz#10f6c7bbf2faacf71ae1a64c75009c40ef9b2c94" + integrity sha512-iCBKgwCkfQBRg2vApy9vx1C1Tu6D8XYo8NvevI3OlwzBRmiMtsJ2sXupBgEA7PPxiDwNni3qIUkhZ6j5wofDUA== + +markdown-it-sup@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/markdown-it-sup/-/markdown-it-sup-2.0.0.tgz#683b9390929f3024fcd5291799c466ce3d367f44" + integrity sha512-5VgmdKlkBd8sgXuoDoxMpiU+BiEt3I49GItBzzw7Mxq9CxvnhE/k09HFli09zgfFDRixDQDfDxi0mgBCXtaTvA== + +markdown-it@^14.0.0: + version "14.1.0" + resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45" + integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== + dependencies: + argparse "^2.0.1" + entities "^4.4.0" + linkify-it "^5.0.0" + mdurl "^2.0.0" + punycode.js "^2.3.1" + uc.micro "^2.1.0" + +markdown-table@^3.0.0: + version "3.0.4" + resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" + integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +md-editor-v3@^5.2.3: + version "5.8.4" + resolved "https://registry.npmjs.org/md-editor-v3/-/md-editor-v3-5.8.4.tgz#48c9d9c717ac3c299f69aad251104d0e5fce9fb4" + integrity sha512-z7OOvr+Zt86kf0v46L47OHENNzdYeG8tVnfBSQdei7efVs4MWtWJk4ofv1KGutsNUA9q12h9aDZzjELeS+qCog== + dependencies: + "@codemirror/autocomplete" "^6.18.6" + "@codemirror/commands" "^6.8.1" + "@codemirror/lang-markdown" "^6.3.0" + "@codemirror/language" "^6.11.0" + "@codemirror/language-data" "^6.5.1" + "@codemirror/search" "^6.5.11" + "@codemirror/state" "^6.5.2" + "@codemirror/view" "^6.36.8" + "@lezer/highlight" "^1.2.1" + "@types/markdown-it" "^14.0.1" + "@vavt/copy2clipboard" "^1.0.1" + "@vavt/util" "^2.1.0" + codemirror "^6.0.1" + lru-cache "^11.0.1" + lucide-vue-next "^0.453.0" + markdown-it "^14.0.0" + markdown-it-image-figures "^2.1.1" + markdown-it-sub "^2.0.0" + markdown-it-sup "^2.0.0" + medium-zoom "^1.1.0" + xss "^1.0.15" + +mdast-util-definitions@^5.0.0: + version "5.1.2" + resolved "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz#9910abb60ac5d7115d6819b57ae0bcef07a3f7a7" + integrity sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + unist-util-visit "^4.0.0" + +mdast-util-find-and-replace@^2.0.0: + version "2.2.2" + resolved "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz#cc2b774f7f3630da4bd592f61966fecade8b99b1" + integrity sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw== + dependencies: + "@types/mdast" "^3.0.0" + escape-string-regexp "^5.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.0.0" + +mdast-util-from-markdown@^1.0.0: + version "1.3.1" + resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" + integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + +mdast-util-gfm-autolink-literal@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz#67a13abe813d7eba350453a5333ae1bc0ec05c06" + integrity sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA== + dependencies: + "@types/mdast" "^3.0.0" + ccount "^2.0.0" + mdast-util-find-and-replace "^2.0.0" + micromark-util-character "^1.0.0" + +mdast-util-gfm-footnote@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz#ce5e49b639c44de68d5bf5399877a14d5020424e" + integrity sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + micromark-util-normalize-identifier "^1.0.0" + +mdast-util-gfm-strikethrough@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz#5470eb105b483f7746b8805b9b989342085795b7" + integrity sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-table@^1.0.0: + version "1.0.7" + resolved "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz#3552153a146379f0f9c4c1101b071d70bbed1a46" + integrity sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg== + dependencies: + "@types/mdast" "^3.0.0" + markdown-table "^3.0.0" + mdast-util-from-markdown "^1.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm-task-list-item@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz#b280fcf3b7be6fd0cc012bbe67a59831eb34097b" + integrity sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-to-markdown "^1.3.0" + +mdast-util-gfm@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz#e92f4d8717d74bdba6de57ed21cc8b9552e2d0b6" + integrity sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg== + dependencies: + mdast-util-from-markdown "^1.0.0" + mdast-util-gfm-autolink-literal "^1.0.0" + mdast-util-gfm-footnote "^1.0.0" + mdast-util-gfm-strikethrough "^1.0.0" + mdast-util-gfm-table "^1.0.0" + mdast-util-gfm-task-list-item "^1.0.0" + mdast-util-to-markdown "^1.0.0" + +mdast-util-phrasing@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz#c7c21d0d435d7fb90956038f02e8702781f95463" + integrity sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg== + dependencies: + "@types/mdast" "^3.0.0" + unist-util-is "^5.0.0" + +mdast-util-to-hast@^12.1.0: + version "12.3.0" + resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz#045d2825fb04374e59970f5b3f279b5700f6fb49" + integrity sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-definitions "^5.0.0" + micromark-util-sanitize-uri "^1.1.0" + trim-lines "^3.0.0" + unist-util-generated "^2.0.0" + unist-util-position "^4.0.0" + unist-util-visit "^4.0.0" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + version "1.5.0" + resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz#c13343cb3fc98621911d33b5cd42e7d0731171c6" + integrity sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + longest-streak "^3.0.0" + mdast-util-phrasing "^3.0.0" + mdast-util-to-string "^3.0.0" + micromark-util-decode-string "^1.0.0" + unist-util-visit "^4.0.0" + zwitch "^2.0.0" + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + dependencies: + "@types/mdast" "^3.0.0" + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +medium-zoom@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.1.0.tgz#6efb6bbda861a02064ee71a2617a8dc4381ecc71" + integrity sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ== + +merge-descriptors@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" + integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-extension-gfm-autolink-literal@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz#5853f0e579bbd8ef9e39a7c0f0f27c5a063a66e7" + integrity sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-extension-gfm-footnote@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz#05e13034d68f95ca53c99679040bc88a6f92fe2e" + integrity sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q== + dependencies: + micromark-core-commonmark "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-strikethrough@^1.0.0: + version "1.0.7" + resolved "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz#c8212c9a616fa3bf47cb5c711da77f4fdc2f80af" + integrity sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-table@^1.0.0: + version "1.0.7" + resolved "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz#dcb46074b0c6254c3fc9cc1f6f5002c162968008" + integrity sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm-tagfilter@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz#aa7c4dd92dabbcb80f313ebaaa8eb3dac05f13a7" + integrity sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g== + dependencies: + micromark-util-types "^1.0.0" + +micromark-extension-gfm-task-list-item@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz#b52ce498dc4c69b6a9975abafc18f275b9dde9f4" + integrity sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-extension-gfm@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz#e517e8579949a5024a493e49204e884aa74f5acf" + integrity sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ== + dependencies: + micromark-extension-gfm-autolink-literal "^1.0.0" + micromark-extension-gfm-footnote "^1.0.0" + micromark-extension-gfm-strikethrough "^1.0.0" + micromark-extension-gfm-table "^1.0.0" + micromark-extension-gfm-tagfilter "^1.0.0" + micromark-extension-gfm-task-list-item "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-destination@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" + integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" + integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" + integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-whitespace@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" + integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" + integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" + integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" + integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" + integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" + integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" + integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== + +micromark-util-html-tag-name@^1.0.0: + version "1.2.0" + resolved "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" + integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== + +micromark-util-normalize-identifier@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" + integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" + integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0, micromark-util-sanitize-uri@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" + integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" + integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + +micromark@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" + integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.5, mime@^2.5.2: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.1.0, minimatch@^5.1.1: + version "5.1.6" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.1.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mitt@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + +"mkdirp@>=0.5 0", mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@^2.0.0, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +nanoid@^5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz#f7597f9d9054eb4da9548cdd53ca70f1790e87de" + integrity sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw== + +nanopop@^2.1.0: + version "2.4.2" + resolved "https://registry.npmjs.org/nanopop/-/nanopop-2.4.2.tgz#b55482135be7e64f2d0f5aa8ef51a58104ac7b13" + integrity sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-hex@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/node-hex/-/node-hex-1.0.1.tgz#606208e91f9c02b9b81531b692b9f1da4860fb24" + integrity sha512-iwpZdvW6Umz12ICmu9IYPRxg0tOLGmU3Tq2tKetejCj3oZd7b2nUXwP3a7QA5M9glWy8wlPS1G3RwM/CdsUbdQ== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +open@^8.4.0: + version "8.4.2" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +os-name@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz#1b379f64835af7c5a7f498b357cb95215c159edf" + integrity sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew== + dependencies: + osx-release "^1.0.0" + win-release "^1.0.0" + +osx-release@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz#f217911a28136949af1bf9308b241e2737d3cd6c" + integrity sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A== + dependencies: + minimist "^1.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.11.1: + version "1.11.1" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2" + integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== + dependencies: + lru-cache "^10.2.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause-stream@~0.0.11: + version "0.0.11" + resolved "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== + dependencies: + through "~2.3" + +pdfast@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/pdfast/-/pdfast-0.2.0.tgz#8cbc556e1bf2522177787c0de2e0d4373ba885c9" + integrity sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinia@^2.0.21: + version "2.3.1" + resolved "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz#54c476675b72f5abcfafa24a7582531ea8c23d94" + integrity sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug== + dependencies: + "@vue/devtools-api" "^6.6.3" + vue-demi "^0.14.10" + +pirates@^4.0.1: + version "4.0.7" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +platform@^1.3.1: + version "1.3.6" + resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz#48b4ce983164b209c2d45a107adb31f473a6e7a7" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-js@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz#4c2d22ab5f20b9cb61e2c5c5915950784d068131" + integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== + dependencies: + postcss-selector-parser "^6.1.1" + +postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.1.1, postcss-selector-parser@^6.1.2: + version "6.1.2" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.4.18, postcss@^8.4.39, postcss@^8.4.44, postcss@^8.4.47, postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.7.1: + version "2.8.8" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +property-information@^6.0.0: + version "6.5.0" + resolved "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" + integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pump@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" + integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +qrcode@^1.5.4: + version "1.5.4" + resolved "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz#5cb81d86eb57c675febb08cf007fff963405da88" + integrity sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg== + dependencies: + dijkstrajs "^1.0.1" + pngjs "^5.0.0" + yargs "^15.3.1" + +qs@^6.4.0: + version "6.14.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + dependencies: + side-channel "^1.1.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quickselect@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" + integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== + +rbush@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" + integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== + dependencies: + quickselect "^2.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdir-glob@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz#c3d831f51f5e7bfa62fa2ffbe4b508c640f09584" + integrity sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA== + dependencies: + minimatch "^5.1.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.13.10: + version "0.13.11" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +rehype-highlight@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/rehype-highlight/-/rehype-highlight-6.0.0.tgz#8097219d8813b51f4c2b6d92db27dac6cbc9a641" + integrity sha512-q7UtlFicLhetp7K48ZgZiJgchYscMma7XjzX7t23bqEJF8m6/s+viXQEe4oHjrATTIZpX7RG8CKD7BlNZoh9gw== + dependencies: + "@types/hast" "^2.0.0" + hast-util-to-text "^3.0.0" + lowlight "^2.0.0" + unified "^10.0.0" + unist-util-visit "^4.0.0" + +rehype-raw@^6.1.1: + version "6.1.1" + resolved "https://registry.npmjs.org/rehype-raw/-/rehype-raw-6.1.1.tgz#81bbef3793bd7abacc6bf8335879d1b6c868c9d4" + integrity sha512-d6AKtisSRtDRX4aSPsJGTfnzrX2ZkHQLE5kiUuGOeEoLpbEulFF4hj0mLPbsa+7vmguDKOVVEQdHKDSwoaIDsQ== + dependencies: + "@types/hast" "^2.0.0" + hast-util-raw "^7.2.0" + unified "^10.0.0" + +rehype-sanitize@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/rehype-sanitize/-/rehype-sanitize-5.0.1.tgz#dac01a7417bdd329260c74c74449697b4be5eb56" + integrity sha512-da/jIOjq8eYt/1r9GN6GwxIR3gde7OZ+WV8pheu1tL8K0D9KxM2AyMh+UEfke+FfdM3PvGHeYJU0Td5OWa7L5A== + dependencies: + "@types/hast" "^2.0.0" + hast-util-sanitize "^4.0.0" + unified "^10.0.0" + +rehype-stringify@^9.0.3: + version "9.0.4" + resolved "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.4.tgz#31dbb9de6f5034c6964760a1b1083218059c4343" + integrity sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ== + dependencies: + "@types/hast" "^2.0.0" + hast-util-to-html "^8.0.0" + unified "^10.0.0" + +remark-gfm@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz#0b180f095e3036545e9dddac0e8df3fa5cfee54f" + integrity sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-gfm "^2.0.0" + micromark-extension-gfm "^2.0.0" + unified "^10.0.0" + +remark-parse@^10.0.1: + version "10.0.2" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz#ca241fde8751c2158933f031a4e3efbaeb8bc262" + integrity sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw== + dependencies: + "@types/mdast" "^3.0.0" + mdast-util-from-markdown "^1.0.0" + unified "^10.0.0" + +remark-rehype@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz#32dc99d2034c27ecaf2e0150d22a6dcccd9a6279" + integrity sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw== + dependencies: + "@types/hast" "^2.0.0" + "@types/mdast" "^3.0.0" + mdast-util-to-hast "^12.1.0" + unified "^10.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resize-detector@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/resize-detector/-/resize-detector-0.3.0.tgz#fe495112e184695500a8f51e0389f15774cb1cfc" + integrity sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ== + +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.22.1, resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rimraf@2: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup-plugin-visualizer@^5.9.2: + version "5.14.0" + resolved "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz#be82d43fb3c644e396e2d50ac8a53d354022d57c" + integrity sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA== + dependencies: + open "^8.4.0" + picomatch "^4.0.2" + source-map "^0.7.4" + yargs "^17.5.1" + +rollup@^2.79.1: + version "2.79.2" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" + integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rw@1: + version "1.3.3" + resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@>=0.6.0, sax@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scroll-into-view-if-needed@^2.2.25: + version "2.2.31" + resolved "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587" + integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== + dependencies: + compute-scroll-into-view "^1.0.20" + +sdk-base@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/sdk-base/-/sdk-base-2.0.1.tgz#ba40289e8bdf272ed11dd9ea97eaf98e036d24c6" + integrity sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q== + dependencies: + get-ready "~1.0.0" + +select-files@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/select-files/-/select-files-1.0.1.tgz#974991a69c5dba26cfa57dcbc6d27f0917741acb" + integrity sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ== + +semver@^5.0.1, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^7.3.6, semver@^7.3.7, semver@^7.6.3: + version "7.7.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +setimmediate@^1.0.5, setimmediate@~1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +shallow-equal@^1.0.0: + version "1.2.1" + resolved "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +socket.io-client@^4.7.1: + version "4.8.1" + resolved "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz#1941eca135a5490b94281d0323fe2a35f6f291cb" + integrity sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.2" + engine.io-client "~6.6.1" + socket.io-parser "~4.2.4" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +sortablejs@1.14.0: + version "1.14.0" + resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8" + integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w== + +sortablejs@^1.15.0: + version "1.15.6" + resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.6.tgz#ff93699493f5b8ab8d828f933227b4988df1d393" + integrity sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A== + +source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.6" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== + +source-map@~0.1.34: + version "0.1.43" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + integrity sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ== + dependencies: + amdefine ">=0.0.4" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" + integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== + +ssf@~0.11.2: + version "0.11.2" + resolved "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c" + integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g== + dependencies: + frac "~1.1.2" + +statuses@^1.3.1: + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-http@2.8.2: + version "2.8.2" + resolved "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz#4126e8c6b107004465918aa2fc35549e77402c87" + integrity sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-wormhole@^1.0.4: + version "1.1.0" + resolved "https://registry.npmjs.org/stream-wormhole/-/stream-wormhole-1.1.0.tgz#300aff46ced553cfec642a05251885417693c33d" + integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" + integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== + dependencies: + character-entities-html4 "^2.0.0" + character-entities-legacy "^3.0.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +style-mod@^4.0.0, style-mod@^4.1.0: + version "4.1.2" + resolved "https://registry.npmjs.org/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67" + integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw== + +sucrase@^3.35.0: + version "3.35.0" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== + 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" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-path-parser@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/svg-path-parser/-/svg-path-parser-1.1.0.tgz#e16b4b39df0d2b0d39e8347db79fdda1453a6046" + integrity sha512-jGCUqcQyXpfe38R7RFfhrMyfXcBmpMNJI/B+4CE9/Unkh98UporAc461GTthv+TVDuZXsBx7/WiwJb1Oh4tt4A== + +systemjs@^6.13.0: + version "6.15.1" + resolved "https://registry.npmjs.org/systemjs/-/systemjs-6.15.1.tgz#74175b6810e27a79e1177d21db5f0e3057118cea" + integrity sha512-Nk8c4lXvMB98MtbmjX7JwJRgJOL8fluecYCfCeYBznwmpOs8Bf15hLM6z4z71EDAhQVrQrI+wt1aLWSXZq+hXA== + +tailwindcss@^3.4.6: + version "3.4.17" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz#ae8406c0f96696a631c790768ff319d46d5e5a63" + integrity sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og== + dependencies: + "@alloc/quick-lru" "^5.2.0" + arg "^5.0.2" + chokidar "^3.6.0" + didyoumean "^1.2.2" + dlv "^1.1.3" + fast-glob "^3.3.2" + glob-parent "^6.0.2" + is-glob "^4.0.3" + jiti "^1.21.6" + lilconfig "^3.1.3" + micromatch "^4.0.8" + normalize-path "^3.0.0" + object-hash "^3.0.0" + picocolors "^1.1.1" + postcss "^8.4.47" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.2" + postcss-nested "^6.2.0" + postcss-selector-parser "^6.1.2" + resolve "^1.22.8" + sucrase "^3.35.0" + +tar-stream@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + +terser@^5.15.0: + version "5.43.1" + resolved "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.14.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + +through@~2.3: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinymce@^5.10.5: + version "5.10.9" + resolved "https://registry.npmjs.org/tinymce/-/tinymce-5.10.9.tgz#1dfacb3231c71a688d90ff44a0b3f2e91b3b9edf" + integrity sha512-5bkrors87X9LhYX2xq8GgPHrIgJYHl87YNs+kBcjQ5I3CiUgzo/vFcGvT3MZQ9QHsEeYMhYO6a5CLGGffR8hMg== + +tippy.js@^6.3.7: + version "6.3.7" + resolved "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz#8ccfb651d642010ed9a32ff29b0e9e19c5b8c61c" + integrity sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ== + dependencies: + "@popperjs/core" "^2.9.0" + +tmp@^0.2.0: + version "0.2.5" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz#b06bcd23f0f3c8357b426891726d16015abfd8f8" + integrity sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow== + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +trough@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz#94a60bd6bd375c152c1df911a4b11d5b0256f50f" + integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw== + +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + +tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.5.3: + version "2.8.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type@^2.7.2: + version "2.7.3" + resolved "https://registry.npmjs.org/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + +typescript@^4.8.2: + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +uc.micro@^2.0.0, uc.micro@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" + integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +undici-types@~7.10.0: + version "7.10.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" + integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== + +unescape@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz#956e430f61cad8a4d57d82c518f5e6cc5d0dda96" + integrity sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ== + dependencies: + extend-shallow "^2.0.1" + +unidragger@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/unidragger/-/unidragger-2.4.0.tgz#4cd7e564317af0ef42632d5984a82d4ae6314d8d" + integrity sha512-MueZK2oXuGE6OAlGKIrSXK2zCq+8yb1QUZgqyTDCSJzvwYL0g2Llrad+TtoQTYxtFnNyxxSw0IMnKNIgEMia1w== + dependencies: + unipointer "^2.4.0" + +unified@^10.0.0, unified@^10.1.2: + version "10.1.2" + resolved "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" + integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== + dependencies: + "@types/unist" "^2.0.0" + bail "^2.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^4.0.0" + trough "^2.0.0" + vfile "^5.0.0" + +unipointer@^2.4.0: + version "2.4.0" + resolved "https://registry.npmjs.org/unipointer/-/unipointer-2.4.0.tgz#ac7316aff6170ff87a4b008e55e842fb4bf13181" + integrity sha512-VjzDLPjGK7aYpQKH7bnDZS8X4axF5AFU/LQi+NQe1oyEHfaz6lWKhaQ7n4o7vJ1iJ4i2T0quCIfrQM139p05Sw== + dependencies: + ev-emitter "^1.0.1" + +unist-util-find-after@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz#80c69c92b0504033638ce11973f4135f2c822e2d" + integrity sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-generated@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz#e37c50af35d3ed185ac6ceacb6ca0afb28a85cae" + integrity sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A== + +unist-util-is@^5.0.0: + version "5.2.1" + resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" + integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-position@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037" + integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + dependencies: + "@types/unist" "^2.0.0" + +unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: + version "5.1.3" + resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" + integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + +unist-util-visit@^4.0.0, unist-util-visit@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" + integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-is "^5.0.0" + unist-util-visit-parents "^5.1.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unplugin-vue-components@^0.22.4: + version "0.22.12" + resolved "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz#39013f77be72d32df9d6ca1599e592a484015612" + integrity sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA== + dependencies: + "@antfu/utils" "^0.7.2" + "@rollup/pluginutils" "^5.0.2" + chokidar "^3.5.3" + debug "^4.3.4" + fast-glob "^3.2.12" + local-pkg "^0.4.2" + magic-string "^0.27.0" + minimatch "^5.1.1" + resolve "^1.22.1" + unplugin "^1.0.1" + +unplugin@^1.0.1: + version "1.16.1" + resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.16.1.tgz#a844d2e3c3b14a4ac2945c42be80409321b61199" + integrity sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w== + dependencies: + acorn "^8.14.0" + webpack-virtual-modules "^0.6.2" + +unzipper@^0.10.11: + version "0.10.14" + resolved "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz#d2b33c977714da0fbc0f82774ad35470a7c962b1" + integrity sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "^1.0.12" + graceful-fs "^4.2.2" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urllib@^2.44.0: + version "2.44.0" + resolved "https://registry.npmjs.org/urllib/-/urllib-2.44.0.tgz#0da4b037550bdc03eb9a408de498fb4025ddc0b4" + integrity sha512-zRCJqdfYllRDA9bXUtx+vccyRqtJPKsw85f44zH7zPD28PIvjMqIgw9VwoTLV7xTBWZsbebUFVHU5ghQcWku2A== + dependencies: + any-promise "^1.3.0" + content-type "^1.0.2" + default-user-agent "^1.0.0" + digest-header "^1.0.0" + ee-first "~1.1.1" + formstream "^1.1.0" + humanize-ms "^1.2.0" + iconv-lite "^0.6.3" + pump "^3.0.0" + qs "^6.4.0" + statuses "^1.3.1" + utility "^1.16.1" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utility@^1.16.1, utility@^1.18.0: + version "1.18.0" + resolved "https://registry.npmjs.org/utility/-/utility-1.18.0.tgz#af55f62e6d5a272e0cb02b0ab3e7f37c46435f36" + integrity sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA== + dependencies: + copy-to "^2.0.1" + escape-html "^1.0.3" + mkdirp "^0.5.1" + mz "^2.7.0" + unescape "^1.0.1" + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + +vfile-location@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz#69df82fb9ef0a38d0d02b90dd84620e120050dd0" + integrity sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw== + dependencies: + "@types/unist" "^2.0.0" + vfile "^5.0.0" + +vfile-message@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" + integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== + dependencies: + "@types/unist" "^2.0.0" + unist-util-stringify-position "^3.0.0" + +vfile@^5.0.0, vfile@^5.3.7: + version "5.3.7" + resolved "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" + integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== + dependencies: + "@types/unist" "^2.0.0" + is-buffer "^2.0.0" + unist-util-stringify-position "^3.0.0" + vfile-message "^3.0.0" + +vite-plugin-compression@^0.5.1: + version "0.5.1" + resolved "https://registry.npmjs.org/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz#a75b0d8f48357ebb377b65016da9f20885ef39b6" + integrity sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg== + dependencies: + chalk "^4.1.2" + debug "^4.3.3" + fs-extra "^10.0.0" + +vite@^3.0.9: + version "3.2.11" + resolved "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz#8d1c8e05ef2f24b04c8693f56d3e01fe8835e6d7" + integrity sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ== + dependencies: + esbuild "^0.15.9" + postcss "^8.4.18" + resolve "^1.22.1" + rollup "^2.79.1" + optionalDependencies: + fsevents "~2.3.2" + +vue-demi@^0.13.11: + version "0.13.11" + resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99" + integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== + +vue-demi@^0.14.10: + version "0.14.10" + resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04" + integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== + +vue-echarts@^6.2.3: + version "6.7.3" + resolved "https://registry.npmjs.org/vue-echarts/-/vue-echarts-6.7.3.tgz#30efafc51a4a9de1b8117d3b63e74b0c761ff3ba" + integrity sha512-vXLKpALFjbPphW9IfQPOVfb1KjGZ/f8qa/FZHi9lZIWzAnQC1DgnmEK3pJgEkyo6EP7UnX6Bv/V3Ke7p+qCNXA== + dependencies: + resize-detector "^0.3.0" + vue-demi "^0.13.11" + +vue-eslint-parser@^9.0.3, vue-eslint-parser@^9.4.3: + version "9.4.3" + resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz#9b04b22c71401f1e8bca9be7c3e3416a4bde76a8" + integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== + 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" + +vue-i18n@^9.2.2: + version "9.14.5" + resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.5.tgz#72fbf4384b83a1c59ec9e01ff5d30224bd9150cf" + integrity sha512-0jQ9Em3ymWngyiIkj0+c/k7WgaPO+TNzjKSNq9BvBQaKJECqn9cd9fL4tkDhB5G1QBskGl9YxxbDAhgbFtpe2g== + dependencies: + "@intlify/core-base" "9.14.5" + "@intlify/shared" "9.14.5" + "@vue/devtools-api" "^6.5.0" + +vue-router@^4.1.5: + version "4.5.1" + resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz#47bffe2d3a5479d2886a9a244547a853aa0abf69" + integrity sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw== + dependencies: + "@vue/devtools-api" "^6.6.4" + +vue-tsc@^0.40.5: + version "0.40.13" + resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-0.40.13.tgz#0a193014f7cadb47459cf0809ce3953b74a1348c" + integrity sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA== + dependencies: + "@volar/vue-language-core" "0.40.13" + "@volar/vue-typescript" "0.40.13" + +vue-types@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/vue-types/-/vue-types-3.0.2.tgz#ec16e05d412c038262fc1efa4ceb9647e7fb601d" + integrity sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw== + dependencies: + is-plain-object "3.0.1" + +vue@3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/vue/-/vue-3.5.3.tgz#1f621023b123341ab5f427e2a6d7320d0e47d72b" + integrity sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q== + dependencies: + "@vue/compiler-dom" "3.5.3" + "@vue/compiler-sfc" "3.5.3" + "@vue/runtime-dom" "3.5.3" + "@vue/server-renderer" "3.5.3" + "@vue/shared" "3.5.3" + +vuedraggable@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz#edece68adb8a4d9e06accff9dfc9040e66852270" + integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww== + dependencies: + sortablejs "1.14.0" + +w3c-keyname@^2.2.4: + version "2.2.8" + resolved "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== + +warning@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + +webpack-virtual-modules@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8" + integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +win-release@^1.0.0: + version "1.1.1" + resolved "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz#5fa55e02be7ca934edfc12665632e849b72e5209" + integrity sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw== + dependencies: + semver "^5.0.1" + +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word-count@^0.2.2: + version "0.2.2" + resolved "https://registry.npmjs.org/word-count/-/word-count-0.2.2.tgz#699192fca6829fe936d41cb0d95db9248c570451" + integrity sha512-tPRTbQ+nTCPY3F0z1f/y0PX22ScE6l/4/8j9KqA3h77JhlZ/w6cbVS8LIO5Pq/aV96SWBOoiE2IEgzxF0Cn+kA== + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/word/-/word-0.3.0.tgz#8542157e4f8e849f4a363a288992d47612db9961" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +xgplayer-subtitles@1.0.19: + version "1.0.19" + resolved "https://registry.npmjs.org/xgplayer-subtitles/-/xgplayer-subtitles-1.0.19.tgz#8359a180211282628a68cfb59c9d2b14dc40db40" + integrity sha512-ITvMTgnHD0uytWUYYoS3Qtz10T0o8W0YW3J7/GbfipeJQs4IiFyzhnvTXYB2KnZ6wRXLO6LrNhK9esY9iISJWA== + dependencies: + eventemitter3 "^4.0.7" + generate-source-map "0.0.5" + +xgplayer@^2.31.7: + version "2.32.6" + resolved "https://registry.npmjs.org/xgplayer/-/xgplayer-2.32.6.tgz#ff4ae7739fd0ff7c781078c8a7d24a20cd2951af" + integrity sha512-ESwYYcG8SQciPaN43tZkN3r0dS/jQ5RtyxyGbxn2+qcKgZQ861M899xq8Cab/z6qVVX+/4eIsxDbm3lfYGYzvA== + dependencies: + chalk "^2.3.2" + commander "^2.15.1" + danmu.js "^1.1.2" + downloadjs "1.4.7" + draggabilly "^2.2.0" + event-emitter "^0.3.5" + fs-extra "^5.0.0" + xgplayer-subtitles "1.0.19" + +xlsx@^0.18.5: + version "0.18.5" + resolved "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0" + integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ== + dependencies: + adler-32 "~1.3.0" + cfb "~1.2.1" + codepage "~1.15.0" + crc-32 "~1.2.1" + ssf "~0.11.2" + wmf "~1.0.1" + word "~0.3.0" + +xml-js@^1.6.8: + version "1.6.11" + resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz#927d2f6947f7f1c19a316dd8eea3614e8b18f8e9" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xml2js@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz#dd0b630083aa09c161e25a4d0901e2b2a929b499" + integrity sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" + integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xmlhttprequest-ssl@~2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz#e9e8023b3f29ef34b97a859f584c5e6c61418e23" + integrity sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ== + +xss@^1.0.15: + version "1.0.15" + resolved "https://registry.npmjs.org/xss/-/xss-1.0.15.tgz#96a0e13886f0661063028b410ed1b18670f4e59a" + integrity sha512-FVdlVVC67WOIPvfOwhoMETV72f6GbW7aOabBC3WxN/oUdoEMDyLz4OgRv5/gck2ZeNqEQu+Tb0kloovXOfpYVg== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaml@^2.3.4: + version "2.8.1" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz#1870aa02b631f7e8328b93f8bc574fac5d6c4d79" + integrity sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^17.5.1: + version "17.7.2" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.1.1" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zip-stream@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz#1337fe974dbaffd2fa9a1ba09662a66932bd7135" + integrity sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ== + dependencies: + archiver-utils "^3.0.4" + compress-commons "^4.1.2" + readable-stream "^3.6.0" + +zrender@5.6.1: + version "5.6.1" + resolved "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz#e08d57ecf4acac708c4fcb7481eb201df7f10a6b" + integrity sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag== + dependencies: + tslib "2.3.0" + +zwitch@^2.0.0, zwitch@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" + integrity sha512-bXE4cR/kVZhKZX/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