From 469af7f7f97afed893d87bd70afcdad1295bdaa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Fri, 25 Jul 2025 13:03:01 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E6=95=B4=E7=90=86=E4=BB=93?= =?UTF-8?q?=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .editorconfig | 14 + .env | 2 + .env.development | 2 + .env.production | 1 + .eslintignore | 4 + .eslintrc.js | 78 + .gitignore | 29 + .prettierignore | 9 + EDITOR_SWITCH_DEMO.md | 151 + MARKDOWN_FILE_SELECTOR_DEMO.md | 209 + README.md | 266 + SELECT_FILE_DRAG_DEMO.md | 266 + components.d.ts | 2 + index.html | 67 + package-lock.json | 18920 ++++++++++++++++ package.json | 89 + postcss.config.js | 6 + prettier.config.js | 19 + public/assets/bg-2.jpeg | Bin 0 -> 406999 bytes public/assets/logo.svg | 15 + public/favicon.ico | Bin 0 -> 303 bytes public/favicon3.ico | Bin 0 -> 268 bytes public/json/china-provinces.geo.json | 1 + public/json/industry-data.json | 1 + public/json/regions-data.json | 1 + public/logo.png | Bin 0 -> 5238 bytes public/logo.svg | 1 + 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 | 20 + 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 | 63 + src/api/cms/cmsAdRecord/index.ts | 106 + src/api/cms/cmsAdRecord/model/index.ts | 35 + src/api/cms/cmsArticle/index.ts | 147 + src/api/cms/cmsArticle/model/index.ts | 129 + 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/cmsComponents/index.ts | 106 + src/api/cms/cmsComponents/model/index.ts | 43 + src/api/cms/cmsDesign/index.ts | 106 + src/api/cms/cmsDesign/model/index.ts | 63 + src/api/cms/cmsDesignCollect/index.ts | 106 + src/api/cms/cmsDesignCollect/model/index.ts | 39 + src/api/cms/cmsDesignRecord/index.ts | 106 + src/api/cms/cmsDesignRecord/model/index.ts | 51 + src/api/cms/cmsDesignSignUp/index.ts | 106 + src/api/cms/cmsDesignSignUp/model/index.ts | 41 + src/api/cms/cmsDocs/index.ts | 106 + src/api/cms/cmsDocs/model/index.ts | 45 + src/api/cms/cmsDocsBook/index.ts | 106 + src/api/cms/cmsDocsBook/model/index.ts | 37 + src/api/cms/cmsDocsContent/index.ts | 106 + src/api/cms/cmsDocsContent/model/index.ts | 25 + 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/cmsMp/index.ts | 106 + src/api/cms/cmsMp/model/index.ts | 61 + src/api/cms/cmsMpAd/index.ts | 106 + src/api/cms/cmsMpAd/model/index.ts | 47 + src/api/cms/cmsMpField/index.ts | 106 + src/api/cms/cmsMpField/model/index.ts | 35 + src/api/cms/cmsMpMenu/index.ts | 106 + src/api/cms/cmsMpMenu/model/index.ts | 79 + src/api/cms/cmsMpOfficialMenu/index.ts | 106 + src/api/cms/cmsMpOfficialMenu/model/index.ts | 35 + src/api/cms/cmsMpPages/index.ts | 106 + src/api/cms/cmsMpPages/model/index.ts | 49 + src/api/cms/cmsNavigation/index.ts | 121 + 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/cmsProduct/index.ts | 116 + src/api/cms/cmsProduct/model/index.ts | 98 + src/api/cms/cmsProductComment/index.ts | 106 + src/api/cms/cmsProductComment/model/index.ts | 37 + src/api/cms/cmsProductParameter/index.ts | 106 + .../cms/cmsProductParameter/model/index.ts | 33 + src/api/cms/cmsProductRecord/index.ts | 106 + src/api/cms/cmsProductRecord/model/index.ts | 31 + src/api/cms/cmsProductSku/index.ts | 106 + src/api/cms/cmsProductSku/model/index.ts | 49 + src/api/cms/cmsProductSpec/index.ts | 106 + src/api/cms/cmsProductSpec/model/index.ts | 35 + src/api/cms/cmsProductSpecValue/index.ts | 106 + .../cms/cmsProductSpecValue/model/index.ts | 29 + src/api/cms/cmsProductUrl/index.ts | 106 + src/api/cms/cmsProductUrl/model/index.ts | 41 + src/api/cms/cmsSpec/index.ts | 106 + src/api/cms/cmsSpec/model/index.ts | 35 + src/api/cms/cmsSpecValue/index.ts | 106 + src/api/cms/cmsSpecValue/model/index.ts | 29 + 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 | 132 + src/api/cms/cmsWebsiteField/index.ts | 139 + src/api/cms/cmsWebsiteField/model/index.ts | 59 + 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/cms/mpOfficialMenu/index.ts | 106 + src/api/cms/mpOfficialMenu/model/index.ts | 37 + src/api/hjm/hjmBxLog/index.ts | 106 + src/api/hjm/hjmBxLog/model/index.ts | 45 + src/api/hjm/hjmCar/index.ts | 135 + src/api/hjm/hjmCar/model/index.ts | 92 + src/api/hjm/hjmChoices/index.ts | 106 + src/api/hjm/hjmChoices/model/index.ts | 37 + src/api/hjm/hjmCourses/index.ts | 106 + src/api/hjm/hjmCourses/model/index.ts | 41 + src/api/hjm/hjmExamLog/index.ts | 106 + src/api/hjm/hjmExamLog/model/index.ts | 38 + src/api/hjm/hjmFence/index.ts | 106 + src/api/hjm/hjmFence/model/index.ts | 44 + src/api/hjm/hjmGpsLog/index.ts | 106 + src/api/hjm/hjmGpsLog/model/index.ts | 34 + src/api/hjm/hjmQuestions/index.ts | 106 + src/api/hjm/hjmQuestions/model/index.ts | 55 + src/api/hjm/hjmViolation/index.ts | 106 + src/api/hjm/hjmViolation/model/index.ts | 43 + src/api/index.ts | 61 + src/api/layout/index.ts | 237 + src/api/layout/model/index.ts | 74 + src/api/passport/login/index.ts | 120 + src/api/passport/login/model/index.ts | 46 + src/api/shop/shopCommissionRole/index.ts | 105 + .../shop/shopCommissionRole/model/index.ts | 35 + src/api/shop/shopExpress/index.ts | 106 + src/api/shop/shopExpress/model/index.ts | 35 + src/api/shop/shopExpressTemplate/index.ts | 106 + .../shop/shopExpressTemplate/model/index.ts | 41 + .../shop/shopExpressTemplateDetail/index.ts | 106 + .../shopExpressTemplateDetail/model/index.ts | 45 + 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/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 | 105 + src/api/shop/shopMerchant/model/index.ts | 90 + 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 | 120 + src/api/shop/shopOrder/model/index.ts | 157 + 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/shopUserAddress/index.ts | 106 + src/api/shop/shopUserAddress/model/index.ts | 49 + src/api/shop/shopUserReferee/index.ts | 106 + src/api/shop/shopUserReferee/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 | 106 + 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 | 156 + 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 | 178 + 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 | 253 + src/api/system/user/model/count.ts | 15 + src/api/system/user/model/index.ts | 158 + 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/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/PayMethod/index.vue | 76 + src/components/QrCode/index.vue | 41 + 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 + .../SelectUser/components/select-data.vue | 151 + .../SelectUser/components/select-user.vue | 138 + src/components/SelectUser/index.vue | 64 + .../components/select-data.vue | 146 + src/components/SelectUserByButton/index.vue | 53 + .../components/select-data.vue | 169 + src/components/SelectWebsiteField/index.vue | 62 + 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/config/menu.ts | 119 + src/config/setting.ts | 79 + 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 | 306 + 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 | 368 + src/layout/menu-icons.ts | 153 + src/main.ts | 16 + src/router/index.ts | 68 + src/router/routes.ts | 103 + src/shims-vue.d.ts | 6 + src/store/index.ts | 6 + src/store/modules/chat.ts | 134 + src/store/modules/params.ts | 40 + src/store/modules/setting.ts | 25 + src/store/modules/tenant.ts | 70 + src/store/modules/theme.ts | 698 + src/store/modules/user.ts | 136 + src/styles/as-needed.less | 6 + src/styles/component.less | 2 + 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/common.ts | 565 + src/utils/document-title-util.ts | 71 + src/utils/domain.ts | 144 + src/utils/editor.ts | 47 + src/utils/merchant.ts | 42 + src/utils/on-size-change.ts | 18 + src/utils/oss.js | 43 + src/utils/page-tab-util.ts | 254 + src/utils/permission.ts | 119 + src/utils/plug-uitl.ts | 53 + src/utils/request.ts | 98 + src/utils/shop.ts | 90 + src/utils/token-util.ts | 71 + src/utils/use-echarts.ts | 76 + src/utils/use-form-data.ts | 29 + src/utils/use-search.ts | 27 + .../bsyxClass/components/bszxClassEdit.vue | 199 + .../bsyx/bsyxClass/components/search.vue | 98 + src/views/bsyx/bsyxClass/index.vue | 237 + .../bsyxGrade/components/bszxGradeEdit.vue | 164 + .../bsyx/bsyxGrade/components/search.vue | 52 + src/views/bsyx/bsyxGrade/index.vue | 230 + .../bsyx/bsyxOrder/components/bszxPayEdit.vue | 249 + .../bsyx/bsyxOrder/components/orderInfo.vue | 566 + .../bsyx/bsyxOrder/components/search.vue | 204 + src/views/bsyx/bsyxOrder/index.vue | 307 + .../bsyx/bsyxPay/components/bszxPayEdit.vue | 249 + src/views/bsyx/bsyxPay/components/search.vue | 230 + src/views/bsyx/bsyxPay/index.vue | 336 + .../components/bszxPayRankingEdit.vue | 220 + .../bsyx/bsyxPayRanking/components/search.vue | 69 + src/views/bsyx/bsyxPayRanking/index.vue | 223 + src/views/bsyx/extra.vue | 60 + .../bszx/bszxBm/components/bszxBmEdit.vue | 283 + src/views/bszx/bszxBm/components/search.vue | 224 + src/views/bszx/bszxBm/index.vue | 306 + .../bszxBranch/components/bszxBranchEdit.vue | 179 + .../bszx/bszxBranch/components/search.vue | 42 + src/views/bszx/bszxBranch/index.vue | 218 + .../bszxClass/components/bszxClassEdit.vue | 205 + .../bszx/bszxClass/components/search.vue | 102 + src/views/bszx/bszxClass/index.vue | 244 + .../bszxGrade/components/bszxGradeEdit.vue | 170 + .../bszx/bszxGrade/components/search.vue | 56 + src/views/bszx/bszxGrade/index.vue | 237 + .../bszx/bszxOrder/components/bszxPayEdit.vue | 249 + .../bszx/bszxOrder/components/orderInfo.vue | 566 + .../bszx/bszxOrder/components/search.vue | 204 + src/views/bszx/bszxOrder/index.vue | 307 + .../bszx/bszxPay/components/bszxPayEdit.vue | 249 + src/views/bszx/bszxPay/components/search.vue | 235 + src/views/bszx/bszxPay/index.vue | 336 + .../bszxPayCert/components/appBszxPayEdit.vue | 270 + .../bszx/bszxPayCert/components/search.vue | 141 + src/views/bszx/bszxPayCert/index.vue | 112 + .../components/bszxPayRankingEdit.vue | 220 + .../bszx/bszxPayRanking/components/search.vue | 69 + src/views/bszx/bszxPayRanking/index.vue | 223 + .../components/bszxPayRankingEdit.vue | 220 + .../bszxPayRanking2/components/search.vue | 217 + src/views/bszx/bszxPayRanking2/index.vue | 226 + src/views/bszx/extra.vue | 65 + src/views/cms/clear-cache/index.vue | 41 + src/views/cms/cmsAd/components/cmsAdEdit.vue | 362 + src/views/cms/cmsAd/components/search.vue | 84 + src/views/cms/cmsAd/index.vue | 288 + .../components/cmsAdRecordEdit.vue | 220 + .../cms/cmsAdRecord/components/search.vue | 42 + src/views/cms/cmsAdRecord/index.vue | 257 + .../cms/cmsArticle/components/Import.vue | 82 + .../cms/cmsArticle/components/articleEdit.vue | 1563 ++ .../cmsArticle/components/articleUpdate.vue | 207 + .../cms/cmsArticle/components/search.vue | 327 + .../cmsArticle/dictionary/source-select.vue | 51 + src/views/cms/cmsArticle/index.vue | 468 + .../components/cmsArticleCategoryEdit.vue | 312 + .../cmsArticleCategory/components/search.vue | 42 + src/views/cms/cmsArticleCategory/index.vue | 323 + .../components/cmsArticleCommentEdit.vue | 268 + .../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 + .../components/cmsComponentsEdit.vue | 252 + .../cms/cmsComponents/components/search.vue | 42 + src/views/cms/cmsComponents/index.vue | 281 + .../cmsDesign/components/cmsDesignEdit.vue | 300 + src/views/cms/cmsDesign/components/search.vue | 42 + src/views/cms/cmsDesign/index.vue | 321 + .../components/cmsDesignCollectEdit.vue | 240 + .../cmsDesignCollect/components/search.vue | 42 + src/views/cms/cmsDesignCollect/index.vue | 269 + .../components/cmsDesignRecordEdit.vue | 268 + .../cms/cmsDesignRecord/components/search.vue | 42 + src/views/cms/cmsDesignRecord/index.vue | 293 + .../components/cmsDesignSignUpEdit.vue | 244 + .../cms/cmsDesignSignUp/components/search.vue | 42 + src/views/cms/cmsDesignSignUp/index.vue | 275 + .../cms/cmsDocs/components/cmsDocsEdit.vue | 260 + src/views/cms/cmsDocs/components/search.vue | 42 + src/views/cms/cmsDocs/index.vue | 287 + .../components/cmsDocsBookEdit.vue | 228 + .../cms/cmsDocsBook/components/search.vue | 42 + src/views/cms/cmsDocsBook/index.vue | 263 + .../components/cmsDocsContentEdit.vue | 178 + .../cms/cmsDocsContent/components/search.vue | 42 + src/views/cms/cmsDocsContent/index.vue | 227 + .../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 | 274 + .../cms/cmsLink/components/linkUpdate.vue | 199 + src/views/cms/cmsLink/components/search.vue | 97 + src/views/cms/cmsLink/index.vue | 271 + .../cms/cmsModel/components/cmsModelEdit.vue | 316 + src/views/cms/cmsModel/components/search.vue | 44 + src/views/cms/cmsModel/index.vue | 260 + src/views/cms/cmsMp/components/cmsMpEdit.vue | 284 + src/views/cms/cmsMp/components/search.vue | 42 + src/views/cms/cmsMp/index.vue | 242 + src/views/cms/cmsMpAd/components/mpAdEdit.vue | 378 + src/views/cms/cmsMpAd/components/search.vue | 60 + src/views/cms/cmsMpAd/index.vue | 250 + .../cmsMpField/components/cmsMpFieldEdit.vue | 216 + .../cms/cmsMpField/components/search.vue | 42 + src/views/cms/cmsMpField/index.vue | 256 + .../cms/cmsMpGroup/components/dict-edit.vue | 178 + src/views/cms/cmsMpGroup/index.vue | 228 + .../cmsMpMenu/components/cmsMpMenuEdit.vue | 391 + src/views/cms/cmsMpMenu/components/search.vue | 42 + src/views/cms/cmsMpMenu/index.vue | 389 + .../components/cmsMpOfficialMenuEdit.vue | 220 + .../cmsMpOfficialMenu/components/search.vue | 42 + src/views/cms/cmsMpOfficialMenu/index.vue | 257 + .../cms/cmsMpPackage/components/dict-edit.vue | 195 + src/views/cms/cmsMpPackage/index.vue | 223 + .../cms/cmsMpPages/components/mpPagesEdit.vue | 281 + .../cms/cmsMpPages/components/search.vue | 66 + src/views/cms/cmsMpPages/index.vue | 345 + .../cmsNavigation/components/components.vue | 276 + .../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 | 588 + .../cms/cmsNavigation/components/search.vue | 87 + src/views/cms/cmsNavigation/index.vue | 587 + .../cms/cmsOrder/components/orderInfo.vue | 586 + src/views/cms/cmsOrder/components/search.vue | 222 + src/views/cms/cmsOrder/index.vue | 374 + .../cmsProduct/components/cmsProductEdit.vue | 625 + .../cms/cmsProduct/components/search.vue | 190 + src/views/cms/cmsProduct/components/spec.vue | 222 + src/views/cms/cmsProduct/index.vue | 356 + .../components/cmsProductCommentEdit.vue | 182 + .../cmsProductComment/components/search.vue | 68 + src/views/cms/cmsProductComment/index.vue | 247 + .../components/cmsProductParameterEdit.vue | 183 + .../cmsProductParameter/components/search.vue | 42 + src/views/cms/cmsProductParameter/index.vue | 217 + .../components/cmsProductRecordEdit.vue | 204 + .../cmsProductRecord/components/search.vue | 42 + src/views/cms/cmsProductRecord/index.vue | 245 + .../components/cmsProductSkuEdit.vue | 278 + .../cms/cmsProductSku/components/search.vue | 42 + src/views/cms/cmsProductSku/index.vue | 299 + .../components/cmsProductSpecEdit.vue | 220 + .../cms/cmsProductSpec/components/search.vue | 42 + src/views/cms/cmsProductSpec/index.vue | 257 + .../components/cmsProductSpecValueEdit.vue | 197 + .../cmsProductSpecValue/components/search.vue | 42 + src/views/cms/cmsProductSpecValue/index.vue | 239 + .../components/cmsProductUrlEdit.vue | 222 + .../cms/cmsProductUrl/components/search.vue | 42 + src/views/cms/cmsProductUrl/index.vue | 218 + src/views/cms/cmsSetting/index.vue | 176 + .../cms/cmsSpec/components/cmsSpecEdit.vue | 220 + src/views/cms/cmsSpec/components/search.vue | 42 + src/views/cms/cmsSpec/index.vue | 231 + .../components/cmsSpecValueEdit.vue | 197 + .../cms/cmsSpecValue/components/search.vue | 42 + src/views/cms/cmsSpecValue/index.vue | 239 + .../components/cmsTemplateEdit.vue | 289 + .../cms/cmsTemplate/components/search.vue | 42 + src/views/cms/cmsTemplate/index.vue | 230 + .../cms/cmsWebsite/components/search.vue | 100 + .../cms/cmsWebsite/components/websiteEdit.vue | 400 + src/views/cms/cmsWebsite/index.vue | 372 + .../components/cmsWebsiteFieldEdit.vue | 261 + .../cms/cmsWebsiteField/components/edit.vue | 290 + .../cms/cmsWebsiteField/components/search.vue | 15 + src/views/cms/cmsWebsiteField/index.vue | 248 + .../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 | 255 + src/views/cms/dict/components/dict-edit.vue | 177 + src/views/cms/dict/index.vue | 214 + 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 | 213 + src/views/cms/photo/image.vue | 141 + src/views/cms/photo/index.vue | 176 + src/views/cms/photo/list.vue | 350 + 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 | 359 + src/views/cms/video/components/video-edit.vue | 241 + src/views/cms/video/index.vue | 321 + src/views/cms/video/player/index.vue | 131 + .../hjm/count/components/hjmFenceEdit.vue | 306 + src/views/hjm/count/components/search.vue | 42 + src/views/hjm/count/index.vue | 150 + .../hjm/hjmBxLog/components/hjmBxLogEdit.vue | 207 + src/views/hjm/hjmBxLog/components/search.vue | 42 + src/views/hjm/hjmBxLog/index.vue | 252 + src/views/hjm/hjmCar/components/Extra.vue | 54 + src/views/hjm/hjmCar/components/Import.vue | 82 + .../hjm/hjmCar/components/hjmCarEdit.vue | 429 + src/views/hjm/hjmCar/components/qrcode.vue | 39 + src/views/hjm/hjmCar/components/search.vue | 453 + src/views/hjm/hjmCar/index.vue | 410 + .../hjmChoices/components/hjmChoicesEdit.vue | 228 + .../hjm/hjmChoices/components/search.vue | 42 + src/views/hjm/hjmChoices/index.vue | 263 + .../hjmCourses/components/hjmCoursesEdit.vue | 248 + .../hjm/hjmCourses/components/search.vue | 42 + src/views/hjm/hjmCourses/index.vue | 256 + .../hjmExamLog/components/hjmExamLogEdit.vue | 228 + .../hjm/hjmExamLog/components/search.vue | 59 + src/views/hjm/hjmExamLog/index.vue | 230 + .../hjm/hjmFence/components/hjmFenceEdit.vue | 306 + src/views/hjm/hjmFence/components/search.vue | 42 + src/views/hjm/hjmFence/index.vue | 272 + .../hjmGpsLog/components/hjmGpsLogEdit.vue | 210 + src/views/hjm/hjmGpsLog/components/search.vue | 51 + src/views/hjm/hjmGpsLog/index.vue | 261 + .../hjm/hjmQuestions/components/Extra.vue | 59 + .../hjm/hjmQuestions/components/Import.vue | 82 + .../components/hjmQuestionsEdit.vue | 432 + .../hjm/hjmQuestions/components/search.vue | 98 + src/views/hjm/hjmQuestions/index.vue | 303 + .../components/hjmViolationEdit.vue | 214 + .../hjm/hjmViolation/components/search.vue | 42 + src/views/hjm/hjmViolation/index.vue | 243 + src/views/hjm/staff/components/org-edit.vue | 229 + src/views/hjm/staff/components/org-select.vue | 39 + .../hjm/staff/components/org-type-select.vue | 39 + .../hjm/staff/components/org-user-edit.vue | 509 + .../hjm/staff/components/org-user-list.vue | 199 + .../hjm/staff/components/org-user-search.vue | 31 + .../hjm/staff/components/role-select.vue | 71 + src/views/hjm/staff/components/sex-select.vue | 45 + src/views/hjm/staff/index.vue | 213 + src/views/hjm/userAlert/components/Edit.vue | 149 + src/views/hjm/userAlert/components/search.vue | 36 + src/views/hjm/userAlert/index.vue | 171 + src/views/hjm/userVerify/components/Extra.vue | 55 + .../hjm/userVerify/components/search.vue | 67 + .../userVerify/components/userVerifyEdit.vue | 352 + src/views/hjm/userVerify/index.vue | 279 + .../hjm/userVerify2/components/search.vue | 67 + .../userVerify2/components/userVerifyEdit.vue | 374 + src/views/hjm/userVerify2/index.vue | 273 + .../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 | 750 + src/views/passport/loginToken/index.vue | 31 + src/views/passport/register/index.vue | 804 + src/views/result/fail/index.vue | 62 + src/views/result/success/index.vue | 34 + src/views/shop/shopGoods/components/extra.vue | 41 + .../shop/shopGoods/components/search.vue | 141 + .../shopGoods/components/shopGoodsEdit.vue | 1944 ++ src/views/shop/shopGoods/index.vue | 319 + .../shop/shopOrder/components/bszxPayEdit.vue | 249 + .../shop/shopOrder/components/orderInfo.vue | 572 + .../shop/shopOrder/components/search.vue | 204 + src/views/shop/shopOrder/index.vue | 307 + .../shopUserReferee/components/search.vue | 42 + .../components/shopUserRefereeEdit.vue | 211 + src/views/shop/shopUserReferee/index.vue | 251 + .../access-key/components/accesskey-edit.vue | 233 + src/views/system/access-key/index.vue | 148 + .../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 | 230 + .../chatConversation/components/search.vue | 42 + src/views/system/chatConversation/index.vue | 263 + .../components/chatMessageEdit.vue | 259 + .../system/chatMessage/components/search.vue | 42 + src/views/system/chatMessage/index.vue | 287 + src/views/system/demo/index.vue | 23 + .../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/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 + .../system/menu/components/menu-search.vue | 106 + src/views/system/menu/index.vue | 393 + .../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 | 571 + .../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 | 239 + .../system/white-domain/components/search.vue | 42 + .../components/white-domain-edit.vue | 156 + src/views/system/white-domain/index.vue | 203 + .../components/chatConversationEdit.vue | 225 + .../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 | 79 + yarn.lock | 6869 ++++++ 一键排版测试说明.md | 244 + 富文本编辑器图片上传功能说明.md | 325 + 富文本编辑器完整功能演示.md | 183 + 栏目记忆功能测试指南.md | 236 + 栏目选择记忆功能说明.md | 173 + 段落首行缩进切换功能说明.md | 159 + 979 files changed, 171962 insertions(+) create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 EDITOR_SWITCH_DEMO.md create mode 100644 MARKDOWN_FILE_SELECTOR_DEMO.md create mode 100644 README.md create mode 100644 SELECT_FILE_DRAG_DEMO.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 postcss.config.js create mode 100644 prettier.config.js 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/favicon3.ico 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.png create mode 100644 public/logo.svg 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/cmsComponents/index.ts create mode 100644 src/api/cms/cmsComponents/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/cmsDesignCollect/index.ts create mode 100644 src/api/cms/cmsDesignCollect/model/index.ts create mode 100644 src/api/cms/cmsDesignRecord/index.ts create mode 100644 src/api/cms/cmsDesignRecord/model/index.ts create mode 100644 src/api/cms/cmsDesignSignUp/index.ts create mode 100644 src/api/cms/cmsDesignSignUp/model/index.ts create mode 100644 src/api/cms/cmsDocs/index.ts create mode 100644 src/api/cms/cmsDocs/model/index.ts create mode 100644 src/api/cms/cmsDocsBook/index.ts create mode 100644 src/api/cms/cmsDocsBook/model/index.ts create mode 100644 src/api/cms/cmsDocsContent/index.ts create mode 100644 src/api/cms/cmsDocsContent/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/cmsMp/index.ts create mode 100644 src/api/cms/cmsMp/model/index.ts create mode 100644 src/api/cms/cmsMpAd/index.ts create mode 100644 src/api/cms/cmsMpAd/model/index.ts create mode 100644 src/api/cms/cmsMpField/index.ts create mode 100644 src/api/cms/cmsMpField/model/index.ts create mode 100644 src/api/cms/cmsMpMenu/index.ts create mode 100644 src/api/cms/cmsMpMenu/model/index.ts create mode 100644 src/api/cms/cmsMpOfficialMenu/index.ts create mode 100644 src/api/cms/cmsMpOfficialMenu/model/index.ts create mode 100644 src/api/cms/cmsMpPages/index.ts create mode 100644 src/api/cms/cmsMpPages/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/cmsProduct/index.ts create mode 100644 src/api/cms/cmsProduct/model/index.ts create mode 100644 src/api/cms/cmsProductComment/index.ts create mode 100644 src/api/cms/cmsProductComment/model/index.ts create mode 100644 src/api/cms/cmsProductParameter/index.ts create mode 100644 src/api/cms/cmsProductParameter/model/index.ts create mode 100644 src/api/cms/cmsProductRecord/index.ts create mode 100644 src/api/cms/cmsProductRecord/model/index.ts create mode 100644 src/api/cms/cmsProductSku/index.ts create mode 100644 src/api/cms/cmsProductSku/model/index.ts create mode 100644 src/api/cms/cmsProductSpec/index.ts create mode 100644 src/api/cms/cmsProductSpec/model/index.ts create mode 100644 src/api/cms/cmsProductSpecValue/index.ts create mode 100644 src/api/cms/cmsProductSpecValue/model/index.ts create mode 100644 src/api/cms/cmsProductUrl/index.ts create mode 100644 src/api/cms/cmsProductUrl/model/index.ts create mode 100644 src/api/cms/cmsSpec/index.ts create mode 100644 src/api/cms/cmsSpec/model/index.ts create mode 100644 src/api/cms/cmsSpecValue/index.ts create mode 100644 src/api/cms/cmsSpecValue/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/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/cms/mpOfficialMenu/index.ts create mode 100644 src/api/cms/mpOfficialMenu/model/index.ts create mode 100644 src/api/hjm/hjmBxLog/index.ts create mode 100644 src/api/hjm/hjmBxLog/model/index.ts create mode 100644 src/api/hjm/hjmCar/index.ts create mode 100644 src/api/hjm/hjmCar/model/index.ts create mode 100644 src/api/hjm/hjmChoices/index.ts create mode 100644 src/api/hjm/hjmChoices/model/index.ts create mode 100644 src/api/hjm/hjmCourses/index.ts create mode 100644 src/api/hjm/hjmCourses/model/index.ts create mode 100644 src/api/hjm/hjmExamLog/index.ts create mode 100644 src/api/hjm/hjmExamLog/model/index.ts create mode 100644 src/api/hjm/hjmFence/index.ts create mode 100644 src/api/hjm/hjmFence/model/index.ts create mode 100644 src/api/hjm/hjmGpsLog/index.ts create mode 100644 src/api/hjm/hjmGpsLog/model/index.ts create mode 100644 src/api/hjm/hjmQuestions/index.ts create mode 100644 src/api/hjm/hjmQuestions/model/index.ts create mode 100644 src/api/hjm/hjmViolation/index.ts create mode 100644 src/api/hjm/hjmViolation/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/passport/login/index.ts create mode 100644 src/api/passport/login/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/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/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/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/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/shopUserAddress/index.ts create mode 100644 src/api/shop/shopUserAddress/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/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/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/PayMethod/index.vue create mode 100644 src/components/QrCode/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/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/config/menu.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/main.ts create mode 100644 src/router/index.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/chat.ts create mode 100644 src/store/modules/params.ts create mode 100644 src/store/modules/setting.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/common.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/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/permission.ts create mode 100644 src/utils/plug-uitl.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/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/bsyx/bsyxClass/components/bszxClassEdit.vue create mode 100644 src/views/bsyx/bsyxClass/components/search.vue create mode 100644 src/views/bsyx/bsyxClass/index.vue create mode 100644 src/views/bsyx/bsyxGrade/components/bszxGradeEdit.vue create mode 100644 src/views/bsyx/bsyxGrade/components/search.vue create mode 100644 src/views/bsyx/bsyxGrade/index.vue create mode 100644 src/views/bsyx/bsyxOrder/components/bszxPayEdit.vue create mode 100644 src/views/bsyx/bsyxOrder/components/orderInfo.vue create mode 100644 src/views/bsyx/bsyxOrder/components/search.vue create mode 100644 src/views/bsyx/bsyxOrder/index.vue create mode 100644 src/views/bsyx/bsyxPay/components/bszxPayEdit.vue create mode 100644 src/views/bsyx/bsyxPay/components/search.vue create mode 100644 src/views/bsyx/bsyxPay/index.vue create mode 100644 src/views/bsyx/bsyxPayRanking/components/bszxPayRankingEdit.vue create mode 100644 src/views/bsyx/bsyxPayRanking/components/search.vue create mode 100644 src/views/bsyx/bsyxPayRanking/index.vue create mode 100644 src/views/bsyx/extra.vue create mode 100644 src/views/bszx/bszxBm/components/bszxBmEdit.vue create mode 100644 src/views/bszx/bszxBm/components/search.vue create mode 100644 src/views/bszx/bszxBm/index.vue create mode 100644 src/views/bszx/bszxBranch/components/bszxBranchEdit.vue create mode 100644 src/views/bszx/bszxBranch/components/search.vue create mode 100644 src/views/bszx/bszxBranch/index.vue create mode 100644 src/views/bszx/bszxClass/components/bszxClassEdit.vue create mode 100644 src/views/bszx/bszxClass/components/search.vue create mode 100644 src/views/bszx/bszxClass/index.vue create mode 100644 src/views/bszx/bszxGrade/components/bszxGradeEdit.vue create mode 100644 src/views/bszx/bszxGrade/components/search.vue create mode 100644 src/views/bszx/bszxGrade/index.vue create mode 100644 src/views/bszx/bszxOrder/components/bszxPayEdit.vue create mode 100644 src/views/bszx/bszxOrder/components/orderInfo.vue create mode 100644 src/views/bszx/bszxOrder/components/search.vue create mode 100644 src/views/bszx/bszxOrder/index.vue create mode 100644 src/views/bszx/bszxPay/components/bszxPayEdit.vue create mode 100644 src/views/bszx/bszxPay/components/search.vue create mode 100644 src/views/bszx/bszxPay/index.vue create mode 100644 src/views/bszx/bszxPayCert/components/appBszxPayEdit.vue create mode 100644 src/views/bszx/bszxPayCert/components/search.vue create mode 100644 src/views/bszx/bszxPayCert/index.vue create mode 100644 src/views/bszx/bszxPayRanking/components/bszxPayRankingEdit.vue create mode 100644 src/views/bszx/bszxPayRanking/components/search.vue create mode 100644 src/views/bszx/bszxPayRanking/index.vue create mode 100644 src/views/bszx/bszxPayRanking2/components/bszxPayRankingEdit.vue create mode 100644 src/views/bszx/bszxPayRanking2/components/search.vue create mode 100644 src/views/bszx/bszxPayRanking2/index.vue 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/cmsComponents/components/cmsComponentsEdit.vue create mode 100644 src/views/cms/cmsComponents/components/search.vue create mode 100644 src/views/cms/cmsComponents/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/cmsDesignCollect/components/cmsDesignCollectEdit.vue create mode 100644 src/views/cms/cmsDesignCollect/components/search.vue create mode 100644 src/views/cms/cmsDesignCollect/index.vue create mode 100644 src/views/cms/cmsDesignRecord/components/cmsDesignRecordEdit.vue create mode 100644 src/views/cms/cmsDesignRecord/components/search.vue create mode 100644 src/views/cms/cmsDesignRecord/index.vue create mode 100644 src/views/cms/cmsDesignSignUp/components/cmsDesignSignUpEdit.vue create mode 100644 src/views/cms/cmsDesignSignUp/components/search.vue create mode 100644 src/views/cms/cmsDesignSignUp/index.vue create mode 100644 src/views/cms/cmsDocs/components/cmsDocsEdit.vue create mode 100644 src/views/cms/cmsDocs/components/search.vue create mode 100644 src/views/cms/cmsDocs/index.vue create mode 100644 src/views/cms/cmsDocsBook/components/cmsDocsBookEdit.vue create mode 100644 src/views/cms/cmsDocsBook/components/search.vue create mode 100644 src/views/cms/cmsDocsBook/index.vue create mode 100644 src/views/cms/cmsDocsContent/components/cmsDocsContentEdit.vue create mode 100644 src/views/cms/cmsDocsContent/components/search.vue create mode 100644 src/views/cms/cmsDocsContent/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/cmsMp/components/cmsMpEdit.vue create mode 100644 src/views/cms/cmsMp/components/search.vue create mode 100644 src/views/cms/cmsMp/index.vue create mode 100644 src/views/cms/cmsMpAd/components/mpAdEdit.vue create mode 100644 src/views/cms/cmsMpAd/components/search.vue create mode 100644 src/views/cms/cmsMpAd/index.vue create mode 100644 src/views/cms/cmsMpField/components/cmsMpFieldEdit.vue create mode 100644 src/views/cms/cmsMpField/components/search.vue create mode 100644 src/views/cms/cmsMpField/index.vue create mode 100644 src/views/cms/cmsMpGroup/components/dict-edit.vue create mode 100644 src/views/cms/cmsMpGroup/index.vue create mode 100644 src/views/cms/cmsMpMenu/components/cmsMpMenuEdit.vue create mode 100644 src/views/cms/cmsMpMenu/components/search.vue create mode 100644 src/views/cms/cmsMpMenu/index.vue create mode 100644 src/views/cms/cmsMpOfficialMenu/components/cmsMpOfficialMenuEdit.vue create mode 100644 src/views/cms/cmsMpOfficialMenu/components/search.vue create mode 100644 src/views/cms/cmsMpOfficialMenu/index.vue create mode 100644 src/views/cms/cmsMpPackage/components/dict-edit.vue create mode 100644 src/views/cms/cmsMpPackage/index.vue create mode 100644 src/views/cms/cmsMpPages/components/mpPagesEdit.vue create mode 100644 src/views/cms/cmsMpPages/components/search.vue create mode 100644 src/views/cms/cmsMpPages/index.vue create mode 100644 src/views/cms/cmsNavigation/components/components.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/cmsProduct/components/cmsProductEdit.vue create mode 100644 src/views/cms/cmsProduct/components/search.vue create mode 100644 src/views/cms/cmsProduct/components/spec.vue create mode 100644 src/views/cms/cmsProduct/index.vue create mode 100644 src/views/cms/cmsProductComment/components/cmsProductCommentEdit.vue create mode 100644 src/views/cms/cmsProductComment/components/search.vue create mode 100644 src/views/cms/cmsProductComment/index.vue create mode 100644 src/views/cms/cmsProductParameter/components/cmsProductParameterEdit.vue create mode 100644 src/views/cms/cmsProductParameter/components/search.vue create mode 100644 src/views/cms/cmsProductParameter/index.vue create mode 100644 src/views/cms/cmsProductRecord/components/cmsProductRecordEdit.vue create mode 100644 src/views/cms/cmsProductRecord/components/search.vue create mode 100644 src/views/cms/cmsProductRecord/index.vue create mode 100644 src/views/cms/cmsProductSku/components/cmsProductSkuEdit.vue create mode 100644 src/views/cms/cmsProductSku/components/search.vue create mode 100644 src/views/cms/cmsProductSku/index.vue create mode 100644 src/views/cms/cmsProductSpec/components/cmsProductSpecEdit.vue create mode 100644 src/views/cms/cmsProductSpec/components/search.vue create mode 100644 src/views/cms/cmsProductSpec/index.vue create mode 100644 src/views/cms/cmsProductSpecValue/components/cmsProductSpecValueEdit.vue create mode 100644 src/views/cms/cmsProductSpecValue/components/search.vue create mode 100644 src/views/cms/cmsProductSpecValue/index.vue create mode 100644 src/views/cms/cmsProductUrl/components/cmsProductUrlEdit.vue create mode 100644 src/views/cms/cmsProductUrl/components/search.vue create mode 100644 src/views/cms/cmsProductUrl/index.vue create mode 100644 src/views/cms/cmsSetting/index.vue create mode 100644 src/views/cms/cmsSpec/components/cmsSpecEdit.vue create mode 100644 src/views/cms/cmsSpec/components/search.vue create mode 100644 src/views/cms/cmsSpec/index.vue create mode 100644 src/views/cms/cmsSpecValue/components/cmsSpecValueEdit.vue create mode 100644 src/views/cms/cmsSpecValue/components/search.vue create mode 100644 src/views/cms/cmsSpecValue/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/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/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/hjm/count/components/hjmFenceEdit.vue create mode 100644 src/views/hjm/count/components/search.vue create mode 100644 src/views/hjm/count/index.vue create mode 100644 src/views/hjm/hjmBxLog/components/hjmBxLogEdit.vue create mode 100644 src/views/hjm/hjmBxLog/components/search.vue create mode 100644 src/views/hjm/hjmBxLog/index.vue create mode 100644 src/views/hjm/hjmCar/components/Extra.vue create mode 100644 src/views/hjm/hjmCar/components/Import.vue create mode 100644 src/views/hjm/hjmCar/components/hjmCarEdit.vue create mode 100644 src/views/hjm/hjmCar/components/qrcode.vue create mode 100644 src/views/hjm/hjmCar/components/search.vue create mode 100644 src/views/hjm/hjmCar/index.vue create mode 100644 src/views/hjm/hjmChoices/components/hjmChoicesEdit.vue create mode 100644 src/views/hjm/hjmChoices/components/search.vue create mode 100644 src/views/hjm/hjmChoices/index.vue create mode 100644 src/views/hjm/hjmCourses/components/hjmCoursesEdit.vue create mode 100644 src/views/hjm/hjmCourses/components/search.vue create mode 100644 src/views/hjm/hjmCourses/index.vue create mode 100644 src/views/hjm/hjmExamLog/components/hjmExamLogEdit.vue create mode 100644 src/views/hjm/hjmExamLog/components/search.vue create mode 100644 src/views/hjm/hjmExamLog/index.vue create mode 100644 src/views/hjm/hjmFence/components/hjmFenceEdit.vue create mode 100644 src/views/hjm/hjmFence/components/search.vue create mode 100644 src/views/hjm/hjmFence/index.vue create mode 100644 src/views/hjm/hjmGpsLog/components/hjmGpsLogEdit.vue create mode 100644 src/views/hjm/hjmGpsLog/components/search.vue create mode 100644 src/views/hjm/hjmGpsLog/index.vue create mode 100644 src/views/hjm/hjmQuestions/components/Extra.vue create mode 100644 src/views/hjm/hjmQuestions/components/Import.vue create mode 100644 src/views/hjm/hjmQuestions/components/hjmQuestionsEdit.vue create mode 100644 src/views/hjm/hjmQuestions/components/search.vue create mode 100644 src/views/hjm/hjmQuestions/index.vue create mode 100644 src/views/hjm/hjmViolation/components/hjmViolationEdit.vue create mode 100644 src/views/hjm/hjmViolation/components/search.vue create mode 100644 src/views/hjm/hjmViolation/index.vue create mode 100644 src/views/hjm/staff/components/org-edit.vue create mode 100644 src/views/hjm/staff/components/org-select.vue create mode 100644 src/views/hjm/staff/components/org-type-select.vue create mode 100644 src/views/hjm/staff/components/org-user-edit.vue create mode 100644 src/views/hjm/staff/components/org-user-list.vue create mode 100644 src/views/hjm/staff/components/org-user-search.vue create mode 100644 src/views/hjm/staff/components/role-select.vue create mode 100644 src/views/hjm/staff/components/sex-select.vue create mode 100644 src/views/hjm/staff/index.vue create mode 100644 src/views/hjm/userAlert/components/Edit.vue create mode 100644 src/views/hjm/userAlert/components/search.vue create mode 100644 src/views/hjm/userAlert/index.vue create mode 100644 src/views/hjm/userVerify/components/Extra.vue create mode 100644 src/views/hjm/userVerify/components/search.vue create mode 100644 src/views/hjm/userVerify/components/userVerifyEdit.vue create mode 100644 src/views/hjm/userVerify/index.vue create mode 100644 src/views/hjm/userVerify2/components/search.vue create mode 100644 src/views/hjm/userVerify2/components/userVerifyEdit.vue create mode 100644 src/views/hjm/userVerify2/index.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/register/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/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/shopOrder/components/bszxPayEdit.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/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/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/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.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 create mode 100644 一键排版测试说明.md create mode 100644 富文本编辑器图片上传功能说明.md create mode 100644 富文本编辑器完整功能演示.md create mode 100644 栏目记忆功能测试指南.md create mode 100644 栏目选择记忆功能说明.md create mode 100644 段落首行缩进切换功能说明.md 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 b/.env new file mode 100644 index 0000000..fe99737 --- /dev/null +++ b/.env @@ -0,0 +1,2 @@ +VITE_APP_NAME=WSADMIN +VITE_API_URL=/api diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..8aa7af0 --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +VITE_APP_NAME=后台管理(开发环境) +VITE_API_URL=http://127.0.0.1:9200/api diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..0a65fab --- /dev/null +++ b/.env.production @@ -0,0 +1 @@ +VITE_API_URL=https://cms-api.websoft.top/api 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..f3fed43 --- /dev/null +++ b/.gitignore @@ -0,0 +1,29 @@ +.DS_Store +node_modules +/node_modules +dist +/dist +/dist-ssr + +# local env files +.env.local +.env.*.local + +# 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? +node_modules +node_modules 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/EDITOR_SWITCH_DEMO.md b/EDITOR_SWITCH_DEMO.md new file mode 100644 index 0000000..2b9f7a5 --- /dev/null +++ b/EDITOR_SWITCH_DEMO.md @@ -0,0 +1,151 @@ +# 📝 编辑器切换功能演示 + +## 🎯 功能概述 + +我已经成功为文章编辑组件实现了Markdown和富文本编辑器的切换功能,具有以下特点: + +### ✨ 核心功能 + +1. **编辑器类型选择器** + - 富文本编辑器(TinyMCE):所见即所得,支持图片、视频、格式化 + - Markdown编辑器:轻量级标记语言,支持代码高亮 + +2. **智能切换机制** + - 有内容时会提示用户确认切换 + - 自动进行基本的格式转换 + - 保存用户的编辑器偏好设置 + +3. **数据持久化** + - 编辑器类型保存到数据库(editor字段:1=富文本,2=Markdown) + - 本地存储用户偏好设置 + - 编辑时自动恢复用户选择的编辑器类型 + +### 🔧 技术实现 + +#### 1. 编辑器选择器UI +```vue +
+
+ 编辑器类型: + + + + 📝 + 富文本编辑器 + 所见即所得,支持图片、视频、格式化 + + + + + 📋 + Markdown编辑器 + 轻量级标记语言,支持代码高亮 + + + +
+
+``` + +#### 2. 切换处理逻辑 +```typescript +const onEditorTypeChange = (e: any) => { + const newEditorType = e.target.value; + const oldEditorType = editor.value; + + // 如果有内容,提示用户确认切换 + if (content.value && content.value.trim() !== '' && content.value !== '


') { + Modal.confirm({ + title: '🔄 切换编辑器类型', + content: '切换编辑器类型可能会影响内容格式,是否继续?', + okText: '确认切换', + cancelText: '取消', + onOk: () => { + performEditorSwitch(newEditorType, oldEditorType); + }, + onCancel: () => { + editor.value = oldEditorType; + } + }); + } else { + performEditorSwitch(newEditorType, oldEditorType); + } +}; +``` + +#### 3. 格式转换功能 +```typescript +const convertContentFormat = (fromType: number, toType: number) => { + if (fromType === 1 && toType === 2) { + // 富文本转Markdown + let markdownContent = content.value + .replace(/]*>(.*?)<\/h1>/gi, '# $1\n\n') + .replace(/]*>(.*?)<\/h2>/gi, '## $1\n\n') + .replace(/]*>(.*?)<\/strong>/gi, '**$1**') + .replace(/]*>(.*?)<\/em>/gi, '*$1*') + // ... 更多转换规则 + content.value = markdownContent; + } else if (fromType === 2 && toType === 1) { + // Markdown转富文本 + let htmlContent = content.value + .replace(/^# (.*$)/gim, '

$1

') + .replace(/^## (.*$)/gim, '

$1

') + .replace(/\*\*(.*?)\*\*/g, '$1') + .replace(/\*(.*?)\*/g, '$1') + // ... 更多转换规则 + content.value = htmlContent; + } +}; +``` + +#### 4. 偏好设置管理 +```typescript +const initEditorPreference = () => { + // 优先使用数据库中保存的编辑器类型 + if (form.editor && (form.editor === 1 || form.editor === 2)) { + editor.value = form.editor; + } else { + // 使用本地存储的偏好 + const savedPreference = localStorage.getItem('cms_article_editor_preference'); + if (savedPreference && (savedPreference === '1' || savedPreference === '2')) { + editor.value = parseInt(savedPreference); + } else { + editor.value = 1; // 默认富文本 + } + } +}; +``` + +### 🎨 样式设计 + +编辑器选择器采用了现代化的卡片设计: +- 渐变背景和阴影效果 +- 清晰的图标和描述文字 +- 响应式交互效果 +- 与现有UI风格保持一致 + +### 📊 数据库字段 + +在CmsArticle模型中,`editor`字段用于保存编辑器类型: +- `1`: 富文本编辑器 +- `2`: Markdown编辑器 + +### 🚀 使用方式 + +1. **新建文章**:系统会根据用户偏好自动选择编辑器类型 +2. **编辑文章**:自动恢复文章创建时使用的编辑器类型 +3. **切换编辑器**:用户可以随时切换,系统会智能处理格式转换 +4. **保存文章**:编辑器类型会自动保存到数据库 + +### 💡 用户体验优化 + +- **智能提示**:切换前会提示可能的格式影响 +- **格式转换**:自动进行基本的HTML↔Markdown转换 +- **偏好记忆**:记住用户的编辑器选择偏好 +- **无缝切换**:保持内容的连续性和一致性 + +这个功能让用户可以根据自己的习惯和需求选择最适合的编辑器,提供了更加灵活和人性化的编辑体验! diff --git a/MARKDOWN_FILE_SELECTOR_DEMO.md b/MARKDOWN_FILE_SELECTOR_DEMO.md new file mode 100644 index 0000000..7fcc381 --- /dev/null +++ b/MARKDOWN_FILE_SELECTOR_DEMO.md @@ -0,0 +1,209 @@ +# 📝 Markdown编辑器文件库选取功能演示 + +## 🎯 功能概述 + +我已经成功为Markdown编辑器实现了与富文本编辑器一样的文件库选取功能,让用户可以方便地从文件库中选择图片和视频。 + +### ✨ 核心功能 + +1. **📷 图片库选取** + - 点击"从图片库选择"按钮 + - 打开图片文件库选择弹窗 + - 选择图片后自动插入Markdown图片语法 + +2. **🎬 视频库选取** + - 点击"从视频库选择"按钮 + - 打开视频文件库选择弹窗 + - 选择视频后自动插入HTML视频标签 + +3. **🔄 拖拽上传支持** + - 保留原有的拖拽上传功能 + - 支持直接拖拽图片到编辑器 + - 自动上传并插入图片链接 + +### 🔧 技术实现 + +#### 1. 工具栏扩展按钮 + +```vue + +
+ + 📷 从图片库选择 + + + 🎬 从视频库选择 + +
+``` + +#### 2. 图片选择处理函数 + +```typescript +// 📝 Markdown编辑器图片选择器 +const openMarkdownImageSelector = () => { + fileSelectCallback.value = (url: string) => { + // 在当前光标位置插入Markdown图片语法 + const imageMarkdown = `![图片](${url})`; + insertMarkdownText(imageMarkdown); + }; + showFileSelector.value = true; +}; +``` + +#### 3. 视频选择处理函数 + +```typescript +// 📝 Markdown编辑器视频选择器 +const openMarkdownVideoSelector = () => { + videoSelectCallback.value = (url: string) => { + // 在当前光标位置插入Markdown视频语法(使用HTML标签) + const videoMarkdown = ``; + insertMarkdownText(videoMarkdown); + }; + showVideoSelector.value = true; +}; +``` + +#### 4. 文本插入功能 + +```typescript +// 📝 在Markdown编辑器中插入文本 +const insertMarkdownText = (text: string) => { + // 简单的文本插入,在内容末尾添加 + if (content.value) { + content.value += '\n\n' + text; + } else { + content.value = text; + } +}; +``` + +#### 5. 拖拽上传处理 + +```typescript +// 📝 Markdown编辑器图片上传处理 +const onMarkdownUploadImg = async (files: File[], callback: (urls: string[]) => void) => { + try { + const uploadPromises = files.map(async (file) => { + // 检查文件大小(限制为10MB) + if (file.size > 10 * 1024 * 1024) { + message.error(`图片 ${file.name} 大小超过10MB,请选择更小的文件`); + return null; + } + + // 检查文件类型 + if (!file.type.startsWith('image/')) { + message.error(`文件 ${file.name} 不是有效的图片格式`); + return null; + } + + try { + const result = await uploadOss(file); + return result.url || result.path; + } catch (error) { + console.error('图片上传失败:', error); + message.error(`图片 ${file.name} 上传失败`); + return null; + } + }); + + const results = await Promise.all(uploadPromises); + const successUrls = results.filter(url => url !== null) as string[]; + + if (successUrls.length > 0) { + callback(successUrls); + message.success(`成功上传 ${successUrls.length} 张图片`); + } + } catch (error) { + console.error('批量上传失败:', error); + message.error('图片上传失败,请重试'); + } +}; +``` + +### 🎨 样式设计 + +工具栏扩展按钮采用了现代化的设计: + +```less +// 📝 Markdown编辑器工具栏扩展样式 +.markdown-toolbar-extension { + margin-bottom: 12px; + padding: 12px; + background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%); + border: 1px solid #e8e8e8; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02); + + .ant-btn { + border-radius: 6px; + font-size: 13px; + height: 32px; + display: inline-flex; + align-items: center; + + &:hover { + transform: translateY(-1px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + } + } +} +``` + +### 📊 功能对比 + +| 功能 | 富文本编辑器 | Markdown编辑器 | 状态 | +|------|-------------|---------------|------| +| 文件库选择图片 | ✅ | ✅ | 已实现 | +| 文件库选择视频 | ✅ | ✅ | 已实现 | +| 拖拽上传图片 | ✅ | ✅ | 已实现 | +| 粘贴上传图片 | ✅ | ✅ | 已实现 | +| 文件大小检查 | ✅ | ✅ | 已实现 | +| 文件类型检查 | ✅ | ✅ | 已实现 | +| 上传进度提示 | ✅ | ✅ | 已实现 | + +### 🚀 使用方式 + +1. **选择Markdown编辑器**:在编辑器类型选择器中选择"Markdown编辑器" +2. **插入图片**: + - 点击"📷 从图片库选择"按钮 + - 在弹出的文件库中选择图片 + - 系统自动插入 `![图片](url)` 格式 +3. **插入视频**: + - 点击"🎬 从视频库选择"按钮 + - 在弹出的视频库中选择视频 + - 系统自动插入HTML5视频标签 +4. **拖拽上传**: + - 直接拖拽图片文件到编辑器 + - 系统自动上传并插入图片链接 + +### 💡 用户体验优化 + +- **统一体验**:与富文本编辑器保持一致的文件选择体验 +- **智能插入**:自动生成正确的Markdown语法 +- **视觉反馈**:按钮悬停效果和上传进度提示 +- **错误处理**:完善的文件大小和类型检查 +- **响应式设计**:适配不同屏幕尺寸 + +### 🔄 格式转换 + +当用户在富文本编辑器和Markdown编辑器之间切换时,系统会自动进行格式转换: + +- **富文本 → Markdown**:HTML标签转换为Markdown语法 +- **Markdown → 富文本**:Markdown语法转换为HTML标签 + +这个功能让用户在使用Markdown编辑器时也能享受到与富文本编辑器一样便捷的文件管理体验!🎉 diff --git a/README.md b/README.md new file mode 100644 index 0000000..6bd97db --- /dev/null +++ b/README.md @@ -0,0 +1,266 @@ +

websoft-uniapp 网宿软件uniapp端

+ +#### 项目简介 +websoft基于Spring、SpringBoot、SpringMVC、SpringSecurity、jjwt、MyBatis、Druid等搭建,前后端分离模式,适用于快递开发和打包为微信小程序、H5、安卓apk、苹果ios、抖音小程序、支付宝小程序等应用 + + + +# 官网体验地址(里面有演示地址与文档) +| 官网文档地址 | https://www.gxwebsoft.com | +|---|--------------------------------------------------------------------------------------------------------------------------------------| +| 管理后台演示地址: | http://10093.admin.gxwebsoft.com | +| 关注公众号点体验小程序与H5 | ![输入图片说明](https://oss.wsdns.cn/20240327/f1175cc5aae741d3af05484747270bd5.jpeg?x-oss-process=image/resize,m_fixed,w_300/quality,Q_90) | + + + +#### 核心依赖 + +| 依赖 | 版本 | +|-----------------|--------| +| Spring Boot | 2.7.x | +| weixin-java | 4.4.0 | +| Spring Security | 2.7.10 | +| Mybatis Plus | 3.5.2 | +| hutool | 5.8.16 | +| swagger | 3.0.0 | + +# 本地安装 +### 基本环境(必备) +- 1、JDK:8+ +- 2、Redis 3.0+ +- 3、Maven 3.0+ +- 4、MYSQL 5.7+ +- 5、Node v8+ +### 开发工具 +Idea、webstorm、vscode + +### 前端系统工程(UNIAPP端) + +1、下载代码 +``` +git clone https://gitee.com/gxwebsoft/websoft-uniapp.git +``` +2、使用HBuiderX导入项目: + +3、安装依赖: + +``` +npm install luch-request -S +``` + +### 后台前端工程(JAVA端) +1、请确保redis已经安装启动 + +2、下载代码 +``` +git clone https://gitee.com/gxwebsoft/websoft-java.git +``` +3、使用HBuiderX导入项目: + +4、安装依赖: + +``` +npm install luch-request -S +``` + +### 后台前端工程(VUE端) +1、请确保本地已经安装node,建议node8或者node10 + +2、下载代码 +``` +git clone https://gitee.com/gxwebsoft/websoft-vue.git +``` +3、cnpm install或者yarn install,当前所有命令必须当前工程目录下进行: + +![输入图片说明](https://images.gitee.com/uploads/images/2021/0811/163159_895e12de_477893.png "test8.png") + +4、安装依赖失败 +``` +yarn +``` +5、在控制台输入命令:npm run dev,控制台打印出如下画面,恭喜表示本项目启动成功拉。 + +5、打开浏览器输入地址如图: + +默认超管账户密码:admin/123456 + + +# nginx线上部署 + +### 后台系统(Java端) + +1、mvn install 或者直接idea打成jar包 + +2、配置nginx 反向代理如下: +``` +server{ + listen 443 ssl; + server_name api.gxwebsoft.com; + #listen [::]:81 default_server ipv6only=on; + #ssl on; + ssl_certificate httpssl/gxwebsoft.cn.pem; + ssl_certificate_key httpssl/api.gxwebsoft.cn.key; + ssl_session_timeout 5m; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + + + #error_page 404 /404.html; + #include enable-php.conf; + + location / { + proxy_pass http://127.0.0.1:9090; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Port $server_port; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + + access_log /home/wwwlogs/websoftapi.log; + +} +``` + +我配置的了ssl证书,如果不需要证书配置如下即可: + +``` +server{ + listen 80; + server_name api.gxwebsoft.com; + #listen [::]:81 default_server ipv6only=on; + + #error_page 404 /404.html; + #include enable-php.conf; + + location / { + proxy_pass http://127.0.0.1:8000; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-Port $server_port; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + access_log /home/wwwlogs/websoftapi.log; + +} +``` + + + +### 后台前端工程(VUE端) +1、输入命令:npm run build:prod 编译打包 + +2、把打包后的dist目录代码上传到服务器 + +3、配置nginx如下: +``` +server +{ + listen 443 ssl; + #listen [::]:81 default_server ipv6only=on; + server_name www.gxwesboft.com; + #ssl on; + ssl_certificate httpssl/www.gxwebsoft.com.pem; + ssl_certificate_key httpssl/www.gxwebsoft.com.key; + ssl_session_timeout 5m; + ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + index index.html; + root /home/wwwroot/system/websoft; + + + location / { + try_files $uri $uri/ @router; + index index.html; +· } + location @router { + rewrite ^.*$ /index.html last; + } + + + location ~* \.(eot|ttf|woff)$ { + # add_header Access-Control-Allow-Origin *; + } + + location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ + { + expires 30d; + } + + location ~ .*\.(js|css)?$ + { + expires 12h; + } + + + access_log /home/wwwlogs/websoftapi.log; + +} + +``` + +不需要证书如上面Java端配置一样去掉相关证书配置 改监听端口80即可 + + +### 功能模块 + +* 一:商品模块:商品添加、规格设置,商品上下架等 +* 二:订单模块:下单、购物车、支付,发货、收货、评价、退款等 +* 三:营销模块:积分、优惠券、分销、砍价、拼团、秒杀、多门店等 +* 四:微信模块:自定义菜单、自动回复、微信授权、图文管理、模板消息推送 +* 五:配置模块:各种配置 +* 六:用户模块:登陆、注册、会员卡、充值等 +* 七:其他模块:场地预定模块、办公协同模块等 + + +#### 项目结构 +项目采用分模块开发方式 +- gxwebsoft-common 公共模块 +- gxwebsoft-cms 预定模块 +- gxwebsoft-shop 商城模块 +- gxwebsoft-booking 预定模块 +- gxwebsoft-oa oa模块 +- gxwebsoft-weixin 微信相关模块 +- gxwebsoft-generator 代码生成模块 + + +### 技术选型 +* 1 后端使用技术 + * 1.1 SpringBoot2 + * 1.2 mybatis、MyBatis-Plus + * 1.3 SpringSecurity + * 1.5 Druid + * 1.6 Slf4j + * 1.7 Fastjson + * 1.8 JWT + * 1.9 Redis + * 1.10 eleadmin + * 1.11 Mysql + * 1.12 swagger + * 1.13 WxJava + * 1.14 Lombok + * 1.15 Hutool + +* 前端使用技术 + * 2.1 Vue 全家桶 + * 2.2 Antdv + * 2.3 uniapp + + + + +#### 反馈交流 +- 喜欢这个系统的小伙伴留下你的小星星啦,star,star哦! + +#### 特别鸣谢 +- mybaitsplus:https://github.com/baomidou/mybatis-plus +- hutool:https://github.com/looly/hutool +- eleadmin:https://eleadmin.com/ +- wxjava:https://github.com/Wechat-Group/WxJava +- vue:https://github.com/vuejs/vue +- antdv:https://3x.antdv.com/components/overview-cn diff --git a/SELECT_FILE_DRAG_DEMO.md b/SELECT_FILE_DRAG_DEMO.md new file mode 100644 index 0000000..95c2c65 --- /dev/null +++ b/SELECT_FILE_DRAG_DEMO.md @@ -0,0 +1,266 @@ +# 🔄 SelectFile组件拖拽调整顺序功能演示 + +## 🎯 功能概述 + +我已经成功为SelectFile组件添加了拖拽调整顺序的功能,让用户可以通过拖拽来重新排列文件的顺序。 + +### ✨ 核心功能 + +1. **🔄 拖拽排序** + - 支持鼠标拖拽调整文件顺序 + - 实时视觉反馈和拖拽指示器 + - 顺序指示器显示当前位置 + +2. **🎯 智能交互** + - 拖拽时显示拖拽指示器 + - 悬停时显示拖拽提示 + - 拖拽完成后自动更新数据 + +3. **📍 视觉反馈** + - 顺序指示器显示文件位置 + - 拖拽时的视觉效果 + - 悬停时的交互提示 + +### 🔧 技术实现 + +#### 1. 组件模板更新 + +```vue + +``` + +#### 2. 拖拽逻辑实现 + +```typescript +// 🔄 拖拽相关状态 +const dragIndex = ref(null); +const dragOverIndex = ref(null); + +// 📝 本地数据副本,用于拖拽操作 +const localData = ref([]); + +// 🔄 监听props.data变化,同步到localData +watch( + () => props.data, + (newData) => { + if (newData) { + localData.value = [...newData]; + } + }, + { immediate: true, deep: true } +); + +// 🔄 拖拽开始 +const onDragStart = (index: number, event: DragEvent) => { + dragIndex.value = index; + if (event.dataTransfer) { + event.dataTransfer.effectAllowed = 'move'; + event.dataTransfer.setData('text/html', index.toString()); + } +}; + +// 🔄 拖拽结束 +const onDragEnd = () => { + dragIndex.value = null; + dragOverIndex.value = null; +}; + +// 🔄 拖拽进入 +const onDragEnter = (index: number) => { + dragOverIndex.value = index; +}; + +// 🔄 拖拽放置 +const onDrop = (event: DragEvent) => { + event.preventDefault(); + + if (dragIndex.value !== null && dragOverIndex.value !== null && dragIndex.value !== dragOverIndex.value) { + const newData = [...localData.value]; + const draggedItem = newData[dragIndex.value]; + + // 移除拖拽的项目 + newData.splice(dragIndex.value, 1); + + // 在新位置插入项目 + const insertIndex = dragIndex.value < dragOverIndex.value ? dragOverIndex.value - 1 : dragOverIndex.value; + newData.splice(insertIndex, 0, draggedItem); + + // 更新本地数据 + localData.value = newData; + + // 触发重新排序事件 + emit('reorder', newData); + } + + dragIndex.value = null; + dragOverIndex.value = null; +}; +``` + +#### 3. 事件定义更新 + +```typescript +const emit = defineEmits<{ + (e: 'done', data: FileRecord): void; + (e: 'del', index: number): void; + (e: 'clear'): void; + (e: 'reorder', data: any[]): void; // 新增重新排序事件 +}>(); +``` + +#### 4. 样式设计 + +```less +// 🔄 可拖拽项目样式 +.draggable-item { + position: relative; + cursor: move; + transition: all 0.3s ease; + border-radius: 8px; + + &:hover { + transform: translateY(-2px); + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); + + .drag-indicator { + opacity: 1; + } + } + + &.dragging { + opacity: 0.5; + transform: rotate(5deg) scale(0.95); + z-index: 1000; + } +} + +// 🎯 拖拽指示器 +.drag-indicator { + position: absolute; + top: -8px; + left: 50%; + transform: translateX(-50%); + background: rgba(0, 0, 0, 0.8); + color: white; + padding: 2px 6px; + border-radius: 4px; + font-size: 12px; + opacity: 0; + transition: opacity 0.2s ease; + z-index: 10; + pointer-events: none; +} + +// 📍 顺序指示器 +.order-indicator { + position: absolute; + top: -6px; + right: -6px; + background: #1890ff; + color: white; + width: 20px; + height: 20px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + font-size: 12px; + font-weight: bold; + z-index: 5; + border: 2px solid white; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} +``` + +### 🔗 父组件集成 + +在articleEdit.vue中添加对reorder事件的处理: + +```vue + +``` + +```typescript +// 🔄 处理文件重新排序 +const onReorderFiles = (newData: any[]) => { + files.value = newData; + form.files = JSON.stringify(files.value.map((d) => d.url)); + message.success('文件顺序已更新'); +}; +``` + +### 🎨 用户体验 + +1. **直观操作**:用户可以直接拖拽文件来调整顺序 +2. **视觉反馈**:拖拽时有清晰的视觉指示 +3. **顺序显示**:每个文件都有序号显示当前位置 +4. **即时更新**:拖拽完成后立即更新数据和UI + +### 📊 功能特点 + +| 特性 | 描述 | 状态 | +|------|------|------| +| 拖拽排序 | 支持鼠标拖拽调整顺序 | ✅ | +| 视觉反馈 | 拖拽时的动画和指示器 | ✅ | +| 顺序指示 | 显示文件的当前位置 | ✅ | +| 数据同步 | 拖拽后自动更新数据 | ✅ | +| 事件通知 | 触发reorder事件通知父组件 | ✅ | +| 响应式设计 | 适配不同屏幕尺寸 | ✅ | + +### 🚀 使用场景 + +1. **文章封面图排序**:调整封面图的显示顺序,第一张作为主封面 +2. **图片轮播排序**:调整轮播图片的播放顺序 +3. **文件优先级**:根据重要性调整文件的排列顺序 +4. **展示顺序**:调整图片在前端的展示顺序 + +### 💡 技术亮点 + +- **原生HTML5拖拽API**:使用标准的拖拽事件 +- **Vue3响应式**:利用Vue3的响应式系统 +- **数据双向绑定**:保持组件内外数据同步 +- **优雅的动画效果**:提供流畅的用户体验 +- **类型安全**:完整的TypeScript类型定义 + +这个功能让用户可以更直观地管理文件顺序,特别是在处理多个封面图时,可以轻松调整哪张图片作为主封面显示!🎉 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..9a94342 --- /dev/null +++ b/index.html @@ -0,0 +1,67 @@ + + + + + + + 网宿软件 + + + +
+
+ + + + +
+
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..38dc13b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,18920 @@ +{ + "name": "ele-admin-pro-template", + "version": "1.10.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "ele-admin-pro-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", + "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-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-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/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/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/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-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-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 + }, + "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" + } + }, + "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" + } + }, + "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..4ded56a --- /dev/null +++ b/package.json @@ -0,0 +1,89 @@ +{ + "name": "ele-admin-pro-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", + "less": "^4.1.3", + "postcss": "^8.4.39", + "prettier": "^2.7.1", + "rimraf": "^3.0.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/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/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..f205f8a2a608e3ce1c82eb2b0b69ab26a94ee6db GIT binary patch literal 303 zcmZQzU<5(|0R|vYV31^FU=RbcIs^RNdAX#xfJ|Ob50@Yy4N@V%!3HGdKmShzQY`6? zzK#qG8~eHcB(ehejKx9jP7LeL$-D$|6p}rHd>I(3)EF2VS{N990fib~Fff!FFfhDI zU|_JC!N4G1FlSew4Nzjbr;B5VMeo{47X=**1YFEl32qH&E^*K-ao`Q)UR7wvkyKRJ z_V?_a+k4+I$}hbkzFJ%3Dg#4?p~kZ~HVLDysAr4KA2ZKuW1b+aAiK{|Xya|&U68Wx=#PO$fmF=Qr&NhL__vL$D|FmPoGQG+o))& pRGkXHxy9y{>Z(AWwHkM$*Rox+-;a@a z2CEqi4B`cIb_Lo1B}zP9978O6lM@yQ7(5dA@4u)@q<4pj@Ra}O4;)DFKf$K5^$4fZ z$+PZ{_N#{)``o*@`Ugetfw( zv_a$SiMSmH8lHayUHx3vIVCg! E0CTrf-2eap literal 0 HcmV?d00001 diff --git a/public/json/china-provinces.geo.json b/public/json/china-provinces.geo.json new file mode 100644 index 0000000..be70ca7 --- /dev/null +++ b/public/json/china-provinces.geo.json @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"id":"65","size":"550","name":"新疆","cp":[84.9023,42.148],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[96.416,42.7588],[96.416,42.7148],[95.9766,42.4951],[96.0645,42.3193],[96.2402,42.2314],[95.9766,41.9238],[95.2734,41.6162],[95.1855,41.792],[94.5703,41.4844],[94.043,41.0889],[93.8672,40.6934],[93.0762,40.6494],[92.6367,39.6387],[92.373,39.3311],[92.373,39.1113],[92.373,39.0234],[90.1758,38.4961],[90.3516,38.2324],[90.6152,38.3203],[90.5273,37.8369],[91.0547,37.4414],[91.3184,37.0898],[90.7031,36.7822],[90.791,36.6064],[91.0547,36.5186],[91.0547,36.0791],[90.8789,36.0352],[90,36.2549],[89.9121,36.0791],[89.7363,36.0791],[89.209,36.2988],[88.7695,36.3428],[88.5938,36.4746],[87.3633,36.4307],[86.2207,36.167],[86.1328,35.8594],[85.6055,35.6836],[85.0781,35.7275],[84.1992,35.376],[83.1445,35.4199],[82.8809,35.6836],[82.4414,35.7275],[82.002,35.332],[81.6504,35.2441],[80.4199,35.4199],[80.2441,35.2881],[80.332,35.1563],[80.2441,35.2002],[79.8926,34.8047],[79.8047,34.4971],[79.1016,34.4531],[79.0137,34.3213],[78.2227,34.7168],[78.0469,35.2441],[78.0469,35.5078],[77.4316,35.4639],[76.8164,35.6396],[76.5527,35.8594],[76.2012,35.8154],[75.9375,36.0352],[76.0254,36.4746],[75.8496,36.6943],[75.498,36.7383],[75.4102,36.958],[75.0586,37.002],[74.8828,36.9141],[74.7949,37.0459],[74.5313,37.0898],[74.5313,37.2217],[74.8828,37.2217],[75.1465,37.4414],[74.8828,37.5732],[74.9707,37.749],[74.8828,38.4521],[74.3555,38.6719],[74.1797,38.6719],[74.0918,38.54],[73.8281,38.584],[73.7402,38.8477],[73.8281,38.9795],[73.4766,39.375],[73.916,39.5068],[73.916,39.6826],[73.8281,39.7705],[74.0039,40.0342],[74.8828,40.3418],[74.7949,40.5176],[75.2344,40.4297],[75.5859,40.6494],[75.7617,40.2979],[76.377,40.3857],[76.9043,41.001],[77.6074,41.001],[78.1348,41.2207],[78.1348,41.3965],[80.1563,42.0557],[80.2441,42.2754],[80.1563,42.627],[80.2441,42.8467],[80.5078,42.8906],[80.4199,43.0664],[80.7715,43.1982],[80.4199,44.165],[80.4199,44.6045],[79.9805,44.8242],[79.9805,44.9561],[81.7383,45.3955],[82.0898,45.2197],[82.5293,45.2197],[82.2656,45.6592],[83.0566,47.2412],[83.6719,47.0215],[84.7266,47.0215],[84.9023,46.8896],[85.5176,47.0654],[85.6934,47.2852],[85.5176,48.1201],[85.7813,48.4277],[86.5723,48.5596],[86.8359,48.8232],[86.748,48.9551],[86.8359,49.1309],[87.8027,49.1748],[87.8906,48.999],[87.7148,48.9111],[88.0664,48.7354],[87.9785,48.6035],[88.5059,48.3838],[88.6816,48.1641],[89.1211,47.9883],[89.5605,48.0322],[89.7363,47.8564],[90.0879,47.8564],[90.3516,47.6807],[90.5273,47.2412],[90.8789,46.9775],[91.0547,46.582],[90.8789,46.3184],[91.0547,46.0107],[90.7031,45.7471],[90.7031,45.5273],[90.8789,45.2197],[91.582,45.0879],[93.5156,44.9561],[94.7461,44.3408],[95.3613,44.2969],[95.3613,44.0332],[95.5371,43.9014],[95.8887,43.2422],[96.3281,42.9346],[96.416,42.7588]]]}},{"type":"Feature","properties":{"id":"54","size":"550","name":"西藏","cp":[87.8695,31.6846],"childNum":7},"geometry":{"type":"Polygon","coordinates":[[[79.0137,34.3213],[79.1016,34.4531],[79.8047,34.4971],[79.8926,34.8047],[80.2441,35.2002],[80.332,35.1563],[80.2441,35.2881],[80.4199,35.4199],[81.6504,35.2441],[82.002,35.332],[82.4414,35.7275],[82.8809,35.6836],[83.1445,35.4199],[84.1992,35.376],[85.0781,35.7275],[85.6055,35.6836],[86.1328,35.8594],[86.2207,36.167],[87.3633,36.4307],[88.5938,36.4746],[88.7695,36.3428],[89.209,36.2988],[89.7363,36.0791],[89.3848,36.0352],[89.4727,35.9033],[89.7363,35.7715],[89.7363,35.4199],[89.4727,35.376],[89.4727,35.2441],[89.5605,34.8926],[89.8242,34.8486],[89.7363,34.6729],[89.8242,34.3652],[89.6484,34.0137],[90.0879,33.4863],[90.7031,33.1348],[91.4063,33.1348],[91.9336,32.8271],[92.1973,32.8271],[92.2852,32.7393],[92.9883,32.7393],[93.5156,32.4756],[93.7793,32.5635],[94.1309,32.4316],[94.6582,32.6074],[95.1855,32.4316],[95.0098,32.2998],[95.1855,32.3438],[95.2734,32.2119],[95.3613,32.168],[95.3613,31.9922],[95.4492,31.8164],[95.8008,31.6846],[95.9766,31.8164],[96.1523,31.5967],[96.2402,31.9482],[96.5039,31.7285],[96.8555,31.6846],[96.7676,31.9922],[97.2949,32.0801],[97.3828,32.5635],[97.7344,32.5195],[98.1738,32.3438],[98.4375,31.8604],[98.877,31.4209],[98.6133,31.2012],[98.9648,30.7617],[99.1406,29.2676],[98.9648,29.1357],[98.9648,28.8281],[98.7891,28.8721],[98.7891,29.0039],[98.7012,28.916],[98.6133,28.5205],[98.7891,28.3447],[98.7012,28.2129],[98.3496,28.125],[98.2617,28.3887],[98.1738,28.125],[97.5586,28.5205],[97.2949,28.0811],[97.3828,27.9053],[97.0313,27.7295],[96.5039,28.125],[95.7129,28.2568],[95.3613,28.125],[95.2734,27.9492],[94.2188,27.5537],[93.8672,27.0264],[93.6035,26.9385],[92.1094,26.8506],[92.0215,27.4658],[91.582,27.5537],[91.582,27.9053],[91.4063,28.0371],[91.0547,27.8613],[90.7031,28.0811],[89.8242,28.2129],[89.6484,28.1689],[89.1211,27.5977],[89.1211,27.334],[89.0332,27.2021],[88.7695,27.4219],[88.8574,27.9932],[88.6816,28.125],[88.1543,27.9053],[87.8906,27.9492],[87.7148,27.8174],[87.0996,27.8174],[86.748,28.125],[86.5723,28.125],[86.4844,27.9053],[86.1328,28.125],[86.0449,27.9053],[85.6934,28.3447],[85.6055,28.2568],[85.166,28.3447],[85.166,28.6523],[84.9023,28.5645],[84.4629,28.7402],[84.2871,28.8721],[84.1992,29.2236],[84.1113,29.2676],[83.584,29.1797],[83.2324,29.5752],[82.1777,30.0586],[82.0898,30.3223],[81.3867,30.3662],[81.2109,30.0146],[81.0352,30.2344],[80.0684,30.5859],[79.7168,30.9375],[79.0137,31.0693],[78.75,31.333],[78.8379,31.5967],[78.6621,31.8164],[78.75,31.9043],[78.4863,32.124],[78.3984,32.5195],[78.75,32.6953],[78.9258,32.3438],[79.2773,32.5635],[79.1016,33.1787],[78.6621,33.6621],[78.6621,34.1016],[78.9258,34.1455],[79.0137,34.3213]]]}},{"type":"Feature","properties":{"id":"15","size":"450","name":"内蒙古","cp":[111.670801,41.818311],"childNum":12},"geometry":{"type":"Polygon","coordinates":[[[97.207,42.8027],[99.4922,42.583],[100.8105,42.6709],[101.7773,42.4951],[102.041,42.2314],[102.7441,42.1436],[103.3594,41.8799],[103.8867,41.792],[104.502,41.8799],[104.502,41.6602],[105.0293,41.5723],[105.7324,41.9238],[107.4023,42.4512],[109.4238,42.4512],[110.3906,42.7588],[111.0059,43.3301],[111.9727,43.6816],[111.9727,43.8135],[111.4453,44.3848],[111.7969,45],[111.9727,45.0879],[113.6426,44.7363],[114.1699,44.9561],[114.5215,45.3955],[115.6641,45.4395],[116.1914,45.7031],[116.2793,45.9668],[116.543,46.2744],[117.334,46.3623],[117.4219,46.582],[117.7734,46.5381],[118.3008,46.7578],[118.7402,46.7139],[118.916,46.7578],[119.0918,46.6699],[119.707,46.626],[119.9707,46.7139],[119.707,47.1973],[118.4766,47.9883],[117.8613,48.0322],[117.334,47.6807],[116.8066,47.9004],[116.1914,47.8564],[115.9277,47.6807],[115.5762,47.9004],[115.4883,48.1641],[115.8398,48.252],[115.8398,48.5596],[116.7188,49.834],[117.7734,49.5264],[118.5645,49.9219],[119.2676,50.0977],[119.3555,50.3174],[119.1797,50.3613],[119.5313,50.7568],[119.5313,50.8887],[119.707,51.0645],[120.1465,51.6797],[120.6738,51.9434],[120.7617,52.1191],[120.7617,52.251],[120.5859,52.3389],[120.6738,52.5146],[120.4102,52.6465],[120.0586,52.6025],[120.0586,52.7344],[120.8496,53.2617],[121.4648,53.3496],[121.8164,53.042],[121.2012,52.5586],[121.6406,52.4268],[121.7285,52.2949],[121.9922,52.2949],[122.168,52.5146],[122.6953,52.251],[122.6074,52.0752],[122.959,51.3281],[123.3105,51.2402],[123.6621,51.3721],[124.3652,51.2842],[124.541,51.3721],[124.8926,51.3721],[125.0684,51.6357],[125.332,51.6357],[126.0352,51.0205],[125.7715,50.7568],[125.7715,50.5371],[125.332,50.1416],[125.1563,49.834],[125.2441,49.1748],[124.8047,49.1309],[124.4531,48.1201],[124.2773,48.5156],[122.4316,47.373],[123.0469,46.7139],[123.3984,46.8896],[123.3984,46.9775],[123.4863,46.9775],[123.5742,46.8457],[123.5742,46.8896],[123.5742,46.6699],[123.0469,46.582],[123.2227,46.2305],[122.7832,46.0107],[122.6953,45.7031],[122.4316,45.8789],[122.2559,45.791],[121.8164,46.0107],[121.7285,45.7471],[121.9043,45.7031],[122.2559,45.2637],[122.0801,44.8682],[122.3438,44.2529],[123.1348,44.4727],[123.4863,43.7256],[123.3105,43.5059],[123.6621,43.374],[123.5742,43.0225],[123.3105,42.9785],[123.1348,42.8027],[122.7832,42.7148],[122.3438,42.8467],[122.3438,42.6709],[121.9922,42.7148],[121.7285,42.4512],[121.4648,42.4951],[120.498,42.0996],[120.1465,41.7041],[119.8828,42.1875],[119.5313,42.3633],[119.3555,42.2754],[119.2676,41.7041],[119.4434,41.6162],[119.2676,41.3086],[118.3887,41.3086],[118.125,41.748],[118.3008,41.792],[118.3008,42.0996],[118.125,42.0557],[117.9492,42.2314],[118.0371,42.4072],[117.7734,42.627],[117.5098,42.583],[117.334,42.4512],[116.8945,42.4072],[116.8066,42.0117],[116.2793,42.0117],[116.0156,41.792],[115.9277,41.9238],[115.2246,41.5723],[114.9609,41.6162],[114.873,42.0996],[114.5215,42.1436],[114.1699,41.792],[114.2578,41.5723],[113.9063,41.4404],[113.9941,41.2207],[113.9063,41.1328],[114.082,40.7373],[114.082,40.5176],[113.8184,40.5176],[113.5547,40.3418],[113.2031,40.3857],[112.7637,40.166],[112.3242,40.2539],[111.9727,39.5947],[111.4453,39.6387],[111.3574,39.4189],[111.0938,39.375],[111.0938,39.5947],[110.6543,39.2871],[110.127,39.4629],[110.2148,39.2871],[109.8633,39.2432],[109.9512,39.1553],[108.9844,38.3203],[109.0723,38.0127],[108.8965,37.9688],[108.8086,38.0127],[108.7207,37.7051],[108.1934,37.6172],[107.666,37.8809],[107.3145,38.1006],[106.7871,38.1885],[106.5234,38.3203],[106.9629,38.9795],[106.7871,39.375],[106.3477,39.2871],[105.9082,38.7158],[105.8203,37.793],[104.3262,37.4414],[103.4473,37.8369],[103.3594,38.0127],[103.5352,38.1445],[103.4473,38.3643],[104.2383,38.9795],[104.0625,39.4189],[103.3594,39.3311],[103.0078,39.1113],[102.4805,39.2432],[101.8652,39.1113],[102.041,38.8916],[101.7773,38.6719],[101.3379,38.7598],[101.25,39.0234],[100.9863,38.9355],[100.8105,39.4189],[100.5469,39.4189],[100.0195,39.7705],[99.4922,39.8584],[100.1074,40.2539],[100.1953,40.6494],[99.9316,41.001],[99.2285,40.8691],[99.0527,40.6934],[98.9648,40.7813],[98.7891,40.6055],[98.5254,40.7373],[98.6133,40.6494],[98.3496,40.5615],[98.3496,40.9131],[97.4707,41.4844],[97.8223,41.6162],[97.8223,41.748],[97.207,42.8027]]]}},{"type":"Feature","properties":{"id":"63","size":"800","name":"青海","cp":[95.2402,35.4199],"childNum":8},"geometry":{"type":"Polygon","coordinates":[[[89.7363,36.0791],[89.9121,36.0791],[90,36.2549],[90.8789,36.0352],[91.0547,36.0791],[91.0547,36.5186],[90.791,36.6064],[90.7031,36.7822],[91.3184,37.0898],[91.0547,37.4414],[90.5273,37.8369],[90.6152,38.3203],[90.3516,38.2324],[90.1758,38.4961],[92.373,39.0234],[92.373,39.1113],[93.1641,39.1992],[93.1641,38.9795],[93.6914,38.9355],[93.8672,38.7158],[94.3066,38.7598],[94.5703,38.3643],[95.0098,38.4082],[95.4492,38.2764],[95.7129,38.3643],[96.2402,38.1006],[96.416,38.2324],[96.6797,38.1885],[96.6797,38.4521],[97.1191,38.584],[97.0313,39.1992],[98.1738,38.8037],[98.3496,39.0234],[98.6133,38.9355],[98.7891,39.0674],[99.1406,38.9355],[99.8438,38.3643],[100.1953,38.2764],[100.0195,38.4521],[100.1074,38.4961],[100.459,38.2764],[100.7227,38.2324],[101.1621,37.8369],[101.5137,37.8809],[101.7773,37.6172],[101.9531,37.7051],[102.1289,37.4414],[102.5684,37.1777],[102.4805,36.958],[102.6563,36.8262],[102.5684,36.7383],[102.832,36.3428],[103.0078,36.2549],[102.9199,36.0791],[102.9199,35.9033],[102.6563,35.7715],[102.832,35.5957],[102.4805,35.5957],[102.3047,35.4199],[102.3926,35.2002],[101.9531,34.8486],[101.9531,34.6289],[102.2168,34.4092],[102.1289,34.2773],[101.6895,34.1016],[100.9863,34.3652],[100.8105,34.2773],[101.25,33.6621],[101.5137,33.7061],[101.6016,33.5303],[101.7773,33.5303],[101.6895,33.3105],[101.7773,33.2227],[101.6016,33.1348],[101.1621,33.2227],[101.25,32.6953],[100.7227,32.6514],[100.7227,32.5195],[100.3711,32.7393],[100.1074,32.6514],[100.1074,32.8711],[99.8438,33.0029],[99.7559,32.7393],[99.2285,32.915],[99.2285,33.0469],[98.877,33.1787],[98.4375,34.0576],[97.8223,34.1895],[97.6465,34.1016],[97.7344,33.9258],[97.3828,33.8818],[97.4707,33.5742],[97.7344,33.3984],[97.3828,32.8711],[97.4707,32.6953],[97.7344,32.5195],[97.3828,32.5635],[97.2949,32.0801],[96.7676,31.9922],[96.8555,31.6846],[96.5039,31.7285],[96.2402,31.9482],[96.1523,31.5967],[95.9766,31.8164],[95.8008,31.6846],[95.4492,31.8164],[95.3613,31.9922],[95.3613,32.168],[95.2734,32.2119],[95.1855,32.3438],[95.0098,32.2998],[95.1855,32.4316],[94.6582,32.6074],[94.1309,32.4316],[93.7793,32.5635],[93.5156,32.4756],[92.9883,32.7393],[92.2852,32.7393],[92.1973,32.8271],[91.9336,32.8271],[91.4063,33.1348],[90.7031,33.1348],[90.0879,33.4863],[89.6484,34.0137],[89.8242,34.3652],[89.7363,34.6729],[89.8242,34.8486],[89.5605,34.8926],[89.4727,35.2441],[89.4727,35.376],[89.7363,35.4199],[89.7363,35.7715],[89.4727,35.9033],[89.3848,36.0352],[89.7363,36.0791]]]}},{"type":"Feature","properties":{"id":"51","size":"900","name":"四川","cp":[101.9199,30.1904],"childNum":21},"geometry":{"type":"Polygon","coordinates":[[[101.7773,33.5303],[101.8652,33.5742],[101.9531,33.4424],[101.8652,33.0908],[102.4805,33.4424],[102.2168,33.9258],[102.9199,34.3213],[103.0957,34.1895],[103.1836,33.7939],[104.1504,33.6182],[104.2383,33.3984],[104.4141,33.3105],[104.3262,33.2227],[104.4141,33.0469],[104.3262,32.8711],[104.4141,32.7393],[105.2051,32.6074],[105.3809,32.7393],[105.3809,32.8711],[105.4688,32.915],[105.5566,32.7393],[106.084,32.8711],[106.084,32.7393],[106.3477,32.6514],[107.0508,32.6953],[107.1387,32.4756],[107.2266,32.4316],[107.4023,32.5195],[108.0176,32.168],[108.2813,32.2559],[108.5449,32.2119],[108.3691,32.168],[108.2813,31.9043],[108.5449,31.6846],[108.1934,31.5088],[107.9297,30.8496],[107.4902,30.8496],[107.4023,30.7617],[107.4902,30.6299],[107.0508,30.0146],[106.7871,30.0146],[106.6113,30.3223],[106.2598,30.1904],[105.8203,30.4541],[105.6445,30.2783],[105.5566,30.1025],[105.7324,29.8828],[105.293,29.5313],[105.4688,29.3115],[105.7324,29.2676],[105.8203,28.96],[106.2598,28.8721],[106.3477,28.5205],[105.9961,28.7402],[105.6445,28.4326],[105.9082,28.125],[106.1719,28.125],[106.3477,27.8174],[105.6445,27.6416],[105.5566,27.7734],[105.293,27.7295],[105.2051,27.9932],[105.0293,28.0811],[104.8535,27.9053],[104.4141,27.9492],[104.3262,28.0371],[104.4141,28.125],[104.4141,28.2568],[104.2383,28.4326],[104.4141,28.6084],[103.8867,28.6523],[103.7988,28.3008],[103.4473,28.125],[103.4473,27.7734],[102.9199,27.29],[103.0078,26.3672],[102.6563,26.1914],[102.5684,26.3672],[102.1289,26.1035],[101.8652,26.0596],[101.6016,26.2354],[101.6895,26.3672],[101.4258,26.5869],[101.4258,26.8066],[101.4258,26.7188],[101.1621,27.0264],[101.1621,27.1582],[100.7227,27.8613],[100.3711,27.8174],[100.2832,27.7295],[100.0195,28.125],[100.1953,28.3447],[99.668,28.8281],[99.4043,28.5205],[99.4043,28.1689],[99.2285,28.3008],[99.1406,29.2676],[98.9648,30.7617],[98.6133,31.2012],[98.877,31.4209],[98.4375,31.8604],[98.1738,32.3438],[97.7344,32.5195],[97.4707,32.6953],[97.3828,32.8711],[97.7344,33.3984],[97.4707,33.5742],[97.3828,33.8818],[97.7344,33.9258],[97.6465,34.1016],[97.8223,34.1895],[98.4375,34.0576],[98.877,33.1787],[99.2285,33.0469],[99.2285,32.915],[99.7559,32.7393],[99.8438,33.0029],[100.1074,32.8711],[100.1074,32.6514],[100.3711,32.7393],[100.7227,32.5195],[100.7227,32.6514],[101.25,32.6953],[101.1621,33.2227],[101.6016,33.1348],[101.7773,33.2227],[101.6895,33.3105],[101.7773,33.5303]]]}},{"type":"Feature","properties":{"id":"23","size":"700","name":"黑龙江","cp":[128.642464,46.756967],"childNum":13},"geometry":{"type":"Polygon","coordinates":[[[121.4648,53.3496],[123.6621,53.5693],[124.8926,53.0859],[125.0684,53.2178],[125.5957,53.0859],[125.6836,52.9102],[126.123,52.7783],[126.0352,52.6025],[126.2109,52.5146],[126.3867,52.2949],[126.3867,52.207],[126.5625,52.1631],[126.4746,51.9434],[126.9141,51.3721],[126.8262,51.2842],[127.002,51.3281],[126.9141,51.1084],[127.2656,50.7568],[127.3535,50.2734],[127.6172,50.2295],[127.5293,49.8779],[127.793,49.6143],[128.7598,49.5703],[129.1113,49.3506],[129.4629,49.4385],[130.2539,48.8672],[130.6934,48.8672],[130.5176,48.6475],[130.8691,48.2959],[130.6934,48.1201],[131.0449,47.6807],[132.5391,47.7246],[132.627,47.9443],[133.0664,48.1201],[133.5059,48.1201],[134.209,48.3838],[135.0879,48.4277],[134.7363,48.252],[134.5605,47.9883],[134.7363,47.6807],[134.5605,47.4609],[134.3848,47.4609],[134.209,47.2852],[134.209,47.1533],[133.8574,46.5381],[133.9453,46.2744],[133.5059,45.835],[133.418,45.5713],[133.2422,45.5273],[133.0664,45.1318],[132.8906,45.0439],[131.9238,45.3516],[131.5723,45.0439],[131.0449,44.8682],[131.3086,44.0771],[131.2207,43.7256],[131.3086,43.4619],[130.8691,43.418],[130.5176,43.6377],[130.3418,43.9893],[129.9902,43.8574],[129.9023,44.0332],[129.8145,43.9014],[129.2871,43.8135],[129.1992,43.5938],[128.8477,43.5498],[128.4961,44.165],[128.4082,44.4727],[128.0566,44.3408],[128.0566,44.1211],[127.7051,44.1211],[127.5293,44.6045],[127.0898,44.6045],[127.002,44.7803],[127.0898,45],[126.9141,45.1318],[126.5625,45.2637],[126.0352,45.1758],[125.7715,45.3076],[125.6836,45.5273],[125.0684,45.3955],[124.8926,45.5273],[124.3652,45.4395],[124.0137,45.7471],[123.9258,46.2305],[123.2227,46.2305],[123.0469,46.582],[123.5742,46.6699],[123.5742,46.8896],[123.5742,46.8457],[123.4863,46.9775],[123.3984,46.9775],[123.3984,46.8896],[123.0469,46.7139],[122.4316,47.373],[124.2773,48.5156],[124.4531,48.1201],[124.8047,49.1309],[125.2441,49.1748],[125.1563,49.834],[125.332,50.1416],[125.7715,50.5371],[125.7715,50.7568],[126.0352,51.0205],[125.332,51.6357],[125.0684,51.6357],[124.8926,51.3721],[124.541,51.3721],[124.3652,51.2842],[123.6621,51.3721],[123.3105,51.2402],[122.959,51.3281],[122.6074,52.0752],[122.6953,52.251],[122.168,52.5146],[121.9922,52.2949],[121.7285,52.2949],[121.6406,52.4268],[121.2012,52.5586],[121.8164,53.042],[121.4648,53.3496]]]}},{"type":"Feature","properties":{"id":"62","size":"690","name":"甘肃","cp":[103.823557,36.058039],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[96.416,42.7148],[97.207,42.8027],[97.8223,41.748],[97.8223,41.6162],[97.4707,41.4844],[98.3496,40.9131],[98.3496,40.5615],[98.6133,40.6494],[98.5254,40.7373],[98.7891,40.6055],[98.9648,40.7813],[99.0527,40.6934],[99.2285,40.8691],[99.9316,41.001],[100.1953,40.6494],[100.1074,40.2539],[99.4922,39.8584],[100.0195,39.7705],[100.5469,39.4189],[100.8105,39.4189],[100.9863,38.9355],[101.25,39.0234],[101.3379,38.7598],[101.7773,38.6719],[102.041,38.8916],[101.8652,39.1113],[102.4805,39.2432],[103.0078,39.1113],[103.3594,39.3311],[104.0625,39.4189],[104.2383,38.9795],[103.4473,38.3643],[103.5352,38.1445],[103.3594,38.0127],[103.4473,37.8369],[104.3262,37.4414],[104.5898,37.4414],[104.5898,37.2217],[104.8535,37.2217],[105.293,36.8262],[105.2051,36.6943],[105.4688,36.123],[105.293,35.9912],[105.3809,35.7715],[105.7324,35.7275],[105.8203,35.5518],[105.9961,35.4639],[105.9082,35.4199],[105.9961,35.4199],[106.084,35.376],[106.2598,35.4199],[106.3477,35.2441],[106.5234,35.332],[106.4355,35.6836],[106.6992,35.6836],[106.9629,35.8154],[106.875,36.123],[106.5234,36.2549],[106.5234,36.4746],[106.4355,36.5625],[106.6113,36.7822],[106.6113,37.0898],[107.3145,37.0898],[107.3145,36.9141],[108.7207,36.3428],[108.6328,35.9912],[108.5449,35.8594],[108.6328,35.5518],[108.5449,35.2881],[107.7539,35.2881],[107.7539,35.1123],[107.8418,35.0244],[107.666,34.9365],[107.2266,34.8926],[106.9629,35.0684],[106.6113,35.0684],[106.5234,34.7607],[106.3477,34.585],[106.6992,34.3213],[106.5234,34.2773],[106.6113,34.1455],[106.4355,33.9258],[106.5234,33.5303],[105.9961,33.6182],[105.7324,33.3984],[105.9961,33.1787],[105.9082,33.0029],[105.4688,32.915],[105.3809,32.8711],[105.3809,32.7393],[105.2051,32.6074],[104.4141,32.7393],[104.3262,32.8711],[104.4141,33.0469],[104.3262,33.2227],[104.4141,33.3105],[104.2383,33.3984],[104.1504,33.6182],[103.1836,33.7939],[103.0957,34.1895],[102.9199,34.3213],[102.2168,33.9258],[102.4805,33.4424],[101.8652,33.0908],[101.9531,33.4424],[101.8652,33.5742],[101.7773,33.5303],[101.6016,33.5303],[101.5137,33.7061],[101.25,33.6621],[100.8105,34.2773],[100.9863,34.3652],[101.6895,34.1016],[102.1289,34.2773],[102.2168,34.4092],[101.9531,34.6289],[101.9531,34.8486],[102.3926,35.2002],[102.3047,35.4199],[102.4805,35.5957],[102.832,35.5957],[102.6563,35.7715],[102.9199,35.9033],[102.9199,36.0791],[103.0078,36.2549],[102.832,36.3428],[102.5684,36.7383],[102.6563,36.8262],[102.4805,36.958],[102.5684,37.1777],[102.1289,37.4414],[101.9531,37.7051],[101.7773,37.6172],[101.5137,37.8809],[101.1621,37.8369],[100.7227,38.2324],[100.459,38.2764],[100.1074,38.4961],[100.0195,38.4521],[100.1953,38.2764],[99.8438,38.3643],[99.1406,38.9355],[98.7891,39.0674],[98.6133,38.9355],[98.3496,39.0234],[98.1738,38.8037],[97.0313,39.1992],[97.1191,38.584],[96.6797,38.4521],[96.6797,38.1885],[96.416,38.2324],[96.2402,38.1006],[95.7129,38.3643],[95.4492,38.2764],[95.0098,38.4082],[94.5703,38.3643],[94.3066,38.7598],[93.8672,38.7158],[93.6914,38.9355],[93.1641,38.9795],[93.1641,39.1992],[92.373,39.1113],[92.373,39.3311],[92.6367,39.6387],[93.0762,40.6494],[93.8672,40.6934],[94.043,41.0889],[94.5703,41.4844],[95.1855,41.792],[95.2734,41.6162],[95.9766,41.9238],[96.2402,42.2314],[96.0645,42.3193],[95.9766,42.4951],[96.416,42.7148]]]}},{"type":"Feature","properties":{"id":"53","size":"1200","name":"云南","cp":[101.512251,24.740609],"childNum":16},"geometry":{"type":"Polygon","coordinates":[[[98.1738,28.125],[98.2617,28.3887],[98.3496,28.125],[98.7012,28.2129],[98.7891,28.3447],[98.6133,28.5205],[98.7012,28.916],[98.7891,29.0039],[98.7891,28.8721],[98.9648,28.8281],[98.9648,29.1357],[99.1406,29.2676],[99.2285,28.3008],[99.4043,28.1689],[99.4043,28.5205],[99.668,28.8281],[100.1953,28.3447],[100.0195,28.125],[100.2832,27.7295],[100.3711,27.8174],[100.7227,27.8613],[101.1621,27.1582],[101.1621,27.0264],[101.4258,26.7188],[101.4258,26.8066],[101.4258,26.5869],[101.6895,26.3672],[101.6016,26.2354],[101.8652,26.0596],[102.1289,26.1035],[102.5684,26.3672],[102.6563,26.1914],[103.0078,26.3672],[102.9199,27.29],[103.4473,27.7734],[103.4473,28.125],[103.7988,28.3008],[103.8867,28.6523],[104.4141,28.6084],[104.2383,28.4326],[104.4141,28.2568],[104.4141,28.125],[104.3262,28.0371],[104.4141,27.9492],[104.8535,27.9053],[105.0293,28.0811],[105.2051,27.9932],[105.293,27.7295],[105.2051,27.3779],[104.5898,27.334],[104.4141,27.4658],[104.1504,27.2461],[103.8867,27.4219],[103.623,27.0264],[103.7109,26.9824],[103.7109,26.7627],[103.8867,26.543],[104.4141,26.6748],[104.6777,26.4111],[104.3262,25.708],[104.8535,25.2246],[104.5898,25.0488],[104.6777,24.9609],[104.502,24.7412],[104.6777,24.3457],[104.7656,24.4775],[105.0293,24.4336],[105.2051,24.082],[105.4688,24.0381],[105.5566,24.126],[105.9961,24.126],[106.1719,23.8184],[106.1719,23.5547],[105.6445,23.4229],[105.5566,23.2031],[105.293,23.3789],[104.8535,23.1592],[104.7656,22.8516],[104.3262,22.6758],[104.1504,22.8076],[103.9746,22.5439],[103.623,22.7637],[103.5352,22.5879],[103.3594,22.8076],[103.0957,22.4561],[102.4805,22.7637],[102.3047,22.4121],[101.8652,22.3682],[101.7773,22.5],[101.6016,22.1924],[101.8652,21.6211],[101.7773,21.1377],[101.6016,21.2256],[101.25,21.1816],[101.1621,21.7529],[100.6348,21.4453],[100.1074,21.4893],[99.9316,22.0605],[99.2285,22.1484],[99.4043,22.5879],[99.3164,22.7197],[99.4922,23.0713],[98.877,23.2031],[98.7012,23.9502],[98.877,24.126],[98.1738,24.082],[97.7344,23.8623],[97.5586,23.9063],[97.7344,24.126],[97.6465,24.4336],[97.5586,24.4336],[97.5586,24.7412],[97.7344,24.8291],[97.8223,25.2686],[98.1738,25.4004],[98.1738,25.6201],[98.3496,25.5762],[98.5254,25.8398],[98.7012,25.8838],[98.6133,26.0596],[98.7012,26.1475],[98.7891,26.5869],[98.7012,27.5098],[98.5254,27.6416],[98.3496,27.5098],[98.1738,28.125]]]}},{"type":"Feature","properties":{"id":"45","size":"1450","name":"广西","cp":[107.7813,23.6426],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[104.502,24.7412],[104.6777,24.6094],[105.2051,24.9609],[105.9961,24.6533],[106.1719,24.7852],[106.1719,24.9609],[106.875,25.1807],[107.0508,25.2686],[106.9629,25.4883],[107.2266,25.6201],[107.4902,25.2246],[107.7539,25.2246],[107.8418,25.1367],[108.1055,25.2246],[108.1934,25.4443],[108.3691,25.5322],[108.6328,25.3125],[108.6328,25.5762],[109.0723,25.5322],[108.9844,25.752],[109.3359,25.708],[109.5117,26.0156],[109.7754,25.8838],[109.9512,26.1914],[110.2148,25.9717],[110.5664,26.3232],[111.1816,26.3232],[111.2695,26.2354],[111.2695,25.8838],[111.4453,25.8398],[111.0059,25.0049],[111.0938,24.9609],[111.3574,25.1367],[111.5332,24.6533],[111.709,24.7852],[112.0605,24.7412],[111.8848,24.6533],[112.0605,24.3457],[111.8848,24.2139],[111.8848,23.9941],[111.7969,23.8184],[111.6211,23.8184],[111.6211,23.6865],[111.3574,23.4668],[111.4453,23.0273],[111.2695,22.8076],[110.7422,22.5439],[110.7422,22.2803],[110.6543,22.1484],[110.3027,22.1484],[110.3027,21.8848],[109.9512,21.8408],[109.8633,21.665],[109.7754,21.6211],[109.7754,21.4014],[109.5996,21.4453],[109.1602,21.3574],[109.248,20.874],[109.0723,20.9619],[109.0723,21.5332],[108.7207,21.5332],[108.6328,21.665],[108.2813,21.4893],[107.8418,21.6211],[107.4023,21.6211],[107.0508,21.7969],[107.0508,21.9287],[106.6992,22.0166],[106.6113,22.4121],[106.7871,22.7637],[106.6992,22.8955],[105.9082,22.9395],[105.5566,23.0713],[105.5566,23.2031],[105.6445,23.4229],[106.1719,23.5547],[106.1719,23.8184],[105.9961,24.126],[105.5566,24.126],[105.4688,24.0381],[105.2051,24.082],[105.0293,24.4336],[104.7656,24.4775],[104.6777,24.3457],[104.502,24.7412]]]}},{"type":"Feature","properties":{"id":"43","size":"1700","name":"湖南","cp":[111.782279,28.09409],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[109.248,28.4766],[109.248,29.1357],[109.5117,29.6191],[109.6875,29.6191],[109.7754,29.751],[110.4785,29.6631],[110.6543,29.751],[110.4785,30.0146],[110.8301,30.1465],[111.7969,29.9268],[112.2363,29.5313],[112.5,29.6191],[112.6758,29.5752],[112.9395,29.7949],[113.0273,29.751],[112.9395,29.4873],[113.0273,29.4434],[113.5547,29.8389],[113.5547,29.707],[113.7305,29.5752],[113.6426,29.3115],[113.7305,29.0918],[113.9063,29.0479],[114.1699,28.8281],[114.082,28.5645],[114.2578,28.3447],[113.7305,27.9492],[113.6426,27.5977],[113.6426,27.3779],[113.8184,27.29],[113.7305,27.1143],[113.9063,26.9385],[113.9063,26.6309],[114.082,26.5869],[113.9941,26.1914],[114.2578,26.1475],[113.9941,26.0596],[113.9063,25.4443],[113.6426,25.3125],[113.2031,25.5322],[112.8516,25.3564],[113.0273,25.2246],[113.0273,24.9609],[112.8516,24.917],[112.5879,25.1367],[112.2363,25.1807],[112.1484,24.873],[112.0605,24.7412],[111.709,24.7852],[111.5332,24.6533],[111.3574,25.1367],[111.0938,24.9609],[111.0059,25.0049],[111.4453,25.8398],[111.2695,25.8838],[111.2695,26.2354],[111.1816,26.3232],[110.5664,26.3232],[110.2148,25.9717],[109.9512,26.1914],[109.7754,25.8838],[109.5117,26.0156],[109.4238,26.2793],[109.248,26.3232],[109.4238,26.5869],[109.3359,26.7188],[109.5117,26.8066],[109.5117,27.0264],[109.3359,27.1582],[108.8965,27.0264],[108.8086,27.1143],[109.4238,27.5977],[109.3359,27.9053],[109.3359,28.2568],[109.248,28.4766]]]}},{"type":"Feature","properties":{"id":"61","size":"1150","name":"陕西","cp":[108.948024,34.263161],"childNum":10},"geometry":{"type":"Polygon","coordinates":[[[105.4688,32.915],[105.9082,33.0029],[105.9961,33.1787],[105.7324,33.3984],[105.9961,33.6182],[106.5234,33.5303],[106.4355,33.9258],[106.6113,34.1455],[106.5234,34.2773],[106.6992,34.3213],[106.3477,34.585],[106.5234,34.7607],[106.6113,35.0684],[106.9629,35.0684],[107.2266,34.8926],[107.666,34.9365],[107.8418,35.0244],[107.7539,35.1123],[107.7539,35.2881],[108.5449,35.2881],[108.6328,35.5518],[108.5449,35.8594],[108.6328,35.9912],[108.7207,36.3428],[107.3145,36.9141],[107.3145,37.0898],[107.3145,37.6172],[107.666,37.8809],[108.1934,37.6172],[108.7207,37.7051],[108.8086,38.0127],[108.8965,37.9688],[109.0723,38.0127],[108.9844,38.3203],[109.9512,39.1553],[109.8633,39.2432],[110.2148,39.2871],[110.127,39.4629],[110.6543,39.2871],[111.0938,39.5947],[111.0938,39.375],[111.1816,39.2432],[110.918,38.7158],[110.8301,38.4961],[110.4785,38.1885],[110.4785,37.9688],[110.8301,37.6611],[110.3906,37.002],[110.4785,36.123],[110.5664,35.6396],[110.2148,34.8926],[110.2148,34.6729],[110.3906,34.585],[110.4785,34.2334],[110.6543,34.1455],[110.6543,33.8379],[111.0059,33.5303],[111.0059,33.2666],[110.7422,33.1348],[110.5664,33.2666],[110.3027,33.1787],[109.5996,33.2666],[109.4238,33.1348],[109.7754,33.0469],[109.7754,32.915],[110.127,32.7393],[110.127,32.6074],[109.6875,32.6074],[109.5117,32.4316],[109.5996,31.7285],[109.248,31.7285],[109.0723,31.9482],[108.5449,32.2119],[108.2813,32.2559],[108.0176,32.168],[107.4023,32.5195],[107.2266,32.4316],[107.1387,32.4756],[107.0508,32.6953],[106.3477,32.6514],[106.084,32.7393],[106.084,32.8711],[105.5566,32.7393],[105.4688,32.915]]]}},{"type":"Feature","properties":{"id":"44","size":"1600","name":"广东","cp":[113.280637,23.125178],"childNum":21},"geometry":{"type":"Polygon","coordinates":[[[109.7754,21.4014],[109.7754,21.6211],[109.8633,21.665],[109.9512,21.8408],[110.3027,21.8848],[110.3027,22.1484],[110.6543,22.1484],[110.7422,22.2803],[110.7422,22.5439],[111.2695,22.8076],[111.4453,23.0273],[111.3574,23.4668],[111.6211,23.6865],[111.6211,23.8184],[111.7969,23.8184],[111.8848,23.9941],[111.8848,24.2139],[112.0605,24.3457],[111.8848,24.6533],[112.0605,24.7412],[112.1484,24.873],[112.2363,25.1807],[112.5879,25.1367],[112.8516,24.917],[113.0273,24.9609],[113.0273,25.2246],[112.8516,25.3564],[113.2031,25.5322],[113.6426,25.3125],[113.9063,25.4443],[113.9941,25.2686],[114.6094,25.4004],[114.7852,25.2686],[114.6973,25.1367],[114.4336,24.9609],[114.1699,24.6973],[114.4336,24.5215],[115.4004,24.7852],[115.8398,24.5654],[115.752,24.7852],[115.9277,24.917],[116.2793,24.7852],[116.3672,24.873],[116.543,24.6094],[116.7188,24.6533],[116.9824,24.1699],[116.9824,23.9063],[117.1582,23.5547],[117.334,23.2471],[116.8945,23.3789],[116.6309,23.1152],[116.543,22.8516],[115.9277,22.7197],[115.6641,22.7637],[115.5762,22.6318],[115.0488,22.6758],[114.6094,22.3682],[114.3457,22.5439],[113.9941,22.5],[113.8184,22.1924],[114.3457,22.1484],[114.4336,22.0166],[114.082,21.9287],[113.9941,21.7969],[113.5547,22.0166],[113.1152,21.8408],[112.9395,21.5771],[112.4121,21.4453],[112.2363,21.5332],[111.5332,21.4893],[111.2695,21.3574],[110.7422,21.3574],[110.6543,21.2256],[110.7422,20.918],[110.4785,20.874],[110.6543,20.2588],[110.5664,20.2588],[110.3906,20.127],[110.0391,20.127],[109.8633,20.127],[109.8633,20.3027],[109.5996,20.918],[109.7754,21.4014],[109.7754,21.4014]],[[113.5986,22.1649],[113.6096,22.1265],[113.5547,22.11],[113.5437,22.2034],[113.5767,22.2034],[113.5986,22.1649]]]}},{"type":"Feature","properties":{"id":"22","size":"1120","name":"吉林","cp":[125.7746,43.5938],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[123.2227,46.2305],[123.9258,46.2305],[124.0137,45.7471],[124.3652,45.4395],[124.8926,45.5273],[125.0684,45.3955],[125.6836,45.5273],[125.7715,45.3076],[126.0352,45.1758],[126.5625,45.2637],[126.9141,45.1318],[127.0898,45],[127.002,44.7803],[127.0898,44.6045],[127.5293,44.6045],[127.7051,44.1211],[128.0566,44.1211],[128.0566,44.3408],[128.4082,44.4727],[128.4961,44.165],[128.8477,43.5498],[129.1992,43.5938],[129.2871,43.8135],[129.8145,43.9014],[129.9023,44.0332],[129.9902,43.8574],[130.3418,43.9893],[130.5176,43.6377],[130.8691,43.418],[131.3086,43.4619],[131.3086,43.3301],[131.1328,42.9346],[130.4297,42.7148],[130.6055,42.6709],[130.6055,42.4512],[130.2539,42.7588],[130.2539,42.8906],[130.166,42.9785],[129.9023,43.0225],[129.7266,42.4951],[129.375,42.4512],[128.9355,42.0117],[128.0566,42.0117],[128.3203,41.5723],[128.1445,41.3525],[127.0898,41.5283],[127.1777,41.5723],[126.9141,41.792],[126.6504,41.6602],[126.4746,41.3965],[126.123,40.957],[125.6836,40.8691],[125.5957,40.9131],[125.7715,41.2207],[125.332,41.6602],[125.332,41.9678],[125.4199,42.0996],[125.332,42.1436],[124.8926,42.8027],[124.8926,43.0664],[124.7168,43.0664],[124.4531,42.8467],[124.2773,43.2422],[123.8379,43.4619],[123.6621,43.374],[123.3105,43.5059],[123.4863,43.7256],[123.1348,44.4727],[122.3438,44.2529],[122.0801,44.8682],[122.2559,45.2637],[121.9043,45.7031],[121.7285,45.7471],[121.8164,46.0107],[122.2559,45.791],[122.4316,45.8789],[122.6953,45.7031],[122.7832,46.0107],[123.2227,46.2305]]]}},{"type":"Feature","properties":{"id":"13","size":"1300","name":"河北","cp":[114.502461,38.045474],"childNum":11},"geometry":{"type":"MultiPolygon","coordinates":[[[[114.5215,39.5068],[114.3457,39.8584],[113.9941,39.9902],[114.5215,40.3418],[114.3457,40.3857],[114.2578,40.6055],[114.082,40.7373],[113.9063,41.1328],[113.9941,41.2207],[113.9063,41.4404],[114.2578,41.5723],[114.1699,41.792],[114.5215,42.1436],[114.873,42.0996],[114.9609,41.6162],[115.2246,41.5723],[115.9277,41.9238],[116.0156,41.792],[116.2793,42.0117],[116.8066,42.0117],[116.8945,42.4072],[117.334,42.4512],[117.5098,42.583],[117.7734,42.627],[118.0371,42.4072],[117.9492,42.2314],[118.125,42.0557],[118.3008,42.0996],[118.3008,41.792],[118.125,41.748],[118.3887,41.3086],[119.2676,41.3086],[118.8281,40.8252],[119.2676,40.5176],[119.5313,40.5615],[119.707,40.1221],[119.8828,39.9463],[119.5313,39.6826],[119.4434,39.4189],[118.916,39.0674],[118.4766,38.9355],[118.125,39.0234],[118.0371,39.1992],[118.0371,39.2432],[117.8613,39.4189],[117.9492,39.5947],[117.6855,39.5947],[117.5098,39.7705],[117.5098,39.9902],[117.6855,39.9902],[117.6855,40.0781],[117.4219,40.21],[117.2461,40.5176],[117.4219,40.6494],[116.9824,40.6934],[116.6309,41.0449],[116.3672,40.9131],[116.4551,40.7813],[116.1914,40.7813],[116.1035,40.6055],[115.752,40.5615],[115.9277,40.2539],[115.4004,39.9463],[115.4883,39.6387],[115.752,39.5068],[116.1914,39.5947],[116.3672,39.4629],[116.543,39.5947],[116.8066,39.5947],[116.8945,39.1113],[116.7188,38.9355],[116.7188,38.8037],[117.2461,38.54],[117.5977,38.6279],[117.9492,38.3203],[117.4219,37.8369],[116.8066,37.8369],[116.4551,37.4854],[116.2793,37.5732],[116.2793,37.3535],[116.0156,37.3535],[115.752,36.9141],[115.3125,36.5186],[115.4883,36.167],[115.3125,36.0791],[115.1367,36.2109],[114.9609,36.0791],[114.873,36.123],[113.7305,36.3428],[113.4668,36.6504],[113.7305,36.8701],[113.7305,37.1338],[114.1699,37.6611],[113.9941,37.7051],[113.8184,38.1445],[113.5547,38.2764],[113.5547,38.54],[113.8184,38.8037],[113.8184,38.9355],[113.9063,39.0234],[114.3457,39.0674],[114.5215,39.5068]]],[[[117.2461,40.0781],[117.1582,39.8145],[117.1582,39.6387],[116.8945,39.6826],[116.8945,39.8145],[116.8066,39.9902],[117.2461,40.0781]]]]}},{"type":"Feature","properties":{"id":"42","size":"1500","name":"湖北","cp":[113.298572,30.684355],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[110.2148,31.1572],[110.127,31.377],[109.6875,31.5527],[109.7754,31.6846],[109.5996,31.7285],[109.5117,32.4316],[109.6875,32.6074],[110.127,32.6074],[110.127,32.7393],[109.7754,32.915],[109.7754,33.0469],[109.4238,33.1348],[109.5996,33.2666],[110.3027,33.1787],[110.5664,33.2666],[110.7422,33.1348],[111.0059,33.2666],[111.5332,32.6074],[112.3242,32.3438],[113.2031,32.4316],[113.4668,32.2998],[113.7305,32.4316],[113.8184,31.8604],[113.9941,31.7725],[114.1699,31.8604],[114.5215,31.7725],[114.6094,31.5527],[114.7852,31.4648],[115.1367,31.5967],[115.2246,31.4209],[115.4004,31.4209],[115.5762,31.2012],[116.0156,31.0254],[115.752,30.6738],[116.1035,30.1904],[116.1035,29.8389],[115.9277,29.707],[115.4883,29.7949],[114.873,29.3994],[114.2578,29.3555],[113.9063,29.0479],[113.7305,29.0918],[113.6426,29.3115],[113.7305,29.5752],[113.5547,29.707],[113.5547,29.8389],[113.0273,29.4434],[112.9395,29.4873],[113.0273,29.751],[112.9395,29.7949],[112.6758,29.5752],[112.5,29.6191],[112.2363,29.5313],[111.7969,29.9268],[110.8301,30.1465],[110.4785,30.0146],[110.6543,29.751],[110.4785,29.6631],[109.7754,29.751],[109.6875,29.6191],[109.5117,29.6191],[109.248,29.1357],[109.0723,29.3555],[108.9844,29.3115],[108.6328,29.8389],[108.457,29.7949],[108.5449,30.2344],[108.457,30.4102],[108.6328,30.5859],[108.8086,30.498],[109.0723,30.6299],[109.1602,30.542],[109.248,30.6299],[109.4238,30.542],[109.8633,30.8936],[110.0391,30.8057],[110.2148,31.1572]]]}},{"type":"Feature","properties":{"id":"52","size":"2000","name":"贵州","cp":[106.6113,26.9385],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[104.1504,27.2461],[104.4141,27.4658],[104.5898,27.334],[105.2051,27.3779],[105.293,27.7295],[105.5566,27.7734],[105.6445,27.6416],[106.3477,27.8174],[106.1719,28.125],[105.9082,28.125],[105.6445,28.4326],[105.9961,28.7402],[106.3477,28.5205],[106.5234,28.5645],[106.4355,28.7842],[106.5234,28.7842],[106.6113,28.6523],[106.6113,28.5205],[106.6992,28.4766],[106.875,28.7842],[107.4023,28.8721],[107.4023,29.1797],[107.5781,29.2236],[107.8418,29.1357],[107.8418,29.0039],[108.2813,29.0918],[108.3691,28.6523],[108.5449,28.6523],[108.5449,28.3887],[108.7207,28.4766],[108.7207,28.2129],[109.0723,28.2129],[109.248,28.4766],[109.3359,28.2568],[109.3359,27.9053],[109.4238,27.5977],[108.8086,27.1143],[108.8965,27.0264],[109.3359,27.1582],[109.5117,27.0264],[109.5117,26.8066],[109.3359,26.7188],[109.4238,26.5869],[109.248,26.3232],[109.4238,26.2793],[109.5117,26.0156],[109.3359,25.708],[108.9844,25.752],[109.0723,25.5322],[108.6328,25.5762],[108.6328,25.3125],[108.3691,25.5322],[108.1934,25.4443],[108.1055,25.2246],[107.8418,25.1367],[107.7539,25.2246],[107.4902,25.2246],[107.2266,25.6201],[106.9629,25.4883],[107.0508,25.2686],[106.875,25.1807],[106.1719,24.9609],[106.1719,24.7852],[105.9961,24.6533],[105.2051,24.9609],[104.6777,24.6094],[104.502,24.7412],[104.6777,24.9609],[104.5898,25.0488],[104.8535,25.2246],[104.3262,25.708],[104.6777,26.4111],[104.4141,26.6748],[103.8867,26.543],[103.7109,26.7627],[103.7109,26.9824],[103.623,27.0264],[103.8867,27.4219],[104.1504,27.2461]]]}},{"type":"Feature","properties":{"id":"37","size":"1500","name":"山东","cp":[118.7402,36.4307],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[115.4883,36.167],[115.3125,36.5186],[115.752,36.9141],[116.0156,37.3535],[116.2793,37.3535],[116.2793,37.5732],[116.4551,37.4854],[116.8066,37.8369],[117.4219,37.8369],[117.9492,38.3203],[118.125,38.1445],[118.916,38.1445],[119.3555,37.6611],[119.0039,37.5293],[119.0039,37.3535],[119.3555,37.1338],[119.707,37.1338],[119.8828,37.3975],[120.498,37.8369],[120.5859,38.1445],[120.9375,38.4521],[121.0254,37.8369],[121.2012,37.6611],[121.9043,37.4854],[122.168,37.6172],[122.2559,37.4854],[122.6074,37.4854],[122.6953,37.3535],[122.6074,36.9141],[122.4316,36.7822],[121.8164,36.8701],[121.7285,36.6943],[121.1133,36.6064],[121.1133,36.4307],[121.377,36.2549],[120.7617,36.167],[120.9375,35.8594],[120.6738,36.0352],[119.707,35.4639],[119.9707,34.9805],[119.3555,35.0244],[119.2676,35.1123],[118.916,35.0244],[118.7402,34.7168],[118.4766,34.6729],[118.3887,34.4092],[118.2129,34.4092],[118.125,34.6289],[117.9492,34.6729],[117.5977,34.4531],[117.334,34.585],[117.2461,34.4531],[116.8066,34.9365],[116.4551,34.8926],[116.3672,34.6289],[116.1914,34.585],[115.5762,34.585],[115.4004,34.8486],[114.7852,35.0684],[115.0488,35.376],[115.2246,35.4199],[115.4883,35.7275],[116.1035,36.0791],[115.3125,35.8154],[115.4883,36.167]]]}},{"type":"Feature","properties":{"id":"36","size":"1700","name":"江西","cp":[115.592151,27.676493],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[114.2578,28.3447],[114.082,28.5645],[114.1699,28.8281],[113.9063,29.0479],[114.2578,29.3555],[114.873,29.3994],[115.4883,29.7949],[115.9277,29.707],[116.1035,29.8389],[116.2793,29.7949],[116.7188,30.0586],[116.8945,29.9268],[116.7188,29.751],[116.7188,29.6191],[117.1582,29.707],[117.0703,29.8389],[117.1582,29.9268],[117.5098,29.6191],[118.0371,29.5752],[118.2129,29.3994],[118.0371,29.1797],[118.0371,29.0479],[118.3887,28.7842],[118.4766,28.3447],[118.4766,28.3008],[118.3008,28.0811],[117.7734,27.8174],[117.5098,27.9932],[116.9824,27.6416],[117.1582,27.29],[117.0703,27.1143],[116.543,26.8066],[116.6309,26.4551],[116.3672,26.2354],[116.4551,26.1035],[116.1914,25.8838],[116.0156,25.2686],[115.8398,25.2246],[115.9277,24.917],[115.752,24.7852],[115.8398,24.5654],[115.4004,24.7852],[114.4336,24.5215],[114.1699,24.6973],[114.4336,24.9609],[114.6973,25.1367],[114.7852,25.2686],[114.6094,25.4004],[113.9941,25.2686],[113.9063,25.4443],[113.9941,26.0596],[114.2578,26.1475],[113.9941,26.1914],[114.082,26.5869],[113.9063,26.6309],[113.9063,26.9385],[113.7305,27.1143],[113.8184,27.29],[113.6426,27.3779],[113.6426,27.5977],[113.7305,27.9492],[114.2578,28.3447]]]}},{"type":"Feature","properties":{"id":"41","size":"1700","name":"河南","cp":[113.0668,33.8818],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[110.3906,34.585],[110.8301,34.6289],[111.1816,34.8047],[111.5332,34.8486],[111.7969,35.0684],[112.0605,35.0684],[112.0605,35.2881],[112.7637,35.2002],[113.1152,35.332],[113.6426,35.6836],[113.7305,36.3428],[114.873,36.123],[114.9609,36.0791],[115.1367,36.2109],[115.3125,36.0791],[115.4883,36.167],[115.3125,35.8154],[116.1035,36.0791],[115.4883,35.7275],[115.2246,35.4199],[115.0488,35.376],[114.7852,35.0684],[115.4004,34.8486],[115.5762,34.585],[116.1914,34.585],[116.1914,34.4092],[116.543,34.2773],[116.6309,33.9258],[116.1914,33.7061],[116.0156,33.9697],[115.6641,34.0576],[115.5762,33.9258],[115.5762,33.6621],[115.4004,33.5303],[115.3125,33.1787],[114.873,33.1348],[114.873,33.0029],[115.1367,32.8711],[115.2246,32.6074],[115.5762,32.4316],[115.8398,32.5195],[115.9277,31.7725],[115.4883,31.6846],[115.4004,31.4209],[115.2246,31.4209],[115.1367,31.5967],[114.7852,31.4648],[114.6094,31.5527],[114.5215,31.7725],[114.1699,31.8604],[113.9941,31.7725],[113.8184,31.8604],[113.7305,32.4316],[113.4668,32.2998],[113.2031,32.4316],[112.3242,32.3438],[111.5332,32.6074],[111.0059,33.2666],[111.0059,33.5303],[110.6543,33.8379],[110.6543,34.1455],[110.4785,34.2334],[110.3906,34.585]]]}},{"type":"Feature","properties":{"id":"21","size":"1500","name":"辽宁","cp":[122.0438,41.0889],"childNum":14},"geometry":{"type":"Polygon","coordinates":[[[119.2676,41.3086],[119.4434,41.6162],[119.2676,41.7041],[119.3555,42.2754],[119.5313,42.3633],[119.8828,42.1875],[120.1465,41.7041],[120.498,42.0996],[121.4648,42.4951],[121.7285,42.4512],[121.9922,42.7148],[122.3438,42.6709],[122.3438,42.8467],[122.7832,42.7148],[123.1348,42.8027],[123.3105,42.9785],[123.5742,43.0225],[123.6621,43.374],[123.8379,43.4619],[124.2773,43.2422],[124.4531,42.8467],[124.7168,43.0664],[124.8926,43.0664],[124.8926,42.8027],[125.332,42.1436],[125.4199,42.0996],[125.332,41.9678],[125.332,41.6602],[125.7715,41.2207],[125.5957,40.9131],[125.6836,40.8691],[124.541,40.21],[124.1016,39.6826],[123.3984,39.6826],[123.1348,39.4189],[123.1348,39.0234],[122.0801,39.0234],[121.5527,38.7158],[121.1133,38.6719],[120.9375,38.9795],[121.377,39.1992],[121.2012,39.5508],[122.0801,40.3857],[121.9922,40.6934],[121.7285,40.8252],[121.2012,40.8252],[120.5859,40.21],[119.8828,39.9463],[119.707,40.1221],[119.5313,40.5615],[119.2676,40.5176],[118.8281,40.8252],[119.2676,41.3086]]]}},{"type":"Feature","properties":{"id":"14","size":"1450","name":"山西","cp":[111.849248,36.857014],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[110.918,38.7158],[111.1816,39.2432],[111.0938,39.375],[111.3574,39.4189],[111.4453,39.6387],[111.9727,39.5947],[112.3242,40.2539],[112.7637,40.166],[113.2031,40.3857],[113.5547,40.3418],[113.8184,40.5176],[114.082,40.5176],[114.082,40.7373],[114.2578,40.6055],[114.3457,40.3857],[114.5215,40.3418],[113.9941,39.9902],[114.3457,39.8584],[114.5215,39.5068],[114.3457,39.0674],[113.9063,39.0234],[113.8184,38.9355],[113.8184,38.8037],[113.5547,38.54],[113.5547,38.2764],[113.8184,38.1445],[113.9941,37.7051],[114.1699,37.6611],[113.7305,37.1338],[113.7305,36.8701],[113.4668,36.6504],[113.7305,36.3428],[113.6426,35.6836],[113.1152,35.332],[112.7637,35.2002],[112.0605,35.2881],[112.0605,35.0684],[111.7969,35.0684],[111.5332,34.8486],[111.1816,34.8047],[110.8301,34.6289],[110.3906,34.585],[110.2148,34.6729],[110.2148,34.8926],[110.5664,35.6396],[110.4785,36.123],[110.3906,37.002],[110.8301,37.6611],[110.4785,37.9688],[110.4785,38.1885],[110.8301,38.4961],[110.918,38.7158]]]}},{"type":"Feature","properties":{"id":"34","size":"1700","name":"安徽","cp":[117.283042,31.26119],"childNum":17},"geometry":{"type":"Polygon","coordinates":[[[116.6309,33.9258],[116.543,34.2773],[116.1914,34.4092],[116.1914,34.585],[116.3672,34.6289],[116.8945,34.4092],[117.1582,34.0576],[117.5977,34.0137],[117.7734,33.7061],[118.125,33.75],[117.9492,33.2227],[118.0371,33.1348],[118.2129,33.2227],[118.3008,32.7832],[118.7402,32.7393],[118.916,32.959],[119.1797,32.8271],[119.1797,32.4756],[118.5645,32.5635],[118.6523,32.2119],[118.4766,32.168],[118.3887,31.9482],[118.916,31.5527],[118.7402,31.377],[118.8281,31.2451],[119.3555,31.2891],[119.4434,31.1572],[119.6191,31.1133],[119.6191,31.0693],[119.4434,30.6738],[119.2676,30.6299],[119.3555,30.4102],[118.916,30.3223],[118.916,29.9707],[118.7402,29.707],[118.2129,29.3994],[118.0371,29.5752],[117.5098,29.6191],[117.1582,29.9268],[117.0703,29.8389],[117.1582,29.707],[116.7188,29.6191],[116.7188,29.751],[116.8945,29.9268],[116.7188,30.0586],[116.2793,29.7949],[116.1035,29.8389],[116.1035,30.1904],[115.752,30.6738],[116.0156,31.0254],[115.5762,31.2012],[115.4004,31.4209],[115.4883,31.6846],[115.9277,31.7725],[115.8398,32.5195],[115.5762,32.4316],[115.2246,32.6074],[115.1367,32.8711],[114.873,33.0029],[114.873,33.1348],[115.3125,33.1787],[115.4004,33.5303],[115.5762,33.6621],[115.5762,33.9258],[115.6641,34.0576],[116.0156,33.9697],[116.1914,33.7061],[116.6309,33.9258]]]}},{"type":"Feature","properties":{"id":"35","size":"2000","name":"福建","cp":[118.306239,26.075302],"childNum":9},"geometry":{"type":"Polygon","coordinates":[[[118.4766,28.3008],[118.8281,28.2568],[118.7402,28.0371],[118.916,27.4658],[119.2676,27.4219],[119.6191,27.6855],[119.7949,27.29],[120.2344,27.4219],[120.4102,27.1582],[120.7617,27.0264],[120.6738,26.8945],[120.2344,26.8506],[120.2344,26.7188],[120.4102,26.6748],[120.498,26.3672],[120.2344,26.2793],[120.4102,26.1475],[120.0586,26.1914],[119.9707,25.9277],[119.7949,25.9277],[119.9707,25.4004],[119.7949,25.2686],[119.5313,25.1367],[119.4434,25.0049],[119.2676,25.0928],[118.916,24.8291],[118.6523,24.5215],[118.4766,24.5215],[118.4766,24.4336],[118.2129,24.3457],[118.2129,24.1699],[117.8613,23.9941],[117.7734,23.7744],[117.5098,23.5986],[117.1582,23.5547],[116.9824,23.9063],[116.9824,24.1699],[116.7188,24.6533],[116.543,24.6094],[116.3672,24.873],[116.2793,24.7852],[115.9277,24.917],[115.8398,25.2246],[116.0156,25.2686],[116.1914,25.8838],[116.4551,26.1035],[116.3672,26.2354],[116.6309,26.4551],[116.543,26.8066],[117.0703,27.1143],[117.1582,27.29],[116.9824,27.6416],[117.5098,27.9932],[117.7734,27.8174],[118.3008,28.0811],[118.4766,28.3008]]]}},{"type":"Feature","properties":{"id":"33","size":"2100","name":"浙江","cp":[120.498,29.0918],"childNum":11},"geometry":{"type":"Polygon","coordinates":[[[118.2129,29.3994],[118.7402,29.707],[118.916,29.9707],[118.916,30.3223],[119.3555,30.4102],[119.2676,30.6299],[119.4434,30.6738],[119.6191,31.0693],[119.6191,31.1133],[119.9707,31.1572],[120.498,30.8057],[120.9375,31.0254],[121.2891,30.6738],[121.9922,30.8057],[122.6953,30.8936],[122.8711,30.7178],[122.959,30.1465],[122.6074,30.1025],[122.6074,29.9268],[122.168,29.5313],[122.3438,28.8721],[121.9922,28.8721],[121.9922,28.4326],[121.7285,28.3447],[121.7285,28.2129],[121.4648,28.2129],[121.5527,28.0371],[121.2891,27.9492],[121.1133,27.4219],[120.6738,27.334],[120.6738,27.1582],[120.9375,27.0264],[120.7617,27.0264],[120.4102,27.1582],[120.2344,27.4219],[119.7949,27.29],[119.6191,27.6855],[119.2676,27.4219],[118.916,27.4658],[118.7402,28.0371],[118.8281,28.2568],[118.4766,28.3008],[118.4766,28.3447],[118.3887,28.7842],[118.0371,29.0479],[118.0371,29.1797],[118.2129,29.3994]]]}},{"type":"Feature","properties":{"id":"32","size":"1950","name":"江苏","cp":[119.767413,33.041544],"childNum":13},"geometry":{"type":"Polygon","coordinates":[[[116.3672,34.6289],[116.4551,34.8926],[116.8066,34.9365],[117.2461,34.4531],[117.334,34.585],[117.5977,34.4531],[117.9492,34.6729],[118.125,34.6289],[118.2129,34.4092],[118.3887,34.4092],[118.4766,34.6729],[118.7402,34.7168],[118.916,35.0244],[119.2676,35.1123],[119.3555,35.0244],[119.3555,34.8486],[119.707,34.585],[120.3223,34.3652],[120.9375,33.0469],[121.0254,32.6514],[121.377,32.4756],[121.4648,32.168],[121.9043,31.9922],[121.9922,31.6846],[121.9922,31.5967],[121.2012,31.8604],[121.1133,31.7285],[121.377,31.5088],[121.2012,31.4648],[120.9375,31.0254],[120.498,30.8057],[119.9707,31.1572],[119.6191,31.1133],[119.4434,31.1572],[119.3555,31.2891],[118.8281,31.2451],[118.7402,31.377],[118.916,31.5527],[118.3887,31.9482],[118.4766,32.168],[118.6523,32.2119],[118.5645,32.5635],[119.1797,32.4756],[119.1797,32.8271],[118.916,32.959],[118.7402,32.7393],[118.3008,32.7832],[118.2129,33.2227],[118.0371,33.1348],[117.9492,33.2227],[118.125,33.75],[117.7734,33.7061],[117.5977,34.0137],[117.1582,34.0576],[116.8945,34.4092],[116.3672,34.6289]]]}},{"type":"Feature","properties":{"id":"50","size":"2380","name":"重庆","cp":[107.304962,29.533155],"childNum":40},"geometry":{"type":"Polygon","coordinates":[[[108.5449,31.6846],[108.2813,31.9043],[108.3691,32.168],[108.5449,32.2119],[109.0723,31.9482],[109.248,31.7285],[109.5996,31.7285],[109.7754,31.6846],[109.6875,31.5527],[110.127,31.377],[110.2148,31.1572],[110.0391,30.8057],[109.8633,30.8936],[109.4238,30.542],[109.248,30.6299],[109.1602,30.542],[109.0723,30.6299],[108.8086,30.498],[108.6328,30.5859],[108.457,30.4102],[108.5449,30.2344],[108.457,29.7949],[108.6328,29.8389],[108.9844,29.3115],[109.0723,29.3555],[109.248,29.1357],[109.248,28.4766],[109.0723,28.2129],[108.7207,28.2129],[108.7207,28.4766],[108.5449,28.3887],[108.5449,28.6523],[108.3691,28.6523],[108.2813,29.0918],[107.8418,29.0039],[107.8418,29.1357],[107.5781,29.2236],[107.4023,29.1797],[107.4023,28.8721],[106.875,28.7842],[106.6992,28.4766],[106.6113,28.5205],[106.6113,28.6523],[106.5234,28.7842],[106.4355,28.7842],[106.5234,28.5645],[106.3477,28.5205],[106.2598,28.8721],[105.8203,28.96],[105.7324,29.2676],[105.4688,29.3115],[105.293,29.5313],[105.7324,29.8828],[105.5566,30.1025],[105.6445,30.2783],[105.8203,30.4541],[106.2598,30.1904],[106.6113,30.3223],[106.7871,30.0146],[107.0508,30.0146],[107.4902,30.6299],[107.4023,30.7617],[107.4902,30.8496],[107.9297,30.8496],[108.1934,31.5088],[108.5449,31.6846]]]}},{"type":"Feature","properties":{"id":"64","size":"2100","name":"宁夏","cp":[105.9961,37.3096],"childNum":5},"geometry":{"type":"Polygon","coordinates":[[[104.3262,37.4414],[105.8203,37.793],[105.9082,38.7158],[106.3477,39.2871],[106.7871,39.375],[106.9629,38.9795],[106.5234,38.3203],[106.7871,38.1885],[107.3145,38.1006],[107.666,37.8809],[107.3145,37.6172],[107.3145,37.0898],[106.6113,37.0898],[106.6113,36.7822],[106.4355,36.5625],[106.5234,36.4746],[106.5234,36.2549],[106.875,36.123],[106.9629,35.8154],[106.6992,35.6836],[106.4355,35.6836],[106.5234,35.332],[106.3477,35.2441],[106.2598,35.4199],[106.084,35.376],[105.9961,35.4199],[106.084,35.4639],[105.9961,35.4639],[105.8203,35.5518],[105.7324,35.7275],[105.3809,35.7715],[105.293,35.9912],[105.4688,36.123],[105.2051,36.6943],[105.293,36.8262],[104.8535,37.2217],[104.5898,37.2217],[104.5898,37.4414],[104.3262,37.4414]]]}},{"type":"Feature","properties":{"id":"46","size":"4500","name":"海南","cp":[109.9512,19.2041],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[108.6328,19.3799],[109.0723,19.6436],[109.248,19.9512],[109.5996,20.0391],[110.0391,20.127],[110.3906,20.127],[110.5664,20.2588],[110.6543,20.2588],[111.0938,19.9512],[111.2695,19.9951],[110.6543,19.1602],[110.5664,18.6768],[110.2148,18.5889],[110.0391,18.3691],[109.8633,18.3691],[109.6875,18.1055],[108.9844,18.2813],[108.6328,18.457],[108.6328,19.3799]]]}},{"type":"Feature","properties":{"id":"71","size":"3000","name":"台湾","cp":[120.0254,23.5986],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[121.9043,25.0488],[121.9922,25.0049],[121.8164,24.7412],[121.9043,24.5654],[121.6406,24.0381],[121.377,23.1152],[121.0254,22.6758],[120.8496,22.0605],[120.7617,21.9287],[120.6738,22.3242],[120.2344,22.5879],[120.0586,23.0713],[120.1465,23.6865],[121.0254,25.0488],[121.5527,25.3125],[121.9043,25.0488]]]}},{"type":"Feature","properties":{"id":"11","size":"5000","name":"北京","cp":[116.4551,40.2539],"childNum":19},"geometry":{"type":"Polygon","coordinates":[[[117.4219,40.21],[117.334,40.1221],[117.2461,40.0781],[116.8066,39.9902],[116.8945,39.8145],[116.8945,39.6826],[116.8066,39.5947],[116.543,39.5947],[116.3672,39.4629],[116.1914,39.5947],[115.752,39.5068],[115.4883,39.6387],[115.4004,39.9463],[115.9277,40.2539],[115.752,40.5615],[116.1035,40.6055],[116.1914,40.7813],[116.4551,40.7813],[116.3672,40.9131],[116.6309,41.0449],[116.9824,40.6934],[117.4219,40.6494],[117.2461,40.5176],[117.4219,40.21]]]}},{"type":"Feature","properties":{"id":"12","size":"5000","name":"天津","cp":[117.4219,39.4189],"childNum":18},"geometry":{"type":"Polygon","coordinates":[[[116.8066,39.5947],[116.8945,39.6826],[117.1582,39.6387],[117.1582,39.8145],[117.2461,40.0781],[117.334,40.1221],[117.4219,40.21],[117.6855,40.0781],[117.6855,39.9902],[117.5098,39.9902],[117.5098,39.7705],[117.6855,39.5947],[117.9492,39.5947],[117.8613,39.4189],[118.0371,39.2432],[118.0371,39.1992],[117.8613,39.1113],[117.5977,38.6279],[117.2461,38.54],[116.7188,38.8037],[116.7188,38.9355],[116.8945,39.1113],[116.8066,39.5947]]]}},{"type":"Feature","properties":{"id":"31","size":"7500","name":"上海","cp":[121.4648,31.2891],"childNum":19},"geometry":{"type":"Polygon","coordinates":[[[120.9375,31.0254],[121.2012,31.4648],[121.377,31.5088],[121.1133,31.7285],[121.2012,31.8604],[121.9922,31.5967],[121.9043,31.1572],[121.9922,30.8057],[121.2891,30.6738],[120.9375,31.0254]]]}},{"type":"Feature","properties":{"id":"81","size":"18000","name":"香港","cp":[114.1178,22.3242],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[114.6094,22.4121],[114.5215,22.1484],[114.3457,22.1484],[113.9063,22.1484],[113.8184,22.1924],[113.9063,22.4121],[114.1699,22.5439],[114.3457,22.5439],[114.4336,22.5439],[114.4336,22.4121],[114.6094,22.4121]]]}},{"type":"Feature","properties":{"id":"82","size":"27","name":"澳门","cp":[111.5547,22.1484],"childNum":1},"geometry":{"type":"Polygon","coordinates":[[[113.5986,22.1649],[113.6096,22.1265],[113.5547,22.11],[113.5437,22.2034],[113.5767,22.2034],[113.5986,22.1649]]]}}]} diff --git a/public/json/industry-data.json b/public/json/industry-data.json new file mode 100644 index 0000000..0d8baa8 --- /dev/null +++ b/public/json/industry-data.json @@ -0,0 +1 @@ +[{"value":1001,"label":"IT服务","children":[{"value":1001000,"label":"计算机软件/硬件/信息服务","children":[]},{"value":1001001,"label":"互联网和相关服务","children":[]},{"value":1001002,"label":"其他","children":[]}],"icon":""},{"value":1002,"label":"制造业","children":[{"value":1002000,"label":"机械/电子","children":[]},{"value":1003000,"label":"服装/纺织","children":[]},{"value":1002002,"label":"汽车","children":[]},{"value":1002005,"label":"金属制品","children":[]},{"value":1003002,"label":"食品/饮料","children":[]},{"value":1003003,"label":"家具/家纺","children":[]},{"value":1002001,"label":"重工制造","children":[]},{"value":1003005,"label":"家电/数码","children":[]},{"value":1002004,"label":"橡胶/塑料","children":[]},{"value":1003004,"label":"日用品/化妆品","children":[]},{"value":1002006,"label":"化学原料制品","children":[]},{"value":1003007,"label":"文教/工美/体育/娱乐用品","children":[]},{"value":1003006,"label":"烟酒/茶","children":[]},{"value":1002007,"label":"非金属矿物","children":[]},{"value":1002003,"label":"其他","children":[]}],"icon":""},{"value":1003,"label":"批发/零售","children":[{"value":1003008,"label":"批发","children":[]},{"value":1003010,"label":"零售","children":[]},{"value":1003001,"label":"超市/便利店/百货商场","children":[]},{"value":1003011,"label":"进出口","children":[]},{"value":1003009,"label":"其他","children":[]}],"icon":""},{"value":1004,"label":"生活服务","children":[{"value":1004001,"label":"餐饮","children":[]},{"value":1004004,"label":"居民服务","children":[]},{"value":1004002,"label":"租赁和商务服务","children":[]},{"value":1004000,"label":"酒店/住宿","children":[]},{"value":1004003,"label":"其他","children":[]}],"icon":""},{"value":1005,"label":"文化/体育/娱乐业","children":[{"value":1005001,"label":"文化/体育","children":[]},{"value":1005002,"label":"娱乐/旅游","children":[]},{"value":1005000,"label":"新闻传媒","children":[]},{"value":1005003,"label":"其他","children":[]}],"icon":""},{"value":1006,"label":"建筑/房地产","children":[{"value":1006001,"label":"建筑业","children":[]},{"value":1006002,"label":"建材装修","children":[]},{"value":1006000,"label":"房地产","children":[]},{"value":1006003,"label":"其他","children":[]}],"icon":""},{"value":1007,"label":"教育","children":[{"value":1007000,"label":"学前教育","children":[],"desc":"如:托儿所、幼儿园"},{"value":1007001,"label":"初中等教育","children":[],"desc":"如:小学、初中、高中、职高"},{"value":1007002,"label":"高等教育","children":[],"desc":"如:大学、高职、高专"},{"value":1007003,"label":"培训机构","children":[]},{"value":1007004,"label":"其他","children":[]}],"icon":""},{"value":1008,"label":"运输/物流/仓储","children":[{"value":1008003,"label":"物流/仓储","children":[]},{"value":1008000,"label":"道路/铁路运输","children":[]},{"value":1008004,"label":"邮政/快递","children":[]},{"value":1008001,"label":"航空运输","children":[]},{"value":1008002,"label":"水上运输","children":[]},{"value":1008005,"label":"其他","children":[]}],"icon":""},{"value":1009,"label":"医疗","children":[{"value":1009000,"label":"医院/医疗机构","children":[]},{"value":1009003,"label":"医疗器械","children":[]},{"value":1009001,"label":"医药制造","children":[]},{"value":1009002,"label":"医药流通","children":[]},{"value":1009004,"label":"其他","children":[]}],"icon":""},{"value":1010,"label":"政府","children":[{"value":1010000,"label":"党政机关","children":[]},{"value":1010001,"label":"国家权力/行政机构","children":[]},{"value":1010002,"label":"检察院/法院/公安","children":[]},{"value":1010003,"label":"民政/人社/交通/卫生","children":[]},{"value":1010004,"label":"发改委/经信委/商务局/统计局","children":[]},{"value":1010005,"label":"国土/规划","children":[]},{"value":1010006,"label":"税务/海关/工商/环保/物价/药品","children":[]},{"value":1010007,"label":"政协/民主党派","children":[]},{"value":1010008,"label":"地方政府","children":[]},{"value":1010009,"label":"其他","children":[]}],"icon":""},{"value":1011,"label":"金融","children":[{"value":1011000,"label":"保险","children":[]},{"value":1011001,"label":"银行","children":[]},{"value":1011002,"label":"证券/投资/基金","children":[]},{"value":1011003,"label":"其他","children":[]}],"icon":""},{"value":1012,"label":"能源/采矿","children":[{"value":1014003,"label":"电力/热力/燃气/水供应业","children":[]},{"value":1012003,"label":"石油/天然气","children":[]},{"value":1012002,"label":"煤炭","children":[]},{"value":1012001,"label":"有色金属","children":[]},{"value":1012000,"label":"钢铁","children":[]},{"value":1012004,"label":"其他","children":[]}],"icon":""},{"value":1013,"label":"农林渔牧","children":[{"value":1013000,"label":"农林渔牧","children":[]}],"icon":""},{"value":1014,"label":"其他行业","children":[{"value":1014000,"label":"科学研究和技术服务业","children":[]},{"value":1014002,"label":"社会组织","children":[]},{"value":1014001,"label":"水利和环境管理","children":[]},{"value":1014004,"label":"国际组织","children":[]},{"value":1014005,"label":"其他","children":[]}],"icon":""}] diff --git a/public/json/regions-data.json b/public/json/regions-data.json new file mode 100644 index 0000000..4cbd130 --- /dev/null +++ b/public/json/regions-data.json @@ -0,0 +1 @@ +[{"label":"北京","value":"110000","children":[{"value":"110100","label":"北京市","children":[{"value":"110101","label":"东城区"},{"value":"110102","label":"西城区"},{"value":"110103","label":"崇文区"},{"value":"110104","label":"宣武区"},{"value":"110105","label":"朝阳区"},{"value":"110106","label":"丰台区"},{"value":"110107","label":"石景山区"},{"value":"110108","label":"海淀区"},{"value":"110109","label":"门头沟区"},{"value":"110111","label":"房山区"},{"value":"110112","label":"通州区"},{"value":"110113","label":"顺义区"},{"value":"110114","label":"昌平区"},{"value":"110115","label":"大兴区"},{"value":"110116","label":"怀柔区"},{"value":"110117","label":"平谷区"},{"value":"110228","label":"密云县"},{"value":"110229","label":"延庆县"}]}]},{"label":"天津","value":"120000","children":[{"value":"120100","label":"天津市","children":[{"value":"120101","label":"和平区"},{"value":"120102","label":"河东区"},{"value":"120103","label":"河西区"},{"value":"120104","label":"南开区"},{"value":"120105","label":"河北区"},{"value":"120106","label":"红桥区"},{"value":"120107","label":"塘沽区"},{"value":"120108","label":"汉沽区"},{"value":"120109","label":"大港区"},{"value":"120110","label":"东丽区"},{"value":"120111","label":"西青区"},{"value":"120112","label":"津南区"},{"value":"120113","label":"北辰区"},{"value":"120114","label":"武清区"},{"value":"120115","label":"宝坻区"},{"value":"120116","label":"滨海新区"},{"value":"120221","label":"宁河县"},{"value":"120223","label":"静海县"},{"value":"120225","label":"蓟县"}]}]},{"label":"河北省","value":"130000","children":[{"value":"130100","label":"石家庄市","children":[{"value":"130102","label":"长安区"},{"value":"130103","label":"桥东区"},{"value":"130104","label":"桥西区"},{"value":"130105","label":"新华区"},{"value":"130107","label":"井陉矿区"},{"value":"130108","label":"裕华区"},{"value":"130121","label":"井陉县"},{"value":"130123","label":"正定县"},{"value":"130124","label":"栾城县"},{"value":"130125","label":"行唐县"},{"value":"130126","label":"灵寿县"},{"value":"130127","label":"高邑县"},{"value":"130128","label":"深泽县"},{"value":"130129","label":"赞皇县"},{"value":"130130","label":"无极县"},{"value":"130131","label":"平山县"},{"value":"130132","label":"元氏县"},{"value":"130133","label":"赵县"},{"value":"130181","label":"辛集市"},{"value":"130182","label":"藁城市"},{"value":"130183","label":"晋州市"},{"value":"130184","label":"新乐市"},{"value":"130185","label":"鹿泉市"}]},{"value":"130200","label":"唐山市","children":[{"value":"130202","label":"路南区"},{"value":"130203","label":"路北区"},{"value":"130204","label":"古冶区"},{"value":"130205","label":"开平区"},{"value":"130207","label":"丰南区"},{"value":"130208","label":"丰润区"},{"value":"130223","label":"滦县"},{"value":"130224","label":"滦南县"},{"value":"130225","label":"乐亭县"},{"value":"130227","label":"迁西县"},{"value":"130229","label":"玉田县"},{"value":"130230","label":"唐海县"},{"value":"130281","label":"遵化市"},{"value":"130283","label":"迁安市"}]},{"value":"130300","label":"秦皇岛市","children":[{"value":"130302","label":"海港区"},{"value":"130303","label":"山海关区"},{"value":"130304","label":"北戴河区"},{"value":"130321","label":"青龙满族自治县"},{"value":"130322","label":"昌黎县"},{"value":"130323","label":"抚宁县"},{"value":"130324","label":"卢龙县"},{"value":"130399","label":"经济技术开发区"}]},{"value":"130400","label":"邯郸市","children":[{"value":"130402","label":"邯山区"},{"value":"130403","label":"丛台区"},{"value":"130404","label":"复兴区"},{"value":"130406","label":"峰峰矿区"},{"value":"130421","label":"邯郸县"},{"value":"130423","label":"临漳县"},{"value":"130424","label":"成安县"},{"value":"130425","label":"大名县"},{"value":"130426","label":"涉县"},{"value":"130427","label":"磁县"},{"value":"130428","label":"肥乡县"},{"value":"130429","label":"永年县"},{"value":"130430","label":"邱县"},{"value":"130431","label":"鸡泽县"},{"value":"130432","label":"广平县"},{"value":"130433","label":"馆陶县"},{"value":"130434","label":"魏县"},{"value":"130435","label":"曲周县"},{"value":"130481","label":"武安市"}]},{"value":"130500","label":"邢台市","children":[{"value":"130502","label":"桥东区"},{"value":"130503","label":"桥西区"},{"value":"130521","label":"邢台县"},{"value":"130522","label":"临城县"},{"value":"130523","label":"内丘县"},{"value":"130524","label":"柏乡县"},{"value":"130525","label":"隆尧县"},{"value":"130526","label":"任县"},{"value":"130527","label":"南和县"},{"value":"130528","label":"宁晋县"},{"value":"130529","label":"巨鹿县"},{"value":"130530","label":"新河县"},{"value":"130531","label":"广宗县"},{"value":"130532","label":"平乡县"},{"value":"130533","label":"威县"},{"value":"130534","label":"清河县"},{"value":"130535","label":"临西县"},{"value":"130581","label":"南宫市"},{"value":"130582","label":"沙河市"}]},{"value":"130600","label":"保定市","children":[{"value":"130602","label":"新市区"},{"value":"130603","label":"北市区"},{"value":"130604","label":"南市区"},{"value":"130621","label":"满城县"},{"value":"130622","label":"清苑县"},{"value":"130623","label":"涞水县"},{"value":"130624","label":"阜平县"},{"value":"130625","label":"徐水县"},{"value":"130626","label":"定兴县"},{"value":"130627","label":"唐县"},{"value":"130628","label":"高阳县"},{"value":"130629","label":"容城县"},{"value":"130630","label":"涞源县"},{"value":"130631","label":"望都县"},{"value":"130632","label":"安新县"},{"value":"130633","label":"易县"},{"value":"130634","label":"曲阳县"},{"value":"130635","label":"蠡县"},{"value":"130636","label":"顺平县"},{"value":"130637","label":"博野县"},{"value":"130638","label":"雄县"},{"value":"130681","label":"涿州市"},{"value":"130682","label":"定州市"},{"value":"130683","label":"安国市"},{"value":"130684","label":"高碑店市"},{"value":"130698","label":"高开区"}]},{"value":"130700","label":"张家口市","children":[{"value":"130702","label":"桥东区"},{"value":"130703","label":"桥西区"},{"value":"130705","label":"宣化区"},{"value":"130706","label":"下花园区"},{"value":"130721","label":"宣化县"},{"value":"130722","label":"张北县"},{"value":"130723","label":"康保县"},{"value":"130724","label":"沽源县"},{"value":"130725","label":"尚义县"},{"value":"130726","label":"蔚县"},{"value":"130727","label":"阳原县"},{"value":"130728","label":"怀安县"},{"value":"130729","label":"万全县"},{"value":"130730","label":"怀来县"},{"value":"130731","label":"涿鹿县"},{"value":"130732","label":"赤城县"},{"value":"130733","label":"崇礼县"}]},{"value":"130800","label":"承德市","children":[{"value":"130802","label":"双桥区"},{"value":"130803","label":"双滦区"},{"value":"130804","label":"鹰手营子矿区"},{"value":"130821","label":"承德县"},{"value":"130822","label":"兴隆县"},{"value":"130823","label":"平泉县"},{"value":"130824","label":"滦平县"},{"value":"130825","label":"隆化县"},{"value":"130826","label":"丰宁满族自治县"},{"value":"130827","label":"宽城满族自治县"},{"value":"130828","label":"围场满族蒙古族自治县"}]},{"value":"130900","label":"沧州市","children":[{"value":"130902","label":"新华区"},{"value":"130903","label":"运河区"},{"value":"130921","label":"沧县"},{"value":"130922","label":"青县"},{"value":"130923","label":"东光县"},{"value":"130924","label":"海兴县"},{"value":"130925","label":"盐山县"},{"value":"130926","label":"肃宁县"},{"value":"130927","label":"南皮县"},{"value":"130928","label":"吴桥县"},{"value":"130929","label":"献县"},{"value":"130930","label":"孟村回族自治县"},{"value":"130981","label":"泊头市"},{"value":"130982","label":"任丘市"},{"value":"130983","label":"黄骅市"},{"value":"130984","label":"河间市"}]},{"value":"131000","label":"廊坊市","children":[{"value":"131002","label":"安次区"},{"value":"131003","label":"广阳区"},{"value":"131022","label":"固安县"},{"value":"131023","label":"永清县"},{"value":"131024","label":"香河县"},{"value":"131025","label":"大城县"},{"value":"131026","label":"文安县"},{"value":"131028","label":"大厂回族自治县"},{"value":"131051","label":"开发区"},{"value":"131052","label":"燕郊经济技术开发区"},{"value":"131081","label":"霸州市"},{"value":"131082","label":"三河市"}]},{"value":"131100","label":"衡水市","children":[{"value":"131102","label":"桃城区"},{"value":"131121","label":"枣强县"},{"value":"131122","label":"武邑县"},{"value":"131123","label":"武强县"},{"value":"131124","label":"饶阳县"},{"value":"131125","label":"安平县"},{"value":"131126","label":"故城县"},{"value":"131127","label":"景县"},{"value":"131128","label":"阜城县"},{"value":"131181","label":"冀州市"},{"value":"131182","label":"深州市"}]}]},{"label":"山西省","value":"140000","children":[{"value":"140100","label":"太原市","children":[{"value":"140105","label":"小店区"},{"value":"140106","label":"迎泽区"},{"value":"140107","label":"杏花岭区"},{"value":"140108","label":"尖草坪区"},{"value":"140109","label":"万柏林区"},{"value":"140110","label":"晋源区"},{"value":"140121","label":"清徐县"},{"value":"140122","label":"阳曲县"},{"value":"140123","label":"娄烦县"},{"value":"140181","label":"古交市"}]},{"value":"140200","label":"大同市","children":[{"value":"140202","label":"城区"},{"value":"140203","label":"矿区"},{"value":"140211","label":"南郊区"},{"value":"140212","label":"新荣区"},{"value":"140221","label":"阳高县"},{"value":"140222","label":"天镇县"},{"value":"140223","label":"广灵县"},{"value":"140224","label":"灵丘县"},{"value":"140225","label":"浑源县"},{"value":"140226","label":"左云县"},{"value":"140227","label":"大同县"}]},{"value":"140300","label":"阳泉市","children":[{"value":"140302","label":"城区"},{"value":"140303","label":"矿区"},{"value":"140311","label":"郊区"},{"value":"140321","label":"平定县"},{"value":"140322","label":"盂县"}]},{"value":"140400","label":"长治市","children":[{"value":"140421","label":"长治县"},{"value":"140423","label":"襄垣县"},{"value":"140424","label":"屯留县"},{"value":"140425","label":"平顺县"},{"value":"140426","label":"黎城县"},{"value":"140427","label":"壶关县"},{"value":"140428","label":"长子县"},{"value":"140429","label":"武乡县"},{"value":"140430","label":"沁县"},{"value":"140431","label":"沁源县"},{"value":"140481","label":"潞城市"},{"value":"140482","label":"城区"},{"value":"140483","label":"郊区"},{"value":"140484","label":"高新区"}]},{"value":"140500","label":"晋城市","children":[{"value":"140502","label":"城区"},{"value":"140521","label":"沁水县"},{"value":"140522","label":"阳城县"},{"value":"140524","label":"陵川县"},{"value":"140525","label":"泽州县"},{"value":"140581","label":"高平市"}]},{"value":"140600","label":"朔州市","children":[{"value":"140602","label":"朔城区"},{"value":"140603","label":"平鲁区"},{"value":"140621","label":"山阴县"},{"value":"140622","label":"应县"},{"value":"140623","label":"右玉县"},{"value":"140624","label":"怀仁县"}]},{"value":"140700","label":"晋中市","children":[{"value":"140702","label":"榆次区"},{"value":"140721","label":"榆社县"},{"value":"140722","label":"左权县"},{"value":"140723","label":"和顺县"},{"value":"140724","label":"昔阳县"},{"value":"140725","label":"寿阳县"},{"value":"140726","label":"太谷县"},{"value":"140727","label":"祁县"},{"value":"140728","label":"平遥县"},{"value":"140729","label":"灵石县"},{"value":"140781","label":"介休市"}]},{"value":"140800","label":"运城市","children":[{"value":"140802","label":"盐湖区"},{"value":"140821","label":"临猗县"},{"value":"140822","label":"万荣县"},{"value":"140823","label":"闻喜县"},{"value":"140824","label":"稷山县"},{"value":"140825","label":"新绛县"},{"value":"140826","label":"绛县"},{"value":"140827","label":"垣曲县"},{"value":"140828","label":"夏县"},{"value":"140829","label":"平陆县"},{"value":"140830","label":"芮城县"},{"value":"140881","label":"永济市"},{"value":"140882","label":"河津市"}]},{"value":"140900","label":"忻州市","children":[{"value":"140902","label":"忻府区"},{"value":"140921","label":"定襄县"},{"value":"140922","label":"五台县"},{"value":"140923","label":"代县"},{"value":"140924","label":"繁峙县"},{"value":"140925","label":"宁武县"},{"value":"140926","label":"静乐县"},{"value":"140927","label":"神池县"},{"value":"140928","label":"五寨县"},{"value":"140929","label":"岢岚县"},{"value":"140930","label":"河曲县"},{"value":"140931","label":"保德县"},{"value":"140932","label":"偏关县"},{"value":"140981","label":"原平市"}]},{"value":"141000","label":"临汾市","children":[{"value":"141002","label":"尧都区"},{"value":"141021","label":"曲沃县"},{"value":"141022","label":"翼城县"},{"value":"141023","label":"襄汾县"},{"value":"141024","label":"洪洞县"},{"value":"141025","label":"古县"},{"value":"141026","label":"安泽县"},{"value":"141027","label":"浮山县"},{"value":"141028","label":"吉县"},{"value":"141029","label":"乡宁县"},{"value":"141030","label":"大宁县"},{"value":"141031","label":"隰县"},{"value":"141032","label":"永和县"},{"value":"141033","label":"蒲县"},{"value":"141034","label":"汾西县"},{"value":"141081","label":"侯马市"},{"value":"141082","label":"霍州市"}]},{"value":"141100","label":"吕梁市","children":[{"value":"141102","label":"离石区"},{"value":"141121","label":"文水县"},{"value":"141122","label":"交城县"},{"value":"141123","label":"兴县"},{"value":"141124","label":"临县"},{"value":"141125","label":"柳林县"},{"value":"141126","label":"石楼县"},{"value":"141127","label":"岚县"},{"value":"141128","label":"方山县"},{"value":"141129","label":"中阳县"},{"value":"141130","label":"交口县"},{"value":"141181","label":"孝义市"},{"value":"141182","label":"汾阳市"}]}]},{"label":"内蒙古自治区","value":"150000","children":[{"value":"150100","label":"呼和浩特市","children":[{"value":"150102","label":"新城区"},{"value":"150103","label":"回民区"},{"value":"150104","label":"玉泉区"},{"value":"150105","label":"赛罕区"},{"value":"150121","label":"土默特左旗"},{"value":"150122","label":"托克托县"},{"value":"150123","label":"和林格尔县"},{"value":"150124","label":"清水河县"},{"value":"150125","label":"武川县"}]},{"value":"150200","label":"包头市","children":[{"value":"150202","label":"东河区"},{"value":"150203","label":"昆都仑区"},{"value":"150204","label":"青山区"},{"value":"150205","label":"石拐区"},{"value":"150206","label":"白云矿区"},{"value":"150207","label":"九原区"},{"value":"150221","label":"土默特右旗"},{"value":"150222","label":"固阳县"},{"value":"150223","label":"达尔罕茂明安联合旗"}]},{"value":"150300","label":"乌海市","children":[{"value":"150302","label":"海勃湾区"},{"value":"150303","label":"海南区"},{"value":"150304","label":"乌达区"}]},{"value":"150400","label":"赤峰市","children":[{"value":"150402","label":"红山区"},{"value":"150403","label":"元宝山区"},{"value":"150404","label":"松山区"},{"value":"150421","label":"阿鲁科尔沁旗"},{"value":"150422","label":"巴林左旗"},{"value":"150423","label":"巴林右旗"},{"value":"150424","label":"林西县"},{"value":"150425","label":"克什克腾旗"},{"value":"150426","label":"翁牛特旗"},{"value":"150428","label":"喀喇沁旗"},{"value":"150429","label":"宁城县"},{"value":"150430","label":"敖汉旗"}]},{"value":"150500","label":"通辽市","children":[{"value":"150502","label":"科尔沁区"},{"value":"150521","label":"科尔沁左翼中旗"},{"value":"150522","label":"科尔沁左翼后旗"},{"value":"150523","label":"开鲁县"},{"value":"150524","label":"库伦旗"},{"value":"150525","label":"奈曼旗"},{"value":"150526","label":"扎鲁特旗"},{"value":"150581","label":"霍林郭勒市"}]},{"value":"150600","label":"鄂尔多斯市","children":[{"value":"150602","label":"东胜区"},{"value":"150621","label":"达拉特旗"},{"value":"150622","label":"准格尔旗"},{"value":"150623","label":"鄂托克前旗"},{"value":"150624","label":"鄂托克旗"},{"value":"150625","label":"杭锦旗"},{"value":"150626","label":"乌审旗"},{"value":"150627","label":"伊金霍洛旗"}]},{"value":"150700","label":"呼伦贝尔市","children":[{"value":"150702","label":"海拉尔区"},{"value":"150721","label":"阿荣旗"},{"value":"150722","label":"莫力达瓦达斡尔族自治旗"},{"value":"150723","label":"鄂伦春自治旗"},{"value":"150724","label":"鄂温克族自治旗"},{"value":"150725","label":"陈巴尔虎旗"},{"value":"150726","label":"新巴尔虎左旗"},{"value":"150727","label":"新巴尔虎右旗"},{"value":"150781","label":"满洲里市"},{"value":"150782","label":"牙克石市"},{"value":"150783","label":"扎兰屯市"},{"value":"150784","label":"额尔古纳市"},{"value":"150785","label":"根河市"}]},{"value":"150800","label":"巴彦淖尔市","children":[{"value":"150802","label":"临河区"},{"value":"150821","label":"五原县"},{"value":"150822","label":"磴口县"},{"value":"150823","label":"乌拉特前旗"},{"value":"150824","label":"乌拉特中旗"},{"value":"150825","label":"乌拉特后旗"},{"value":"150826","label":"杭锦后旗"}]},{"value":"150900","label":"乌兰察布市","children":[{"value":"150902","label":"集宁区"},{"value":"150921","label":"卓资县"},{"value":"150922","label":"化德县"},{"value":"150923","label":"商都县"},{"value":"150924","label":"兴和县"},{"value":"150925","label":"凉城县"},{"value":"150926","label":"察哈尔右翼前旗"},{"value":"150927","label":"察哈尔右翼中旗"},{"value":"150928","label":"察哈尔右翼后旗"},{"value":"150929","label":"四子王旗"},{"value":"150981","label":"丰镇市"}]},{"value":"152200","label":"兴安盟","children":[{"value":"152201","label":"乌兰浩特市"},{"value":"152202","label":"阿尔山市"},{"value":"152221","label":"科尔沁右翼前旗"},{"value":"152222","label":"科尔沁右翼中旗"},{"value":"152223","label":"扎赉特旗"},{"value":"152224","label":"突泉县"}]},{"value":"152500","label":"锡林郭勒盟","children":[{"value":"152501","label":"二连浩特市"},{"value":"152502","label":"锡林浩特市"},{"value":"152522","label":"阿巴嘎旗"},{"value":"152523","label":"苏尼特左旗"},{"value":"152524","label":"苏尼特右旗"},{"value":"152525","label":"东乌珠穆沁旗"},{"value":"152526","label":"西乌珠穆沁旗"},{"value":"152527","label":"太仆寺旗"},{"value":"152528","label":"镶黄旗"},{"value":"152529","label":"正镶白旗"},{"value":"152530","label":"正蓝旗"},{"value":"152531","label":"多伦县"}]},{"value":"152900","label":"阿拉善盟","children":[{"value":"152921","label":"阿拉善左旗"},{"value":"152922","label":"阿拉善右旗"},{"value":"152923","label":"额济纳旗"}]}]},{"label":"辽宁省","value":"210000","children":[{"value":"210100","label":"沈阳市","children":[{"value":"210102","label":"和平区"},{"value":"210103","label":"沈河区"},{"value":"210104","label":"大东区"},{"value":"210105","label":"皇姑区"},{"value":"210106","label":"铁西区"},{"value":"210111","label":"苏家屯区"},{"value":"210112","label":"东陵区"},{"value":"210113","label":"新城子区"},{"value":"210114","label":"于洪区"},{"value":"210122","label":"辽中县"},{"value":"210123","label":"康平县"},{"value":"210124","label":"法库县"},{"value":"210181","label":"新民市"},{"value":"210182","label":"浑南新区"},{"value":"210183","label":"张士开发区"},{"value":"210184","label":"沈北新区"}]},{"value":"210200","label":"大连市","children":[{"value":"210202","label":"中山区"},{"value":"210203","label":"西岗区"},{"value":"210204","label":"沙河口区"},{"value":"210211","label":"甘井子区"},{"value":"210212","label":"旅顺口区"},{"value":"210213","label":"金州区"},{"value":"210224","label":"长海县"},{"value":"210251","label":"开发区"},{"value":"210281","label":"瓦房店市"},{"value":"210282","label":"普兰店市"},{"value":"210283","label":"庄河市"},{"value":"210297","label":"岭前区"}]},{"value":"210300","label":"鞍山市","children":[{"value":"210302","label":"铁东区"},{"value":"210303","label":"铁西区"},{"value":"210304","label":"立山区"},{"value":"210311","label":"千山区"},{"value":"210321","label":"台安县"},{"value":"210323","label":"岫岩满族自治县"},{"value":"210351","label":"高新区"},{"value":"210381","label":"海城市"}]},{"value":"210400","label":"抚顺市","children":[{"value":"210402","label":"新抚区"},{"value":"210403","label":"东洲区"},{"value":"210404","label":"望花区"},{"value":"210411","label":"顺城区"},{"value":"210421","label":"抚顺县"},{"value":"210422","label":"新宾满族自治县"},{"value":"210423","label":"清原满族自治县"}]},{"value":"210500","label":"本溪市","children":[{"value":"210502","label":"平山区"},{"value":"210503","label":"溪湖区"},{"value":"210504","label":"明山区"},{"value":"210505","label":"南芬区"},{"value":"210521","label":"本溪满族自治县"},{"value":"210522","label":"桓仁满族自治县"}]},{"value":"210600","label":"丹东市","children":[{"value":"210602","label":"元宝区"},{"value":"210603","label":"振兴区"},{"value":"210604","label":"振安区"},{"value":"210624","label":"宽甸满族自治县"},{"value":"210681","label":"东港市"},{"value":"210682","label":"凤城市"}]},{"value":"210700","label":"锦州市","children":[{"value":"210702","label":"古塔区"},{"value":"210703","label":"凌河区"},{"value":"210711","label":"太和区"},{"value":"210726","label":"黑山县"},{"value":"210727","label":"义县"},{"value":"210781","label":"凌海市"},{"value":"210782","label":"北镇市"}]},{"value":"210800","label":"营口市","children":[{"value":"210802","label":"站前区"},{"value":"210803","label":"西市区"},{"value":"210804","label":"鲅鱼圈区"},{"value":"210811","label":"老边区"},{"value":"210881","label":"盖州市"},{"value":"210882","label":"大石桥市"}]},{"value":"210900","label":"阜新市","children":[{"value":"210902","label":"海州区"},{"value":"210903","label":"新邱区"},{"value":"210904","label":"太平区"},{"value":"210905","label":"清河门区"},{"value":"210911","label":"细河区"},{"value":"210921","label":"阜新蒙古族自治县"},{"value":"210922","label":"彰武县"}]},{"value":"211000","label":"辽阳市","children":[{"value":"211002","label":"白塔区"},{"value":"211003","label":"文圣区"},{"value":"211004","label":"宏伟区"},{"value":"211005","label":"弓长岭区"},{"value":"211011","label":"太子河区"},{"value":"211021","label":"辽阳县"},{"value":"211081","label":"灯塔市"}]},{"value":"211100","label":"盘锦市","children":[{"value":"211102","label":"双台子区"},{"value":"211103","label":"兴隆台区"},{"value":"211121","label":"大洼县"},{"value":"211122","label":"盘山县"}]},{"value":"211200","label":"铁岭市","children":[{"value":"211202","label":"银州区"},{"value":"211204","label":"清河区"},{"value":"211221","label":"铁岭县"},{"value":"211223","label":"西丰县"},{"value":"211224","label":"昌图县"},{"value":"211281","label":"调兵山市"},{"value":"211282","label":"开原市"}]},{"value":"211300","label":"朝阳市","children":[{"value":"211302","label":"双塔区"},{"value":"211303","label":"龙城区"},{"value":"211321","label":"朝阳县"},{"value":"211322","label":"建平县"},{"value":"211324","label":"喀喇沁左翼蒙古族自治县"},{"value":"211381","label":"北票市"},{"value":"211382","label":"凌源市"}]},{"value":"211400","label":"葫芦岛市","children":[{"value":"211402","label":"连山区"},{"value":"211403","label":"龙港区"},{"value":"211404","label":"南票区"},{"value":"211421","label":"绥中县"},{"value":"211422","label":"建昌县"},{"value":"211481","label":"兴城市"}]}]},{"label":"吉林省","value":"220000","children":[{"value":"220100","label":"长春市","children":[{"value":"220102","label":"南关区"},{"value":"220103","label":"宽城区"},{"value":"220104","label":"朝阳区"},{"value":"220105","label":"二道区"},{"value":"220106","label":"绿园区"},{"value":"220112","label":"双阳区"},{"value":"220122","label":"农安县"},{"value":"220181","label":"九台市"},{"value":"220182","label":"榆树市"},{"value":"220183","label":"德惠市"},{"value":"220184","label":"高新技术产业开发区"},{"value":"220185","label":"汽车产业开发区"},{"value":"220186","label":"经济技术开发区"},{"value":"220187","label":"净月旅游开发区"}]},{"value":"220200","label":"吉林市","children":[{"value":"220202","label":"昌邑区"},{"value":"220203","label":"龙潭区"},{"value":"220204","label":"船营区"},{"value":"220211","label":"丰满区"},{"value":"220221","label":"永吉县"},{"value":"220281","label":"蛟河市"},{"value":"220282","label":"桦甸市"},{"value":"220283","label":"舒兰市"},{"value":"220284","label":"磐石市"}]},{"value":"220300","label":"四平市","children":[{"value":"220302","label":"铁西区"},{"value":"220303","label":"铁东区"},{"value":"220322","label":"梨树县"},{"value":"220323","label":"伊通满族自治县"},{"value":"220381","label":"公主岭市"},{"value":"220382","label":"双辽市"}]},{"value":"220400","label":"辽源市","children":[{"value":"220402","label":"龙山区"},{"value":"220403","label":"西安区"},{"value":"220421","label":"东丰县"},{"value":"220422","label":"东辽县"}]},{"value":"220500","label":"通化市","children":[{"value":"220502","label":"东昌区"},{"value":"220503","label":"二道江区"},{"value":"220521","label":"通化县"},{"value":"220523","label":"辉南县"},{"value":"220524","label":"柳河县"},{"value":"220581","label":"梅河口市"},{"value":"220582","label":"集安市"}]},{"value":"220600","label":"白山市","children":[{"value":"220602","label":"八道江区"},{"value":"220621","label":"抚松县"},{"value":"220622","label":"靖宇县"},{"value":"220623","label":"长白朝鲜族自治县"},{"value":"220625","label":"江源市"},{"value":"220681","label":"临江市"}]},{"value":"220700","label":"松原市","children":[{"value":"220702","label":"宁江区"},{"value":"220721","label":"前郭尔罗斯蒙古族自治县"},{"value":"220722","label":"长岭县"},{"value":"220723","label":"乾安县"},{"value":"220724","label":"扶余县"}]},{"value":"220800","label":"白城市","children":[{"value":"220802","label":"洮北区"},{"value":"220821","label":"镇赉县"},{"value":"220822","label":"通榆县"},{"value":"220881","label":"洮南市"},{"value":"220882","label":"大安市"}]},{"value":"222400","label":"延边朝鲜族自治州","children":[{"value":"222401","label":"延吉市"},{"value":"222402","label":"图们市"},{"value":"222403","label":"敦化市"},{"value":"222404","label":"珲春市"},{"value":"222405","label":"龙井市"},{"value":"222406","label":"和龙市"},{"value":"222424","label":"汪清县"},{"value":"222426","label":"安图县"}]}]},{"label":"黑龙江省","value":"230000","children":[{"value":"230100","label":"哈尔滨市","children":[{"value":"230102","label":"道里区"},{"value":"230103","label":"南岗区"},{"value":"230104","label":"道外区"},{"value":"230106","label":"香坊区"},{"value":"230107","label":"动力区"},{"value":"230108","label":"平房区"},{"value":"230109","label":"松北区"},{"value":"230111","label":"呼兰区"},{"value":"230123","label":"依兰县"},{"value":"230124","label":"方正县"},{"value":"230125","label":"宾县"},{"value":"230126","label":"巴彦县"},{"value":"230127","label":"木兰县"},{"value":"230128","label":"通河县"},{"value":"230129","label":"延寿县"},{"value":"230181","label":"阿城市"},{"value":"230182","label":"双城市"},{"value":"230183","label":"尚志市"},{"value":"230184","label":"五常市"},{"value":"230185","label":"阿城市"}]},{"value":"230200","label":"齐齐哈尔市","children":[{"value":"230202","label":"龙沙区"},{"value":"230203","label":"建华区"},{"value":"230204","label":"铁锋区"},{"value":"230205","label":"昂昂溪区"},{"value":"230206","label":"富拉尔基区"},{"value":"230207","label":"碾子山区"},{"value":"230208","label":"梅里斯达斡尔族区"},{"value":"230221","label":"龙江县"},{"value":"230223","label":"依安县"},{"value":"230224","label":"泰来县"},{"value":"230225","label":"甘南县"},{"value":"230227","label":"富裕县"},{"value":"230229","label":"克山县"},{"value":"230230","label":"克东县"},{"value":"230231","label":"拜泉县"},{"value":"230281","label":"讷河市"}]},{"value":"230300","label":"鸡西市","children":[{"value":"230302","label":"鸡冠区"},{"value":"230303","label":"恒山区"},{"value":"230304","label":"滴道区"},{"value":"230305","label":"梨树区"},{"value":"230306","label":"城子河区"},{"value":"230307","label":"麻山区"},{"value":"230321","label":"鸡东县"},{"value":"230381","label":"虎林市"},{"value":"230382","label":"密山市"}]},{"value":"230400","label":"鹤岗市","children":[{"value":"230402","label":"向阳区"},{"value":"230403","label":"工农区"},{"value":"230404","label":"南山区"},{"value":"230405","label":"兴安区"},{"value":"230406","label":"东山区"},{"value":"230407","label":"兴山区"},{"value":"230421","label":"萝北县"},{"value":"230422","label":"绥滨县"}]},{"value":"230500","label":"双鸭山市","children":[{"value":"230502","label":"尖山区"},{"value":"230503","label":"岭东区"},{"value":"230505","label":"四方台区"},{"value":"230506","label":"宝山区"},{"value":"230521","label":"集贤县"},{"value":"230522","label":"友谊县"},{"value":"230523","label":"宝清县"},{"value":"230524","label":"饶河县"}]},{"value":"230600","label":"大庆市","children":[{"value":"230602","label":"萨尔图区"},{"value":"230603","label":"龙凤区"},{"value":"230604","label":"让胡路区"},{"value":"230605","label":"红岗区"},{"value":"230606","label":"大同区"},{"value":"230621","label":"肇州县"},{"value":"230622","label":"肇源县"},{"value":"230623","label":"林甸县"},{"value":"230624","label":"杜尔伯特蒙古族自治县"}]},{"value":"230700","label":"伊春市","children":[{"value":"230702","label":"伊春区"},{"value":"230703","label":"南岔区"},{"value":"230704","label":"友好区"},{"value":"230705","label":"西林区"},{"value":"230706","label":"翠峦区"},{"value":"230707","label":"新青区"},{"value":"230708","label":"美溪区"},{"value":"230709","label":"金山屯区"},{"value":"230710","label":"五营区"},{"value":"230711","label":"乌马河区"},{"value":"230712","label":"汤旺河区"},{"value":"230713","label":"带岭区"},{"value":"230714","label":"乌伊岭区"},{"value":"230715","label":"红星区"},{"value":"230716","label":"上甘岭区"},{"value":"230722","label":"嘉荫县"},{"value":"230781","label":"铁力市"}]},{"value":"230800","label":"佳木斯市","children":[{"value":"230802","label":"永红区"},{"value":"230803","label":"向阳区"},{"value":"230804","label":"前进区"},{"value":"230805","label":"东风区"},{"value":"230811","label":"郊区"},{"value":"230822","label":"桦南县"},{"value":"230826","label":"桦川县"},{"value":"230828","label":"汤原县"},{"value":"230833","label":"抚远县"},{"value":"230881","label":"同江市"},{"value":"230882","label":"富锦市"}]},{"value":"230900","label":"七台河市","children":[{"value":"230902","label":"新兴区"},{"value":"230903","label":"桃山区"},{"value":"230904","label":"茄子河区"},{"value":"230921","label":"勃利县"}]},{"value":"231000","label":"牡丹江市","children":[{"value":"231002","label":"东安区"},{"value":"231003","label":"阳明区"},{"value":"231004","label":"爱民区"},{"value":"231005","label":"西安区"},{"value":"231024","label":"东宁县"},{"value":"231025","label":"林口县"},{"value":"231081","label":"绥芬河市"},{"value":"231083","label":"海林市"},{"value":"231084","label":"宁安市"},{"value":"231085","label":"穆棱市"}]},{"value":"231100","label":"黑河市","children":[{"value":"231102","label":"爱辉区"},{"value":"231121","label":"嫩江县"},{"value":"231123","label":"逊克县"},{"value":"231124","label":"孙吴县"},{"value":"231181","label":"北安市"},{"value":"231182","label":"五大连池市"}]},{"value":"231200","label":"绥化市","children":[{"value":"231202","label":"北林区"},{"value":"231221","label":"望奎县"},{"value":"231222","label":"兰西县"},{"value":"231223","label":"青冈县"},{"value":"231224","label":"庆安县"},{"value":"231225","label":"明水县"},{"value":"231226","label":"绥棱县"},{"value":"231281","label":"安达市"},{"value":"231282","label":"肇东市"},{"value":"231283","label":"海伦市"}]},{"value":"232700","label":"大兴安岭地区","children":[{"value":"232721","label":"呼玛县"},{"value":"232722","label":"塔河县"},{"value":"232723","label":"漠河县"},{"value":"232724","label":"加格达奇区"}]}]},{"label":"上海","value":"310000","children":[{"value":"310100","label":"上海市","children":[{"value":"310101","label":"黄浦区"},{"value":"310103","label":"卢湾区"},{"value":"310104","label":"徐汇区"},{"value":"310105","label":"长宁区"},{"value":"310106","label":"静安区"},{"value":"310107","label":"普陀区"},{"value":"310108","label":"闸北区"},{"value":"310109","label":"虹口区"},{"value":"310110","label":"杨浦区"},{"value":"310112","label":"闵行区"},{"value":"310113","label":"宝山区"},{"value":"310114","label":"嘉定区"},{"value":"310115","label":"浦东新区"},{"value":"310116","label":"金山区"},{"value":"310117","label":"松江区"},{"value":"310118","label":"青浦区"},{"value":"310119","label":"南汇区"},{"value":"310120","label":"奉贤区"},{"value":"310152","label":"川沙区"},{"value":"310230","label":"崇明县"}]}]},{"label":"江苏省","value":"320000","children":[{"value":"320100","label":"南京市","children":[{"value":"320102","label":"玄武区"},{"value":"320103","label":"白下区"},{"value":"320104","label":"秦淮区"},{"value":"320105","label":"建邺区"},{"value":"320106","label":"鼓楼区"},{"value":"320107","label":"下关区"},{"value":"320111","label":"浦口区"},{"value":"320113","label":"栖霞区"},{"value":"320114","label":"雨花台区"},{"value":"320115","label":"江宁区"},{"value":"320116","label":"六合区"},{"value":"320124","label":"溧水县"},{"value":"320125","label":"高淳县"}]},{"value":"320200","label":"无锡市","children":[{"value":"320202","label":"崇安区"},{"value":"320203","label":"南长区"},{"value":"320204","label":"北塘区"},{"value":"320205","label":"锡山区"},{"value":"320206","label":"惠山区"},{"value":"320211","label":"滨湖区"},{"value":"320281","label":"江阴市"},{"value":"320282","label":"宜兴市"},{"value":"320296","label":"新区"}]},{"value":"320300","label":"徐州市","children":[{"value":"320302","label":"鼓楼区"},{"value":"320303","label":"云龙区"},{"value":"320304","label":"九里区"},{"value":"320305","label":"贾汪区"},{"value":"320311","label":"泉山区"},{"value":"320321","label":"丰县"},{"value":"320322","label":"沛县"},{"value":"320323","label":"铜山县"},{"value":"320324","label":"睢宁县"},{"value":"320381","label":"新沂市"},{"value":"320382","label":"邳州市"}]},{"value":"320400","label":"常州市","children":[{"value":"320402","label":"天宁区"},{"value":"320404","label":"钟楼区"},{"value":"320405","label":"戚墅堰区"},{"value":"320411","label":"新北区"},{"value":"320412","label":"武进区"},{"value":"320481","label":"溧阳市"},{"value":"320482","label":"金坛市"}]},{"value":"320500","label":"苏州市","children":[{"value":"320502","label":"沧浪区"},{"value":"320503","label":"平江区"},{"value":"320504","label":"金阊区"},{"value":"320505","label":"虎丘区"},{"value":"320506","label":"吴中区"},{"value":"320507","label":"相城区"},{"value":"320581","label":"常熟市"},{"value":"320582","label":"张家港市"},{"value":"320583","label":"昆山市"},{"value":"320584","label":"吴江市"},{"value":"320585","label":"太仓市"},{"value":"320594","label":"新区"},{"value":"320595","label":"园区"}]},{"value":"320600","label":"南通市","children":[{"value":"320602","label":"崇川区"},{"value":"320611","label":"港闸区"},{"value":"320612","label":"通州区"},{"value":"320621","label":"海安县"},{"value":"320623","label":"如东县"},{"value":"320681","label":"启东市"},{"value":"320682","label":"如皋市"},{"value":"320683","label":"通州市"},{"value":"320684","label":"海门市"},{"value":"320693","label":"开发区"}]},{"value":"320700","label":"连云港市","children":[{"value":"320703","label":"连云区"},{"value":"320705","label":"新浦区"},{"value":"320706","label":"海州区"},{"value":"320721","label":"赣榆县"},{"value":"320722","label":"东海县"},{"value":"320723","label":"灌云县"},{"value":"320724","label":"灌南县"}]},{"value":"320800","label":"淮安市","children":[{"value":"320802","label":"清河区"},{"value":"320803","label":"楚州区"},{"value":"320804","label":"淮阴区"},{"value":"320811","label":"清浦区"},{"value":"320826","label":"涟水县"},{"value":"320829","label":"洪泽县"},{"value":"320830","label":"盱眙县"},{"value":"320831","label":"金湖县"}]},{"value":"320900","label":"盐城市","children":[{"value":"320902","label":"亭湖区"},{"value":"320903","label":"盐都区"},{"value":"320921","label":"响水县"},{"value":"320922","label":"滨海县"},{"value":"320923","label":"阜宁县"},{"value":"320924","label":"射阳县"},{"value":"320925","label":"建湖县"},{"value":"320981","label":"东台市"},{"value":"320982","label":"大丰市"}]},{"value":"321000","label":"扬州市","children":[{"value":"321002","label":"广陵区"},{"value":"321003","label":"邗江区"},{"value":"321011","label":"维扬区"},{"value":"321023","label":"宝应县"},{"value":"321081","label":"仪征市"},{"value":"321084","label":"高邮市"},{"value":"321088","label":"江都市"},{"value":"321092","label":"经济开发区"}]},{"value":"321100","label":"镇江市","children":[{"value":"321102","label":"京口区"},{"value":"321111","label":"润州区"},{"value":"321112","label":"丹徒区"},{"value":"321181","label":"丹阳市"},{"value":"321182","label":"扬中市"},{"value":"321183","label":"句容市"}]},{"value":"321200","label":"泰州市","children":[{"value":"321202","label":"海陵区"},{"value":"321203","label":"高港区"},{"value":"321281","label":"兴化市"},{"value":"321282","label":"靖江市"},{"value":"321283","label":"泰兴市"},{"value":"321284","label":"姜堰市"}]},{"value":"321300","label":"宿迁市","children":[{"value":"321302","label":"宿城区"},{"value":"321311","label":"宿豫区"},{"value":"321322","label":"沭阳县"},{"value":"321323","label":"泗阳县"},{"value":"321324","label":"泗洪县"}]}]},{"label":"浙江省","value":"330000","children":[{"value":"330100","label":"杭州市","children":[{"value":"330102","label":"上城区"},{"value":"330103","label":"下城区"},{"value":"330104","label":"江干区"},{"value":"330105","label":"拱墅区"},{"value":"330106","label":"西湖区"},{"value":"330108","label":"滨江区"},{"value":"330109","label":"萧山区"},{"value":"330110","label":"余杭区"},{"value":"330122","label":"桐庐县"},{"value":"330127","label":"淳安县"},{"value":"330182","label":"建德市"},{"value":"330183","label":"富阳市"},{"value":"330185","label":"临安市"}]},{"value":"330200","label":"宁波市","children":[{"value":"330203","label":"海曙区"},{"value":"330204","label":"江东区"},{"value":"330205","label":"江北区"},{"value":"330206","label":"北仑区"},{"value":"330211","label":"镇海区"},{"value":"330212","label":"鄞州区"},{"value":"330225","label":"象山县"},{"value":"330226","label":"宁海县"},{"value":"330281","label":"余姚市"},{"value":"330282","label":"慈溪市"},{"value":"330283","label":"奉化市"}]},{"value":"330300","label":"温州市","children":[{"value":"330302","label":"鹿城区"},{"value":"330303","label":"龙湾区"},{"value":"330304","label":"瓯海区"},{"value":"330322","label":"洞头县"},{"value":"330324","label":"永嘉县"},{"value":"330326","label":"平阳县"},{"value":"330327","label":"苍南县"},{"value":"330328","label":"文成县"},{"value":"330329","label":"泰顺县"},{"value":"330381","label":"瑞安市"},{"value":"330382","label":"乐清市"}]},{"value":"330400","label":"嘉兴市","children":[{"value":"330402","label":"南湖区"},{"value":"330411","label":"秀洲区"},{"value":"330421","label":"嘉善县"},{"value":"330424","label":"海盐县"},{"value":"330481","label":"海宁市"},{"value":"330482","label":"平湖市"},{"value":"330483","label":"桐乡市"}]},{"value":"330500","label":"湖州市","children":[{"value":"330502","label":"吴兴区"},{"value":"330503","label":"南浔区"},{"value":"330521","label":"德清县"},{"value":"330522","label":"长兴县"},{"value":"330523","label":"安吉县"}]},{"value":"330600","label":"绍兴市","children":[{"value":"330602","label":"越城区"},{"value":"330621","label":"绍兴县"},{"value":"330624","label":"新昌县"},{"value":"330681","label":"诸暨市"},{"value":"330682","label":"上虞市"},{"value":"330683","label":"嵊州市"}]},{"value":"330700","label":"金华市","children":[{"value":"330702","label":"婺城区"},{"value":"330703","label":"金东区"},{"value":"330723","label":"武义县"},{"value":"330726","label":"浦江县"},{"value":"330727","label":"磐安县"},{"value":"330781","label":"兰溪市"},{"value":"330782","label":"义乌市"},{"value":"330783","label":"东阳市"},{"value":"330784","label":"永康市"}]},{"value":"330800","label":"衢州市","children":[{"value":"330802","label":"柯城区"},{"value":"330803","label":"衢江区"},{"value":"330822","label":"常山县"},{"value":"330824","label":"开化县"},{"value":"330825","label":"龙游县"},{"value":"330881","label":"江山市"}]},{"value":"330900","label":"舟山市","children":[{"value":"330902","label":"定海区"},{"value":"330903","label":"普陀区"},{"value":"330921","label":"岱山县"},{"value":"330922","label":"嵊泗县"}]},{"value":"331000","label":"台州市","children":[{"value":"331002","label":"椒江区"},{"value":"331003","label":"黄岩区"},{"value":"331004","label":"路桥区"},{"value":"331021","label":"玉环县"},{"value":"331022","label":"三门县"},{"value":"331023","label":"天台县"},{"value":"331024","label":"仙居县"},{"value":"331081","label":"温岭市"},{"value":"331082","label":"临海市"}]},{"value":"331100","label":"丽水市","children":[{"value":"331102","label":"莲都区"},{"value":"331121","label":"青田县"},{"value":"331122","label":"缙云县"},{"value":"331123","label":"遂昌县"},{"value":"331124","label":"松阳县"},{"value":"331125","label":"云和县"},{"value":"331126","label":"庆元县"},{"value":"331127","label":"景宁畲族自治县"},{"value":"331181","label":"龙泉市"}]}]},{"label":"安徽省","value":"340000","children":[{"value":"340100","label":"合肥市","children":[{"value":"340102","label":"瑶海区"},{"value":"340103","label":"庐阳区"},{"value":"340104","label":"蜀山区"},{"value":"340111","label":"包河区"},{"value":"340121","label":"长丰县"},{"value":"340122","label":"肥东县"},{"value":"340123","label":"肥西县"},{"value":"340151","label":"高新区"},{"value":"340191","label":"中区"},{"value":"341400","label":"巢湖市"},{"value":"341402","label":"居巢区"},{"value":"341421","label":"庐江县"}]},{"value":"340200","label":"芜湖市","children":[{"value":"340202","label":"镜湖区"},{"value":"340203","label":"弋江区"},{"value":"340207","label":"鸠江区"},{"value":"340208","label":"三山区"},{"value":"340221","label":"芜湖县"},{"value":"340222","label":"繁昌县"},{"value":"340223","label":"南陵县"},{"value":"341422","label":"无为县"}]},{"value":"340300","label":"蚌埠市","children":[{"value":"340302","label":"龙子湖区"},{"value":"340303","label":"蚌山区"},{"value":"340304","label":"禹会区"},{"value":"340311","label":"淮上区"},{"value":"340321","label":"怀远县"},{"value":"340322","label":"五河县"},{"value":"340323","label":"固镇县"}]},{"value":"340400","label":"淮南市","children":[{"value":"340402","label":"大通区"},{"value":"340403","label":"田家庵区"},{"value":"340404","label":"谢家集区"},{"value":"340405","label":"八公山区"},{"value":"340406","label":"潘集区"},{"value":"340421","label":"凤台县"}]},{"value":"340500","label":"马鞍山市","children":[{"value":"340502","label":"金家庄区"},{"value":"340503","label":"花山区"},{"value":"340504","label":"雨山区"},{"value":"340521","label":"当涂县"},{"value":"341423","label":"含山县"},{"value":"341424","label":"和县"}]},{"value":"340600","label":"淮北市","children":[{"value":"340602","label":"杜集区"},{"value":"340603","label":"相山区"},{"value":"340604","label":"烈山区"},{"value":"340621","label":"濉溪县"}]},{"value":"340700","label":"铜陵市","children":[{"value":"340702","label":"铜官山区"},{"value":"340703","label":"狮子山区"},{"value":"340711","label":"郊区"},{"value":"340721","label":"铜陵县"}]},{"value":"340800","label":"安庆市","children":[{"value":"340802","label":"迎江区"},{"value":"340803","label":"大观区"},{"value":"340811","label":"宜秀区"},{"value":"340822","label":"怀宁县"},{"value":"340823","label":"枞阳县"},{"value":"340824","label":"潜山县"},{"value":"340825","label":"太湖县"},{"value":"340826","label":"宿松县"},{"value":"340827","label":"望江县"},{"value":"340828","label":"岳西县"},{"value":"340881","label":"桐城市"}]},{"value":"341000","label":"黄山市","children":[{"value":"341002","label":"屯溪区"},{"value":"341003","label":"黄山区"},{"value":"341004","label":"徽州区"},{"value":"341021","label":"歙县"},{"value":"341022","label":"休宁县"},{"value":"341023","label":"黟县"},{"value":"341024","label":"祁门县"}]},{"value":"341100","label":"滁州市","children":[{"value":"341102","label":"琅琊区"},{"value":"341103","label":"南谯区"},{"value":"341122","label":"来安县"},{"value":"341124","label":"全椒县"},{"value":"341125","label":"定远县"},{"value":"341126","label":"凤阳县"},{"value":"341181","label":"天长市"},{"value":"341182","label":"明光市"}]},{"value":"341200","label":"阜阳市","children":[{"value":"341202","label":"颍州区"},{"value":"341203","label":"颍东区"},{"value":"341204","label":"颍泉区"},{"value":"341221","label":"临泉县"},{"value":"341222","label":"太和县"},{"value":"341225","label":"阜南县"},{"value":"341226","label":"颍上县"},{"value":"341282","label":"界首市"}]},{"value":"341300","label":"宿州市","children":[{"value":"341302","label":"埇桥区"},{"value":"341321","label":"砀山县"},{"value":"341322","label":"萧县"},{"value":"341323","label":"灵璧县"},{"value":"341324","label":"泗县"}]},{"value":"341500","label":"六安市","children":[{"value":"341502","label":"金安区"},{"value":"341503","label":"裕安区"},{"value":"341521","label":"寿县"},{"value":"341522","label":"霍邱县"},{"value":"341523","label":"舒城县"},{"value":"341524","label":"金寨县"},{"value":"341525","label":"霍山县"}]},{"value":"341600","label":"亳州市","children":[{"value":"341602","label":"谯城区"},{"value":"341621","label":"涡阳县"},{"value":"341622","label":"蒙城县"},{"value":"341623","label":"利辛县"}]},{"value":"341700","label":"池州市","children":[{"value":"341702","label":"贵池区"},{"value":"341721","label":"东至县"},{"value":"341722","label":"石台县"},{"value":"341723","label":"青阳县"}]},{"value":"341800","label":"宣城市","children":[{"value":"341802","label":"宣州区"},{"value":"341821","label":"郎溪县"},{"value":"341822","label":"广德县"},{"value":"341823","label":"泾县"},{"value":"341824","label":"绩溪县"},{"value":"341825","label":"旌德县"},{"value":"341881","label":"宁国市"}]}]},{"label":"福建省","value":"350000","children":[{"value":"350100","label":"福州市","children":[{"value":"350102","label":"鼓楼区"},{"value":"350103","label":"台江区"},{"value":"350104","label":"仓山区"},{"value":"350105","label":"马尾区"},{"value":"350111","label":"晋安区"},{"value":"350121","label":"闽侯县"},{"value":"350122","label":"连江县"},{"value":"350123","label":"罗源县"},{"value":"350124","label":"闽清县"},{"value":"350125","label":"永泰县"},{"value":"350128","label":"平潭县"},{"value":"350181","label":"福清市"},{"value":"350182","label":"长乐市"}]},{"value":"350200","label":"厦门市","children":[{"value":"350203","label":"思明区"},{"value":"350205","label":"海沧区"},{"value":"350206","label":"湖里区"},{"value":"350211","label":"集美区"},{"value":"350212","label":"同安区"},{"value":"350213","label":"翔安区"}]},{"value":"350300","label":"莆田市","children":[{"value":"350302","label":"城厢区"},{"value":"350303","label":"涵江区"},{"value":"350304","label":"荔城区"},{"value":"350305","label":"秀屿区"},{"value":"350322","label":"仙游县"}]},{"value":"350400","label":"三明市","children":[{"value":"350402","label":"梅列区"},{"value":"350403","label":"三元区"},{"value":"350421","label":"明溪县"},{"value":"350423","label":"清流县"},{"value":"350424","label":"宁化县"},{"value":"350425","label":"大田县"},{"value":"350426","label":"尤溪县"},{"value":"350427","label":"沙县"},{"value":"350428","label":"将乐县"},{"value":"350429","label":"泰宁县"},{"value":"350430","label":"建宁县"},{"value":"350481","label":"永安市"}]},{"value":"350500","label":"泉州市","children":[{"value":"350502","label":"鲤城区"},{"value":"350503","label":"丰泽区"},{"value":"350504","label":"洛江区"},{"value":"350505","label":"泉港区"},{"value":"350521","label":"惠安县"},{"value":"350524","label":"安溪县"},{"value":"350525","label":"永春县"},{"value":"350526","label":"德化县"},{"value":"350527","label":"金门县"},{"value":"350581","label":"石狮市"},{"value":"350582","label":"晋江市"},{"value":"350583","label":"南安市"}]},{"value":"350600","label":"漳州市","children":[{"value":"350602","label":"芗城区"},{"value":"350603","label":"龙文区"},{"value":"350622","label":"云霄县"},{"value":"350623","label":"漳浦县"},{"value":"350624","label":"诏安县"},{"value":"350625","label":"长泰县"},{"value":"350626","label":"东山县"},{"value":"350627","label":"南靖县"},{"value":"350628","label":"平和县"},{"value":"350629","label":"华安县"},{"value":"350681","label":"龙海市"}]},{"value":"350700","label":"南平市","children":[{"value":"350702","label":"延平区"},{"value":"350721","label":"顺昌县"},{"value":"350722","label":"浦城县"},{"value":"350723","label":"光泽县"},{"value":"350724","label":"松溪县"},{"value":"350725","label":"政和县"},{"value":"350781","label":"邵武市"},{"value":"350782","label":"武夷山市"},{"value":"350783","label":"建瓯市"},{"value":"350784","label":"建阳市"}]},{"value":"350800","label":"龙岩市","children":[{"value":"350802","label":"新罗区"},{"value":"350821","label":"长汀县"},{"value":"350822","label":"永定县"},{"value":"350823","label":"上杭县"},{"value":"350824","label":"武平县"},{"value":"350825","label":"连城县"},{"value":"350881","label":"漳平市"}]},{"value":"350900","label":"宁德市","children":[{"value":"350902","label":"蕉城区"},{"value":"350921","label":"霞浦县"},{"value":"350922","label":"古田县"},{"value":"350923","label":"屏南县"},{"value":"350924","label":"寿宁县"},{"value":"350925","label":"周宁县"},{"value":"350926","label":"柘荣县"},{"value":"350981","label":"福安市"},{"value":"350982","label":"福鼎市"}]}]},{"label":"江西省","value":"360000","children":[{"value":"360100","label":"南昌市","children":[{"value":"360102","label":"东湖区"},{"value":"360103","label":"西湖区"},{"value":"360104","label":"青云谱区"},{"value":"360105","label":"湾里区"},{"value":"360111","label":"青山湖区"},{"value":"360121","label":"南昌县"},{"value":"360122","label":"新建县"},{"value":"360123","label":"安义县"},{"value":"360124","label":"进贤县"},{"value":"360125","label":"红谷滩新区"},{"value":"360126","label":"经济技术开发区"},{"value":"360127","label":"昌北区"}]},{"value":"360200","label":"景德镇市","children":[{"value":"360202","label":"昌江区"},{"value":"360203","label":"珠山区"},{"value":"360222","label":"浮梁县"},{"value":"360281","label":"乐平市"}]},{"value":"360300","label":"萍乡市","children":[{"value":"360302","label":"安源区"},{"value":"360313","label":"湘东区"},{"value":"360321","label":"莲花县"},{"value":"360322","label":"上栗县"},{"value":"360323","label":"芦溪县"}]},{"value":"360400","label":"九江市","children":[{"value":"360402","label":"庐山区"},{"value":"360403","label":"浔阳区"},{"value":"360421","label":"九江县"},{"value":"360423","label":"武宁县"},{"value":"360424","label":"修水县"},{"value":"360425","label":"永修县"},{"value":"360426","label":"德安县"},{"value":"360427","label":"星子县"},{"value":"360428","label":"都昌县"},{"value":"360429","label":"湖口县"},{"value":"360430","label":"彭泽县"},{"value":"360481","label":"瑞昌市"}]},{"value":"360500","label":"新余市","children":[{"value":"360502","label":"渝水区"},{"value":"360521","label":"分宜县"}]},{"value":"360600","label":"鹰潭市","children":[{"value":"360602","label":"月湖区"},{"value":"360622","label":"余江县"},{"value":"360681","label":"贵溪市"}]},{"value":"360700","label":"赣州市","children":[{"value":"360702","label":"章贡区"},{"value":"360721","label":"赣县"},{"value":"360722","label":"信丰县"},{"value":"360723","label":"大余县"},{"value":"360724","label":"上犹县"},{"value":"360725","label":"崇义县"},{"value":"360726","label":"安远县"},{"value":"360727","label":"龙南县"},{"value":"360728","label":"定南县"},{"value":"360729","label":"全南县"},{"value":"360730","label":"宁都县"},{"value":"360731","label":"于都县"},{"value":"360732","label":"兴国县"},{"value":"360733","label":"会昌县"},{"value":"360734","label":"寻乌县"},{"value":"360735","label":"石城县"},{"value":"360751","label":"黄金区"},{"value":"360781","label":"瑞金市"},{"value":"360782","label":"南康市"}]},{"value":"360800","label":"吉安市","children":[{"value":"360802","label":"吉州区"},{"value":"360803","label":"青原区"},{"value":"360821","label":"吉安县"},{"value":"360822","label":"吉水县"},{"value":"360823","label":"峡江县"},{"value":"360824","label":"新干县"},{"value":"360825","label":"永丰县"},{"value":"360826","label":"泰和县"},{"value":"360827","label":"遂川县"},{"value":"360828","label":"万安县"},{"value":"360829","label":"安福县"},{"value":"360830","label":"永新县"},{"value":"360881","label":"井冈山市"}]},{"value":"360900","label":"宜春市","children":[{"value":"360902","label":"袁州区"},{"value":"360921","label":"奉新县"},{"value":"360922","label":"万载县"},{"value":"360923","label":"上高县"},{"value":"360924","label":"宜丰县"},{"value":"360925","label":"靖安县"},{"value":"360926","label":"铜鼓县"},{"value":"360981","label":"丰城市"},{"value":"360982","label":"樟树市"},{"value":"360983","label":"高安市"}]},{"value":"361000","label":"抚州市","children":[{"value":"361002","label":"临川区"},{"value":"361021","label":"南城县"},{"value":"361022","label":"黎川县"},{"value":"361023","label":"南丰县"},{"value":"361024","label":"崇仁县"},{"value":"361025","label":"乐安县"},{"value":"361026","label":"宜黄县"},{"value":"361027","label":"金溪县"},{"value":"361028","label":"资溪县"},{"value":"361029","label":"东乡县"},{"value":"361030","label":"广昌县"}]},{"value":"361100","label":"上饶市","children":[{"value":"361102","label":"信州区"},{"value":"361121","label":"上饶县"},{"value":"361122","label":"广丰县"},{"value":"361123","label":"玉山县"},{"value":"361124","label":"铅山县"},{"value":"361125","label":"横峰县"},{"value":"361126","label":"弋阳县"},{"value":"361127","label":"余干县"},{"value":"361128","label":"鄱阳县"},{"value":"361129","label":"万年县"},{"value":"361130","label":"婺源县"},{"value":"361181","label":"德兴市"}]}]},{"label":"山东省","value":"370000","children":[{"value":"370100","label":"济南市","children":[{"value":"370102","label":"历下区"},{"value":"370103","label":"市中区"},{"value":"370104","label":"槐荫区"},{"value":"370105","label":"天桥区"},{"value":"370112","label":"历城区"},{"value":"370113","label":"长清区"},{"value":"370124","label":"平阴县"},{"value":"370125","label":"济阳县"},{"value":"370126","label":"商河县"},{"value":"370181","label":"章丘市"}]},{"value":"370200","label":"青岛市","children":[{"value":"370202","label":"市南区"},{"value":"370203","label":"市北区"},{"value":"370205","label":"四方区"},{"value":"370211","label":"黄岛区"},{"value":"370212","label":"崂山区"},{"value":"370213","label":"李沧区"},{"value":"370214","label":"城阳区"},{"value":"370251","label":"开发区"},{"value":"370281","label":"胶州市"},{"value":"370282","label":"即墨市"},{"value":"370283","label":"平度市"},{"value":"370284","label":"胶南市"},{"value":"370285","label":"莱西市"}]},{"value":"370300","label":"淄博市","children":[{"value":"370302","label":"淄川区"},{"value":"370303","label":"张店区"},{"value":"370304","label":"博山区"},{"value":"370305","label":"临淄区"},{"value":"370306","label":"周村区"},{"value":"370321","label":"桓台县"},{"value":"370322","label":"高青县"},{"value":"370323","label":"沂源县"}]},{"value":"370400","label":"枣庄市","children":[{"value":"370402","label":"市中区"},{"value":"370403","label":"薛城区"},{"value":"370404","label":"峄城区"},{"value":"370405","label":"台儿庄区"},{"value":"370406","label":"山亭区"},{"value":"370481","label":"滕州市"}]},{"value":"370500","label":"东营市","children":[{"value":"370502","label":"东营区"},{"value":"370503","label":"河口区"},{"value":"370521","label":"垦利县"},{"value":"370522","label":"利津县"},{"value":"370523","label":"广饶县"},{"value":"370589","label":"西城区"},{"value":"370590","label":"东城区"}]},{"value":"370600","label":"烟台市","children":[{"value":"370602","label":"芝罘区"},{"value":"370611","label":"福山区"},{"value":"370612","label":"牟平区"},{"value":"370613","label":"莱山区"},{"value":"370634","label":"长岛县"},{"value":"370681","label":"龙口市"},{"value":"370682","label":"莱阳市"},{"value":"370683","label":"莱州市"},{"value":"370684","label":"蓬莱市"},{"value":"370685","label":"招远市"},{"value":"370686","label":"栖霞市"},{"value":"370687","label":"海阳市"}]},{"value":"370700","label":"潍坊市","children":[{"value":"370702","label":"潍城区"},{"value":"370703","label":"寒亭区"},{"value":"370704","label":"坊子区"},{"value":"370705","label":"奎文区"},{"value":"370724","label":"临朐县"},{"value":"370725","label":"昌乐县"},{"value":"370751","label":"开发区"},{"value":"370781","label":"青州市"},{"value":"370782","label":"诸城市"},{"value":"370783","label":"寿光市"},{"value":"370784","label":"安丘市"},{"value":"370785","label":"高密市"},{"value":"370786","label":"昌邑市"}]},{"value":"370800","label":"济宁市","children":[{"value":"370802","label":"市中区"},{"value":"370811","label":"任城区"},{"value":"370826","label":"微山县"},{"value":"370827","label":"鱼台县"},{"value":"370828","label":"金乡县"},{"value":"370829","label":"嘉祥县"},{"value":"370830","label":"汶上县"},{"value":"370831","label":"泗水县"},{"value":"370832","label":"梁山县"},{"value":"370881","label":"曲阜市"},{"value":"370882","label":"兖州市"},{"value":"370883","label":"邹城市"}]},{"value":"370900","label":"泰安市","children":[{"value":"370902","label":"泰山区"},{"value":"370903","label":"岱岳区"},{"value":"370921","label":"宁阳县"},{"value":"370923","label":"东平县"},{"value":"370982","label":"新泰市"},{"value":"370983","label":"肥城市"}]},{"value":"371000","label":"威海市","children":[{"value":"371002","label":"环翠区"},{"value":"371081","label":"文登市"},{"value":"371082","label":"荣成市"},{"value":"371083","label":"乳山市"}]},{"value":"371100","label":"日照市","children":[{"value":"371102","label":"东港区"},{"value":"371103","label":"岚山区"},{"value":"371121","label":"五莲县"},{"value":"371122","label":"莒县"}]},{"value":"371200","label":"莱芜市","children":[{"value":"371202","label":"莱城区"},{"value":"371203","label":"钢城区"}]},{"value":"371300","label":"临沂市","children":[{"value":"371302","label":"兰山区"},{"value":"371311","label":"罗庄区"},{"value":"371312","label":"河东区"},{"value":"371321","label":"沂南县"},{"value":"371322","label":"郯城县"},{"value":"371323","label":"沂水县"},{"value":"371324","label":"苍山县"},{"value":"371325","label":"费县"},{"value":"371326","label":"平邑县"},{"value":"371327","label":"莒南县"},{"value":"371328","label":"蒙阴县"},{"value":"371329","label":"临沭县"}]},{"value":"371400","label":"德州市","children":[{"value":"371402","label":"德城区"},{"value":"371421","label":"陵县"},{"value":"371422","label":"宁津县"},{"value":"371423","label":"庆云县"},{"value":"371424","label":"临邑县"},{"value":"371425","label":"齐河县"},{"value":"371426","label":"平原县"},{"value":"371427","label":"夏津县"},{"value":"371428","label":"武城县"},{"value":"371451","label":"开发区"},{"value":"371481","label":"乐陵市"},{"value":"371482","label":"禹城市"}]},{"value":"371500","label":"聊城市","children":[{"value":"371502","label":"东昌府区"},{"value":"371521","label":"阳谷县"},{"value":"371522","label":"莘县"},{"value":"371523","label":"茌平县"},{"value":"371524","label":"东阿县"},{"value":"371525","label":"冠县"},{"value":"371526","label":"高唐县"},{"value":"371581","label":"临清市"}]},{"value":"371600","label":"滨州市","children":[{"value":"371602","label":"滨城区"},{"value":"371621","label":"惠民县"},{"value":"371622","label":"阳信县"},{"value":"371623","label":"无棣县"},{"value":"371624","label":"沾化县"},{"value":"371625","label":"博兴县"},{"value":"371626","label":"邹平县"}]},{"value":"371700","label":"菏泽市","children":[{"value":"371702","label":"牡丹区"},{"value":"371721","label":"曹县"},{"value":"371722","label":"单县"},{"value":"371723","label":"成武县"},{"value":"371724","label":"巨野县"},{"value":"371725","label":"郓城县"},{"value":"371726","label":"鄄城县"},{"value":"371727","label":"定陶县"},{"value":"371728","label":"东明县"}]}]},{"label":"河南省","value":"410000","children":[{"value":"410100","label":"郑州市","children":[{"value":"410102","label":"中原区"},{"value":"410103","label":"二七区"},{"value":"410104","label":"管城回族区"},{"value":"410105","label":"金水区"},{"value":"410106","label":"上街区"},{"value":"410108","label":"惠济区"},{"value":"410122","label":"中牟县"},{"value":"410181","label":"巩义市"},{"value":"410182","label":"荥阳市"},{"value":"410183","label":"新密市"},{"value":"410184","label":"新郑市"},{"value":"410185","label":"登封市"},{"value":"410186","label":"郑东新区"},{"value":"410187","label":"高新区"}]},{"value":"410200","label":"开封市","children":[{"value":"410202","label":"龙亭区"},{"value":"410203","label":"顺河回族区"},{"value":"410204","label":"鼓楼区"},{"value":"410205","label":"禹王台区"},{"value":"410211","label":"金明区"},{"value":"410221","label":"杞县"},{"value":"410222","label":"通许县"},{"value":"410223","label":"尉氏县"},{"value":"410224","label":"开封县"},{"value":"410225","label":"兰考县"}]},{"value":"410300","label":"洛阳市","children":[{"value":"410302","label":"老城区"},{"value":"410303","label":"西工区"},{"value":"410304","label":"廛河回族区"},{"value":"410305","label":"涧西区"},{"value":"410306","label":"吉利区"},{"value":"410307","label":"洛龙区"},{"value":"410322","label":"孟津县"},{"value":"410323","label":"新安县"},{"value":"410324","label":"栾川县"},{"value":"410325","label":"嵩县"},{"value":"410326","label":"汝阳县"},{"value":"410327","label":"宜阳县"},{"value":"410328","label":"洛宁县"},{"value":"410329","label":"伊川县"},{"value":"410381","label":"偃师市"},{"value":"471004","label":"高新区"}]},{"value":"410400","label":"平顶山市","children":[{"value":"410402","label":"新华区"},{"value":"410403","label":"卫东区"},{"value":"410404","label":"石龙区"},{"value":"410411","label":"湛河区"},{"value":"410421","label":"宝丰县"},{"value":"410422","label":"叶县"},{"value":"410423","label":"鲁山县"},{"value":"410425","label":"郏县"},{"value":"410481","label":"舞钢市"},{"value":"410482","label":"汝州市"}]},{"value":"410500","label":"安阳市","children":[{"value":"410502","label":"文峰区"},{"value":"410503","label":"北关区"},{"value":"410505","label":"殷都区"},{"value":"410506","label":"龙安区"},{"value":"410522","label":"安阳县"},{"value":"410523","label":"汤阴县"},{"value":"410526","label":"滑县"},{"value":"410527","label":"内黄县"},{"value":"410581","label":"林州市"}]},{"value":"410600","label":"鹤壁市","children":[{"value":"410602","label":"鹤山区"},{"value":"410603","label":"山城区"},{"value":"410611","label":"淇滨区"},{"value":"410621","label":"浚县"},{"value":"410622","label":"淇县"}]},{"value":"410700","label":"新乡市","children":[{"value":"410702","label":"红旗区"},{"value":"410703","label":"卫滨区"},{"value":"410704","label":"凤泉区"},{"value":"410711","label":"牧野区"},{"value":"410721","label":"新乡县"},{"value":"410724","label":"获嘉县"},{"value":"410725","label":"原阳县"},{"value":"410726","label":"延津县"},{"value":"410727","label":"封丘县"},{"value":"410728","label":"长垣县"},{"value":"410781","label":"卫辉市"},{"value":"410782","label":"辉县市"}]},{"value":"410800","label":"焦作市","children":[{"value":"410802","label":"解放区"},{"value":"410803","label":"中站区"},{"value":"410804","label":"马村区"},{"value":"410811","label":"山阳区"},{"value":"410821","label":"修武县"},{"value":"410822","label":"博爱县"},{"value":"410823","label":"武陟县"},{"value":"410825","label":"温县"},{"value":"410882","label":"沁阳市"},{"value":"410883","label":"孟州市"}]},{"value":"410881","label":"济源市"},{"value":"410900","label":"濮阳市","children":[{"value":"410902","label":"华龙区"},{"value":"410922","label":"清丰县"},{"value":"410923","label":"南乐县"},{"value":"410926","label":"范县"},{"value":"410927","label":"台前县"},{"value":"410928","label":"濮阳县"}]},{"value":"411000","label":"许昌市","children":[{"value":"411002","label":"魏都区"},{"value":"411023","label":"许昌县"},{"value":"411024","label":"鄢陵县"},{"value":"411025","label":"襄城县"},{"value":"411081","label":"禹州市"},{"value":"411082","label":"长葛市"}]},{"value":"411100","label":"漯河市","children":[{"value":"411102","label":"源汇区"},{"value":"411103","label":"郾城区"},{"value":"411104","label":"召陵区"},{"value":"411121","label":"舞阳县"},{"value":"411122","label":"临颍县"}]},{"value":"411200","label":"三门峡市","children":[{"value":"411202","label":"湖滨区"},{"value":"411221","label":"渑池县"},{"value":"411222","label":"陕县"},{"value":"411224","label":"卢氏县"},{"value":"411281","label":"义马市"},{"value":"411282","label":"灵宝市"}]},{"value":"411300","label":"南阳市","children":[{"value":"411302","label":"宛城区"},{"value":"411303","label":"卧龙区"},{"value":"411321","label":"南召县"},{"value":"411322","label":"方城县"},{"value":"411323","label":"西峡县"},{"value":"411324","label":"镇平县"},{"value":"411325","label":"内乡县"},{"value":"411326","label":"淅川县"},{"value":"411327","label":"社旗县"},{"value":"411328","label":"唐河县"},{"value":"411329","label":"新野县"},{"value":"411330","label":"桐柏县"},{"value":"411381","label":"邓州市"}]},{"value":"411400","label":"商丘市","children":[{"value":"411402","label":"梁园区"},{"value":"411403","label":"睢阳区"},{"value":"411421","label":"民权县"},{"value":"411422","label":"睢县"},{"value":"411423","label":"宁陵县"},{"value":"411424","label":"柘城县"},{"value":"411425","label":"虞城县"},{"value":"411426","label":"夏邑县"},{"value":"411481","label":"永城市"}]},{"value":"411500","label":"信阳市","children":[{"value":"411502","label":"浉河区"},{"value":"411503","label":"平桥区"},{"value":"411521","label":"罗山县"},{"value":"411522","label":"光山县"},{"value":"411523","label":"新县"},{"value":"411524","label":"商城县"},{"value":"411525","label":"固始县"},{"value":"411526","label":"潢川县"},{"value":"411527","label":"淮滨县"},{"value":"411528","label":"息县"}]},{"value":"411600","label":"周口市","children":[{"value":"411602","label":"川汇区"},{"value":"411621","label":"扶沟县"},{"value":"411622","label":"西华县"},{"value":"411623","label":"商水县"},{"value":"411624","label":"沈丘县"},{"value":"411625","label":"郸城县"},{"value":"411626","label":"淮阳县"},{"value":"411627","label":"太康县"},{"value":"411628","label":"鹿邑县"},{"value":"411681","label":"项城市"}]},{"value":"411700","label":"驻马店市","children":[{"value":"411702","label":"驿城区"},{"value":"411721","label":"西平县"},{"value":"411722","label":"上蔡县"},{"value":"411723","label":"平舆县"},{"value":"411724","label":"正阳县"},{"value":"411725","label":"确山县"},{"value":"411726","label":"泌阳县"},{"value":"411727","label":"汝南县"},{"value":"411728","label":"遂平县"},{"value":"411729","label":"新蔡县"}]}]},{"label":"湖北省","value":"420000","children":[{"value":"420100","label":"武汉市","children":[{"value":"420102","label":"江岸区"},{"value":"420103","label":"江汉区"},{"value":"420104","label":"硚口区"},{"value":"420105","label":"汉阳区"},{"value":"420106","label":"武昌区"},{"value":"420107","label":"青山区"},{"value":"420111","label":"洪山区"},{"value":"420112","label":"东西湖区"},{"value":"420113","label":"汉南区"},{"value":"420114","label":"蔡甸区"},{"value":"420115","label":"江夏区"},{"value":"420116","label":"黄陂区"},{"value":"420117","label":"新洲区"}]},{"value":"420200","label":"黄石市","children":[{"value":"420202","label":"黄石港区"},{"value":"420203","label":"西塞山区"},{"value":"420204","label":"下陆区"},{"value":"420205","label":"铁山区"},{"value":"420222","label":"阳新县"},{"value":"420281","label":"大冶市"}]},{"value":"420300","label":"十堰市","children":[{"value":"420302","label":"茅箭区"},{"value":"420303","label":"张湾区"},{"value":"420321","label":"郧县"},{"value":"420322","label":"郧西县"},{"value":"420323","label":"竹山县"},{"value":"420324","label":"竹溪县"},{"value":"420325","label":"房县"},{"value":"420381","label":"丹江口市"},{"value":"420382","label":"城区"}]},{"value":"420500","label":"宜昌市","children":[{"value":"420502","label":"西陵区"},{"value":"420503","label":"伍家岗区"},{"value":"420504","label":"点军区"},{"value":"420505","label":"猇亭区"},{"value":"420506","label":"夷陵区"},{"value":"420525","label":"远安县"},{"value":"420526","label":"兴山县"},{"value":"420527","label":"秭归县"},{"value":"420528","label":"长阳土家族自治县"},{"value":"420529","label":"五峰土家族自治县"},{"value":"420551","label":"葛洲坝区"},{"value":"420552","label":"开发区"},{"value":"420581","label":"宜都市"},{"value":"420582","label":"当阳市"},{"value":"420583","label":"枝江市"}]},{"value":"420600","label":"襄阳市","children":[{"value":"420602","label":"襄城区"},{"value":"420606","label":"樊城区"},{"value":"420607","label":"襄州区"},{"value":"420624","label":"南漳县"},{"value":"420625","label":"谷城县"},{"value":"420626","label":"保康县"},{"value":"420682","label":"老河口市"},{"value":"420683","label":"枣阳市"},{"value":"420684","label":"宜城市"}]},{"value":"420700","label":"鄂州市","children":[{"value":"420702","label":"梁子湖区"},{"value":"420703","label":"华容区"},{"value":"420704","label":"鄂城区"}]},{"value":"420800","label":"荆门市","children":[{"value":"420802","label":"东宝区"},{"value":"420804","label":"掇刀区"},{"value":"420821","label":"京山县"},{"value":"420822","label":"沙洋县"},{"value":"420881","label":"钟祥市"}]},{"value":"420900","label":"孝感市","children":[{"value":"420902","label":"孝南区"},{"value":"420921","label":"孝昌县"},{"value":"420922","label":"大悟县"},{"value":"420923","label":"云梦县"},{"value":"420981","label":"应城市"},{"value":"420982","label":"安陆市"},{"value":"420984","label":"汉川市"}]},{"value":"421000","label":"荆州市","children":[{"value":"421002","label":"沙市区"},{"value":"421003","label":"荆州区"},{"value":"421022","label":"公安县"},{"value":"421023","label":"监利县"},{"value":"421024","label":"江陵县"},{"value":"421081","label":"石首市"},{"value":"421083","label":"洪湖市"},{"value":"421087","label":"松滋市"}]},{"value":"421100","label":"黄冈市","children":[{"value":"421102","label":"黄州区"},{"value":"421121","label":"团风县"},{"value":"421122","label":"红安县"},{"value":"421123","label":"罗田县"},{"value":"421124","label":"英山县"},{"value":"421125","label":"浠水县"},{"value":"421126","label":"蕲春县"},{"value":"421127","label":"黄梅县"},{"value":"421181","label":"麻城市"},{"value":"421182","label":"武穴市"}]},{"value":"421200","label":"咸宁市","children":[{"value":"421202","label":"咸安区"},{"value":"421221","label":"嘉鱼县"},{"value":"421222","label":"通城县"},{"value":"421223","label":"崇阳县"},{"value":"421224","label":"通山县"},{"value":"421281","label":"赤壁市"},{"value":"421282","label":"温泉城区"}]},{"value":"421300","label":"随州市","children":[{"value":"421302","label":"曾都区"},{"value":"421321","label":"随县"},{"value":"421381","label":"广水市"}]},{"value":"422800","label":"恩施土家族苗族自治州","children":[{"value":"422801","label":"恩施市"},{"value":"422802","label":"利川市"},{"value":"422822","label":"建始县"},{"value":"422823","label":"巴东县"},{"value":"422825","label":"宣恩县"},{"value":"422826","label":"咸丰县"},{"value":"422827","label":"来凤县"},{"value":"422828","label":"鹤峰县"}]},{"value":"429004","label":"仙桃市"},{"value":"429005","label":"潜江市"},{"value":"429006","label":"天门市"},{"value":"429021","label":"神农架林区"}]},{"label":"湖南省","value":"430000","children":[{"value":"430100","label":"长沙市","children":[{"value":"430102","label":"芙蓉区"},{"value":"430103","label":"天心区"},{"value":"430104","label":"岳麓区"},{"value":"430105","label":"开福区"},{"value":"430111","label":"雨花区"},{"value":"430121","label":"长沙县"},{"value":"430122","label":"望城县"},{"value":"430124","label":"宁乡县"},{"value":"430181","label":"浏阳市"}]},{"value":"430200","label":"株洲市","children":[{"value":"430202","label":"荷塘区"},{"value":"430203","label":"芦淞区"},{"value":"430204","label":"石峰区"},{"value":"430211","label":"天元区"},{"value":"430221","label":"株洲县"},{"value":"430223","label":"攸县"},{"value":"430224","label":"茶陵县"},{"value":"430225","label":"炎陵县"},{"value":"430281","label":"醴陵市"}]},{"value":"430300","label":"湘潭市","children":[{"value":"430302","label":"雨湖区"},{"value":"430304","label":"岳塘区"},{"value":"430321","label":"湘潭县"},{"value":"430381","label":"湘乡市"},{"value":"430382","label":"韶山市"}]},{"value":"430400","label":"衡阳市","children":[{"value":"430405","label":"珠晖区"},{"value":"430406","label":"雁峰区"},{"value":"430407","label":"石鼓区"},{"value":"430408","label":"蒸湘区"},{"value":"430412","label":"南岳区"},{"value":"430421","label":"衡阳县"},{"value":"430422","label":"衡南县"},{"value":"430423","label":"衡山县"},{"value":"430424","label":"衡东县"},{"value":"430426","label":"祁东县"},{"value":"430481","label":"耒阳市"},{"value":"430482","label":"常宁市"}]},{"value":"430500","label":"邵阳市","children":[{"value":"430502","label":"双清区"},{"value":"430503","label":"大祥区"},{"value":"430511","label":"北塔区"},{"value":"430521","label":"邵东县"},{"value":"430522","label":"新邵县"},{"value":"430523","label":"邵阳县"},{"value":"430524","label":"隆回县"},{"value":"430525","label":"洞口县"},{"value":"430527","label":"绥宁县"},{"value":"430528","label":"新宁县"},{"value":"430529","label":"城步苗族自治县"},{"value":"430581","label":"武冈市"}]},{"value":"430600","label":"岳阳市","children":[{"value":"430602","label":"岳阳楼区"},{"value":"430603","label":"云溪区"},{"value":"430611","label":"君山区"},{"value":"430621","label":"岳阳县"},{"value":"430623","label":"华容县"},{"value":"430624","label":"湘阴县"},{"value":"430626","label":"平江县"},{"value":"430681","label":"汨罗市"},{"value":"430682","label":"临湘市"}]},{"value":"430700","label":"常德市","children":[{"value":"430702","label":"武陵区"},{"value":"430703","label":"鼎城区"},{"value":"430721","label":"安乡县"},{"value":"430722","label":"汉寿县"},{"value":"430723","label":"澧县"},{"value":"430724","label":"临澧县"},{"value":"430725","label":"桃源县"},{"value":"430726","label":"石门县"},{"value":"430781","label":"津市市"}]},{"value":"430800","label":"张家界市","children":[{"value":"430802","label":"永定区"},{"value":"430811","label":"武陵源区"},{"value":"430821","label":"慈利县"},{"value":"430822","label":"桑植县"}]},{"value":"430900","label":"益阳市","children":[{"value":"430902","label":"资阳区"},{"value":"430903","label":"赫山区"},{"value":"430921","label":"南县"},{"value":"430922","label":"桃江县"},{"value":"430923","label":"安化县"},{"value":"430981","label":"沅江市"}]},{"value":"431000","label":"郴州市","children":[{"value":"431002","label":"北湖区"},{"value":"431003","label":"苏仙区"},{"value":"431021","label":"桂阳县"},{"value":"431022","label":"宜章县"},{"value":"431023","label":"永兴县"},{"value":"431024","label":"嘉禾县"},{"value":"431025","label":"临武县"},{"value":"431026","label":"汝城县"},{"value":"431027","label":"桂东县"},{"value":"431028","label":"安仁县"},{"value":"431081","label":"资兴市"}]},{"value":"431100","label":"永州市","children":[{"value":"431102","label":"零陵区"},{"value":"431103","label":"冷水滩区"},{"value":"431121","label":"祁阳县"},{"value":"431122","label":"东安县"},{"value":"431123","label":"双牌县"},{"value":"431124","label":"道县"},{"value":"431125","label":"江永县"},{"value":"431126","label":"宁远县"},{"value":"431127","label":"蓝山县"},{"value":"431128","label":"新田县"},{"value":"431129","label":"江华瑶族自治县"}]},{"value":"431200","label":"怀化市","children":[{"value":"431202","label":"鹤城区"},{"value":"431221","label":"中方县"},{"value":"431222","label":"沅陵县"},{"value":"431223","label":"辰溪县"},{"value":"431224","label":"溆浦县"},{"value":"431225","label":"会同县"},{"value":"431226","label":"麻阳苗族自治县"},{"value":"431227","label":"新晃侗族自治县"},{"value":"431228","label":"芷江侗族自治县"},{"value":"431229","label":"靖州苗族侗族自治县"},{"value":"431230","label":"通道侗族自治县"},{"value":"431281","label":"洪江市"}]},{"value":"431300","label":"娄底市","children":[{"value":"431302","label":"娄星区"},{"value":"431321","label":"双峰县"},{"value":"431322","label":"新化县"},{"value":"431381","label":"冷水江市"},{"value":"431382","label":"涟源市"}]},{"value":"433100","label":"湘西土家族苗族自治州","children":[{"value":"433101","label":"吉首市"},{"value":"433122","label":"泸溪县"},{"value":"433123","label":"凤凰县"},{"value":"433124","label":"花垣县"},{"value":"433125","label":"保靖县"},{"value":"433126","label":"古丈县"},{"value":"433127","label":"永顺县"},{"value":"433130","label":"龙山县"}]}]},{"label":"广东省","value":"440000","children":[{"value":"440100","label":"广州市","children":[{"value":"440103","label":"荔湾区"},{"value":"440104","label":"越秀区"},{"value":"440105","label":"海珠区"},{"value":"440106","label":"天河区"},{"value":"440111","label":"白云区"},{"value":"440112","label":"黄埔区"},{"value":"440113","label":"番禺区"},{"value":"440114","label":"花都区"},{"value":"440115","label":"南沙区"},{"value":"440116","label":"萝岗区"},{"value":"440183","label":"增城市"},{"value":"440184","label":"从化市"},{"value":"440188","label":"东山区"}]},{"value":"440200","label":"韶关市","children":[{"value":"440203","label":"武江区"},{"value":"440204","label":"浈江区"},{"value":"440205","label":"曲江区"},{"value":"440222","label":"始兴县"},{"value":"440224","label":"仁化县"},{"value":"440229","label":"翁源县"},{"value":"440232","label":"乳源瑶族自治县"},{"value":"440233","label":"新丰县"},{"value":"440281","label":"乐昌市"},{"value":"440282","label":"南雄市"}]},{"value":"440300","label":"深圳市","children":[{"value":"440303","label":"罗湖区"},{"value":"440304","label":"福田区"},{"value":"440305","label":"南山区"},{"value":"440306","label":"宝安区"},{"value":"440307","label":"龙岗区"},{"value":"440308","label":"盐田区"},{"value":"1032697","label":"光明新区"},{"value":"1032698","label":"坪山新区"},{"value":"1032699","label":"大鹏新区"},{"value":"1032700","label":"龙华新区"}]},{"value":"440400","label":"珠海市","children":[{"value":"440402","label":"香洲区"},{"value":"440403","label":"斗门区"},{"value":"440404","label":"金湾区"},{"value":"440486","label":"金唐区"},{"value":"440487","label":"南湾区"}]},{"value":"440500","label":"汕头市","children":[{"value":"440507","label":"龙湖区"},{"value":"440511","label":"金平区"},{"value":"440512","label":"濠江区"},{"value":"440513","label":"潮阳区"},{"value":"440514","label":"潮南区"},{"value":"440515","label":"澄海区"},{"value":"440523","label":"南澳县"}]},{"value":"440600","label":"佛山市","children":[{"value":"440604","label":"禅城区"},{"value":"440605","label":"南海区"},{"value":"440606","label":"顺德区"},{"value":"440607","label":"三水区"},{"value":"440608","label":"高明区"}]},{"value":"440700","label":"江门市","children":[{"value":"440703","label":"蓬江区"},{"value":"440704","label":"江海区"},{"value":"440705","label":"新会区"},{"value":"440781","label":"台山市"},{"value":"440783","label":"开平市"},{"value":"440784","label":"鹤山市"},{"value":"440785","label":"恩平市"}]},{"value":"440800","label":"湛江市","children":[{"value":"440802","label":"赤坎区"},{"value":"440803","label":"霞山区"},{"value":"440804","label":"坡头区"},{"value":"440811","label":"麻章区"},{"value":"440823","label":"遂溪县"},{"value":"440825","label":"徐闻县"},{"value":"440881","label":"廉江市"},{"value":"440882","label":"雷州市"},{"value":"440883","label":"吴川市"}]},{"value":"440900","label":"茂名市","children":[{"value":"440902","label":"茂南区"},{"value":"440903","label":"茂港区"},{"value":"440923","label":"电白县"},{"value":"440981","label":"高州市"},{"value":"440982","label":"化州市"},{"value":"440983","label":"信宜市"}]},{"value":"441200","label":"肇庆市","children":[{"value":"441202","label":"端州区"},{"value":"441203","label":"鼎湖区"},{"value":"441223","label":"广宁县"},{"value":"441224","label":"怀集县"},{"value":"441225","label":"封开县"},{"value":"441226","label":"德庆县"},{"value":"441283","label":"高要市"},{"value":"441284","label":"四会市"}]},{"value":"441300","label":"惠州市","children":[{"value":"441302","label":"惠城区"},{"value":"441303","label":"惠阳区"},{"value":"441322","label":"博罗县"},{"value":"441323","label":"惠东县"},{"value":"441324","label":"龙门县"}]},{"value":"441400","label":"梅州市","children":[{"value":"441402","label":"梅江区"},{"value":"441421","label":"梅县"},{"value":"441422","label":"大埔县"},{"value":"441423","label":"丰顺县"},{"value":"441424","label":"五华县"},{"value":"441426","label":"平远县"},{"value":"441427","label":"蕉岭县"},{"value":"441481","label":"兴宁市"}]},{"value":"441500","label":"汕尾市","children":[{"value":"441502","label":"城区"},{"value":"441521","label":"海丰县"},{"value":"441523","label":"陆河县"},{"value":"441581","label":"陆丰市"}]},{"value":"441600","label":"河源市","children":[{"value":"441602","label":"源城区"},{"value":"441621","label":"紫金县"},{"value":"441622","label":"龙川县"},{"value":"441623","label":"连平县"},{"value":"441624","label":"和平县"},{"value":"441625","label":"东源县"}]},{"value":"441700","label":"阳江市","children":[{"value":"441702","label":"江城区"},{"value":"441721","label":"阳西县"},{"value":"441723","label":"阳东县"},{"value":"441781","label":"阳春市"}]},{"value":"441800","label":"清远市","children":[{"value":"441802","label":"清城区"},{"value":"441821","label":"佛冈县"},{"value":"441823","label":"阳山县"},{"value":"441825","label":"连山壮族瑶族自治县"},{"value":"441826","label":"连南瑶族自治县"},{"value":"441827","label":"清新县"},{"value":"441881","label":"英德市"},{"value":"441882","label":"连州市"}]},{"value":"441900","label":"东莞市"},{"value":"442000","label":"中山市"},{"value":"445100","label":"潮州市","children":[{"value":"445102","label":"湘桥区"},{"value":"445121","label":"潮安县"},{"value":"445122","label":"饶平县"},{"value":"445185","label":"枫溪区"}]},{"value":"445200","label":"揭阳市","children":[{"value":"445202","label":"榕城区"},{"value":"445221","label":"揭东县"},{"value":"445222","label":"揭西县"},{"value":"445224","label":"惠来县"},{"value":"445281","label":"普宁市"},{"value":"445284","label":"东山区"}]},{"value":"445300","label":"云浮市","children":[{"value":"445302","label":"云城区"},{"value":"445321","label":"新兴县"},{"value":"445322","label":"郁南县"},{"value":"445323","label":"云安县"},{"value":"445381","label":"罗定市"}]}]},{"label":"广西壮族自治区","value":"450000","children":[{"value":"450100","label":"南宁市","children":[{"value":"450102","label":"兴宁区"},{"value":"450103","label":"青秀区"},{"value":"450105","label":"江南区"},{"value":"450107","label":"西乡塘区"},{"value":"450108","label":"良庆区"},{"value":"450109","label":"邕宁区"},{"value":"450122","label":"武鸣县"},{"value":"450123","label":"隆安县"},{"value":"450124","label":"马山县"},{"value":"450125","label":"上林县"},{"value":"450126","label":"宾阳县"},{"value":"450127","label":"横县"}]},{"value":"450200","label":"柳州市","children":[{"value":"450202","label":"城中区"},{"value":"450203","label":"鱼峰区"},{"value":"450204","label":"柳南区"},{"value":"450205","label":"柳北区"},{"value":"450221","label":"柳江县"},{"value":"450222","label":"柳城县"},{"value":"450223","label":"鹿寨县"},{"value":"450224","label":"融安县"},{"value":"450225","label":"融水苗族自治县"},{"value":"450226","label":"三江侗族自治县"}]},{"value":"450300","label":"桂林市","children":[{"value":"450302","label":"秀峰区"},{"value":"450303","label":"叠彩区"},{"value":"450304","label":"象山区"},{"value":"450305","label":"七星区"},{"value":"450311","label":"雁山区"},{"value":"450321","label":"阳朔县"},{"value":"450322","label":"临桂县"},{"value":"450323","label":"灵川县"},{"value":"450324","label":"全州县"},{"value":"450325","label":"兴安县"},{"value":"450326","label":"永福县"},{"value":"450327","label":"灌阳县"},{"value":"450328","label":"龙胜各族自治县"},{"value":"450329","label":"资源县"},{"value":"450330","label":"平乐县"},{"value":"450331","label":"荔浦县"},{"value":"450332","label":"恭城瑶族自治县"}]},{"value":"450400","label":"梧州市","children":[{"value":"450403","label":"万秀区"},{"value":"450404","label":"蝶山区"},{"value":"450405","label":"长洲区"},{"value":"450421","label":"苍梧县"},{"value":"450422","label":"藤县"},{"value":"450423","label":"蒙山县"},{"value":"450481","label":"岑溪市"}]},{"value":"450500","label":"北海市","children":[{"value":"450502","label":"海城区"},{"value":"450503","label":"银海区"},{"value":"450512","label":"铁山港区"},{"value":"450521","label":"合浦县"}]},{"value":"450600","label":"防城港市","children":[{"value":"450602","label":"港口区"},{"value":"450603","label":"防城区"},{"value":"450621","label":"上思县"},{"value":"450681","label":"东兴市"}]},{"value":"450700","label":"钦州市","children":[{"value":"450702","label":"钦南区"},{"value":"450703","label":"钦北区"},{"value":"450721","label":"灵山县"},{"value":"450722","label":"浦北县"}]},{"value":"450800","label":"贵港市","children":[{"value":"450802","label":"港北区"},{"value":"450803","label":"港南区"},{"value":"450804","label":"覃塘区"},{"value":"450821","label":"平南县"},{"value":"450881","label":"桂平市"}]},{"value":"450900","label":"玉林市","children":[{"value":"450902","label":"玉州区"},{"value":"450921","label":"容县"},{"value":"450922","label":"陆川县"},{"value":"450923","label":"博白县"},{"value":"450924","label":"兴业县"},{"value":"450981","label":"北流市"}]},{"value":"451000","label":"百色市","children":[{"value":"451002","label":"右江区"},{"value":"451021","label":"田阳县"},{"value":"451022","label":"田东县"},{"value":"451023","label":"平果县"},{"value":"451024","label":"德保县"},{"value":"451025","label":"靖西县"},{"value":"451026","label":"那坡县"},{"value":"451027","label":"凌云县"},{"value":"451028","label":"乐业县"},{"value":"451029","label":"田林县"},{"value":"451030","label":"西林县"},{"value":"451031","label":"隆林各族自治县"}]},{"value":"451100","label":"贺州市","children":[{"value":"451102","label":"八步区"},{"value":"451121","label":"昭平县"},{"value":"451122","label":"钟山县"},{"value":"451123","label":"富川瑶族自治县"}]},{"value":"451200","label":"河池市","children":[{"value":"451202","label":"金城江区"},{"value":"451221","label":"南丹县"},{"value":"451222","label":"天峨县"},{"value":"451223","label":"凤山县"},{"value":"451224","label":"东兰县"},{"value":"451225","label":"罗城仫佬族自治县"},{"value":"451226","label":"环江毛南族自治县"},{"value":"451227","label":"巴马瑶族自治县"},{"value":"451228","label":"都安瑶族自治县"},{"value":"451229","label":"大化瑶族自治县"},{"value":"451281","label":"宜州市"}]},{"value":"451300","label":"来宾市","children":[{"value":"451302","label":"兴宾区"},{"value":"451321","label":"忻城县"},{"value":"451322","label":"象州县"},{"value":"451323","label":"武宣县"},{"value":"451324","label":"金秀瑶族自治县"},{"value":"451381","label":"合山市"}]},{"value":"451400","label":"崇左市","children":[{"value":"451402","label":"江洲区"},{"value":"451421","label":"扶绥县"},{"value":"451422","label":"宁明县"},{"value":"451423","label":"龙州县"},{"value":"451424","label":"大新县"},{"value":"451425","label":"天等县"},{"value":"451481","label":"凭祥市"}]}]},{"label":"海南省","value":"460000","children":[{"value":"460100","label":"海口市","children":[{"value":"460105","label":"秀英区"},{"value":"460106","label":"龙华区"},{"value":"460107","label":"琼山区"},{"value":"460108","label":"美兰区"}]},{"value":"460200","label":"三亚市"},{"value":"469001","label":"五指山市"},{"value":"469002","label":"琼海市"},{"value":"469003","label":"儋州市"},{"value":"469005","label":"文昌市"},{"value":"469006","label":"万宁市"},{"value":"469007","label":"东方市"},{"value":"469025","label":"定安县"},{"value":"469026","label":"屯昌县"},{"value":"469027","label":"澄迈县"},{"value":"469028","label":"临高县"},{"value":"469030","label":"白沙黎族自治县"},{"value":"469031","label":"昌江黎族自治县"},{"value":"469033","label":"乐东黎族自治县"},{"value":"469034","label":"陵水黎族自治县"},{"value":"469035","label":"保亭黎族苗族自治县"},{"value":"469036","label":"琼中黎族苗族自治县"},{"value":"469037","label":"西沙群岛"},{"value":"469038","label":"南沙群岛"},{"value":"469039","label":"中沙群岛的岛礁及其海域"}]},{"label":"重庆","value":"500000","children":[{"value":"500100","label":"重庆市","children":[{"value":"500101","label":"万州区"},{"value":"500102","label":"涪陵区"},{"value":"500103","label":"渝中区"},{"value":"500104","label":"大渡口区"},{"value":"500105","label":"江北区"},{"value":"500106","label":"沙坪坝区"},{"value":"500107","label":"九龙坡区"},{"value":"500108","label":"南岸区"},{"value":"500109","label":"北碚区"},{"value":"500110","label":"万盛区"},{"value":"500111","label":"双桥区"},{"value":"500112","label":"渝北区"},{"value":"500113","label":"巴南区"},{"value":"500114","label":"黔江区"},{"value":"500115","label":"长寿区"},{"value":"500222","label":"綦江县"},{"value":"500223","label":"潼南县"},{"value":"500224","label":"铜梁县"},{"value":"500225","label":"大足县"},{"value":"500226","label":"荣昌县"},{"value":"500227","label":"璧山县"},{"value":"500228","label":"梁平县"},{"value":"500229","label":"城口县"},{"value":"500230","label":"丰都县"},{"value":"500231","label":"垫江县"},{"value":"500232","label":"武隆县"},{"value":"500233","label":"忠县"},{"value":"500234","label":"开县"},{"value":"500235","label":"云阳县"},{"value":"500236","label":"奉节县"},{"value":"500237","label":"巫山县"},{"value":"500238","label":"巫溪县"},{"value":"500240","label":"石柱土家族自治县"},{"value":"500241","label":"秀山土家族苗族自治县"},{"value":"500242","label":"酉阳土家族苗族自治县"},{"value":"500243","label":"彭水苗族土家族自治县"},{"value":"500381","label":"江津区"},{"value":"500382","label":"合川区"},{"value":"500383","label":"永川区"},{"value":"500384","label":"南川区"}]}]},{"label":"四川省","value":"510000","children":[{"value":"510100","label":"成都市","children":[{"value":"510104","label":"锦江区"},{"value":"510105","label":"青羊区"},{"value":"510106","label":"金牛区"},{"value":"510107","label":"武侯区"},{"value":"510108","label":"成华区"},{"value":"510112","label":"龙泉驿区"},{"value":"510113","label":"青白江区"},{"value":"510114","label":"新都区"},{"value":"510115","label":"温江区"},{"value":"510121","label":"金堂县"},{"value":"510122","label":"双流县"},{"value":"510124","label":"郫县"},{"value":"510129","label":"大邑县"},{"value":"510131","label":"蒲江县"},{"value":"510132","label":"新津县"},{"value":"510181","label":"都江堰市"},{"value":"510182","label":"彭州市"},{"value":"510183","label":"邛崃市"},{"value":"510184","label":"崇州市"}]},{"value":"510300","label":"自贡市","children":[{"value":"510302","label":"自流井区"},{"value":"510303","label":"贡井区"},{"value":"510304","label":"大安区"},{"value":"510311","label":"沿滩区"},{"value":"510321","label":"荣县"},{"value":"510322","label":"富顺县"}]},{"value":"510400","label":"攀枝花市","children":[{"value":"510402","label":"东区"},{"value":"510403","label":"西区"},{"value":"510411","label":"仁和区"},{"value":"510421","label":"米易县"},{"value":"510422","label":"盐边县"}]},{"value":"510500","label":"泸州市","children":[{"value":"510502","label":"江阳区"},{"value":"510503","label":"纳溪区"},{"value":"510504","label":"龙马潭区"},{"value":"510521","label":"泸县"},{"value":"510522","label":"合江县"},{"value":"510524","label":"叙永县"},{"value":"510525","label":"古蔺县"}]},{"value":"510600","label":"德阳市","children":[{"value":"510603","label":"旌阳区"},{"value":"510623","label":"中江县"},{"value":"510626","label":"罗江县"},{"value":"510681","label":"广汉市"},{"value":"510682","label":"什邡市"},{"value":"510683","label":"绵竹市"}]},{"value":"510700","label":"绵阳市","children":[{"value":"510703","label":"涪城区"},{"value":"510704","label":"游仙区"},{"value":"510722","label":"三台县"},{"value":"510723","label":"盐亭县"},{"value":"510724","label":"安县"},{"value":"510725","label":"梓潼县"},{"value":"510726","label":"北川羌族自治县"},{"value":"510727","label":"平武县"},{"value":"510751","label":"高新区"},{"value":"510781","label":"江油市"}]},{"value":"510800","label":"广元市","children":[{"value":"510802","label":"利州区"},{"value":"510811","label":"元坝区"},{"value":"510812","label":"朝天区"},{"value":"510821","label":"旺苍县"},{"value":"510822","label":"青川县"},{"value":"510823","label":"剑阁县"},{"value":"510824","label":"苍溪县"}]},{"value":"510900","label":"遂宁市","children":[{"value":"510903","label":"船山区"},{"value":"510904","label":"安居区"},{"value":"510921","label":"蓬溪县"},{"value":"510922","label":"射洪县"},{"value":"510923","label":"大英县"}]},{"value":"511000","label":"内江市","children":[{"value":"511002","label":"市中区"},{"value":"511011","label":"东兴区"},{"value":"511024","label":"威远县"},{"value":"511025","label":"资中县"},{"value":"511028","label":"隆昌县"}]},{"value":"511100","label":"乐山市","children":[{"value":"511102","label":"市中区"},{"value":"511111","label":"沙湾区"},{"value":"511112","label":"五通桥区"},{"value":"511113","label":"金口河区"},{"value":"511123","label":"犍为县"},{"value":"511124","label":"井研县"},{"value":"511126","label":"夹江县"},{"value":"511129","label":"沐川县"},{"value":"511132","label":"峨边彝族自治县"},{"value":"511133","label":"马边彝族自治县"},{"value":"511181","label":"峨眉山市"}]},{"value":"511300","label":"南充市","children":[{"value":"511302","label":"顺庆区"},{"value":"511303","label":"高坪区"},{"value":"511304","label":"嘉陵区"},{"value":"511321","label":"南部县"},{"value":"511322","label":"营山县"},{"value":"511323","label":"蓬安县"},{"value":"511324","label":"仪陇县"},{"value":"511325","label":"西充县"},{"value":"511381","label":"阆中市"}]},{"value":"511400","label":"眉山市","children":[{"value":"511402","label":"东坡区"},{"value":"511421","label":"仁寿县"},{"value":"511422","label":"彭山县"},{"value":"511423","label":"洪雅县"},{"value":"511424","label":"丹棱县"},{"value":"511425","label":"青神县"}]},{"value":"511500","label":"宜宾市","children":[{"value":"511502","label":"翠屏区"},{"value":"511521","label":"宜宾县"},{"value":"511522","label":"南溪县"},{"value":"511523","label":"江安县"},{"value":"511524","label":"长宁县"},{"value":"511525","label":"高县"},{"value":"511526","label":"珙县"},{"value":"511527","label":"筠连县"},{"value":"511528","label":"兴文县"},{"value":"511529","label":"屏山县"}]},{"value":"511600","label":"广安市","children":[{"value":"511602","label":"广安区"},{"value":"511621","label":"岳池县"},{"value":"511622","label":"武胜县"},{"value":"511623","label":"邻水县"},{"value":"511681","label":"华蓥市"},{"value":"511682","label":"市辖区"}]},{"value":"511700","label":"达州市","children":[{"value":"511702","label":"通川区"},{"value":"511721","label":"达县"},{"value":"511722","label":"宣汉县"},{"value":"511723","label":"开江县"},{"value":"511724","label":"大竹县"},{"value":"511725","label":"渠县"},{"value":"511781","label":"万源市"}]},{"value":"511800","label":"雅安市","children":[{"value":"511802","label":"雨城区"},{"value":"511821","label":"名山县"},{"value":"511822","label":"荥经县"},{"value":"511823","label":"汉源县"},{"value":"511824","label":"石棉县"},{"value":"511825","label":"天全县"},{"value":"511826","label":"芦山县"},{"value":"511827","label":"宝兴县"}]},{"value":"511900","label":"巴中市","children":[{"value":"511902","label":"巴州区"},{"value":"511921","label":"通江县"},{"value":"511922","label":"南江县"},{"value":"511923","label":"平昌县"}]},{"value":"512000","label":"资阳市","children":[{"value":"512002","label":"雁江区"},{"value":"512021","label":"安岳县"},{"value":"512022","label":"乐至县"},{"value":"512081","label":"简阳市"}]},{"value":"513200","label":"阿坝藏族羌族自治州","children":[{"value":"513221","label":"汶川县"},{"value":"513222","label":"理县"},{"value":"513223","label":"茂县"},{"value":"513224","label":"松潘县"},{"value":"513225","label":"九寨沟县"},{"value":"513226","label":"金川县"},{"value":"513227","label":"小金县"},{"value":"513228","label":"黑水县"},{"value":"513229","label":"马尔康县"},{"value":"513230","label":"壤塘县"},{"value":"513231","label":"阿坝县"},{"value":"513232","label":"若尔盖县"},{"value":"513233","label":"红原县"}]},{"value":"513300","label":"甘孜藏族自治州","children":[{"value":"513321","label":"康定县"},{"value":"513322","label":"泸定县"},{"value":"513323","label":"丹巴县"},{"value":"513324","label":"九龙县"},{"value":"513325","label":"雅江县"},{"value":"513326","label":"道孚县"},{"value":"513327","label":"炉霍县"},{"value":"513328","label":"甘孜县"},{"value":"513329","label":"新龙县"},{"value":"513330","label":"德格县"},{"value":"513331","label":"白玉县"},{"value":"513332","label":"石渠县"},{"value":"513333","label":"色达县"},{"value":"513334","label":"理塘县"},{"value":"513335","label":"巴塘县"},{"value":"513336","label":"乡城县"},{"value":"513337","label":"稻城县"},{"value":"513338","label":"得荣县"}]},{"value":"513400","label":"凉山彝族自治州","children":[{"value":"513401","label":"西昌市"},{"value":"513422","label":"木里藏族自治县"},{"value":"513423","label":"盐源县"},{"value":"513424","label":"德昌县"},{"value":"513425","label":"会理县"},{"value":"513426","label":"会东县"},{"value":"513427","label":"宁南县"},{"value":"513428","label":"普格县"},{"value":"513429","label":"布拖县"},{"value":"513430","label":"金阳县"},{"value":"513431","label":"昭觉县"},{"value":"513432","label":"喜德县"},{"value":"513433","label":"冕宁县"},{"value":"513434","label":"越西县"},{"value":"513435","label":"甘洛县"},{"value":"513436","label":"美姑县"},{"value":"513437","label":"雷波县"}]}]},{"label":"贵州省","value":"520000","children":[{"value":"520100","label":"贵阳市","children":[{"value":"520102","label":"南明区"},{"value":"520103","label":"云岩区"},{"value":"520111","label":"花溪区"},{"value":"520112","label":"乌当区"},{"value":"520113","label":"白云区"},{"value":"520114","label":"小河区"},{"value":"520121","label":"开阳县"},{"value":"520122","label":"息烽县"},{"value":"520123","label":"修文县"},{"value":"520151","label":"金阳开发区"},{"value":"520181","label":"清镇市"}]},{"value":"520200","label":"六盘水市","children":[{"value":"520201","label":"钟山区"},{"value":"520203","label":"六枝特区"},{"value":"520221","label":"水城县"},{"value":"520222","label":"盘县"}]},{"value":"520300","label":"遵义市","children":[{"value":"520302","label":"红花岗区"},{"value":"520303","label":"汇川区"},{"value":"520321","label":"遵义县"},{"value":"520322","label":"桐梓县"},{"value":"520323","label":"绥阳县"},{"value":"520324","label":"正安县"},{"value":"520325","label":"道真仡佬族苗族自治县"},{"value":"520326","label":"务川仡佬族苗族自治县"},{"value":"520327","label":"凤冈县"},{"value":"520328","label":"湄潭县"},{"value":"520329","label":"余庆县"},{"value":"520330","label":"习水县"},{"value":"520381","label":"赤水市"},{"value":"520382","label":"仁怀市"}]},{"value":"520400","label":"安顺市","children":[{"value":"520402","label":"西秀区"},{"value":"520421","label":"平坝县"},{"value":"520422","label":"普定县"},{"value":"520423","label":"镇宁布依族苗族自治县"},{"value":"520424","label":"关岭布依族苗族自治县"},{"value":"520425","label":"紫云苗族布依族自治县"}]},{"value":"522200","label":"铜仁地区","children":[{"value":"522201","label":"铜仁市"},{"value":"522222","label":"江口县"},{"value":"522223","label":"玉屏侗族自治县"},{"value":"522224","label":"石阡县"},{"value":"522225","label":"思南县"},{"value":"522226","label":"印江土家族苗族自治县"},{"value":"522227","label":"德江县"},{"value":"522228","label":"沿河土家族自治县"},{"value":"522229","label":"松桃苗族自治县"},{"value":"522230","label":"万山特区"}]},{"value":"522300","label":"黔西南布依族苗族自治州","children":[{"value":"522301","label":"兴义市"},{"value":"522322","label":"兴仁县"},{"value":"522323","label":"普安县"},{"value":"522324","label":"晴隆县"},{"value":"522325","label":"贞丰县"},{"value":"522326","label":"望谟县"},{"value":"522327","label":"册亨县"},{"value":"522328","label":"安龙县"}]},{"value":"522400","label":"毕节地区","children":[{"value":"522401","label":"毕节市"},{"value":"522422","label":"大方县"},{"value":"522423","label":"黔西县"},{"value":"522424","label":"金沙县"},{"value":"522425","label":"织金县"},{"value":"522426","label":"纳雍县"},{"value":"522427","label":"威宁彝族回族苗族自治县"},{"value":"522428","label":"赫章县"}]},{"value":"522600","label":"黔东南苗族侗族自治州","children":[{"value":"522601","label":"凯里市"},{"value":"522622","label":"黄平县"},{"value":"522623","label":"施秉县"},{"value":"522624","label":"三穗县"},{"value":"522625","label":"镇远县"},{"value":"522626","label":"岑巩县"},{"value":"522627","label":"天柱县"},{"value":"522628","label":"锦屏县"},{"value":"522629","label":"剑河县"},{"value":"522630","label":"台江县"},{"value":"522631","label":"黎平县"},{"value":"522632","label":"榕江县"},{"value":"522633","label":"从江县"},{"value":"522634","label":"雷山县"},{"value":"522635","label":"麻江县"},{"value":"522636","label":"丹寨县"}]},{"value":"522700","label":"黔南布依族苗族自治州","children":[{"value":"522701","label":"都匀市"},{"value":"522702","label":"福泉市"},{"value":"522722","label":"荔波县"},{"value":"522723","label":"贵定县"},{"value":"522725","label":"瓮安县"},{"value":"522726","label":"独山县"},{"value":"522727","label":"平塘县"},{"value":"522728","label":"罗甸县"},{"value":"522729","label":"长顺县"},{"value":"522730","label":"龙里县"},{"value":"522731","label":"惠水县"},{"value":"522732","label":"三都水族自治县"}]}]},{"label":"云南省","value":"530000","children":[{"value":"530100","label":"昆明市","children":[{"value":"530102","label":"五华区"},{"value":"530103","label":"盘龙区"},{"value":"530111","label":"官渡区"},{"value":"530112","label":"西山区"},{"value":"530113","label":"东川区"},{"value":"530121","label":"呈贡县"},{"value":"530122","label":"晋宁县"},{"value":"530124","label":"富民县"},{"value":"530125","label":"宜良县"},{"value":"530126","label":"石林彝族自治县"},{"value":"530127","label":"嵩明县"},{"value":"530128","label":"禄劝彝族苗族自治县"},{"value":"530129","label":"寻甸回族彝族自治县"},{"value":"530181","label":"安宁市"}]},{"value":"530300","label":"曲靖市","children":[{"value":"530302","label":"麒麟区"},{"value":"530321","label":"马龙县"},{"value":"530322","label":"陆良县"},{"value":"530323","label":"师宗县"},{"value":"530324","label":"罗平县"},{"value":"530325","label":"富源县"},{"value":"530326","label":"会泽县"},{"value":"530328","label":"沾益县"},{"value":"530381","label":"宣威市"}]},{"value":"530400","label":"玉溪市","children":[{"value":"530402","label":"红塔区"},{"value":"530421","label":"江川县"},{"value":"530422","label":"澄江县"},{"value":"530423","label":"通海县"},{"value":"530424","label":"华宁县"},{"value":"530425","label":"易门县"},{"value":"530426","label":"峨山彝族自治县"},{"value":"530427","label":"新平彝族傣族自治县"},{"value":"530428","label":"元江哈尼族彝族傣族自治县"}]},{"value":"530500","label":"保山市","children":[{"value":"530502","label":"隆阳区"},{"value":"530521","label":"施甸县"},{"value":"530522","label":"腾冲县"},{"value":"530523","label":"龙陵县"},{"value":"530524","label":"昌宁县"}]},{"value":"530600","label":"昭通市","children":[{"value":"530602","label":"昭阳区"},{"value":"530621","label":"鲁甸县"},{"value":"530622","label":"巧家县"},{"value":"530623","label":"盐津县"},{"value":"530624","label":"大关县"},{"value":"530625","label":"永善县"},{"value":"530626","label":"绥江县"},{"value":"530627","label":"镇雄县"},{"value":"530628","label":"彝良县"},{"value":"530629","label":"威信县"},{"value":"530630","label":"水富县"}]},{"value":"530700","label":"丽江市","children":[{"value":"530702","label":"古城区"},{"value":"530721","label":"玉龙纳西族自治县"},{"value":"530722","label":"永胜县"},{"value":"530723","label":"华坪县"},{"value":"530724","label":"宁蒗彝族自治县"}]},{"value":"530800","label":"普洱市","children":[{"value":"530802","label":"思茅区"},{"value":"530821","label":"宁洱哈尼族彝族自治县"},{"value":"530822","label":"墨江哈尼族自治县"},{"value":"530823","label":"景东彝族自治县"},{"value":"530824","label":"景谷傣族彝族自治县"},{"value":"530825","label":"镇沅彝族哈尼族拉祜族自治县"},{"value":"530826","label":"江城哈尼族彝族自治县"},{"value":"530827","label":"孟连傣族拉祜族佤族自治县"},{"value":"530828","label":"澜沧拉祜族自治县"},{"value":"530829","label":"西盟佤族自治县"}]},{"value":"530900","label":"临沧市","children":[{"value":"530902","label":"临翔区"},{"value":"530921","label":"凤庆县"},{"value":"530922","label":"云县"},{"value":"530923","label":"永德县"},{"value":"530924","label":"镇康县"},{"value":"530925","label":"双江拉祜族佤族布朗族傣族自治县"},{"value":"530926","label":"耿马傣族佤族自治县"},{"value":"530927","label":"沧源佤族自治县"}]},{"value":"532300","label":"楚雄彝族自治州","children":[{"value":"532301","label":"楚雄市"},{"value":"532322","label":"双柏县"},{"value":"532323","label":"牟定县"},{"value":"532324","label":"南华县"},{"value":"532325","label":"姚安县"},{"value":"532326","label":"大姚县"},{"value":"532327","label":"永仁县"},{"value":"532328","label":"元谋县"},{"value":"532329","label":"武定县"},{"value":"532331","label":"禄丰县"}]},{"value":"532500","label":"红河哈尼族彝族自治州","children":[{"value":"532501","label":"个旧市"},{"value":"532502","label":"开远市"},{"value":"532522","label":"蒙自县"},{"value":"532523","label":"屏边苗族自治县"},{"value":"532524","label":"建水县"},{"value":"532525","label":"石屏县"},{"value":"532526","label":"弥勒县"},{"value":"532527","label":"泸西县"},{"value":"532528","label":"元阳县"},{"value":"532529","label":"红河县"},{"value":"532530","label":"金平苗族瑶族傣族自治县"},{"value":"532531","label":"绿春县"},{"value":"532532","label":"河口瑶族自治县"}]},{"value":"532600","label":"文山壮族苗族自治州","children":[{"value":"532621","label":"文山县"},{"value":"532622","label":"砚山县"},{"value":"532623","label":"西畴县"},{"value":"532624","label":"麻栗坡县"},{"value":"532625","label":"马关县"},{"value":"532626","label":"丘北县"},{"value":"532627","label":"广南县"},{"value":"532628","label":"富宁县"}]},{"value":"532800","label":"西双版纳傣族自治州","children":[{"value":"532801","label":"景洪市"},{"value":"532822","label":"勐海县"},{"value":"532823","label":"勐腊县"}]},{"value":"532900","label":"大理白族自治州","children":[{"value":"532901","label":"大理市"},{"value":"532922","label":"漾濞彝族自治县"},{"value":"532923","label":"祥云县"},{"value":"532924","label":"宾川县"},{"value":"532925","label":"弥渡县"},{"value":"532926","label":"南涧彝族自治县"},{"value":"532927","label":"巍山彝族回族自治县"},{"value":"532928","label":"永平县"},{"value":"532929","label":"云龙县"},{"value":"532930","label":"洱源县"},{"value":"532931","label":"剑川县"},{"value":"532932","label":"鹤庆县"}]},{"value":"533100","label":"德宏傣族景颇族自治州","children":[{"value":"533102","label":"瑞丽市"},{"value":"533103","label":"潞西市"},{"value":"533122","label":"梁河县"},{"value":"533123","label":"盈江县"},{"value":"533124","label":"陇川县"}]},{"value":"533300","label":"怒江傈僳族自治州","children":[{"value":"533321","label":"泸水县"},{"value":"533323","label":"福贡县"},{"value":"533324","label":"贡山独龙族怒族自治县"},{"value":"533325","label":"兰坪白族普米族自治县"}]},{"value":"533400","label":"迪庆藏族自治州","children":[{"value":"533421","label":"香格里拉县"},{"value":"533422","label":"德钦县"},{"value":"533423","label":"维西傈僳族自治县"}]}]},{"label":"西藏自治区","value":"540000","children":[{"value":"540100","label":"拉萨市","children":[{"value":"540102","label":"城关区"},{"value":"540121","label":"林周县"},{"value":"540122","label":"当雄县"},{"value":"540123","label":"尼木县"},{"value":"540124","label":"曲水县"},{"value":"540125","label":"堆龙德庆县"},{"value":"540126","label":"达孜县"},{"value":"540127","label":"墨竹工卡县"}]},{"value":"542100","label":"昌都地区","children":[{"value":"542121","label":"昌都县"},{"value":"542122","label":"江达县"},{"value":"542123","label":"贡觉县"},{"value":"542124","label":"类乌齐县"},{"value":"542125","label":"丁青县"},{"value":"542126","label":"察雅县"},{"value":"542127","label":"八宿县"},{"value":"542128","label":"左贡县"},{"value":"542129","label":"芒康县"},{"value":"542132","label":"洛隆县"},{"value":"542133","label":"边坝县"}]},{"value":"542200","label":"山南地区","children":[{"value":"542221","label":"乃东县"},{"value":"542222","label":"扎囊县"},{"value":"542223","label":"贡嘎县"},{"value":"542224","label":"桑日县"},{"value":"542225","label":"琼结县"},{"value":"542226","label":"曲松县"},{"value":"542227","label":"措美县"},{"value":"542228","label":"洛扎县"},{"value":"542229","label":"加查县"},{"value":"542231","label":"隆子县"},{"value":"542232","label":"错那县"},{"value":"542233","label":"浪卡子县"}]},{"value":"542300","label":"日喀则地区","children":[{"value":"542301","label":"日喀则市"},{"value":"542322","label":"南木林县"},{"value":"542323","label":"江孜县"},{"value":"542324","label":"定日县"},{"value":"542325","label":"萨迦县"},{"value":"542326","label":"拉孜县"},{"value":"542327","label":"昂仁县"},{"value":"542328","label":"谢通门县"},{"value":"542329","label":"白朗县"},{"value":"542330","label":"仁布县"},{"value":"542331","label":"康马县"},{"value":"542332","label":"定结县"},{"value":"542333","label":"仲巴县"},{"value":"542334","label":"亚东县"},{"value":"542335","label":"吉隆县"},{"value":"542336","label":"聂拉木县"},{"value":"542337","label":"萨嘎县"},{"value":"542338","label":"岗巴县"}]},{"value":"542400","label":"那曲地区","children":[{"value":"542421","label":"那曲县"},{"value":"542422","label":"嘉黎县"},{"value":"542423","label":"比如县"},{"value":"542424","label":"聂荣县"},{"value":"542425","label":"安多县"},{"value":"542426","label":"申扎县"},{"value":"542427","label":"索县"},{"value":"542428","label":"班戈县"},{"value":"542429","label":"巴青县"},{"value":"542430","label":"尼玛县"}]},{"value":"542500","label":"阿里地区","children":[{"value":"542521","label":"普兰县"},{"value":"542522","label":"札达县"},{"value":"542523","label":"噶尔县"},{"value":"542524","label":"日土县"},{"value":"542525","label":"革吉县"},{"value":"542526","label":"改则县"},{"value":"542527","label":"措勤县"}]},{"value":"542600","label":"林芝地区","children":[{"value":"542621","label":"林芝县"},{"value":"542622","label":"工布江达县"},{"value":"542623","label":"米林县"},{"value":"542624","label":"墨脱县"},{"value":"542625","label":"波密县"},{"value":"542626","label":"察隅县"},{"value":"542627","label":"朗县"}]}]},{"label":"陕西省","value":"610000","children":[{"value":"610100","label":"西安市","children":[{"value":"610102","label":"新城区"},{"value":"610103","label":"碑林区"},{"value":"610104","label":"莲湖区"},{"value":"610111","label":"灞桥区"},{"value":"610112","label":"未央区"},{"value":"610113","label":"雁塔区"},{"value":"610114","label":"阎良区"},{"value":"610115","label":"临潼区"},{"value":"610116","label":"长安区"},{"value":"610122","label":"蓝田县"},{"value":"610124","label":"周至县"},{"value":"610125","label":"户县"},{"value":"610126","label":"高陵县"}]},{"value":"610200","label":"铜川市","children":[{"value":"610202","label":"王益区"},{"value":"610203","label":"印台区"},{"value":"610204","label":"耀州区"},{"value":"610222","label":"宜君县"}]},{"value":"610300","label":"宝鸡市","children":[{"value":"610302","label":"渭滨区"},{"value":"610303","label":"金台区"},{"value":"610304","label":"陈仓区"},{"value":"610322","label":"凤翔县"},{"value":"610323","label":"岐山县"},{"value":"610324","label":"扶风县"},{"value":"610326","label":"眉县"},{"value":"610327","label":"陇县"},{"value":"610328","label":"千阳县"},{"value":"610329","label":"麟游县"},{"value":"610330","label":"凤县"},{"value":"610331","label":"太白县"}]},{"value":"610400","label":"咸阳市","children":[{"value":"610402","label":"秦都区"},{"value":"610403","label":"杨陵区"},{"value":"610404","label":"渭城区"},{"value":"610422","label":"三原县"},{"value":"610423","label":"泾阳县"},{"value":"610424","label":"乾县"},{"value":"610425","label":"礼泉县"},{"value":"610426","label":"永寿县"},{"value":"610427","label":"彬县"},{"value":"610428","label":"长武县"},{"value":"610429","label":"旬邑县"},{"value":"610430","label":"淳化县"},{"value":"610431","label":"武功县"},{"value":"610481","label":"兴平市"}]},{"value":"610500","label":"渭南市","children":[{"value":"610502","label":"临渭区"},{"value":"610521","label":"华县"},{"value":"610522","label":"潼关县"},{"value":"610523","label":"大荔县"},{"value":"610524","label":"合阳县"},{"value":"610525","label":"澄城县"},{"value":"610526","label":"蒲城县"},{"value":"610527","label":"白水县"},{"value":"610528","label":"富平县"},{"value":"610581","label":"韩城市"},{"value":"610582","label":"华阴市"}]},{"value":"610600","label":"延安市","children":[{"value":"610602","label":"宝塔区"},{"value":"610621","label":"延长县"},{"value":"610622","label":"延川县"},{"value":"610623","label":"子长县"},{"value":"610624","label":"安塞县"},{"value":"610625","label":"志丹县"},{"value":"610626","label":"吴起县"},{"value":"610627","label":"甘泉县"},{"value":"610628","label":"富县"},{"value":"610629","label":"洛川县"},{"value":"610630","label":"宜川县"},{"value":"610631","label":"黄龙县"},{"value":"610632","label":"黄陵县"}]},{"value":"610700","label":"汉中市","children":[{"value":"610702","label":"汉台区"},{"value":"610721","label":"南郑县"},{"value":"610722","label":"城固县"},{"value":"610723","label":"洋县"},{"value":"610724","label":"西乡县"},{"value":"610725","label":"勉县"},{"value":"610726","label":"宁强县"},{"value":"610727","label":"略阳县"},{"value":"610728","label":"镇巴县"},{"value":"610729","label":"留坝县"},{"value":"610730","label":"佛坪县"}]},{"value":"610800","label":"榆林市","children":[{"value":"610802","label":"榆阳区"},{"value":"610821","label":"神木县"},{"value":"610822","label":"府谷县"},{"value":"610823","label":"横山县"},{"value":"610824","label":"靖边县"},{"value":"610825","label":"定边县"},{"value":"610826","label":"绥德县"},{"value":"610827","label":"米脂县"},{"value":"610828","label":"佳县"},{"value":"610829","label":"吴堡县"},{"value":"610830","label":"清涧县"},{"value":"610831","label":"子洲县"}]},{"value":"610900","label":"安康市","children":[{"value":"610902","label":"汉滨区"},{"value":"610921","label":"汉阴县"},{"value":"610922","label":"石泉县"},{"value":"610923","label":"宁陕县"},{"value":"610924","label":"紫阳县"},{"value":"610925","label":"岚皋县"},{"value":"610926","label":"平利县"},{"value":"610927","label":"镇坪县"},{"value":"610928","label":"旬阳县"},{"value":"610929","label":"白河县"}]},{"value":"611000","label":"商洛市","children":[{"value":"611002","label":"商州区"},{"value":"611021","label":"洛南县"},{"value":"611022","label":"丹凤县"},{"value":"611023","label":"商南县"},{"value":"611024","label":"山阳县"},{"value":"611025","label":"镇安县"},{"value":"611026","label":"柞水县"}]}]},{"label":"甘肃省","value":"620000","children":[{"value":"620100","label":"兰州市","children":[{"value":"620102","label":"城关区"},{"value":"620103","label":"七里河区"},{"value":"620104","label":"西固区"},{"value":"620105","label":"安宁区"},{"value":"620111","label":"红古区"},{"value":"620121","label":"永登县"},{"value":"620122","label":"皋兰县"},{"value":"620123","label":"榆中县"}]},{"value":"620200","label":"嘉峪关市"},{"value":"620300","label":"金昌市","children":[{"value":"620302","label":"金川区"},{"value":"620321","label":"永昌县"}]},{"value":"620400","label":"白银市","children":[{"value":"620402","label":"白银区"},{"value":"620403","label":"平川区"},{"value":"620421","label":"靖远县"},{"value":"620422","label":"会宁县"},{"value":"620423","label":"景泰县"}]},{"value":"620500","label":"天水市","children":[{"value":"620502","label":"秦州区"},{"value":"620503","label":"麦积区"},{"value":"620521","label":"清水县"},{"value":"620522","label":"秦安县"},{"value":"620523","label":"甘谷县"},{"value":"620524","label":"武山县"},{"value":"620525","label":"张家川回族自治县"}]},{"value":"620600","label":"武威市","children":[{"value":"620602","label":"凉州区"},{"value":"620621","label":"民勤县"},{"value":"620622","label":"古浪县"},{"value":"620623","label":"天祝藏族自治县"}]},{"value":"620700","label":"张掖市","children":[{"value":"620702","label":"甘州区"},{"value":"620721","label":"肃南裕固族自治县"},{"value":"620722","label":"民乐县"},{"value":"620723","label":"临泽县"},{"value":"620724","label":"高台县"},{"value":"620725","label":"山丹县"}]},{"value":"620800","label":"平凉市","children":[{"value":"620802","label":"崆峒区"},{"value":"620821","label":"泾川县"},{"value":"620822","label":"灵台县"},{"value":"620823","label":"崇信县"},{"value":"620824","label":"华亭县"},{"value":"620825","label":"庄浪县"},{"value":"620826","label":"静宁县"}]},{"value":"620900","label":"酒泉市","children":[{"value":"620902","label":"肃州区"},{"value":"620921","label":"金塔县"},{"value":"620922","label":"安西县"},{"value":"620923","label":"肃北蒙古族自治县"},{"value":"620924","label":"阿克塞哈萨克族自治县"},{"value":"620981","label":"玉门市"},{"value":"620982","label":"敦煌市"}]},{"value":"621000","label":"庆阳市","children":[{"value":"621002","label":"西峰区"},{"value":"621021","label":"庆城县"},{"value":"621022","label":"环县"},{"value":"621023","label":"华池县"},{"value":"621024","label":"合水县"},{"value":"621025","label":"正宁县"},{"value":"621026","label":"宁县"},{"value":"621027","label":"镇原县"}]},{"value":"621100","label":"定西市","children":[{"value":"621102","label":"安定区"},{"value":"621121","label":"通渭县"},{"value":"621122","label":"陇西县"},{"value":"621123","label":"渭源县"},{"value":"621124","label":"临洮县"},{"value":"621125","label":"漳县"},{"value":"621126","label":"岷县"}]},{"value":"621200","label":"陇南市","children":[{"value":"621202","label":"武都区"},{"value":"621221","label":"成县"},{"value":"621222","label":"文县"},{"value":"621223","label":"宕昌县"},{"value":"621224","label":"康县"},{"value":"621225","label":"西和县"},{"value":"621226","label":"礼县"},{"value":"621227","label":"徽县"},{"value":"621228","label":"两当县"}]},{"value":"622900","label":"临夏回族自治州","children":[{"value":"622901","label":"临夏市"},{"value":"622921","label":"临夏县"},{"value":"622922","label":"康乐县"},{"value":"622923","label":"永靖县"},{"value":"622924","label":"广河县"},{"value":"622925","label":"和政县"},{"value":"622926","label":"东乡族自治县"},{"value":"622927","label":"积石山保安族东乡族撒拉族自治县"}]},{"value":"623000","label":"甘南藏族自治州","children":[{"value":"623001","label":"合作市"},{"value":"623021","label":"临潭县"},{"value":"623022","label":"卓尼县"},{"value":"623023","label":"舟曲县"},{"value":"623024","label":"迭部县"},{"value":"623025","label":"玛曲县"},{"value":"623026","label":"碌曲县"},{"value":"623027","label":"夏河县"}]}]},{"label":"青海省","value":"630000","children":[{"value":"630100","label":"西宁市","children":[{"value":"630102","label":"城东区"},{"value":"630103","label":"城中区"},{"value":"630104","label":"城西区"},{"value":"630105","label":"城北区"},{"value":"630121","label":"大通回族土族自治县"},{"value":"630122","label":"湟中县"},{"value":"630123","label":"湟源县"}]},{"value":"632100","label":"海东地区","children":[{"value":"632121","label":"平安县"},{"value":"632122","label":"民和回族土族自治县"},{"value":"632123","label":"乐都县"},{"value":"632126","label":"互助土族自治县"},{"value":"632127","label":"化隆回族自治县"},{"value":"632128","label":"循化撒拉族自治县"}]},{"value":"632200","label":"海北藏族自治州","children":[{"value":"632221","label":"门源回族自治县"},{"value":"632222","label":"祁连县"},{"value":"632223","label":"海晏县"},{"value":"632224","label":"刚察县"}]},{"value":"632300","label":"黄南藏族自治州","children":[{"value":"632321","label":"同仁县"},{"value":"632322","label":"尖扎县"},{"value":"632323","label":"泽库县"},{"value":"632324","label":"河南蒙古族自治县"}]},{"value":"632500","label":"海南藏族自治州","children":[{"value":"632521","label":"共和县"},{"value":"632522","label":"同德县"},{"value":"632523","label":"贵德县"},{"value":"632524","label":"兴海县"},{"value":"632525","label":"贵南县"}]},{"value":"632600","label":"果洛藏族自治州","children":[{"value":"632621","label":"玛沁县"},{"value":"632622","label":"班玛县"},{"value":"632623","label":"甘德县"},{"value":"632624","label":"达日县"},{"value":"632625","label":"久治县"},{"value":"632626","label":"玛多县"}]},{"value":"632700","label":"玉树藏族自治州","children":[{"value":"632721","label":"玉树县"},{"value":"632722","label":"杂多县"},{"value":"632723","label":"称多县"},{"value":"632724","label":"治多县"},{"value":"632725","label":"囊谦县"},{"value":"632726","label":"曲麻莱县"}]},{"value":"632800","label":"海西蒙古族藏族自治州","children":[{"value":"632801","label":"格尔木市"},{"value":"632802","label":"德令哈市"},{"value":"632821","label":"乌兰县"},{"value":"632822","label":"都兰县"},{"value":"632823","label":"天峻县"}]}]},{"label":"宁夏回族自治区","value":"640000","children":[{"value":"640100","label":"银川市","children":[{"value":"640104","label":"兴庆区"},{"value":"640105","label":"西夏区"},{"value":"640106","label":"金凤区"},{"value":"640121","label":"永宁县"},{"value":"640122","label":"贺兰县"},{"value":"640181","label":"灵武市"}]},{"value":"640200","label":"石嘴山市","children":[{"value":"640202","label":"大武口区"},{"value":"640205","label":"惠农区"},{"value":"640221","label":"平罗县"}]},{"value":"640300","label":"吴忠市","children":[{"value":"640302","label":"利通区"},{"value":"640303","label":"红寺堡区"},{"value":"640323","label":"盐池县"},{"value":"640324","label":"同心县"},{"value":"640381","label":"青铜峡市"}]},{"value":"640400","label":"固原市","children":[{"value":"640402","label":"原州区"},{"value":"640422","label":"西吉县"},{"value":"640423","label":"隆德县"},{"value":"640424","label":"泾源县"},{"value":"640425","label":"彭阳县"}]},{"value":"640500","label":"中卫市","children":[{"value":"640502","label":"沙坡头区"},{"value":"640521","label":"中宁县"},{"value":"640522","label":"海原县"}]}]},{"label":"新疆维吾尔自治区","value":"650000","children":[{"value":"650100","label":"乌鲁木齐市","children":[{"value":"650102","label":"天山区"},{"value":"650103","label":"沙依巴克区"},{"value":"650104","label":"新市区"},{"value":"650105","label":"水磨沟区"},{"value":"650106","label":"头屯河区"},{"value":"650107","label":"达坂城区"},{"value":"650108","label":"东山区"},{"value":"650109","label":"米东区"},{"value":"650121","label":"乌鲁木齐县"}]},{"value":"650200","label":"克拉玛依市","children":[{"value":"650202","label":"独山子区"},{"value":"650203","label":"克拉玛依区"},{"value":"650204","label":"白碱滩区"},{"value":"650205","label":"乌尔禾区"}]},{"value":"652100","label":"吐鲁番地区","children":[{"value":"652101","label":"吐鲁番市"},{"value":"652122","label":"鄯善县"},{"value":"652123","label":"托克逊县"}]},{"value":"652200","label":"哈密地区","children":[{"value":"652201","label":"哈密市"},{"value":"652222","label":"巴里坤哈萨克自治县"},{"value":"652223","label":"伊吾县"}]},{"value":"652300","label":"昌吉回族自治州","children":[{"value":"652301","label":"昌吉市"},{"value":"652302","label":"阜康市"},{"value":"652303","label":"米泉市"},{"value":"652323","label":"呼图壁县"},{"value":"652324","label":"玛纳斯县"},{"value":"652325","label":"奇台县"},{"value":"652327","label":"吉木萨尔县"},{"value":"652328","label":"木垒哈萨克自治县"}]},{"value":"652700","label":"博尔塔拉蒙古自治州","children":[{"value":"652701","label":"博乐市"},{"value":"652722","label":"精河县"},{"value":"652723","label":"温泉县"}]},{"value":"652800","label":"巴音郭楞蒙古自治州","children":[{"value":"652801","label":"库尔勒市"},{"value":"652822","label":"轮台县"},{"value":"652823","label":"尉犁县"},{"value":"652824","label":"若羌县"},{"value":"652825","label":"且末县"},{"value":"652826","label":"焉耆回族自治县"},{"value":"652827","label":"和静县"},{"value":"652828","label":"和硕县"},{"value":"652829","label":"博湖县"}]},{"value":"652900","label":"阿克苏地区","children":[{"value":"652901","label":"阿克苏市"},{"value":"652922","label":"温宿县"},{"value":"652923","label":"库车县"},{"value":"652924","label":"沙雅县"},{"value":"652925","label":"新和县"},{"value":"652926","label":"拜城县"},{"value":"652927","label":"乌什县"},{"value":"652928","label":"阿瓦提县"},{"value":"652929","label":"柯坪县"}]},{"value":"653000","label":"克孜勒苏柯尔克孜自治州","children":[{"value":"653001","label":"阿图什市"},{"value":"653022","label":"阿克陶县"},{"value":"653023","label":"阿合奇县"},{"value":"653024","label":"乌恰县"}]},{"value":"653100","label":"喀什地区","children":[{"value":"653101","label":"喀什市"},{"value":"653121","label":"疏附县"},{"value":"653122","label":"疏勒县"},{"value":"653123","label":"英吉沙县"},{"value":"653124","label":"泽普县"},{"value":"653125","label":"莎车县"},{"value":"653126","label":"叶城县"},{"value":"653127","label":"麦盖提县"},{"value":"653128","label":"岳普湖县"},{"value":"653129","label":"伽师县"},{"value":"653130","label":"巴楚县"},{"value":"653131","label":"塔什库尔干塔吉克自治县"}]},{"value":"653200","label":"和田地区","children":[{"value":"653201","label":"和田市"},{"value":"653221","label":"和田县"},{"value":"653222","label":"墨玉县"},{"value":"653223","label":"皮山县"},{"value":"653224","label":"洛浦县"},{"value":"653225","label":"策勒县"},{"value":"653226","label":"于田县"},{"value":"653227","label":"民丰县"}]},{"value":"654000","label":"伊犁哈萨克自治州","children":[{"value":"654002","label":"伊宁市"},{"value":"654003","label":"奎屯市"},{"value":"654021","label":"伊宁县"},{"value":"654022","label":"察布查尔锡伯自治县"},{"value":"654023","label":"霍城县"},{"value":"654024","label":"巩留县"},{"value":"654025","label":"新源县"},{"value":"654026","label":"昭苏县"},{"value":"654027","label":"特克斯县"},{"value":"654028","label":"尼勒克县"}]},{"value":"654200","label":"塔城地区","children":[{"value":"654201","label":"塔城市"},{"value":"654202","label":"乌苏市"},{"value":"654221","label":"额敏县"},{"value":"654223","label":"沙湾县"},{"value":"654224","label":"托里县"},{"value":"654225","label":"裕民县"},{"value":"654226","label":"和布克赛尔蒙古自治县"}]},{"value":"654300","label":"阿勒泰地区","children":[{"value":"654301","label":"阿勒泰市"},{"value":"654321","label":"布尔津县"},{"value":"654322","label":"富蕴县"},{"value":"654323","label":"福海县"},{"value":"654324","label":"哈巴河县"},{"value":"654325","label":"青河县"},{"value":"654326","label":"吉木乃县"}]},{"value":"659001","label":"石河子市"},{"value":"659002","label":"阿拉尔市"},{"value":"659003","label":"图木舒克市"},{"value":"659004","label":"五家渠市"}]},{"label":"台湾省","value":"710000","children":[{"value":"710100","label":"台北市","children":[{"value":"710101","label":"中正区"},{"value":"710102","label":"大同区"},{"value":"710103","label":"中山区"},{"value":"710104","label":"松山区"},{"value":"710105","label":"大安区"},{"value":"710106","label":"万华区"},{"value":"710107","label":"信义区"},{"value":"710108","label":"士林区"},{"value":"710109","label":"北投区"},{"value":"710110","label":"内湖区"},{"value":"710111","label":"南港区"},{"value":"710112","label":"文山区"}]},{"value":"710200","label":"高雄市","children":[{"value":"710201","label":"新兴区"},{"value":"710202","label":"前金区"},{"value":"710203","label":"芩雅区"},{"value":"710204","label":"盐埕区"},{"value":"710205","label":"鼓山区"},{"value":"710206","label":"旗津区"},{"value":"710207","label":"前镇区"},{"value":"710208","label":"三民区"},{"value":"710209","label":"左营区"},{"value":"710210","label":"楠梓区"},{"value":"710211","label":"小港区"}]},{"value":"710300","label":"台南市","children":[{"value":"710301","label":"中西区"},{"value":"710302","label":"东区"},{"value":"710303","label":"南区"},{"value":"710304","label":"北区"},{"value":"710305","label":"安平区"},{"value":"710306","label":"安南区"}]},{"value":"710400","label":"台中市","children":[{"value":"710401","label":"中区"},{"value":"710402","label":"东区"},{"value":"710403","label":"南区"},{"value":"710404","label":"西区"},{"value":"710405","label":"北区"},{"value":"710406","label":"北屯区"},{"value":"710407","label":"西屯区"},{"value":"710408","label":"南屯区"}]},{"value":"710500","label":"金门县"},{"value":"710600","label":"南投县"},{"value":"710700","label":"基隆市","children":[{"value":"710701","label":"仁爱区"},{"value":"710702","label":"信义区"},{"value":"710703","label":"中正区"},{"value":"710704","label":"中山区"},{"value":"710705","label":"安乐区"},{"value":"710706","label":"暖暖区"},{"value":"710707","label":"七堵区"}]},{"value":"710800","label":"新竹市","children":[{"value":"710801","label":"东区"},{"value":"710802","label":"北区"},{"value":"710803","label":"香山区"}]},{"value":"710900","label":"嘉义市","children":[{"value":"710901","label":"东区"},{"value":"710902","label":"西区"}]},{"value":"711100","label":"新北市"},{"value":"711200","label":"宜兰县"},{"value":"711300","label":"新竹县"},{"value":"711400","label":"桃园县"},{"value":"711500","label":"苗栗县"},{"value":"711700","label":"彰化县"},{"value":"711900","label":"嘉义县"},{"value":"712100","label":"云林县"},{"value":"712400","label":"屏东县"},{"value":"712500","label":"台东县"},{"value":"712600","label":"花莲县"},{"value":"712700","label":"澎湖县"}]},{"label":"香港特别行政区","value":"810000","children":[{"value":"810100","label":"香港岛","children":[{"value":"810101","label":"中西区"},{"value":"810102","label":"湾仔"},{"value":"810103","label":"东区"},{"value":"810104","label":"南区"}]},{"value":"810200","label":"九龙","children":[{"value":"810201","label":"九龙城区"},{"value":"810202","label":"油尖旺区"},{"value":"810203","label":"深水埗区"},{"value":"810204","label":"黄大仙区"},{"value":"810205","label":"观塘区"}]},{"value":"810300","label":"新界","children":[{"value":"810301","label":"北区"},{"value":"810302","label":"大埔区"},{"value":"810303","label":"沙田区"},{"value":"810304","label":"西贡区"},{"value":"810305","label":"元朗区"},{"value":"810306","label":"屯门区"},{"value":"810307","label":"荃湾区"},{"value":"810308","label":"葵青区"},{"value":"810309","label":"离岛区"}]}]},{"label":"澳门特别行政区","value":"820000","children":[{"value":"820100","label":"澳门半岛"},{"value":"820200","label":"离岛"}]},{"label":"海外","value":"990000","children":[{"value":"990100","label":"海外"}]}] diff --git a/public/logo.png b/public/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/logo.svg b/public/logo.svg new file mode 100644 index 0000000..42ce183 --- /dev/null +++ b/public/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file 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..ecd79d7 --- /dev/null +++ b/src/api/bszx/bszxOrder/index.ts @@ -0,0 +1,20 @@ +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)); +} 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..1a7f1c1 --- /dev/null +++ b/src/api/cms/cmsAd/model/index.ts @@ -0,0 +1,63 @@ +import type { PageParam } from '@/api'; + +/** + * 广告位 + */ +export interface CmsAd { + // ID + adId?: number; + // 类型 + type?: number; + // 栏目分类 + 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..f8feab8 --- /dev/null +++ b/src/api/cms/cmsArticle/index.ts @@ -0,0 +1,147 @@ +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)); +} + +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..6980048 --- /dev/null +++ b/src/api/cms/cmsArticle/model/index.ts @@ -0,0 +1,129 @@ +import type { PageParam } from '@/api'; + +/** + * 文章 + */ +export interface CmsArticle { + // 文章ID + articleId?: number; + // 文章标题 + title?: string; + // 文章类型 0常规 1视频 + type?: number; + // 文章模型 + model?: 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/cmsComponents/index.ts b/src/api/cms/cmsComponents/index.ts new file mode 100644 index 0000000..16e8878 --- /dev/null +++ b/src/api/cms/cmsComponents/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsComponents, CmsComponentsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询组件 + */ +export async function pageCmsComponents(params: CmsComponentsParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-components/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询组件列表 + */ +export async function listCmsComponents(params?: CmsComponentsParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-components', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加组件 + */ +export async function addCmsComponents(data: CmsComponents) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-components', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改组件 + */ +export async function updateCmsComponents(data: CmsComponents) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-components', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除组件 + */ +export async function removeCmsComponents(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-components/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除组件 + */ +export async function removeBatchCmsComponents(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-components/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询组件 + */ +export async function getCmsComponents(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-components/' + 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/cmsComponents/model/index.ts b/src/api/cms/cmsComponents/model/index.ts new file mode 100644 index 0000000..f3fc8f5 --- /dev/null +++ b/src/api/cms/cmsComponents/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 组件 + */ +export interface CmsComponents { + // ID + id?: number; + // 组件标题 + title?: string; + // 关联导航ID + navigationId?: number; + // 组件类型 + type?: string; + // 页面关键词 + keywords?: string; + // 页面描述 + description?: string; + // 组件路径 + path?: string; + // 组件图标 + icon?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 组件搜索条件 + */ +export interface CmsComponentsParam 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..6c76236 --- /dev/null +++ b/src/api/cms/cmsDesign/model/index.ts @@ -0,0 +1,63 @@ +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; +} + +/** + * 页面管理记录表搜索条件 + */ +export interface CmsDesignParam extends PageParam { + pageId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDesignCollect/index.ts b/src/api/cms/cmsDesignCollect/index.ts new file mode 100644 index 0000000..b061615 --- /dev/null +++ b/src/api/cms/cmsDesignCollect/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDesignCollect, CmsDesignCollectParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询设计征集 + */ +export async function pageCmsDesignCollect(params: CmsDesignCollectParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-design-collect/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设计征集列表 + */ +export async function listCmsDesignCollect(params?: CmsDesignCollectParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design-collect', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设计征集 + */ +export async function addCmsDesignCollect(data: CmsDesignCollect) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-design-collect', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设计征集 + */ +export async function updateCmsDesignCollect(data: CmsDesignCollect) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-design-collect', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设计征集 + */ +export async function removeCmsDesignCollect(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design-collect/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设计征集 + */ +export async function removeBatchCmsDesignCollect(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design-collect/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询设计征集 + */ +export async function getCmsDesignCollect(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design-collect/' + 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/cmsDesignCollect/model/index.ts b/src/api/cms/cmsDesignCollect/model/index.ts new file mode 100644 index 0000000..f9a3040 --- /dev/null +++ b/src/api/cms/cmsDesignCollect/model/index.ts @@ -0,0 +1,39 @@ +import type { PageParam } from '@/api'; + +/** + * 设计征集 + */ +export interface CmsDesignCollect { + // + id?: number; + // + title?: string; + // + content?: string; + // + image?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 设计征集搜索条件 + */ +export interface CmsDesignCollectParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDesignRecord/index.ts b/src/api/cms/cmsDesignRecord/index.ts new file mode 100644 index 0000000..0167de1 --- /dev/null +++ b/src/api/cms/cmsDesignRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDesignRecord, CmsDesignRecordParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询页面组件表 + */ +export async function pageCmsDesignRecord(params: CmsDesignRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-design-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询页面组件表列表 + */ +export async function listCmsDesignRecord(params?: CmsDesignRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design-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 addCmsDesignRecord(data: CmsDesignRecord) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-design-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改页面组件表 + */ +export async function updateCmsDesignRecord(data: CmsDesignRecord) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-design-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除页面组件表 + */ +export async function removeCmsDesignRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除页面组件表 + */ +export async function removeBatchCmsDesignRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询页面组件表 + */ +export async function getCmsDesignRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design-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/cmsDesignRecord/model/index.ts b/src/api/cms/cmsDesignRecord/model/index.ts new file mode 100644 index 0000000..0c6e809 --- /dev/null +++ b/src/api/cms/cmsDesignRecord/model/index.ts @@ -0,0 +1,51 @@ +import type { PageParam } from '@/api'; + +/** + * 页面组件表 + */ +export interface CmsDesignRecord { + // ID + id?: number; + // 关联导航ID + navigationId?: number; + parentId?: number; + pageId?: number; + // 组件 + title?: string; + // 组件标识 + dictCode?: string; + // 组件样式 + styles?: string; + // 卡片阴影显示时机 + shadow?: string; + // 页面关键词 + keywords?: string; + // 页面描述 + description?: string; + // 页面路由地址 + path?: string; + // 缩列图 + photo?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 所属期次 + periodId?: number; +} + +/** + * 页面组件表搜索条件 + */ +export interface CmsDesignRecordParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDesignSignUp/index.ts b/src/api/cms/cmsDesignSignUp/index.ts new file mode 100644 index 0000000..eda4b4a --- /dev/null +++ b/src/api/cms/cmsDesignSignUp/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDesignSignUp, CmsDesignSignUpParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询设计征集报名 + */ +export async function pageCmsDesignSignUp(params: CmsDesignSignUpParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-design-sign-up/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询设计征集报名列表 + */ +export async function listCmsDesignSignUp(params?: CmsDesignSignUpParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design-sign-up', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加设计征集报名 + */ +export async function addCmsDesignSignUp(data: CmsDesignSignUp) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-design-sign-up', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改设计征集报名 + */ +export async function updateCmsDesignSignUp(data: CmsDesignSignUp) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-design-sign-up', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除设计征集报名 + */ +export async function removeCmsDesignSignUp(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design-sign-up/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除设计征集报名 + */ +export async function removeBatchCmsDesignSignUp(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-design-sign-up/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询设计征集报名 + */ +export async function getCmsDesignSignUp(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-design-sign-up/' + 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/cmsDesignSignUp/model/index.ts b/src/api/cms/cmsDesignSignUp/model/index.ts new file mode 100644 index 0000000..5d78177 --- /dev/null +++ b/src/api/cms/cmsDesignSignUp/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 设计征集报名 + */ +export interface CmsDesignSignUp { + // + id?: number; + // + designId?: number; + // + name?: string; + // + phone?: string; + // + content?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 设计征集报名搜索条件 + */ +export interface CmsDesignSignUpParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDocs/index.ts b/src/api/cms/cmsDocs/index.ts new file mode 100644 index 0000000..443bd39 --- /dev/null +++ b/src/api/cms/cmsDocs/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDocs, CmsDocsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文档管理记录表 + */ +export async function pageCmsDocs(params: CmsDocsParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-docs/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文档管理记录表列表 + */ +export async function listCmsDocs(params?: CmsDocsParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-docs', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加文档管理记录表 + */ +export async function addCmsDocs(data: CmsDocs) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-docs', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文档管理记录表 + */ +export async function updateCmsDocs(data: CmsDocs) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-docs', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文档管理记录表 + */ +export async function removeCmsDocs(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-docs/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文档管理记录表 + */ +export async function removeBatchCmsDocs(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-docs/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文档管理记录表 + */ +export async function getCmsDocs(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-docs/' + 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/cmsDocs/model/index.ts b/src/api/cms/cmsDocs/model/index.ts new file mode 100644 index 0000000..1c8c78d --- /dev/null +++ b/src/api/cms/cmsDocs/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 文档管理记录表 + */ +export interface CmsDocs { + // 文档ID + docsId?: number; + // 文档标题 + title?: string; + // 上级目录 + parentId?: number; + // 书籍ID + bookId?: number; + // 可见性(public,private,protected) + visibility?: string; + // 虚拟阅读量(仅用作展示) + virtualViews?: number; + // 实际阅读量 + actualViews?: number; + // 用户ID + userId?: number; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 文档管理记录表搜索条件 + */ +export interface CmsDocsParam extends PageParam { + docsId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDocsBook/index.ts b/src/api/cms/cmsDocsBook/index.ts new file mode 100644 index 0000000..dae9d2d --- /dev/null +++ b/src/api/cms/cmsDocsBook/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDocsBook, CmsDocsBookParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询书籍记录表 + */ +export async function pageCmsDocsBook(params: CmsDocsBookParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-docs-book/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询书籍记录表列表 + */ +export async function listCmsDocsBook(params?: CmsDocsBookParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-docs-book', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加书籍记录表 + */ +export async function addCmsDocsBook(data: CmsDocsBook) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-docs-book', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改书籍记录表 + */ +export async function updateCmsDocsBook(data: CmsDocsBook) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-docs-book', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除书籍记录表 + */ +export async function removeCmsDocsBook(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-docs-book/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除书籍记录表 + */ +export async function removeBatchCmsDocsBook(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-docs-book/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询书籍记录表 + */ +export async function getCmsDocsBook(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-docs-book/' + 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/cmsDocsBook/model/index.ts b/src/api/cms/cmsDocsBook/model/index.ts new file mode 100644 index 0000000..5e02d44 --- /dev/null +++ b/src/api/cms/cmsDocsBook/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 书籍记录表 + */ +export interface CmsDocsBook { + // ID + bookId?: number; + // 书籍名称 + name?: string; + // 书籍标识 + code?: string; + // 封面图 + photo?: string; + // 备注 + comments?: string; + // 文档内容 + content?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 书籍记录表搜索条件 + */ +export interface CmsDocsBookParam extends PageParam { + bookId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsDocsContent/index.ts b/src/api/cms/cmsDocsContent/index.ts new file mode 100644 index 0000000..e6341c7 --- /dev/null +++ b/src/api/cms/cmsDocsContent/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsDocsContent, CmsDocsContentParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询文档内容记录表 + */ +export async function pageCmsDocsContent(params: CmsDocsContentParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-docs-content/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询文档内容记录表列表 + */ +export async function listCmsDocsContent(params?: CmsDocsContentParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-docs-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 addCmsDocsContent(data: CmsDocsContent) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-docs-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改文档内容记录表 + */ +export async function updateCmsDocsContent(data: CmsDocsContent) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-docs-content', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除文档内容记录表 + */ +export async function removeCmsDocsContent(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-docs-content/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除文档内容记录表 + */ +export async function removeBatchCmsDocsContent(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-docs-content/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询文档内容记录表 + */ +export async function getCmsDocsContent(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-docs-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/cmsDocsContent/model/index.ts b/src/api/cms/cmsDocsContent/model/index.ts new file mode 100644 index 0000000..dc06432 --- /dev/null +++ b/src/api/cms/cmsDocsContent/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 文档内容记录表 + */ +export interface CmsDocsContent { + // ID + id?: number; + // 文档ID + docsId?: number; + // 文档内容 + content?: string; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 文档内容记录表搜索条件 + */ +export interface CmsDocsContentParam extends PageParam { + id?: 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/cmsMp/index.ts b/src/api/cms/cmsMp/index.ts new file mode 100644 index 0000000..6f8d3f7 --- /dev/null +++ b/src/api/cms/cmsMp/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMp, CmsMpParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序信息 + */ +export async function pageCmsMp(params: CmsMpParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-mp/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序信息列表 + */ +export async function listCmsMp(params?: CmsMpParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序信息 + */ +export async function addCmsMp(data: CmsMp) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-mp', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序信息 + */ +export async function updateCmsMp(data: CmsMp) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-mp', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序信息 + */ +export async function removeCmsMp(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序信息 + */ +export async function removeBatchCmsMp(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序信息 + */ +export async function getCmsMp(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp/' + 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/cmsMp/model/index.ts b/src/api/cms/cmsMp/model/index.ts new file mode 100644 index 0000000..b3eafe1 --- /dev/null +++ b/src/api/cms/cmsMp/model/index.ts @@ -0,0 +1,61 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序信息 + */ +export interface CmsMp { + // ID + mpId?: number; + // 是否主账号 + type?: number; + // 小程序ID + appId?: string; + // 小程序密钥 + appSecret?: string; + // 小程序名称 + mpName?: string; + // 小程序简称 + shortName?: string; + // 头像 + avatar?: string; + // 小程序码 + mpQrcode?: string; + // 微信认证 + authentication?: number; + // 主体信息 + companyName?: string; + // 小程序备案 + icpNo?: string; + // 登录邮箱 + email?: string; + // 登录密码 + password?: string; + // 原始ID + ghId?: string; + // 入口页面 + mainPath?: string; + // 过期时间 + expirationTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 介绍 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序信息搜索条件 + */ +export interface CmsMpParam extends PageParam { + mpId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpAd/index.ts b/src/api/cms/cmsMpAd/index.ts new file mode 100644 index 0000000..7f4a1fd --- /dev/null +++ b/src/api/cms/cmsMpAd/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpAd, CmsMpAdParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序广告位 + */ +export async function pageCmsMpAd(params: CmsMpAdParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-mp-ad/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序广告位列表 + */ +export async function listCmsMpAd(params?: CmsMpAdParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-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 addCmsMpAd(data: CmsMpAd) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-mp-ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序广告位 + */ +export async function updateCmsMpAd(data: CmsMpAd) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-mp-ad', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序广告位 + */ +export async function removeCmsMpAd(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-ad/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序广告位 + */ +export async function removeBatchCmsMpAd(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-ad/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序广告位 + */ +export async function getCmsMpAd(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-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/cmsMpAd/model/index.ts b/src/api/cms/cmsMpAd/model/index.ts new file mode 100644 index 0000000..3d061d6 --- /dev/null +++ b/src/api/cms/cmsMpAd/model/index.ts @@ -0,0 +1,47 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序广告位 + */ +export interface CmsMpAd { + // ID + adId?: number; + // 页面ID + pageId?: number; + // 广告类型 + adType?: string; + // 广告位名称 + name?: string; + // 宽 + width?: string; + // 高 + height?: string; + // 广告图片 + images?: string; + // 路由/链接地址 + path?: string; + // 页面名称 + pageName?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序广告位搜索条件 + */ +export interface CmsMpAdParam extends PageParam { + adId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpField/index.ts b/src/api/cms/cmsMpField/index.ts new file mode 100644 index 0000000..5942e4e --- /dev/null +++ b/src/api/cms/cmsMpField/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpField, CmsMpFieldParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序配置 + */ +export async function pageCmsMpField(params: CmsMpFieldParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-mp-field/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序配置列表 + */ +export async function listCmsMpField(params?: CmsMpFieldParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-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 addCmsMpField(data: CmsMpField) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-mp-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序配置 + */ +export async function updateCmsMpField(data: CmsMpField) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-mp-field', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序配置 + */ +export async function removeCmsMpField(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-field/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序配置 + */ +export async function removeBatchCmsMpField(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-field/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序配置 + */ +export async function getCmsMpField(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-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/cms/cmsMpField/model/index.ts b/src/api/cms/cmsMpField/model/index.ts new file mode 100644 index 0000000..f573edb --- /dev/null +++ b/src/api/cms/cmsMpField/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序配置 + */ +export interface CmsMpField { + // 自增ID + id?: number; + // 类型,0文本 1图片 2其他 + type?: number; + // 名称 + name?: string; + // 备注 + comments?: string; + // 名称 + value?: string; + // 页面ID + pageId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序配置搜索条件 + */ +export interface CmsMpFieldParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpMenu/index.ts b/src/api/cms/cmsMpMenu/index.ts new file mode 100644 index 0000000..7f9f83e --- /dev/null +++ b/src/api/cms/cmsMpMenu/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpMenu, CmsMpMenuParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序端菜单 + */ +export async function pageCmsMpMenu(params: CmsMpMenuParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-mp-menu/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序端菜单列表 + */ +export async function listCmsMpMenu(params?: CmsMpMenuParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-menu', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序端菜单 + */ +export async function addCmsMpMenu(data: CmsMpMenu) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-mp-menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序端菜单 + */ +export async function updateCmsMpMenu(data: CmsMpMenu) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-mp-menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序端菜单 + */ +export async function removeCmsMpMenu(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-menu/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序端菜单 + */ +export async function removeBatchCmsMpMenu(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-menu/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序端菜单 + */ +export async function getCmsMpMenu(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-menu/' + 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/cmsMpMenu/model/index.ts b/src/api/cms/cmsMpMenu/model/index.ts new file mode 100644 index 0000000..7019e58 --- /dev/null +++ b/src/api/cms/cmsMpMenu/model/index.ts @@ -0,0 +1,79 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序端菜单 + */ +export interface CmsMpMenu { + // ID + menuId?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + title?: string; + // 类型 0功能图标 1订单状态图标 2首页导航图标 3 商城导航图标 4管理人员功能图标 + type?: number; + // 是否微信小程序菜单 + isMpWeixin?: string; + // 菜单路由地址 + path?: string; + // 菜单组件地址, 目录可为空 + component?: string; + // 打开位置 + target?: string; + // 菜单图标 + avatar?: string; + // 图标颜色 + color?: string; + // 上传图标 + icon?: string; + // 是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单) + hide?: number; + // 位置 0不限 1顶部 2底部 + position?: number; + // 0 第一行 1第二行 + rows?: number; + // 菜单侧栏选中的path + active?: string; + // 其它路由元信息 + meta?: string; + // 绑定的页面 + pageId?: number; + // 绑定的文章分类ID + articleCategoryId?: number; + // 绑定的文章ID + articleId?: number; + // 绑定的表单ID + formId?: number; + // 绑定的书籍标识 + bookCode?: string; + // 绑定的商品分类ID + goodsCategoryId?: number; + // 绑定的商品ID + goodsId?: number; + // 用户ID + userId?: number; + // 是否管理人员可见 + adminShow?: number; + // 设为首页 + home?: number; + // 分组名称 + groupName?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序端菜单搜索条件 + */ +export interface CmsMpMenuParam extends PageParam { + menuId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpOfficialMenu/index.ts b/src/api/cms/cmsMpOfficialMenu/index.ts new file mode 100644 index 0000000..43ea022 --- /dev/null +++ b/src/api/cms/cmsMpOfficialMenu/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpOfficialMenu, CmsMpOfficialMenuParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询微信公众号 + */ +export async function pageCmsMpOfficialMenu(params: CmsMpOfficialMenuParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-mp-official-menu/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询微信公众号列表 + */ +export async function listCmsMpOfficialMenu(params?: CmsMpOfficialMenuParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-official-menu', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加微信公众号 + */ +export async function addCmsMpOfficialMenu(data: CmsMpOfficialMenu) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-mp-official-menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改微信公众号 + */ +export async function updateCmsMpOfficialMenu(data: CmsMpOfficialMenu) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-mp-official-menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除微信公众号 + */ +export async function removeCmsMpOfficialMenu(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-official-menu/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除微信公众号 + */ +export async function removeBatchCmsMpOfficialMenu(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-official-menu/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询微信公众号 + */ +export async function getCmsMpOfficialMenu(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-official-menu/' + 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/cmsMpOfficialMenu/model/index.ts b/src/api/cms/cmsMpOfficialMenu/model/index.ts new file mode 100644 index 0000000..350f2b3 --- /dev/null +++ b/src/api/cms/cmsMpOfficialMenu/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 微信公众号 + */ +export interface CmsMpOfficialMenu { + // ID + id?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + name?: string; + // 类型 + type?: string; + // 菜单值 + key?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 微信公众号搜索条件 + */ +export interface CmsMpOfficialMenuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsMpPages/index.ts b/src/api/cms/cmsMpPages/index.ts new file mode 100644 index 0000000..7d80f10 --- /dev/null +++ b/src/api/cms/cmsMpPages/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsMpPages, CmsMpPagesParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序页面 + */ +export async function pageCmsMpPages(params: CmsMpPagesParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-mp-pages/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序页面列表 + */ +export async function listCmsMpPages(params?: CmsMpPagesParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-pages', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序页面 + */ +export async function addCmsMpPages(data: CmsMpPages) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-mp-pages', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序页面 + */ +export async function updateCmsMpPages(data: CmsMpPages) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-mp-pages', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序页面 + */ +export async function removeCmsMpPages(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-pages/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序页面 + */ +export async function removeBatchCmsMpPages(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-mp-pages/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序页面 + */ +export async function getCmsMpPages(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-mp-pages/' + 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/cmsMpPages/model/index.ts b/src/api/cms/cmsMpPages/model/index.ts new file mode 100644 index 0000000..537184b --- /dev/null +++ b/src/api/cms/cmsMpPages/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序页面 + */ +export interface CmsMpPages { + // ID + id?: number; + // 上级id, 0是顶级 + parentId?: number; + // 页面名称 + title?: string; + // 页面路径 + path?: string; + // 设为首页 + home?: number; + // 分包 + subpackage?: string; + // 图标 + icon?: string; + // 未选中图标 + iconPath?: string; + // 选中的图标 + selectedIconPath?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 用户ID + userId?: number; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 子级 + children?: CmsMpPages[]; +} + +/** + * 小程序页面搜索条件 + */ +export interface CmsMpPagesParam extends PageParam { + id?: 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..c229a73 --- /dev/null +++ b/src/api/cms/cmsNavigation/index.ts @@ -0,0 +1,121 @@ +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)); +} 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/cmsProduct/index.ts b/src/api/cms/cmsProduct/index.ts new file mode 100644 index 0000000..285ce32 --- /dev/null +++ b/src/api/cms/cmsProduct/index.ts @@ -0,0 +1,116 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsProduct, CmsProductParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询产品 + */ +export async function pageCmsProduct(params: CmsProductParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询产品列表 + */ +export async function listCmsProduct(params?: CmsProductParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加产品 + */ +export async function addCmsProduct(data: CmsProduct) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改产品 + */ +export async function updateCmsProduct(data: CmsProduct) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除产品 + */ +export async function removeCmsProduct(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除产品 + */ +export async function removeBatchCmsProduct(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询产品 + */ +export async function getCmsProduct(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product/' + 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: CmsProductParam) { + const res = await request.get(MODULES_API_URL + '/cms/cms-product/data', { + params + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/cms/cmsProduct/model/index.ts b/src/api/cms/cmsProduct/model/index.ts new file mode 100644 index 0000000..484338e --- /dev/null +++ b/src/api/cms/cmsProduct/model/index.ts @@ -0,0 +1,98 @@ +import type { PageParam } from '@/api'; + +/** + * 产品 + */ +export interface CmsProduct { + // 自增ID + productId?: number; + // 类型 0软件产品 1实物商品 2虚拟商品 + type?: number; + // 产品编码 + code?: string; + // 产品标题 + title?: string; + // 封面图 + image?: string; + // 产品详情 + content?: string; + // 父级分类ID + parentId?: number; + // 父级栏目名称 + parentName?: string; + // 产品分类ID + categoryId?: number; + // 分类名称 + categoryName?: string; + // 关联的菜单ID + menuId?: number; + // 控制台入口 + path?: string; + // 产品规格 0单规格 1多规格 + specs?: number; + // 货架 + position?: string; + // 单位名称 (个) + unitName?: string; + // 进货价格 + price?: string; + // 销售价格 + salePrice?: string; + // 标签 + tag?: string; + // 库存计算方式(10下单减库存 20付款减库存) + deductStockType?: number; + // 交付方式 + deliveryMethod?: number; + // 购买时长 + durationMethod?: number; + // 服务套餐 + serverMethod?: number; + // 套餐版本 + packageMethod?: number; + // 可购买数量 + canBuyNumber?: number; + // 轮播图 + files?: string; + // 销量 + sales?: number; + // 库存 + stock?: number; + // 消费赚取积分 + gainIntegral?: string; + // 推荐 + recommend?: number; + // 是否官方自营 + official?: number; + // 商户ID + merchantId?: number; + // 状态(0:未上架,1:上架) + isShow?: string; + // 状态, 0上架 1待上架 2待审核 3审核不通过 + status?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 用户ID + userId?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 产品搜索条件 + */ +export interface CmsProductParam extends PageParam { + productId?: number; + type?: number; + official?: number; + status?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductComment/index.ts b/src/api/cms/cmsProductComment/index.ts new file mode 100644 index 0000000..ce70fb8 --- /dev/null +++ b/src/api/cms/cmsProductComment/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {CmsProductComment, CmsProductCommentParam} from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询产品评论 + */ +export async function pageCmsProductComment(params: CmsProductCommentParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-comment/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询产品评论列表 + */ +export async function listCmsProductComment(params?: CmsProductCommentParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductComment(data: CmsProductComment) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改产品评论 + */ +export async function updateCmsProductComment(data: CmsProductComment) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-comment', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除产品评论 + */ +export async function removeCmsProductComment(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-comment/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除产品评论 + */ +export async function removeBatchCmsProductComment(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-comment/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询产品评论 + */ +export async function getCmsProductComment(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cmsProductComment/model/index.ts b/src/api/cms/cmsProductComment/model/index.ts new file mode 100644 index 0000000..c8df35c --- /dev/null +++ b/src/api/cms/cmsProductComment/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 产品评论 + */ +export interface CmsProductComment { + // ID + id?: number; + // 产品ID + productId?: number; + // 用户ID + userId?: number; + // 昵称 + nickname?: string; + // 用户头像 + avatar?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 评论内容 + comments?: string; + // 状态 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + image?: string; +} + +/** + * 产品评论搜索条件 + */ +export interface CmsProductCommentParam extends PageParam { + id?: number; + userId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductParameter/index.ts b/src/api/cms/cmsProductParameter/index.ts new file mode 100644 index 0000000..f23a8ff --- /dev/null +++ b/src/api/cms/cmsProductParameter/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsProductParameter, CmsProductParameterParam } from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询产品参数 + */ +export async function pageCmsProductParameter(params: CmsProductParameterParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-parameter/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询产品参数列表 + */ +export async function listCmsProductParameter(params?: CmsProductParameterParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductParameter(data: CmsProductParameter) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-parameter', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改产品参数 + */ +export async function updateCmsProductParameter(data: CmsProductParameter) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-parameter', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除产品参数 + */ +export async function removeCmsProductParameter(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-parameter/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除产品参数 + */ +export async function removeBatchCmsProductParameter(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-parameter/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询产品参数 + */ +export async function getCmsProductParameter(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cms/cmsProductParameter/model/index.ts b/src/api/cms/cmsProductParameter/model/index.ts new file mode 100644 index 0000000..6d7a761 --- /dev/null +++ b/src/api/cms/cmsProductParameter/model/index.ts @@ -0,0 +1,33 @@ +import type { PageParam } from '@/api'; + +/** + * 产品参数 + */ +export interface CmsProductParameter { + // 自增ID + id?: number; + // 产品ID + productId?: number; + // 参数名称 + name?: string; + // 参数内容 + value?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 产品参数搜索条件 + */ +export interface CmsProductParameterParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductRecord/index.ts b/src/api/cms/cmsProductRecord/index.ts new file mode 100644 index 0000000..8806c66 --- /dev/null +++ b/src/api/cms/cmsProductRecord/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsProductRecord, CmsProductRecordParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询插件安装明细 + */ +export async function pageCmsProductRecord(params: CmsProductRecordParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-record/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询插件安装明细列表 + */ +export async function listCmsProductRecord(params?: CmsProductRecordParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductRecord(data: CmsProductRecord) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改插件安装明细 + */ +export async function updateCmsProductRecord(data: CmsProductRecord) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-record', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除插件安装明细 + */ +export async function removeCmsProductRecord(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-record/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除插件安装明细 + */ +export async function removeBatchCmsProductRecord(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-record/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询插件安装明细 + */ +export async function getCmsProductRecord(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cmsProductRecord/model/index.ts b/src/api/cms/cmsProductRecord/model/index.ts new file mode 100644 index 0000000..14c00e0 --- /dev/null +++ b/src/api/cms/cmsProductRecord/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 插件安装明细 + */ +export interface CmsProductRecord { + // ID + id?: number; + // 产品ID + productId?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0已安装, 1已卸载 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 插件安装明细搜索条件 + */ +export interface CmsProductRecordParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductSku/index.ts b/src/api/cms/cmsProductSku/index.ts new file mode 100644 index 0000000..eb6e5e5 --- /dev/null +++ b/src/api/cms/cmsProductSku/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsProductSku, CmsProductSkuParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询商品sku列表 + */ +export async function pageCmsProductSku(params: CmsProductSkuParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-sku/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询商品sku列表列表 + */ +export async function listCmsProductSku(params?: CmsProductSkuParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductSku(data: CmsProductSku) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-sku', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改商品sku列表 + */ +export async function updateCmsProductSku(data: CmsProductSku) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-sku', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除商品sku列表 + */ +export async function removeCmsProductSku(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-sku/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除商品sku列表 + */ +export async function removeBatchCmsProductSku(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-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 getCmsProductSku(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cms/cmsProductSku/model/index.ts b/src/api/cms/cmsProductSku/model/index.ts new file mode 100644 index 0000000..d0b8e0c --- /dev/null +++ b/src/api/cms/cmsProductSku/model/index.ts @@ -0,0 +1,49 @@ +import type { PageParam } from '@/api'; + +/** + * 商品sku列表 + */ +export interface CmsProductSku { + // 主键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; +} + +/** + * 商品sku列表搜索条件 + */ +export interface CmsProductSkuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductSpec/index.ts b/src/api/cms/cmsProductSpec/index.ts new file mode 100644 index 0000000..c870941 --- /dev/null +++ b/src/api/cms/cmsProductSpec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsProductSpec, CmsProductSpecParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格 + */ +export async function pageCmsProductSpec(params: CmsProductSpecParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格列表 + */ +export async function listCmsProductSpec(params?: CmsProductSpecParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductSpec(data: CmsProductSpec) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格 + */ +export async function updateCmsProductSpec(data: CmsProductSpec) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格 + */ +export async function removeCmsProductSpec(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格 + */ +export async function removeBatchCmsProductSpec(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格 + */ +export async function getCmsProductSpec(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cms/cmsProductSpec/model/index.ts b/src/api/cms/cmsProductSpec/model/index.ts new file mode 100644 index 0000000..9b11d6b --- /dev/null +++ b/src/api/cms/cmsProductSpec/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 规格 + */ +export interface CmsProductSpec { + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 创建用户 + userId?: number; + // 更新者 + updater?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格搜索条件 + */ +export interface CmsProductSpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductSpecValue/index.ts b/src/api/cms/cmsProductSpecValue/index.ts new file mode 100644 index 0000000..fa58d63 --- /dev/null +++ b/src/api/cms/cmsProductSpecValue/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsProductSpecValue, CmsProductSpecValueParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格值 + */ +export async function pageCmsProductSpecValue(params: CmsProductSpecValueParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-spec-value/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格值列表 + */ +export async function listCmsProductSpecValue(params?: CmsProductSpecValueParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductSpecValue(data: CmsProductSpecValue) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格值 + */ +export async function updateCmsProductSpecValue(data: CmsProductSpecValue) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格值 + */ +export async function removeCmsProductSpecValue(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-spec-value/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchCmsProductSpecValue(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-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 getCmsProductSpecValue(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cms/cmsProductSpecValue/model/index.ts b/src/api/cms/cmsProductSpecValue/model/index.ts new file mode 100644 index 0000000..fbd6076 --- /dev/null +++ b/src/api/cms/cmsProductSpecValue/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 规格值 + */ +export interface CmsProductSpecValue { + // 规格值ID + specValueId?: number; + // 规格组ID + specId?: number; + // 规格值 + specValue?: string; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格值搜索条件 + */ +export interface CmsProductSpecValueParam extends PageParam { + specValueId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsProductUrl/index.ts b/src/api/cms/cmsProductUrl/index.ts new file mode 100644 index 0000000..a492c1c --- /dev/null +++ b/src/api/cms/cmsProductUrl/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type {ApiResult, PageResult} from '@/api'; +import type {CmsProductUrl, CmsProductUrlParam} from './model'; +import {MODULES_API_URL} from '@/config/setting'; + +/** + * 分页查询域名 + */ +export async function pageCmsProductUrl(params: CmsProductUrlParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-product-url/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询域名列表 + */ +export async function listCmsProductUrl(params?: CmsProductUrlParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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 addCmsProductUrl(data: CmsProductUrl) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-product-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改域名 + */ +export async function updateCmsProductUrl(data: CmsProductUrl) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-product-url', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除域名 + */ +export async function removeCmsProductUrl(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-url/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除域名 + */ +export async function removeBatchCmsProductUrl(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-product-url/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询域名 + */ +export async function getCmsProductUrl(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-product-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/cms/cmsProductUrl/model/index.ts b/src/api/cms/cmsProductUrl/model/index.ts new file mode 100644 index 0000000..92e5ddf --- /dev/null +++ b/src/api/cms/cmsProductUrl/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 域名 + */ +export interface CmsProductUrl { + // 自增ID + id?: number; + // 产品ID + productId?: number; + // 域名类型 + type?: string; + // 域名 + domain?: string; + // 账号 + account?: string; + // 密码 + password?: string; + // 商户ID + merchantId?: number; + // 二维码 + qrcode?: string; + // 备注 + comments?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0正常, 1待确认 + status?: number; + // 创建时间 + createTime?: string; + // 租户id + tenantId?: number; +} + +/** + * 域名搜索条件 + */ +export interface CmsProductUrlParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsSpec/index.ts b/src/api/cms/cmsSpec/index.ts new file mode 100644 index 0000000..c571330 --- /dev/null +++ b/src/api/cms/cmsSpec/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsSpec, CmsSpecParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格 + */ +export async function pageCmsSpec(params: CmsSpecParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-spec/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格列表 + */ +export async function listCmsSpec(params?: CmsSpecParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-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 addCmsSpec(data: CmsSpec) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格 + */ +export async function updateCmsSpec(data: CmsSpec) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-spec', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格 + */ +export async function removeCmsSpec(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-spec/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格 + */ +export async function removeBatchCmsSpec(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-spec/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询规格 + */ +export async function getCmsSpec(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-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/cms/cmsSpec/model/index.ts b/src/api/cms/cmsSpec/model/index.ts new file mode 100644 index 0000000..3a7913a --- /dev/null +++ b/src/api/cms/cmsSpec/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 规格 + */ +export interface CmsSpec { + // 规格ID + specId?: number; + // 规格名称 + specName?: string; + // 规格值 + specValue?: string; + // 创建用户 + userId?: number; + // 更新者 + updater?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1待修,2异常已修,3异常未修 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格搜索条件 + */ +export interface CmsSpecParam extends PageParam { + specId?: number; + keywords?: string; +} diff --git a/src/api/cms/cmsSpecValue/index.ts b/src/api/cms/cmsSpecValue/index.ts new file mode 100644 index 0000000..3985527 --- /dev/null +++ b/src/api/cms/cmsSpecValue/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { CmsSpecValue, CmsSpecValueParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询规格值 + */ +export async function pageCmsSpecValue(params: CmsSpecValueParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/cms-spec-value/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询规格值列表 + */ +export async function listCmsSpecValue(params?: CmsSpecValueParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-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 addCmsSpecValue(data: CmsSpecValue) { + const res = await request.post>( + MODULES_API_URL + '/cms/cms-spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改规格值 + */ +export async function updateCmsSpecValue(data: CmsSpecValue) { + const res = await request.put>( + MODULES_API_URL + '/cms/cms-spec-value', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除规格值 + */ +export async function removeCmsSpecValue(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-spec-value/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除规格值 + */ +export async function removeBatchCmsSpecValue(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/cms-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 getCmsSpecValue(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/cms-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/cms/cmsSpecValue/model/index.ts b/src/api/cms/cmsSpecValue/model/index.ts new file mode 100644 index 0000000..697279d --- /dev/null +++ b/src/api/cms/cmsSpecValue/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * 规格值 + */ +export interface CmsSpecValue { + // 规格值ID + specValueId?: number; + // 规格组ID + specId?: number; + // 规格值 + specValue?: string; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 规格值搜索条件 + */ +export interface CmsSpecValueParam extends PageParam { + specValueId?: 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..0b98583 --- /dev/null +++ b/src/api/cms/cmsWebsite/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..4db7e59 --- /dev/null +++ b/src/api/cms/cmsWebsiteField/index.ts @@ -0,0 +1,139 @@ +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)); +} + +/** + * 恢复项目参数 + */ +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 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..4bdebfc --- /dev/null +++ b/src/api/cms/cmsWebsiteField/model/index.ts @@ -0,0 +1,59 @@ +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?: string; + // 语言 + lang?: string; + // 模板 + 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; +} 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/cms/mpOfficialMenu/index.ts b/src/api/cms/mpOfficialMenu/index.ts new file mode 100644 index 0000000..9210cc3 --- /dev/null +++ b/src/api/cms/mpOfficialMenu/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { MpOfficialMenu, MpOfficialMenuParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询小程序端菜单 + */ +export async function pageMpOfficialMenu(params: MpOfficialMenuParam) { + const res = await request.get>>( + MODULES_API_URL + '/cms/mp-official-menu/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询小程序端菜单列表 + */ +export async function listMpOfficialMenu(params?: MpOfficialMenuParam) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp-official-menu', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加小程序端菜单 + */ +export async function addMpOfficialMenu(data: MpOfficialMenu) { + const res = await request.post>( + MODULES_API_URL + '/cms/mp-official-menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改小程序端菜单 + */ +export async function updateMpOfficialMenu(data: MpOfficialMenu) { + const res = await request.put>( + MODULES_API_URL + '/cms/mp-official-menu', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除小程序端菜单 + */ +export async function removeMpOfficialMenu(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-official-menu/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除小程序端菜单 + */ +export async function removeBatchMpOfficialMenu(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/cms/mp-official-menu/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询小程序端菜单 + */ +export async function getMpOfficialMenu(id: number) { + const res = await request.get>( + MODULES_API_URL + '/cms/mp-official-menu/' + 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/mpOfficialMenu/model/index.ts b/src/api/cms/mpOfficialMenu/model/index.ts new file mode 100644 index 0000000..dc4cd02 --- /dev/null +++ b/src/api/cms/mpOfficialMenu/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 小程序端菜单 + */ +export interface MpOfficialMenu { + // ID + id?: number; + // 上级id, 0是顶级 + parentId?: number; + // 菜单名称 + name?: string; + // 类型 + type?: string; + // 菜单值 + key?: string; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 小程序端菜单搜索条件 + */ +export interface MpOfficialMenuParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmBxLog/index.ts b/src/api/hjm/hjmBxLog/index.ts new file mode 100644 index 0000000..1cefdd2 --- /dev/null +++ b/src/api/hjm/hjmBxLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmBxLog, HjmBxLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询黄家明_报险记录 + */ +export async function pageHjmBxLog(params: HjmBxLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-bx-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询黄家明_报险记录列表 + */ +export async function listHjmBxLog(params?: HjmBxLogParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-bx-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 addHjmBxLog(data: HjmBxLog) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-bx-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改黄家明_报险记录 + */ +export async function updateHjmBxLog(data: HjmBxLog) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-bx-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除黄家明_报险记录 + */ +export async function removeHjmBxLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-bx-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除黄家明_报险记录 + */ +export async function removeBatchHjmBxLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-bx-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询黄家明_报险记录 + */ +export async function getHjmBxLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-bx-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/hjm/hjmBxLog/model/index.ts b/src/api/hjm/hjmBxLog/model/index.ts new file mode 100644 index 0000000..b9214fe --- /dev/null +++ b/src/api/hjm/hjmBxLog/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 黄家明_报险记录 + */ +export interface HjmBxLog { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 车辆ID + carId?: number; + // 车牌号 + carNo?: string; + // 操作员 + realName?: string; + // 事故类型 + accidentType?: string; + // 部门 + parentOrganization?: string; + // 保险图片 + image?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_报险记录搜索条件 + */ +export interface HjmBxLogParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmCar/index.ts b/src/api/hjm/hjmCar/index.ts new file mode 100644 index 0000000..c9db868 --- /dev/null +++ b/src/api/hjm/hjmCar/index.ts @@ -0,0 +1,135 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmCar, HjmCarParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询车辆管理 + */ +export async function pageHjmCar(params: HjmCarParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-car/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询车辆管理列表 + */ +export async function listHjmCar(params?: HjmCarParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-car', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加车辆管理 + */ +export async function addHjmCar(data: HjmCar) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-car', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改车辆管理 + */ +export async function updateHjmCar(data: HjmCar) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-car', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除车辆管理 + */ +export async function removeHjmCar(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-car/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除车辆管理 + */ +export async function removeBatchHjmCar(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-car/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询车辆管理 + */ +export async function getHjmCar(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-car/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 车辆批量导入 + */ +export async function importHjmCar(file: File) { + const formData = new FormData(); + formData.append('file', file); + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-car/import', + formData + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据code查询黄家明_车辆管理 + */ +export async function getHjmCarByCode(code: string) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-car/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/hjm/hjmCar/model/index.ts b/src/api/hjm/hjmCar/model/index.ts new file mode 100644 index 0000000..37820a6 --- /dev/null +++ b/src/api/hjm/hjmCar/model/index.ts @@ -0,0 +1,92 @@ +import type { PageParam } from '@/api'; +import {HjmFence} from "@/api/hjm/hjmFence/model"; + +/** + * 车辆管理 + */ +export interface HjmCar { + // 自增ID + id?: number; + // 车辆名称 + name?: string; + // 车辆图片 + image?: string; + // 类型 0汽车 1其他车 + type?: number; + // 快递公司 + kuaidi?: string; + // 管理负责人 + kuaidiAdmin?: string; + // 车辆编号 + code?: string; + // 绑定操作员 + driverId?: number; + // 操作员名称 + driver?: string; + // 操作员名称 + driverName?: string; + // 操作员手机号 + driverPhone?: string; + // 安装人员 + installerId?: number; + // 安装时间 + installTime?: string; + // 保险状态 + insuranceStatus?: string; + // GPS设备编号 + gpsNo?: string; + // 电子围栏ID + fenceId?: number; + // 电子围栏名称 + fenceName?: string; + // 车辆是否在电子围栏内 + inFence?: boolean; + // 电子围栏名称 + fence?: HjmFence; + // 位置 + location?: string; + // 经度 + longitude?: string, + // 纬度 + latitude?: string, + // 区域 + district?: string; + // 地址 + address?: string, + // 组织ID + organizationId?: number; + // 父级组织ID + organizationParentId?: number; + // 用户ID + userId?: number; + // 认领状态 + claim?: number; + // 认领时间 + claimTime?: string; + // 绑定用户 + toUser?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 车辆管理搜索条件 + */ +export interface HjmCarParam extends PageParam { + id?: number; + status?: number; + organizationId?: number; + installerId?: number; + organizationParentId?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmChoices/index.ts b/src/api/hjm/hjmChoices/index.ts new file mode 100644 index 0000000..594b0f4 --- /dev/null +++ b/src/api/hjm/hjmChoices/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmChoices, HjmChoicesParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询选择题选项 + */ +export async function pageHjmChoices(params: HjmChoicesParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-choices/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询选择题选项列表 + */ +export async function listHjmChoices(params?: HjmChoicesParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-choices', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加选择题选项 + */ +export async function addHjmChoices(data: HjmChoices) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-choices', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改选择题选项 + */ +export async function updateHjmChoices(data: HjmChoices) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-choices', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除选择题选项 + */ +export async function removeHjmChoices(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-choices/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除选择题选项 + */ +export async function removeBatchHjmChoices(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-choices/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询选择题选项 + */ +export async function getHjmChoices(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-choices/' + 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/hjm/hjmChoices/model/index.ts b/src/api/hjm/hjmChoices/model/index.ts new file mode 100644 index 0000000..19fdbf6 --- /dev/null +++ b/src/api/hjm/hjmChoices/model/index.ts @@ -0,0 +1,37 @@ +import type { PageParam } from '@/api'; + +/** + * 选择题选项 + */ +export interface HjmChoices { + // 自增ID + id?: number; + // 题目ID + questionId?: number; + // 题目 + content?: string; + // 是否正确 + isCorrect?: boolean; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 选择题选项搜索条件 + */ +export interface HjmChoicesParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmCourses/index.ts b/src/api/hjm/hjmCourses/index.ts new file mode 100644 index 0000000..75a519d --- /dev/null +++ b/src/api/hjm/hjmCourses/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmCourses, HjmCoursesParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询课程 + */ +export async function pageHjmCourses(params: HjmCoursesParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-courses/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询课程列表 + */ +export async function listHjmCourses(params?: HjmCoursesParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-courses', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加课程 + */ +export async function addHjmCourses(data: HjmCourses) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-courses', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改课程 + */ +export async function updateHjmCourses(data: HjmCourses) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-courses', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除课程 + */ +export async function removeHjmCourses(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-courses/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除课程 + */ +export async function removeBatchHjmCourses(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-courses/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询课程 + */ +export async function getHjmCourses(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-courses/' + 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/hjm/hjmCourses/model/index.ts b/src/api/hjm/hjmCourses/model/index.ts new file mode 100644 index 0000000..b6d7d7a --- /dev/null +++ b/src/api/hjm/hjmCourses/model/index.ts @@ -0,0 +1,41 @@ +import type { PageParam } from '@/api'; + +/** + * 课程 + */ +export interface HjmCourses { + // 自增ID + id?: number; + // 课程名称 + name?: string; + // 类型 + type?: number; + // 课程编号 + code?: string; + // 课程封面图 + image?: 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 HjmCoursesParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmExamLog/index.ts b/src/api/hjm/hjmExamLog/index.ts new file mode 100644 index 0000000..bf47e15 --- /dev/null +++ b/src/api/hjm/hjmExamLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmExamLog, HjmExamLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询黄家明_学习记录 + */ +export async function pageHjmExamLog(params: HjmExamLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-exam-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询黄家明_学习记录列表 + */ +export async function listHjmExamLog(params?: HjmExamLogParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-exam-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 addHjmExamLog(data: HjmExamLog) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-exam-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改黄家明_学习记录 + */ +export async function updateHjmExamLog(data: HjmExamLog) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-exam-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除黄家明_学习记录 + */ +export async function removeHjmExamLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-exam-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除黄家明_学习记录 + */ +export async function removeBatchHjmExamLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-exam-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询黄家明_学习记录 + */ +export async function getHjmExamLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-exam-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/hjm/hjmExamLog/model/index.ts b/src/api/hjm/hjmExamLog/model/index.ts new file mode 100644 index 0000000..c7a8c10 --- /dev/null +++ b/src/api/hjm/hjmExamLog/model/index.ts @@ -0,0 +1,38 @@ +import type { PageParam } from '@/api'; + +/** + * 黄家明_学习记录 + */ +export interface HjmExamLog { + // 自增ID + id?: number; + // 用户ID + userId?: number; + // 得分 + total?: string; + // 用时 + useTime?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_学习记录搜索条件 + */ +export interface HjmExamLogParam extends PageParam { + id?: number; + status?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmFence/index.ts b/src/api/hjm/hjmFence/index.ts new file mode 100644 index 0000000..1efaf87 --- /dev/null +++ b/src/api/hjm/hjmFence/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmFence, HjmFenceParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询电子围栏 + */ +export async function pageHjmFence(params: HjmFenceParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-fence/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询电子围栏列表 + */ +export async function listHjmFence(params?: HjmFenceParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-fence', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加电子围栏 + */ +export async function addHjmFence(data: HjmFence) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-fence', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改电子围栏 + */ +export async function updateHjmFence(data: HjmFence) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-fence', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除电子围栏 + */ +export async function removeHjmFence(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-fence/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除电子围栏 + */ +export async function removeBatchHjmFence(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-fence/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询电子围栏 + */ +export async function getHjmFence(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-fence/' + 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/hjm/hjmFence/model/index.ts b/src/api/hjm/hjmFence/model/index.ts new file mode 100644 index 0000000..1143faa --- /dev/null +++ b/src/api/hjm/hjmFence/model/index.ts @@ -0,0 +1,44 @@ +import type { PageParam } from '@/api'; + +/** + * 电子围栏 + */ +export interface HjmFence { + // 自增ID + id?: number; + // 围栏名称 + name?: string; + // 类型 0圆形 1方形 + type?: number; + // 位置 + location?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 区域 + district?: string; + // 轮廓 + points?: string; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 电子围栏搜索条件 + */ +export interface HjmFenceParam extends PageParam { + id?: number; + type?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmGpsLog/index.ts b/src/api/hjm/hjmGpsLog/index.ts new file mode 100644 index 0000000..3e4dd25 --- /dev/null +++ b/src/api/hjm/hjmGpsLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmGpsLog, HjmGpsLogParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询黄家明_gps轨迹 + */ +export async function pageHjmGpsLog(params: HjmGpsLogParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-gps-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询黄家明_gps轨迹列表 + */ +export async function listHjmGpsLog(params?: HjmGpsLogParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-gps-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加黄家明_gps轨迹 + */ +export async function addHjmGpsLog(data: HjmGpsLog) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-gps-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改黄家明_gps轨迹 + */ +export async function updateHjmGpsLog(data: HjmGpsLog) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-gps-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除黄家明_gps轨迹 + */ +export async function removeHjmGpsLog(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-gps-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除黄家明_gps轨迹 + */ +export async function removeBatchHjmGpsLog(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-gps-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询黄家明_gps轨迹 + */ +export async function getHjmGpsLog(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-gps-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/hjm/hjmGpsLog/model/index.ts b/src/api/hjm/hjmGpsLog/model/index.ts new file mode 100644 index 0000000..a22d413 --- /dev/null +++ b/src/api/hjm/hjmGpsLog/model/index.ts @@ -0,0 +1,34 @@ +import type { PageParam } from '@/api'; + +/** + * 黄家明_gps轨迹 + */ +export interface HjmGpsLog { + // 自增ID + id?: number; + // 车辆ID + carId?: number; + // gps编号 + gpsNo?: string; + // 经度 + longitude?: string; + // 纬度 + latitude?: string; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 黄家明_gps轨迹搜索条件 + */ +export interface HjmGpsLogParam extends PageParam { + id?: number; + gpsNo?: string; + keywords?: string; +} diff --git a/src/api/hjm/hjmQuestions/index.ts b/src/api/hjm/hjmQuestions/index.ts new file mode 100644 index 0000000..e877dd9 --- /dev/null +++ b/src/api/hjm/hjmQuestions/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmQuestions, HjmQuestionsParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询题目 + */ +export async function pageHjmQuestions(params: HjmQuestionsParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-questions/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询题目列表 + */ +export async function listHjmQuestions(params?: HjmQuestionsParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-questions', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加题目 + */ +export async function addHjmQuestions(data: HjmQuestions) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-questions', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改题目 + */ +export async function updateHjmQuestions(data: HjmQuestions) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-questions', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除题目 + */ +export async function removeHjmQuestions(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-questions/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除题目 + */ +export async function removeBatchHjmQuestions(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-questions/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询题目 + */ +export async function getHjmQuestions(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-questions/' + 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/hjm/hjmQuestions/model/index.ts b/src/api/hjm/hjmQuestions/model/index.ts new file mode 100644 index 0000000..349d81b --- /dev/null +++ b/src/api/hjm/hjmQuestions/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from '@/api'; +import {HjmChoices} from "@/api/hjm/hjmChoices/model"; + +/** + * 题目 + */ +export interface HjmQuestions { + // 自增ID + id?: number; + // 课程ID + courseId?: number; + // 课程名称 + courseName?: string; + // 类型 0choice 1fill 2essay + type?: number; + // 题目 + question?: string; + // 正确答案 + correctAnswer?: string; + // 难度,'easy', 'medium', 'hard' + difficulty?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // 选项 + choicesA?: string, + choicesB?: string, + choicesC?: string, + choicesD?: string, + choices?: number; + choicesList?: HjmChoices[]; +} + +/** + * 题目搜索条件 + */ +export interface HjmQuestionsParam extends PageParam { + id?: number; + courseId?: number; + type?: number; + keywords?: string; +} diff --git a/src/api/hjm/hjmViolation/index.ts b/src/api/hjm/hjmViolation/index.ts new file mode 100644 index 0000000..6b48a73 --- /dev/null +++ b/src/api/hjm/hjmViolation/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { HjmViolation, HjmViolationParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询黄家明_违章记录 + */ +export async function pageHjmViolation(params: HjmViolationParam) { + const res = await request.get>>( + MODULES_API_URL + '/hjm/hjm-violation/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询黄家明_违章记录列表 + */ +export async function listHjmViolation(params?: HjmViolationParam) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-violation', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加黄家明_违章记录 + */ +export async function addHjmViolation(data: HjmViolation) { + const res = await request.post>( + MODULES_API_URL + '/hjm/hjm-violation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改黄家明_违章记录 + */ +export async function updateHjmViolation(data: HjmViolation) { + const res = await request.put>( + MODULES_API_URL + '/hjm/hjm-violation', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除黄家明_违章记录 + */ +export async function removeHjmViolation(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-violation/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除黄家明_违章记录 + */ +export async function removeBatchHjmViolation(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/hjm/hjm-violation/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询黄家明_违章记录 + */ +export async function getHjmViolation(id: number) { + const res = await request.get>( + MODULES_API_URL + '/hjm/hjm-violation/' + 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/hjm/hjmViolation/model/index.ts b/src/api/hjm/hjmViolation/model/index.ts new file mode 100644 index 0000000..3c1bc20 --- /dev/null +++ b/src/api/hjm/hjmViolation/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 黄家明_违章记录 + */ +export interface HjmViolation { + // 自增ID + id?: number; + // 车辆编号 + code?: string; + // 标题 + title?: string; + // 文章分类ID + categoryId?: number; + // 处罚金额 + money?: string; + // 扣分 + score?: string; + // 录入员 + adminId?: number; + // 用户ID + userId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0未处理, 1已处理 + status?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 黄家明_违章记录搜索条件 + */ +export interface HjmViolationParam 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..cb5f1a6 --- /dev/null +++ b/src/api/layout/index.ts @@ -0,0 +1,237 @@ +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 {MODULES_API_URL, 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"; +import {getLang} from "@/utils/common"; + +/** + * 获取当前登录的用户信息、菜单、权限、角色 + */ +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>( + MODULES_API_URL + '/cms/cms-website/getSiteInfo', + { + params: { + lang: getLang() + } + } + ); + 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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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: [ + { + color: '#60B2FC', + icon: 'NotificationFilled', + title: '你收到了一封14份新周报', + time: '2020-07-27 18:30:18' + }, + { + color: '#F5686F', + icon: 'PushpinFilled', + title: '许经理同意了你的请假申请', + time: '2020-07-27 09:08:36' + }, + { + color: '#7CD734', + icon: 'VideoCameraFilled', + title: '陈总邀请你参加视频会议', + time: '2020-07-26 18:30:01' + }, + { + color: '#FAAD14', + icon: 'CarryOutFilled', + title: '你推荐的刘诗雨已通过第三轮面试', + time: '2020-07-25 16:38:46' + }, + { + color: '#2BCACD', + icon: 'BellFilled', + title: '你的6月加班奖金已发放', + time: '2020-07-25 11:03:31' + } + ], + letter: [ + { + avatar: + 'https://cdn.eleadmin.com/20200609/c184eef391ae48dba87e3057e70238fb.jpg', + title: 'SunSmile 评论了你的日志', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-27 18:30:18' + }, + { + avatar: + 'https://cdn.eleadmin.com/20200609/948344a2a77c47a7a7b332fe12ff749a.jpg', + title: '刘诗雨 点赞了你的日志', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-27 09:08:36' + }, + { + avatar: + 'https://cdn.eleadmin.com/20200609/2d98970a51b34b6b859339c96b240dcd.jpg', + title: '酷酷的大叔 评论了你的周报', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-26 18:30:01' + }, + { + avatar: + 'https://cdn.eleadmin.com/20200609/f6bc05af944a4f738b54128717952107.jpg', + title: 'Jasmine 点赞了你的周报', + content: '写的不错, 以后多多向你学习~', + time: '2020-07-25 11:03:31' + } + ], + todo: [ + { + status: 0, + title: '刘诗雨的请假审批', + description: '刘诗雨在 07-27 18:30 提交的请假申请' + }, + { + status: 1, + title: '第三方代码紧急变更', + description: '需要在 2020-07-27 之前完成' + }, + { + status: 2, + title: '信息安全考试', + description: '需要在 2020-07-26 18:30 前完成' + }, + { + status: 2, + title: 'EleAdmin发布新版本', + description: '需要在 2020-07-25 11:03 前完成' + } + ] + }; +} 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/passport/login/index.ts b/src/api/passport/login/index.ts new file mode 100644 index 0000000..e50c206 --- /dev/null +++ b/src/api/passport/login/index.ts @@ -0,0 +1,120 @@ +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 + '/loginByUserId', + 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('Phone', String(user.phone)); + localStorage.setItem('UserId', String(user.userId)); + // localStorage.setItem('MerchantId', String(user.merchantId)); + // localStorage.setItem('MerchantName', String(user.merchantName)); + } + + 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/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/shopExpress/index.ts b/src/api/shop/shopExpress/index.ts new file mode 100644 index 0000000..6ded8bb --- /dev/null +++ b/src/api/shop/shopExpress/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpress, ShopExpressParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询物流公司 + */ +export async function pageShopExpress(params: ShopExpressParam) { + const res = await request.get>>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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..b9c556f --- /dev/null +++ b/src/api/shop/shopExpressTemplate/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpressTemplate, ShopExpressTemplateParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询运费模板 + */ +export async function pageShopExpressTemplate(params: ShopExpressTemplateParam) { + const res = await request.get>>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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..efbf3ee --- /dev/null +++ b/src/api/shop/shopExpressTemplate/model/index.ts @@ -0,0 +1,41 @@ +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; + // 首件数量/重量 + 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..9ca4f8f --- /dev/null +++ b/src/api/shop/shopExpressTemplateDetail/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopExpressTemplateDetail, ShopExpressTemplateDetailParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询运费模板 + */ +export async function pageShopExpressTemplateDetail(params: ShopExpressTemplateDetailParam) { + const res = await request.get>>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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/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/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..1904a92 --- /dev/null +++ b/src/api/shop/shopMerchant/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopMerchant, ShopMerchantParam } from './model'; + +/** + * 分页查询商户 + */ +export async function pageShopMerchant(params: ShopMerchantParam) { + const res = await request.get>>( + '/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>( + '/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>( + '/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>( + '/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>( + '/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>( + '/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>( + '/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..612ca6c --- /dev/null +++ b/src/api/shop/shopMerchant/model/index.ts @@ -0,0 +1,90 @@ +import type { PageParam } from '@/api'; + +/** + * 商户 + */ +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; + // 是否推荐 + recommend?: number; + // 是否需要审核 + 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; + phone?: string; + userId?: number; + shopType?: string; + 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..267c0a5 --- /dev/null +++ b/src/api/shop/shopOrder/index.ts @@ -0,0 +1,120 @@ +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)); +} diff --git a/src/api/shop/shopOrder/model/index.ts b/src/api/shop/shopOrder/model/index.ts new file mode 100644 index 0000000..d7e3912 --- /dev/null +++ b/src/api/shop/shopOrder/model/index.ts @@ -0,0 +1,157 @@ +import type { PageParam } from '@/api'; + +/** + * 订单 + */ +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; + // 用户id + userId?: number; + // 备注 + comments?: string; + // 排序号 + sortNumber?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 修改时间 + updateTime?: string; + // 创建时间 + createTime?: string; + // 自提码 + selfTakeCode?: string; + // 是否已收到赠品 + hasTakeGift?: string; +} + +/** + * 订单搜索条件 + */ +export interface ShopOrderParam extends PageParam { + orderId?: number; + orderNo?: string; + phone?: string; + payStatus?: number; + orderStatus?: number; + payType?: number; + isInvoice?: boolean; + 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/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/shopUserReferee/index.ts b/src/api/shop/shopUserReferee/index.ts new file mode 100644 index 0000000..3d1e2da --- /dev/null +++ b/src/api/shop/shopUserReferee/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ShopUserReferee, ShopUserRefereeParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询用户推荐关系表 + */ +export async function pageShopUserReferee(params: ShopUserRefereeParam) { + const res = await request.get>>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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>( + MODULES_API_URL + '/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/system/access-key/index.ts b/src/api/system/access-key/index.ts new file mode 100644 index 0000000..844cb04 --- /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.message; + } + 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..de4a858 --- /dev/null +++ b/src/api/system/domain/index.ts @@ -0,0 +1,106 @@ +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)); +} 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..7c58a66 --- /dev/null +++ b/src/api/system/menu/index.ts @@ -0,0 +1,156 @@ +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)); +} 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..602c6b7 --- /dev/null +++ b/src/api/system/tenant/index.ts @@ -0,0 +1,178 @@ +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)); +} 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..1de15d0 --- /dev/null +++ b/src/api/system/user/index.ts @@ -0,0 +1,253 @@ +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)); +} + +/** + * 修改用户 + */ +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 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)); +} 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..e7a09a6 --- /dev/null +++ b/src/api/system/user/model/index.ts @@ -0,0 +1,158 @@ +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; +} + +/** + * 用户搜索条件 + */ +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; + 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 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 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 zCE{hbD1Uj)uRKV#cT!YndQ)Cdz$R;@)8TT!W5H?u7KfYk*9Hmhk$w(p&lU`W5aiFK zbV*#9bW=KKbBMF)<@LyjcvMJOxX*fj-P}22kzW_KA)nlgp4hLOna4$oqwyQlv+tHA zrK5R}KU!47cXk0z*(Kkx$zIVbHnmhCH4QsoKWG(%;Pa^lIPD<|4@3*C>CCo@?SkhTZt)6-+bq-*bE`#Pj`Ig5e;IaOSFjUW%Nzc~@E!Sabqn|IKi-MtNYu7_HkNbuM) zL?@MWnaV3Le_RQvId6_2%dc;qGbS>dYWA`n;;EqS;}Rn=U;DwG0%#MVs+tN4dleNG zkLUATDON%&=EXg+cN?mz6cG`rSToYmNo_yj$LLo}Kq(`4NSkBF(Z4%5I8X}-gqhD7 zKK%S`TI|`fR}^QA^@MF`!RY}R7@-?CMHHuM18??%liD z>)Vj!f3Bn(*2OD2jx@(BE;K8))h@N6#V6ZR+QdxK4cl5R)|X4Lu3VKe)t zJfTQkVpLRpW1~Lz*VL5L>O%xEAuBqz)@EEu$2mA0GfYxH(1zv&tv)mv>F?LxEB--D zzl&-|Y!>Zfd# z=23c4q8h6jJ@?*xd=?f{8aaa{it)w_4-X59iwl4eqnu!jSm11K*D2dP2j!xiFv0j; zG5gx@33tI|L49>=Yb6Gg2$Fdw@ON5!s$QUf^oLH5s`ZJgF0rGTTDk#BIy-mn9BI{< zC+6nn&b|QqIy=|%XtW{PkJ(oE0RCWFl&3YVQ`5d1b8EylyH#;VTbe4|6ck!^&^K=a4pnTsyG#DMV|3i-RIqqC(0Pe)Pd^ zVfV!Ncz;b7q^a;EZmjz5c5HZPpdzEvg_eDL>P5)NJ@Jie^>ctg_Sxl(GVor)X`#rq zVLpPON9Br1{VCu1{?eOoX!p`4pWG<4AlKNNYxU2um4zZzZ%zG4jE?qWQ^8#L9a|H_ zB=w@w=6?G5>^U3~*JeQ85@BxupqAQDNZ-^wuc4=)5R$=Ofq1zkc=H zs6lUN)1J5;IM*&DCZ@HzvD8NS+$AihZB(z%#Vq_L>$n8&O#-uWGC6R>kHGXBeddxq zJ>j+unc5DB9O{sNDBUnAoMsb9PADF<+FwT)0P8L`OwroxbRS&15TKyzUOFB}36)Jw z>~cCia+gO8#`KUae?UHka8(5nZK2mC$0tzyyixMouAB0J=)8KhcEt>pQ>XUuX?{Hu zG^H&*LzRI$+S06U8gN|%zxX(%mXFZgMHVRs@L2Z%eBqQQs8l8_kWErnX1+Z9}Sm)78~26FYj&xWIR|dtt?<8{MHO@7*L*ykV{*GFx9+Utf>I;oj@| zAV^0fk$8)pMkZJ05z>z1>;T+(B3`cHR2WLi$_JT41cHkD4hRc*whd8h-3?j?j~gY= znmn9k+@Fk2L*K3JadjUkxY3E$tEHCB|E7Z=Q}*y^3q5Uk<<=DRP-I_{RQO2hl`B`$ z%f0gJvYN`g`XKCz@gDgBLF55v30sqdL2{p)OjDjz=Hs|W>WT`*nslcD<{_{eIl_9A z&(O~2%4l{^+enXNO5_upnXnoollyah#SJ0ojp35jUYGn3@354u<@5zG>BFtbC}GeH z5u$Hxi^@`7WDO9c7LXH)539xNx9kmu6GLr<1Ld{qK%iXP(wmOMwe1J z6<6}_V5arZEMv{Bwb6xQ0=u|J+q@7zN5ji#Erc1>a#8lr5pax!snqEDeMXx6_U2Xe zHvF&v{z!d8!|13u=XS@`9h=U&!)iPJx$GII% z*j%BF&U3crN9zQzMC@i4c5V@FcN!GQpF7qT`HS0NiPvagN+6>&yDciMmg|JNwb;-8 z(EuA@ns<1Fe#qL9bm`|TR zEirqHWPZ56OJGEfvnZDzl6x$eZaEY#fDOu}GdFu_RR?n@TdX`Zr#shn0575VsfIz} zYzc~qWp8R7O6VyU100}x>YS!mG`!Fb3Bb9Xs=jc^z`&mGx&eKaGX&R>-(t*fF-R0f z`Ov2O?$m82nX+?t2T@FmN*Co@OAe6TxeVk>a08om2yd5v#MREuPI(k6c!3EZ`K-l3 zhG{-^foZ;`jFW zpG_1>P3;grKRAKa;>}~njyVh0a33?)w6&GJDI7awTUz8=>dP3i#IaZ1M6EO1ooZ`q zb%Iv&Q^+`{izk~FBU&7ma^2k==ADVIgB9yn?9F+*d^Ydiy}Q=zsC9)le#OAhus%jo zPj>w_+jif+eFBtqdI>G|rDJZ6n%BtRhwmP^z1riLAM*Bf(SFUT@K$b3 z4lW#}UwtKdRzS9b-?6PqsIRCpJ@v#PQPD`SqT^Mpt{fAk+B(;P3jd{a30z)lLV=Hr z?u5fRM&^mQm{0k+BArT(C?3LV1PZ!Xs5lCTI7f z@ca9!gsroQD7G{AU&E-7xcImHWNSKQE91R!m8E&yKCqS;cg^@p7j&eGTkq*ZN?JEI zKfTa)@vdRL_gDnPKW>;9y6?Cl%tdY8jn+^<{B!Apl5p3isDCoo?<$~BqUVf%;(zlL z<+0*?TF48$%x?~_GH|OiyvlvFKGJJ6QpH45h}AP5XJAeK@ZrOW@RzB3%$))P)K};F zXbZxbb3Gw8KgEP{%w87414u{=7XIz}>e%t);_aqr!Erw zd{Y`XJQl;k!XhrFfH`ufhpU)B6wtgd%66zK*lVmYrn}f<$bMdllR&sWCH;BpZaWpP zvVE$5uriQq00VgToOR{Uh3LIoudu9F;d(!GnK4}T*((33PtDP!P1z2PfhKla z3U9y^&Kd8&!D%MAbva!X(1U!9>vJEoi=XC6&p!*?jm>m#Azq^T4C|)mzGjA5F_=qe zElxt<7GLQ4{9jg#gn(hbxJ-Xj9RBFGB=!oHvod=m>&CzqM+2fBn>kOJ$yqw;n{C35 ze1FnGAg*jH)vnlS!v2_|>NWBxx+VHy9b;&) zxOY&K@;P;TZ{T%-@-2%MSj{$+-sDi*mCAChq@0sQGn8~E3_p?Fyxax0CexpBcHe&W z9;<3!*6)Zf7((4pY}!^iT8yU`kI=E4fQ<={Er-=VO$vwBB8NhA@GF^KH0wfx4!I^C zt*>|27N1Z={QAB0Tn7TC{bj|szJ`n%ZH*a?FbN#yK3yJDYSe?Gy1{DK5Iy7l0#Asd zYTjcbmka{=8gLii^fr~s`fV0Y+!w(2dp-QN5}56|(jF>{i5s_WamX*ye&dYl^<$Ju z6#lyP<=s7(#pSG~8{(AWKaUT+kup!-ajWgimuo?g8WD{kLGprFa{!(HQrxYtNXD1Z zACDsXnN#q=B3ePJyy99SZ78Ny1#2cV*K4#M0*9XKP!%fhw&%HvWTF%0pgCjOVot?e zKy0$lroDYDAOAIn!{XrR)K!@=cdjTtG%Tq!w+I91hlHEUl@mapzKB(vjBHr zi1Y}Ow85{BU&t=5{u2@vLjwZ?Q~!1goE_9@QcgDIEz)^^{q@%9uq;}%!8H_1-((N9%xIuE#VZ?4!rHnVd2-C6Ay%o>J3x| zu1+h>S1h&O{`!tbs&Yaz1gbnAcbQaO%4{7CVgnv;J-#Z(+~0m*QFJLqEwBIh+wI6e zakubanAvwzMGpC;Q}UF#)S$kGby;QGj+`TT06Vvb*uGcs1CY223JSj2DC1udS+ZPj zZk%XI;G^bxRf;>Fd)6{h{`ypUdb&VxvE6Xzc>xAbJbFiO6$7VubXN<-FHopx(*?Ox zS1@$RdUh0Ik=NqbhhApXGTS9q-BFJ;*l6QV{9Nc&IplDz_h9m)LXV*;SbBKT$;CF_ zA5GXxlP)Q=%1_=^=LNK!a)&6n+wMq}cU&N@8dv$0cn(KKP;5$`{MO_>h-6zN1?o-M z(9xH>R!&C7Kn>|?oc*{k4Hnl!E#U<+Me?p0>A5*YO0SXX-kYy@4pWt+^6Z-my@uZl z!@v98@TIO&ntuRG(&A8ZHtD7|YQp^d+&n?bmb-AYZWHYp0LX^bpP{K&?giU4>85)a zn;h~`)S|W1R$gXZRjzOev-Si~(XTd6#!^N zCowYL5j!`7q6aY=`(3u=Fka-B;SmL*P<0SbeIOZ3*_`uWwrKM{sp&IWRkL=}_2XGkLWcblbmLnmLUZQc6_M1sIZ}Q?}w)5}?os_6D z>sslBxY1Sz0Y9?}3KuTjkZk6Kc(#MSIvAUQ6lUN8EP&x5jKnp3vqoQ8#LgZ1y=n29 z@zt^!DX5A34eLl#8AT-E!`j+y>xPZN0|#b>Gsa$oa1&(X{joW(_DVpt#9OHL(BeI=T{{e`OcGbD zB&oC&bDj6z zm6fUOiaRr(9=c)T8R?g+19d-=qPn_8lMgKin<6Y}Z*HY2gX?Zy(HOAi-pK1xKVWkxtf!0Fbg@W<-(8W(&ZIC57V$O zvpMGx7&$g|3nW2F-n)12n{=VQI6J3T*pd;!>E#;{ z5j}-2rd>~dM39Nkg}-D#71ngoM=C1j<%tI-tip@A{-Ovnb7k~o+Kbqr_Hf&@$JR?1 zzbRlQ-vI~Sa{%3M_q&5Gf;_k3W}(wUvKj@CiCVF&6OXJ=iI+i?owuer=5Zs0!WvNht&u`ds1fKrRFaOxz z*scMy5Nxf{D*)=af&-oEe>=ASzwhH-$j^0+_vZoxKTS?<6$6pe_DEV6!FN^fF?}7K zOGZW!{9vMSg3~YS9L_>U|IrNgViE+WAH6!O16K1Xr&eD;`hWy1L>do4#c&yszpTiu zfkf<+RQl$Fr{yp2%Y>`f*B9@Y(wsh?~^>hFM%MQKDGKg zxJRr|@*PLGW1!Tp&K+}YyteU|pFxl*qM-SU`+zcML0#E@!53I+T-4$U{C5m@a*pbn zI6+eW=x}^;^1-7pKbLT6+y8=-O$>>*^r4Vk{V_D=m!H7xN&;|c65J!%Q6R_R|Bz!J zcZ?=3ZRfWmmx!NrxMRk{VuXH%F=o#MGvc|Y)`i8$?txQ1f0yt0?c$CPV`Fx$cR(@m zTs{3YHumB1`BXT~N;r?_lSi-O5xpo85Ht)RHDeV1E{!|-Zfq=VoLjO-H5GtC{5MYe z|L)zun4uVygo3@fsqN@Su``x!wJ=Gau-yM2o&_U7e*gaQztjUx`(K6QQxdudx2_xS zCnzZ?tO@o#J&IPjtWcI5gm zRFW$zVbdxGf_)-T51d=LKl=w*>84}N=g*%fJ<8{b96#m-{T_G7n}+M+GV);!;hEvFqX*_>HyB0a1X*PkgfVP?;?& zmu?CPf9X_!hP_Zi#7|r`US*6ZkfDsnmU!tE-v)*EH_df|zlY;2C(giBZsEAW@P7eI z9Qx)L0A|1S0{p)KJUH!DFuXg3WXP17@?cph7e10gU`*l}#BVvlFrkoO9A{s##iDa+ z6lCDhYOZtDWp_J;d;D@J#Jt1zzkmEU(?fG~Op1{(Sn(&niH6418>ukKtkwssa@<}I z?moUi_{%k;`0X&0teQGO|BPV#(Q?8|u_Lv2D*8 zZ!j}5GAM?J4ndyu+L{=XCmpR*>lOx`5eTbs!``C2Qx`rii++z<|K=gP@oUoV9*AuS z>pi8Jy%HC?_JE5s&XATUiSo}|u6g~tC#L_0iN})d80U2)xaO3Ga4+RVllRLL;l+}; z(_Weo=u=7rC5^P!$C#2MtF^hHo#5K!?-=|&0R5W*Pl~=LhyPz^#%r9p0V8OI zuAE$$x3viG)$g1>W_?Fi`^-xreua~lLtL{3c4%h)9C3lXe|jRj_uQ-DUw+ngJNZf< z)ARJh0pYS|hcA`R9AmtUy_bIqlhD6Izt*)Z^j_*;>gfr4x=fP(S!@15_*LmY=+${> zfM%~)SP#qurRZgCw9dC_|IG~u65OKCzsi~4mUuefKn-!<@E1K&09e_I3HMXDqb6hvkMO1 zY@y0Q@oUzqX83Dm8!JJkt`WM29r3XH^)}GQni(%3?aFO`K)t4y5iU`*yAIlp)kg}q znCiyG#g$PNVf%Wa@ReYEN{R>G!Oq90a77v8@1_0v4vDpuX~9&ql! z=%NX}U|g{0W0y7Tq%#ync%Kw6mdi9Wnq)Irs!wFCz3)KNNPsf%;jor%iBF%J4R*{I zv8uD_&$5Xd>um&gHQ138Od2O|I5o+SNX^1k9&o>CIO-NHS5qeEiie5}pvNY_7kauT z`U;#s%XhFWC94!c8ja5W{{HtS_~LFSqW&os}*7<=RiKT zM1n=qp$wS2Bw=%N^IQzfi_r8DUBf~_g*f@k_L;B&QgBM}*JlK?imsup7M$H^_>e=& zt=SiYU_@=x!{Y05t{Za{H#kz0VRDak0%oh*1;{Ub0b}s}S-n1;Y>}UD&;V?pWQA7C z0+LWeBh0aPlVzc67nm(M0SptB*K?3eS_NCc;YO}znuDT(H+X&oqkge6)L~6aa#hRm zC%Oi0j5%lebJwa`gAQYPS61%<^s$P_~-t| zQ4-0$zoh-vI?&Qyb8VozYv;Xp-T0}m4wbcy8yg!5U26%FnVFg7dXO{Q7aD-6l5%Y= zEiwgSy%&jB3sL=fd3hZTgg;@ZkBO;i0>LtkUbfGG$9)Po2on>An67b?rJ$Q!(R!vk z(_QTCUyV0rlKHYdW@L0pq_S)cV4-z^m#^K1+q7`_DfF_(-wrG3!c-ZW)VScW_;q_n zuW1b1y0iF?BCg(^C zLyN^TD6S-N<=KI`U7FlOUyFC%`$H~M;^xhpO$H%@xcyR+n8*lc2Zwso9w5fn0NpLh z@<4`=G0`W=l&;298lUOq%m8DajTOs=6P;N=8<;NC-?! z2^XiF>vl2L*FHwt^Oyj{?&d-%g6bs$pN|ETKcGK6F>I*xotBKRo(-R?7c%GMS z^Wpu@Y4VpbN-8RT&Z;6+RPWbw766LBr5mL%M#abEnp;|uoKef8L`~2(@L>!K5>?<{ z_XTX6)WB8iJ32Zp%l+$O>z|A~``(C~VSE-w>c*kRo{2W?B6uh*b-cRh1HIj!t^EeN zoR1<1F-d%LO3!EfV=UE{vjSuzNe*qZ@uNPbtI&mJc(tZx7K4HF6QiN;OvF1Tii5^!ToB&!sv(hvJ#V}I6GHVk*z>yZhHW{O zkV#@&wp4hJU$8Fqeg#eD{agWbWMpKz^4qj50p~nWtS32DteG&XHk#c1vGFzVCq*+K zU>$O1a)jX8pTR2WKp47#kMzJ;8;Dp?%x~GJk(~Yg{pWymNtrKW^vO&nqX~m|eL?pH zU0q!PGa2bKe1tXar5=ba8o;1jXHMKh-@8q`ih(wX#-(I{ zZe6Xf$=O(1VbOC`Qu=%bB4C_<(fXIR6IBK-o%KI&?UHfK&dU1SX@s6T1K6q2x=XI& z6RrJT8BHw~L4F$Nz89d$#l@w4&OD(W2;1PemRKyB8o>DY@d6Niulxm$FKUa&S3zrG zV0>j&75=DCAeCH?OQ62K_(XP-!e*4udt*dzs4+jrO0Cojdwhm|E-nj2Mh`j(uYlny zp-=;~HG=<2mnl0VQARLRFoRTfdtoGjIp8-$$RKIUO#Z?(3+t34d0vKN1g1hzM7=`- zwMBXLtr7}-dF9<^bCK&dyfFc=7u%QUpT@Kh_CR%Y7JceuJ_qE)+NpKUJ zz`4TSVh`*9fwM_&*p5^W3I4j%XJc)FwK-21>Qhv9Z)Mqd@HyG()q;`NMF=>8a|||Q z&SVBRa~XdwrvyLW5f+cz+Rep5h6wc4$#U11jW@i@$vD`l9RLPv>fL8(_KJFN)TyC z$k+N96&^D_K3-ULZwzMGXLZ(m5|S1t9Aq!a!K*z$1;ckSQ+=<7Ud8xK3v`DA6H1OS zybEjghQz}TYL$%EygbAnWX@c~vM#4YgLgdPf)@(NE`f9&63?b`>vqKb0 zGQ1o>{r1;uDbaUDr=tlQwwtTP6mlk@e9HdrZ9t5;%7n zKe{jG$mPO&wt$a+T*j=djYe}h;p9hWFxFK;rNBM60Rrl@>9+S;ob@(ZlN`lrh(#^# z$oaw67J}64^mMjXTGfq)2l`#S(J`d_ef$=cRwPL?(y(Z9~)_zb6bAu zMz3XUET^N%;u~LhrfEohGrX6=WS+vo!!;ayeTx9Bb-k4BI-~gD3VS6n;y->61s;yK zs>oL7n`D3BcLZ!KG`J1mj7sU*H(fvKGcJ%PF5U|F;Bqz!|dB?pma#S z5K97Pa~ljzx;R2zOF&99g;q-b-)4UX1}%05>>9^Xx+A~BZ5C%zIGf8Z)%w!1vRs`) zXo*@bwWd|70>-Uj;>gv=scY;O?sM>=H#|jA0iXZy z^Npo!t>pN??9g6ad;$|nj7i~aOnzf-ZVG+shu0C%A;<}>#6L{1wgG5UK%+ShGdoxX znYL*&H3>x^5a&{5&AWR%^maXQGMAQGm^*J_jS#Rt{=}Nz zl${6Zqhnh#d3}A|cra?k*tg}66^bLRq49MCys;pR#6o}Y>$Z|n3tIC;ZG5fyV0!o1 zp#P*O_F4#P78r;tT#gIKR(tK#8^{}J8yi7@@UO7xW!dZnNXNpK1DD;}xLyw(cVnKa znive{A^yoGn@Jn4388--u34$x&Xek*qS%U$kg7DNf(M2JroR#qFQG|#GB4;C`boT&vUG<=P<`@HH3=mHd-0d8a< zeOvT29an>abKuGhpaBPbea9!ulV7r@3Ozy!Y?peF}1*7-PWQwj@XNr9L&`TqVc&M*fO z3#|$V<^(5@r#Cz{K(nITbBjNg_Vxw7hpjq+D@ImVAlVF655&_#)hE zq{|eWWI$;w*&|7406m9+3_5e4$lNdy3Fen%WofBV`o#Ss>vU~n!_&mXjm7`zidR^$ z80+>ggWQf}*!^gwy|yv^6uha0S+7*x`WRBZum?56F2E-|zWT9YSMdd6&`zMbKc>^^ z$9>;ps^JF7KdrmgHXaOxsONs{Y>_U}mD^l7fbn@BzZbbvnL#fT@aQk`^3K5*c$U}d zZx=T9Zk_|l0^fH<8vT*zeJVJxR^Jvb+CZhzqI=%&K;D+Sy4I-|78NPe!v~dX^^KI> zzXZG_Ma6c(1(Rl+F-bFJj5N%{)!N3NG+9%rdXSby{Tfmu`P(IkyaQd?bO#!Z<`^tf ziN)E~{{1sjZMOIDHr&yv7(FqyTk!rIw+A2YO*0{*w3WSOtr7_QSM%cQ_MtKI@@i`9 z<9!~K;5>TS2huZXFL)(F?|qVmAaBSnNR_ajKcS3>#9V+5I4Z&$5<;5!6SJwk8p%yM zn=mU5G#?L>uD_!BqmIkx)wurn5!AqBu~>GPSeL)I-Kpeem?jt{dHLK^BD_QNGKRr$ z?#<8`YdguSBxT$y5*)|-+uFnXF&d`J7%kcK!Aw#wF_J`r<)n&Re((Ag`bczYU0W-0 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/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/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/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/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..63e0287 --- /dev/null +++ b/src/components/SelectUser/index.vue @@ -0,0 +1,64 @@ + + + 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..6fbc191 --- /dev/null +++ b/src/components/SelectWebsiteField/index.vue @@ -0,0 +1,62 @@ + + + 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/config/menu.ts b/src/config/menu.ts new file mode 100644 index 0000000..2c4497f --- /dev/null +++ b/src/config/menu.ts @@ -0,0 +1,119 @@ +// 请参考开发文档配置菜单 https://eleadmin.com/doc/eleadminpro/#/config?id=menu + +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/setting.ts b/src/config/setting.ts new file mode 100644 index 0000000..299cf5b --- /dev/null +++ b/src/config/setting.ts @@ -0,0 +1,79 @@ +// 租户ID +export const TENANT_ID = import.meta.env.VITE_TENANT_ID; +// 模板ID +export const TEMPLATE_ID = 10258; +// appSecret +export const APP_SECRET = 'ffd6eee985af45e4a75098422d1decbb'; +// 开发商官方网站 +export const domain = 'https://websoft.top'; +// 主节点 +export const SERVER_API_URL = 'https://server.gxwebsoft.com/api'; +// 模块节点 +export const MODULES_API_URL = import.meta.env.VITE_API_URL; +export const THINK_API_URL = import.meta.env.VITE_THINK_URL; +// 文件服务器地址 +export const FILE_SERVER = 'https://file.wsdns.cn'; + +/** + * 以下配置一般不需要修改 + */ +// 接口地址 +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', + '/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 = '8191620da39a742c6f18f010c084c772'; +// 高德地图 安全密钥 +export const MAP_CODE = '7225174a116c1c44e1bd7a177d1787d5'; +// EleAdminPro 授权码, 自带的只能用于演示, 正式项目请更换为自己的授权码 +export const LICENSE_CODE = + 'dk9mcwJyetRWQlxWRiojIzJCLi8mcQ5Wa4ojI0NWZqJWd6ICZpJCL0kjNwl1NnhENahnIvl2cyVmdiwiIiATMuEjI6IibQf0NW=='; +// 缩略图前缀 +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..623c3bc --- /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..1d05c68 --- /dev/null +++ b/src/i18n/use-locale.ts @@ -0,0 +1,35 @@ +/** + * AntDesignVue、EleAdminPro、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'; +// EleAdminPro +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..85f08e5 --- /dev/null +++ b/src/layout/components/header-tools.vue @@ -0,0 +1,306 @@ + + + + + + + + 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..08a4cc7 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,368 @@ + + + + + + + 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/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..89454bf --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,68 @@ +/** + * 路由配置 + */ +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 }; + } +}); + +/** + * 路由守卫 + */ +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) { + const { menus, homePath } = await userStore.fetchUserInfo(); + if (menus) { + router.addRoute(getMenuRoutes(menus, homePath)); + 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/routes.ts b/src/router/routes.ts new file mode 100644 index 0000000..57038bc --- /dev/null +++ b/src/router/routes.ts @@ -0,0 +1,103 @@ +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: '/bszx/pay-cert/:id', + component: () => import('@/views/bszx/bszxPayCert/index.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/chat.ts b/src/store/modules/chat.ts new file mode 100644 index 0000000..b42b27d --- /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.gxwebsoft.com'; + +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/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..ebee743 --- /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: 'side', + // 侧栏菜单风格: 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: '#00B42A', + // 主页的组件名称 + 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..aee0ab0 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,136 @@ +/** + * 登录用户 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; + }); + } + } +}); 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..69820a9 --- /dev/null +++ b/src/styles/component.less @@ -0,0 +1,2 @@ +/** 组件样式 */ +//@input-item: 300px; 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/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/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/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..7d95d72 --- /dev/null +++ b/src/utils/page-tab-util.ts @@ -0,0 +1,254 @@ +/** + * 页签操作封装 + */ +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 from '@/router'; +import { useThemeStore } from '@/store/modules/theme'; +import type { RouteReloadOption } from '@/store/modules/theme'; +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(); + 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/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/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..e847705 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,98 @@ +/** + * 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"; + +const service = axios.create({ + baseURL: API_BASE_URL +}); + +/** + * 添加请求拦截器 + */ +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/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/bsyx/bsyxClass/components/bszxClassEdit.vue b/src/views/bsyx/bsyxClass/components/bszxClassEdit.vue new file mode 100644 index 0000000..f82ef60 --- /dev/null +++ b/src/views/bsyx/bsyxClass/components/bszxClassEdit.vue @@ -0,0 +1,199 @@ + + + + diff --git a/src/views/bsyx/bsyxClass/components/search.vue b/src/views/bsyx/bsyxClass/components/search.vue new file mode 100644 index 0000000..7f935dc --- /dev/null +++ b/src/views/bsyx/bsyxClass/components/search.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/views/bsyx/bsyxClass/index.vue b/src/views/bsyx/bsyxClass/index.vue new file mode 100644 index 0000000..7d558de --- /dev/null +++ b/src/views/bsyx/bsyxClass/index.vue @@ -0,0 +1,237 @@ + + + + + + + diff --git a/src/views/bsyx/bsyxGrade/components/bszxGradeEdit.vue b/src/views/bsyx/bsyxGrade/components/bszxGradeEdit.vue new file mode 100644 index 0000000..1908dd0 --- /dev/null +++ b/src/views/bsyx/bsyxGrade/components/bszxGradeEdit.vue @@ -0,0 +1,164 @@ + + + + diff --git a/src/views/bsyx/bsyxGrade/components/search.vue b/src/views/bsyx/bsyxGrade/components/search.vue new file mode 100644 index 0000000..0e4397c --- /dev/null +++ b/src/views/bsyx/bsyxGrade/components/search.vue @@ -0,0 +1,52 @@ + + + + diff --git a/src/views/bsyx/bsyxGrade/index.vue b/src/views/bsyx/bsyxGrade/index.vue new file mode 100644 index 0000000..4a9a7f3 --- /dev/null +++ b/src/views/bsyx/bsyxGrade/index.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/src/views/bsyx/bsyxOrder/components/bszxPayEdit.vue b/src/views/bsyx/bsyxOrder/components/bszxPayEdit.vue new file mode 100644 index 0000000..876727d --- /dev/null +++ b/src/views/bsyx/bsyxOrder/components/bszxPayEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/bsyx/bsyxOrder/components/orderInfo.vue b/src/views/bsyx/bsyxOrder/components/orderInfo.vue new file mode 100644 index 0000000..6c88446 --- /dev/null +++ b/src/views/bsyx/bsyxOrder/components/orderInfo.vue @@ -0,0 +1,566 @@ + + + + + + diff --git a/src/views/bsyx/bsyxOrder/components/search.vue b/src/views/bsyx/bsyxOrder/components/search.vue new file mode 100644 index 0000000..7346f4c --- /dev/null +++ b/src/views/bsyx/bsyxOrder/components/search.vue @@ -0,0 +1,204 @@ + + + + diff --git a/src/views/bsyx/bsyxOrder/index.vue b/src/views/bsyx/bsyxOrder/index.vue new file mode 100644 index 0000000..669eb00 --- /dev/null +++ b/src/views/bsyx/bsyxOrder/index.vue @@ -0,0 +1,307 @@ + + + + + + + diff --git a/src/views/bsyx/bsyxPay/components/bszxPayEdit.vue b/src/views/bsyx/bsyxPay/components/bszxPayEdit.vue new file mode 100644 index 0000000..876727d --- /dev/null +++ b/src/views/bsyx/bsyxPay/components/bszxPayEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/bsyx/bsyxPay/components/search.vue b/src/views/bsyx/bsyxPay/components/search.vue new file mode 100644 index 0000000..7c9ed1c --- /dev/null +++ b/src/views/bsyx/bsyxPay/components/search.vue @@ -0,0 +1,230 @@ + + + + diff --git a/src/views/bsyx/bsyxPay/index.vue b/src/views/bsyx/bsyxPay/index.vue new file mode 100644 index 0000000..7c9ab08 --- /dev/null +++ b/src/views/bsyx/bsyxPay/index.vue @@ -0,0 +1,336 @@ + + + + + + + diff --git a/src/views/bsyx/bsyxPayRanking/components/bszxPayRankingEdit.vue b/src/views/bsyx/bsyxPayRanking/components/bszxPayRankingEdit.vue new file mode 100644 index 0000000..bf1a27d --- /dev/null +++ b/src/views/bsyx/bsyxPayRanking/components/bszxPayRankingEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/bsyx/bsyxPayRanking/components/search.vue b/src/views/bsyx/bsyxPayRanking/components/search.vue new file mode 100644 index 0000000..c35d491 --- /dev/null +++ b/src/views/bsyx/bsyxPayRanking/components/search.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/bsyx/bsyxPayRanking/index.vue b/src/views/bsyx/bsyxPayRanking/index.vue new file mode 100644 index 0000000..3702292 --- /dev/null +++ b/src/views/bsyx/bsyxPayRanking/index.vue @@ -0,0 +1,223 @@ + + + + + + + diff --git a/src/views/bsyx/extra.vue b/src/views/bsyx/extra.vue new file mode 100644 index 0000000..a178ce5 --- /dev/null +++ b/src/views/bsyx/extra.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/bszx/bszxBm/components/bszxBmEdit.vue b/src/views/bszx/bszxBm/components/bszxBmEdit.vue new file mode 100644 index 0000000..dd3d6de --- /dev/null +++ b/src/views/bszx/bszxBm/components/bszxBmEdit.vue @@ -0,0 +1,283 @@ + + + + diff --git a/src/views/bszx/bszxBm/components/search.vue b/src/views/bszx/bszxBm/components/search.vue new file mode 100644 index 0000000..795cd47 --- /dev/null +++ b/src/views/bszx/bszxBm/components/search.vue @@ -0,0 +1,224 @@ + + + + diff --git a/src/views/bszx/bszxBm/index.vue b/src/views/bszx/bszxBm/index.vue new file mode 100644 index 0000000..55acc41 --- /dev/null +++ b/src/views/bszx/bszxBm/index.vue @@ -0,0 +1,306 @@ + + + + + + + diff --git a/src/views/bszx/bszxBranch/components/bszxBranchEdit.vue b/src/views/bszx/bszxBranch/components/bszxBranchEdit.vue new file mode 100644 index 0000000..ec33edb --- /dev/null +++ b/src/views/bszx/bszxBranch/components/bszxBranchEdit.vue @@ -0,0 +1,179 @@ + + + + diff --git a/src/views/bszx/bszxBranch/components/search.vue b/src/views/bszx/bszxBranch/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/bszx/bszxBranch/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/bszx/bszxBranch/index.vue b/src/views/bszx/bszxBranch/index.vue new file mode 100644 index 0000000..b249064 --- /dev/null +++ b/src/views/bszx/bszxBranch/index.vue @@ -0,0 +1,218 @@ + + + + + + + diff --git a/src/views/bszx/bszxClass/components/bszxClassEdit.vue b/src/views/bszx/bszxClass/components/bszxClassEdit.vue new file mode 100644 index 0000000..0cb6701 --- /dev/null +++ b/src/views/bszx/bszxClass/components/bszxClassEdit.vue @@ -0,0 +1,205 @@ + + + + diff --git a/src/views/bszx/bszxClass/components/search.vue b/src/views/bszx/bszxClass/components/search.vue new file mode 100644 index 0000000..bf43337 --- /dev/null +++ b/src/views/bszx/bszxClass/components/search.vue @@ -0,0 +1,102 @@ + + + + diff --git a/src/views/bszx/bszxClass/index.vue b/src/views/bszx/bszxClass/index.vue new file mode 100644 index 0000000..a65c8a1 --- /dev/null +++ b/src/views/bszx/bszxClass/index.vue @@ -0,0 +1,244 @@ + + + + + + + diff --git a/src/views/bszx/bszxGrade/components/bszxGradeEdit.vue b/src/views/bszx/bszxGrade/components/bszxGradeEdit.vue new file mode 100644 index 0000000..e010c2d --- /dev/null +++ b/src/views/bszx/bszxGrade/components/bszxGradeEdit.vue @@ -0,0 +1,170 @@ + + + + diff --git a/src/views/bszx/bszxGrade/components/search.vue b/src/views/bszx/bszxGrade/components/search.vue new file mode 100644 index 0000000..ff51191 --- /dev/null +++ b/src/views/bszx/bszxGrade/components/search.vue @@ -0,0 +1,56 @@ + + + + diff --git a/src/views/bszx/bszxGrade/index.vue b/src/views/bszx/bszxGrade/index.vue new file mode 100644 index 0000000..79d71b1 --- /dev/null +++ b/src/views/bszx/bszxGrade/index.vue @@ -0,0 +1,237 @@ + + + + + + + diff --git a/src/views/bszx/bszxOrder/components/bszxPayEdit.vue b/src/views/bszx/bszxOrder/components/bszxPayEdit.vue new file mode 100644 index 0000000..876727d --- /dev/null +++ b/src/views/bszx/bszxOrder/components/bszxPayEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/bszx/bszxOrder/components/orderInfo.vue b/src/views/bszx/bszxOrder/components/orderInfo.vue new file mode 100644 index 0000000..6c88446 --- /dev/null +++ b/src/views/bszx/bszxOrder/components/orderInfo.vue @@ -0,0 +1,566 @@ + + + + + + diff --git a/src/views/bszx/bszxOrder/components/search.vue b/src/views/bszx/bszxOrder/components/search.vue new file mode 100644 index 0000000..7346f4c --- /dev/null +++ b/src/views/bszx/bszxOrder/components/search.vue @@ -0,0 +1,204 @@ + + + + diff --git a/src/views/bszx/bszxOrder/index.vue b/src/views/bszx/bszxOrder/index.vue new file mode 100644 index 0000000..669eb00 --- /dev/null +++ b/src/views/bszx/bszxOrder/index.vue @@ -0,0 +1,307 @@ + + + + + + + diff --git a/src/views/bszx/bszxPay/components/bszxPayEdit.vue b/src/views/bszx/bszxPay/components/bszxPayEdit.vue new file mode 100644 index 0000000..876727d --- /dev/null +++ b/src/views/bszx/bszxPay/components/bszxPayEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/bszx/bszxPay/components/search.vue b/src/views/bszx/bszxPay/components/search.vue new file mode 100644 index 0000000..43631a7 --- /dev/null +++ b/src/views/bszx/bszxPay/components/search.vue @@ -0,0 +1,235 @@ + + + + diff --git a/src/views/bszx/bszxPay/index.vue b/src/views/bszx/bszxPay/index.vue new file mode 100644 index 0000000..24e5f4b --- /dev/null +++ b/src/views/bszx/bszxPay/index.vue @@ -0,0 +1,336 @@ + + + + + + + diff --git a/src/views/bszx/bszxPayCert/components/appBszxPayEdit.vue b/src/views/bszx/bszxPayCert/components/appBszxPayEdit.vue new file mode 100644 index 0000000..ff753a4 --- /dev/null +++ b/src/views/bszx/bszxPayCert/components/appBszxPayEdit.vue @@ -0,0 +1,270 @@ + + + + diff --git a/src/views/bszx/bszxPayCert/components/search.vue b/src/views/bszx/bszxPayCert/components/search.vue new file mode 100644 index 0000000..cbbebef --- /dev/null +++ b/src/views/bszx/bszxPayCert/components/search.vue @@ -0,0 +1,141 @@ + + + + diff --git a/src/views/bszx/bszxPayCert/index.vue b/src/views/bszx/bszxPayCert/index.vue new file mode 100644 index 0000000..d7ad56b --- /dev/null +++ b/src/views/bszx/bszxPayCert/index.vue @@ -0,0 +1,112 @@ + + + + + + + diff --git a/src/views/bszx/bszxPayRanking/components/bszxPayRankingEdit.vue b/src/views/bszx/bszxPayRanking/components/bszxPayRankingEdit.vue new file mode 100644 index 0000000..bf1a27d --- /dev/null +++ b/src/views/bszx/bszxPayRanking/components/bszxPayRankingEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/bszx/bszxPayRanking/components/search.vue b/src/views/bszx/bszxPayRanking/components/search.vue new file mode 100644 index 0000000..c35d491 --- /dev/null +++ b/src/views/bszx/bszxPayRanking/components/search.vue @@ -0,0 +1,69 @@ + + + + diff --git a/src/views/bszx/bszxPayRanking/index.vue b/src/views/bszx/bszxPayRanking/index.vue new file mode 100644 index 0000000..cf682e4 --- /dev/null +++ b/src/views/bszx/bszxPayRanking/index.vue @@ -0,0 +1,223 @@ + + + + + + + diff --git a/src/views/bszx/bszxPayRanking2/components/bszxPayRankingEdit.vue b/src/views/bszx/bszxPayRanking2/components/bszxPayRankingEdit.vue new file mode 100644 index 0000000..bf1a27d --- /dev/null +++ b/src/views/bszx/bszxPayRanking2/components/bszxPayRankingEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/bszx/bszxPayRanking2/components/search.vue b/src/views/bszx/bszxPayRanking2/components/search.vue new file mode 100644 index 0000000..e661f3a --- /dev/null +++ b/src/views/bszx/bszxPayRanking2/components/search.vue @@ -0,0 +1,217 @@ + + + + diff --git a/src/views/bszx/bszxPayRanking2/index.vue b/src/views/bszx/bszxPayRanking2/index.vue new file mode 100644 index 0000000..0727a05 --- /dev/null +++ b/src/views/bszx/bszxPayRanking2/index.vue @@ -0,0 +1,226 @@ + + + + + + + diff --git a/src/views/bszx/extra.vue b/src/views/bszx/extra.vue new file mode 100644 index 0000000..d03a691 --- /dev/null +++ b/src/views/bszx/extra.vue @@ -0,0 +1,65 @@ + + + + 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..ee3a8f4 --- /dev/null +++ b/src/views/cms/cmsAd/components/cmsAdEdit.vue @@ -0,0 +1,362 @@ + + + + diff --git a/src/views/cms/cmsAd/components/search.vue b/src/views/cms/cmsAd/components/search.vue new file mode 100644 index 0000000..da95629 --- /dev/null +++ b/src/views/cms/cmsAd/components/search.vue @@ -0,0 +1,84 @@ + + + + diff --git a/src/views/cms/cmsAd/index.vue b/src/views/cms/cmsAd/index.vue new file mode 100644 index 0000000..d4a7ea2 --- /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..5c23456 --- /dev/null +++ b/src/views/cms/cmsAdRecord/components/cmsAdRecordEdit.vue @@ -0,0 +1,220 @@ + + + + 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..7588192 --- /dev/null +++ b/src/views/cms/cmsArticle/components/articleEdit.vue @@ -0,0 +1,1563 @@ + + + + + + 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..5c8d9e2 --- /dev/null +++ b/src/views/cms/cmsArticle/components/search.vue @@ -0,0 +1,327 @@ + + + + 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..c84091d --- /dev/null +++ b/src/views/cms/cmsArticle/index.vue @@ -0,0 +1,468 @@ + + + + + diff --git a/src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue b/src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue new file mode 100644 index 0000000..dca8a21 --- /dev/null +++ b/src/views/cms/cmsArticleCategory/components/cmsArticleCategoryEdit.vue @@ -0,0 +1,312 @@ + + + + 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..81394a4 --- /dev/null +++ b/src/views/cms/cmsArticleComment/components/cmsArticleCommentEdit.vue @@ -0,0 +1,268 @@ + + + + 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/cmsComponents/components/cmsComponentsEdit.vue b/src/views/cms/cmsComponents/components/cmsComponentsEdit.vue new file mode 100644 index 0000000..3735fbd --- /dev/null +++ b/src/views/cms/cmsComponents/components/cmsComponentsEdit.vue @@ -0,0 +1,252 @@ + + + + diff --git a/src/views/cms/cmsComponents/components/search.vue b/src/views/cms/cmsComponents/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsComponents/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsComponents/index.vue b/src/views/cms/cmsComponents/index.vue new file mode 100644 index 0000000..867bcdf --- /dev/null +++ b/src/views/cms/cmsComponents/index.vue @@ -0,0 +1,281 @@ + + + + + + + diff --git a/src/views/cms/cmsDesign/components/cmsDesignEdit.vue b/src/views/cms/cmsDesign/components/cmsDesignEdit.vue new file mode 100644 index 0000000..d7920f5 --- /dev/null +++ b/src/views/cms/cmsDesign/components/cmsDesignEdit.vue @@ -0,0 +1,300 @@ + + + + diff --git a/src/views/cms/cmsDesign/components/search.vue b/src/views/cms/cmsDesign/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDesign/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDesign/index.vue b/src/views/cms/cmsDesign/index.vue new file mode 100644 index 0000000..7a22be1 --- /dev/null +++ b/src/views/cms/cmsDesign/index.vue @@ -0,0 +1,321 @@ + + + + + + + diff --git a/src/views/cms/cmsDesignCollect/components/cmsDesignCollectEdit.vue b/src/views/cms/cmsDesignCollect/components/cmsDesignCollectEdit.vue new file mode 100644 index 0000000..f31b9d7 --- /dev/null +++ b/src/views/cms/cmsDesignCollect/components/cmsDesignCollectEdit.vue @@ -0,0 +1,240 @@ + + + + diff --git a/src/views/cms/cmsDesignCollect/components/search.vue b/src/views/cms/cmsDesignCollect/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDesignCollect/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDesignCollect/index.vue b/src/views/cms/cmsDesignCollect/index.vue new file mode 100644 index 0000000..0eefd46 --- /dev/null +++ b/src/views/cms/cmsDesignCollect/index.vue @@ -0,0 +1,269 @@ + + + + + + + diff --git a/src/views/cms/cmsDesignRecord/components/cmsDesignRecordEdit.vue b/src/views/cms/cmsDesignRecord/components/cmsDesignRecordEdit.vue new file mode 100644 index 0000000..705958d --- /dev/null +++ b/src/views/cms/cmsDesignRecord/components/cmsDesignRecordEdit.vue @@ -0,0 +1,268 @@ + + + + diff --git a/src/views/cms/cmsDesignRecord/components/search.vue b/src/views/cms/cmsDesignRecord/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDesignRecord/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDesignRecord/index.vue b/src/views/cms/cmsDesignRecord/index.vue new file mode 100644 index 0000000..899b4ac --- /dev/null +++ b/src/views/cms/cmsDesignRecord/index.vue @@ -0,0 +1,293 @@ + + + + + + + diff --git a/src/views/cms/cmsDesignSignUp/components/cmsDesignSignUpEdit.vue b/src/views/cms/cmsDesignSignUp/components/cmsDesignSignUpEdit.vue new file mode 100644 index 0000000..87084fe --- /dev/null +++ b/src/views/cms/cmsDesignSignUp/components/cmsDesignSignUpEdit.vue @@ -0,0 +1,244 @@ + + + + diff --git a/src/views/cms/cmsDesignSignUp/components/search.vue b/src/views/cms/cmsDesignSignUp/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDesignSignUp/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDesignSignUp/index.vue b/src/views/cms/cmsDesignSignUp/index.vue new file mode 100644 index 0000000..ba1435a --- /dev/null +++ b/src/views/cms/cmsDesignSignUp/index.vue @@ -0,0 +1,275 @@ + + + + + + + diff --git a/src/views/cms/cmsDocs/components/cmsDocsEdit.vue b/src/views/cms/cmsDocs/components/cmsDocsEdit.vue new file mode 100644 index 0000000..7ec505b --- /dev/null +++ b/src/views/cms/cmsDocs/components/cmsDocsEdit.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/cms/cmsDocs/components/search.vue b/src/views/cms/cmsDocs/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDocs/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDocs/index.vue b/src/views/cms/cmsDocs/index.vue new file mode 100644 index 0000000..d871458 --- /dev/null +++ b/src/views/cms/cmsDocs/index.vue @@ -0,0 +1,287 @@ + + + + + + + diff --git a/src/views/cms/cmsDocsBook/components/cmsDocsBookEdit.vue b/src/views/cms/cmsDocsBook/components/cmsDocsBookEdit.vue new file mode 100644 index 0000000..ce67e66 --- /dev/null +++ b/src/views/cms/cmsDocsBook/components/cmsDocsBookEdit.vue @@ -0,0 +1,228 @@ + + + + diff --git a/src/views/cms/cmsDocsBook/components/search.vue b/src/views/cms/cmsDocsBook/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDocsBook/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDocsBook/index.vue b/src/views/cms/cmsDocsBook/index.vue new file mode 100644 index 0000000..05189d8 --- /dev/null +++ b/src/views/cms/cmsDocsBook/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/cms/cmsDocsContent/components/cmsDocsContentEdit.vue b/src/views/cms/cmsDocsContent/components/cmsDocsContentEdit.vue new file mode 100644 index 0000000..c5d0fea --- /dev/null +++ b/src/views/cms/cmsDocsContent/components/cmsDocsContentEdit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/cmsDocsContent/components/search.vue b/src/views/cms/cmsDocsContent/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsDocsContent/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsDocsContent/index.vue b/src/views/cms/cmsDocsContent/index.vue new file mode 100644 index 0000000..d6b546c --- /dev/null +++ b/src/views/cms/cmsDocsContent/index.vue @@ -0,0 +1,227 @@ + + + + + + + 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..fb3ef24 --- /dev/null +++ b/src/views/cms/cmsLink/components/cmsLinkEdit.vue @@ -0,0 +1,274 @@ + + + + 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..8cb097e --- /dev/null +++ b/src/views/cms/cmsLink/components/search.vue @@ -0,0 +1,97 @@ + + + + diff --git a/src/views/cms/cmsLink/index.vue b/src/views/cms/cmsLink/index.vue new file mode 100644 index 0000000..492bee5 --- /dev/null +++ b/src/views/cms/cmsLink/index.vue @@ -0,0 +1,271 @@ + + + + + + + diff --git a/src/views/cms/cmsModel/components/cmsModelEdit.vue b/src/views/cms/cmsModel/components/cmsModelEdit.vue new file mode 100644 index 0000000..aef45c0 --- /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..8013cb7 --- /dev/null +++ b/src/views/cms/cmsModel/components/search.vue @@ -0,0 +1,44 @@ + + + + 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/cmsMp/components/cmsMpEdit.vue b/src/views/cms/cmsMp/components/cmsMpEdit.vue new file mode 100644 index 0000000..f0e9723 --- /dev/null +++ b/src/views/cms/cmsMp/components/cmsMpEdit.vue @@ -0,0 +1,284 @@ + + + + diff --git a/src/views/cms/cmsMp/components/search.vue b/src/views/cms/cmsMp/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsMp/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsMp/index.vue b/src/views/cms/cmsMp/index.vue new file mode 100644 index 0000000..4c5d6cf --- /dev/null +++ b/src/views/cms/cmsMp/index.vue @@ -0,0 +1,242 @@ + + + + + + + diff --git a/src/views/cms/cmsMpAd/components/mpAdEdit.vue b/src/views/cms/cmsMpAd/components/mpAdEdit.vue new file mode 100644 index 0000000..2b2dd2e --- /dev/null +++ b/src/views/cms/cmsMpAd/components/mpAdEdit.vue @@ -0,0 +1,378 @@ + + + + + diff --git a/src/views/cms/cmsMpAd/components/search.vue b/src/views/cms/cmsMpAd/components/search.vue new file mode 100644 index 0000000..5d09701 --- /dev/null +++ b/src/views/cms/cmsMpAd/components/search.vue @@ -0,0 +1,60 @@ + + + + diff --git a/src/views/cms/cmsMpAd/index.vue b/src/views/cms/cmsMpAd/index.vue new file mode 100644 index 0000000..6f47b3b --- /dev/null +++ b/src/views/cms/cmsMpAd/index.vue @@ -0,0 +1,250 @@ + + + + + + + diff --git a/src/views/cms/cmsMpField/components/cmsMpFieldEdit.vue b/src/views/cms/cmsMpField/components/cmsMpFieldEdit.vue new file mode 100644 index 0000000..d3c09bd --- /dev/null +++ b/src/views/cms/cmsMpField/components/cmsMpFieldEdit.vue @@ -0,0 +1,216 @@ + + + + diff --git a/src/views/cms/cmsMpField/components/search.vue b/src/views/cms/cmsMpField/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsMpField/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsMpField/index.vue b/src/views/cms/cmsMpField/index.vue new file mode 100644 index 0000000..c16de5b --- /dev/null +++ b/src/views/cms/cmsMpField/index.vue @@ -0,0 +1,256 @@ + + + + + + + diff --git a/src/views/cms/cmsMpGroup/components/dict-edit.vue b/src/views/cms/cmsMpGroup/components/dict-edit.vue new file mode 100644 index 0000000..6a8f9ee --- /dev/null +++ b/src/views/cms/cmsMpGroup/components/dict-edit.vue @@ -0,0 +1,178 @@ + + + + diff --git a/src/views/cms/cmsMpGroup/index.vue b/src/views/cms/cmsMpGroup/index.vue new file mode 100644 index 0000000..c2ef55d --- /dev/null +++ b/src/views/cms/cmsMpGroup/index.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/src/views/cms/cmsMpMenu/components/cmsMpMenuEdit.vue b/src/views/cms/cmsMpMenu/components/cmsMpMenuEdit.vue new file mode 100644 index 0000000..40deef9 --- /dev/null +++ b/src/views/cms/cmsMpMenu/components/cmsMpMenuEdit.vue @@ -0,0 +1,391 @@ + + + + diff --git a/src/views/cms/cmsMpMenu/components/search.vue b/src/views/cms/cmsMpMenu/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsMpMenu/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsMpMenu/index.vue b/src/views/cms/cmsMpMenu/index.vue new file mode 100644 index 0000000..fff9097 --- /dev/null +++ b/src/views/cms/cmsMpMenu/index.vue @@ -0,0 +1,389 @@ + + + + + + + diff --git a/src/views/cms/cmsMpOfficialMenu/components/cmsMpOfficialMenuEdit.vue b/src/views/cms/cmsMpOfficialMenu/components/cmsMpOfficialMenuEdit.vue new file mode 100644 index 0000000..127fe49 --- /dev/null +++ b/src/views/cms/cmsMpOfficialMenu/components/cmsMpOfficialMenuEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/cms/cmsMpOfficialMenu/components/search.vue b/src/views/cms/cmsMpOfficialMenu/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsMpOfficialMenu/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsMpOfficialMenu/index.vue b/src/views/cms/cmsMpOfficialMenu/index.vue new file mode 100644 index 0000000..bd7d61d --- /dev/null +++ b/src/views/cms/cmsMpOfficialMenu/index.vue @@ -0,0 +1,257 @@ + + + + + + + diff --git a/src/views/cms/cmsMpPackage/components/dict-edit.vue b/src/views/cms/cmsMpPackage/components/dict-edit.vue new file mode 100644 index 0000000..c354c28 --- /dev/null +++ b/src/views/cms/cmsMpPackage/components/dict-edit.vue @@ -0,0 +1,195 @@ + + + + diff --git a/src/views/cms/cmsMpPackage/index.vue b/src/views/cms/cmsMpPackage/index.vue new file mode 100644 index 0000000..43ff417 --- /dev/null +++ b/src/views/cms/cmsMpPackage/index.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/views/cms/cmsMpPages/components/mpPagesEdit.vue b/src/views/cms/cmsMpPages/components/mpPagesEdit.vue new file mode 100644 index 0000000..c9c34a7 --- /dev/null +++ b/src/views/cms/cmsMpPages/components/mpPagesEdit.vue @@ -0,0 +1,281 @@ + + + + + + diff --git a/src/views/cms/cmsMpPages/components/search.vue b/src/views/cms/cmsMpPages/components/search.vue new file mode 100644 index 0000000..1786ecd --- /dev/null +++ b/src/views/cms/cmsMpPages/components/search.vue @@ -0,0 +1,66 @@ + + + + diff --git a/src/views/cms/cmsMpPages/index.vue b/src/views/cms/cmsMpPages/index.vue new file mode 100644 index 0000000..aad183f --- /dev/null +++ b/src/views/cms/cmsMpPages/index.vue @@ -0,0 +1,345 @@ + + + + + + + diff --git a/src/views/cms/cmsNavigation/components/components.vue b/src/views/cms/cmsNavigation/components/components.vue new file mode 100644 index 0000000..591dc74 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/components.vue @@ -0,0 +1,276 @@ + + + + + + + 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..9d86ce0 --- /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..2186258 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/navigation-edit.vue @@ -0,0 +1,588 @@ + + + + + + diff --git a/src/views/cms/cmsNavigation/components/search.vue b/src/views/cms/cmsNavigation/components/search.vue new file mode 100644 index 0000000..173a7f6 --- /dev/null +++ b/src/views/cms/cmsNavigation/components/search.vue @@ -0,0 +1,87 @@ + + + + diff --git a/src/views/cms/cmsNavigation/index.vue b/src/views/cms/cmsNavigation/index.vue new file mode 100644 index 0000000..82c093b --- /dev/null +++ b/src/views/cms/cmsNavigation/index.vue @@ -0,0 +1,587 @@ + + + + + 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/cmsProduct/components/cmsProductEdit.vue b/src/views/cms/cmsProduct/components/cmsProductEdit.vue new file mode 100644 index 0000000..15ebe15 --- /dev/null +++ b/src/views/cms/cmsProduct/components/cmsProductEdit.vue @@ -0,0 +1,625 @@ + + + + diff --git a/src/views/cms/cmsProduct/components/search.vue b/src/views/cms/cmsProduct/components/search.vue new file mode 100644 index 0000000..471354c --- /dev/null +++ b/src/views/cms/cmsProduct/components/search.vue @@ -0,0 +1,190 @@ + + + + diff --git a/src/views/cms/cmsProduct/components/spec.vue b/src/views/cms/cmsProduct/components/spec.vue new file mode 100644 index 0000000..3707adb --- /dev/null +++ b/src/views/cms/cmsProduct/components/spec.vue @@ -0,0 +1,222 @@ + + + + diff --git a/src/views/cms/cmsProduct/index.vue b/src/views/cms/cmsProduct/index.vue new file mode 100644 index 0000000..b522a3a --- /dev/null +++ b/src/views/cms/cmsProduct/index.vue @@ -0,0 +1,356 @@ + + + + + + + diff --git a/src/views/cms/cmsProductComment/components/cmsProductCommentEdit.vue b/src/views/cms/cmsProductComment/components/cmsProductCommentEdit.vue new file mode 100644 index 0000000..e6c130c --- /dev/null +++ b/src/views/cms/cmsProductComment/components/cmsProductCommentEdit.vue @@ -0,0 +1,182 @@ + + + + diff --git a/src/views/cms/cmsProductComment/components/search.vue b/src/views/cms/cmsProductComment/components/search.vue new file mode 100644 index 0000000..2c83aa1 --- /dev/null +++ b/src/views/cms/cmsProductComment/components/search.vue @@ -0,0 +1,68 @@ + + + + diff --git a/src/views/cms/cmsProductComment/index.vue b/src/views/cms/cmsProductComment/index.vue new file mode 100644 index 0000000..b1c01dd --- /dev/null +++ b/src/views/cms/cmsProductComment/index.vue @@ -0,0 +1,247 @@ + + + + + + + diff --git a/src/views/cms/cmsProductParameter/components/cmsProductParameterEdit.vue b/src/views/cms/cmsProductParameter/components/cmsProductParameterEdit.vue new file mode 100644 index 0000000..98c542e --- /dev/null +++ b/src/views/cms/cmsProductParameter/components/cmsProductParameterEdit.vue @@ -0,0 +1,183 @@ + + + + diff --git a/src/views/cms/cmsProductParameter/components/search.vue b/src/views/cms/cmsProductParameter/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsProductParameter/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsProductParameter/index.vue b/src/views/cms/cmsProductParameter/index.vue new file mode 100644 index 0000000..fa30bad --- /dev/null +++ b/src/views/cms/cmsProductParameter/index.vue @@ -0,0 +1,217 @@ + + + + + + + diff --git a/src/views/cms/cmsProductRecord/components/cmsProductRecordEdit.vue b/src/views/cms/cmsProductRecord/components/cmsProductRecordEdit.vue new file mode 100644 index 0000000..bbc4bfe --- /dev/null +++ b/src/views/cms/cmsProductRecord/components/cmsProductRecordEdit.vue @@ -0,0 +1,204 @@ + + + + diff --git a/src/views/cms/cmsProductRecord/components/search.vue b/src/views/cms/cmsProductRecord/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsProductRecord/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsProductRecord/index.vue b/src/views/cms/cmsProductRecord/index.vue new file mode 100644 index 0000000..a945644 --- /dev/null +++ b/src/views/cms/cmsProductRecord/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/cms/cmsProductSku/components/cmsProductSkuEdit.vue b/src/views/cms/cmsProductSku/components/cmsProductSkuEdit.vue new file mode 100644 index 0000000..7db97c1 --- /dev/null +++ b/src/views/cms/cmsProductSku/components/cmsProductSkuEdit.vue @@ -0,0 +1,278 @@ + + + + diff --git a/src/views/cms/cmsProductSku/components/search.vue b/src/views/cms/cmsProductSku/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsProductSku/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsProductSku/index.vue b/src/views/cms/cmsProductSku/index.vue new file mode 100644 index 0000000..aa05c42 --- /dev/null +++ b/src/views/cms/cmsProductSku/index.vue @@ -0,0 +1,299 @@ + + + + + + + diff --git a/src/views/cms/cmsProductSpec/components/cmsProductSpecEdit.vue b/src/views/cms/cmsProductSpec/components/cmsProductSpecEdit.vue new file mode 100644 index 0000000..0e0d3ac --- /dev/null +++ b/src/views/cms/cmsProductSpec/components/cmsProductSpecEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/cms/cmsProductSpec/components/search.vue b/src/views/cms/cmsProductSpec/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsProductSpec/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsProductSpec/index.vue b/src/views/cms/cmsProductSpec/index.vue new file mode 100644 index 0000000..779b50f --- /dev/null +++ b/src/views/cms/cmsProductSpec/index.vue @@ -0,0 +1,257 @@ + + + + + + + diff --git a/src/views/cms/cmsProductSpecValue/components/cmsProductSpecValueEdit.vue b/src/views/cms/cmsProductSpecValue/components/cmsProductSpecValueEdit.vue new file mode 100644 index 0000000..f1d7203 --- /dev/null +++ b/src/views/cms/cmsProductSpecValue/components/cmsProductSpecValueEdit.vue @@ -0,0 +1,197 @@ + + + + diff --git a/src/views/cms/cmsProductSpecValue/components/search.vue b/src/views/cms/cmsProductSpecValue/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsProductSpecValue/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsProductSpecValue/index.vue b/src/views/cms/cmsProductSpecValue/index.vue new file mode 100644 index 0000000..ac03161 --- /dev/null +++ b/src/views/cms/cmsProductSpecValue/index.vue @@ -0,0 +1,239 @@ + + + + + + + diff --git a/src/views/cms/cmsProductUrl/components/cmsProductUrlEdit.vue b/src/views/cms/cmsProductUrl/components/cmsProductUrlEdit.vue new file mode 100644 index 0000000..101cf1a --- /dev/null +++ b/src/views/cms/cmsProductUrl/components/cmsProductUrlEdit.vue @@ -0,0 +1,222 @@ + + + + diff --git a/src/views/cms/cmsProductUrl/components/search.vue b/src/views/cms/cmsProductUrl/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsProductUrl/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsProductUrl/index.vue b/src/views/cms/cmsProductUrl/index.vue new file mode 100644 index 0000000..eaea2d5 --- /dev/null +++ b/src/views/cms/cmsProductUrl/index.vue @@ -0,0 +1,218 @@ + + + + + + + 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/cmsSpec/components/cmsSpecEdit.vue b/src/views/cms/cmsSpec/components/cmsSpecEdit.vue new file mode 100644 index 0000000..bb77482 --- /dev/null +++ b/src/views/cms/cmsSpec/components/cmsSpecEdit.vue @@ -0,0 +1,220 @@ + + + + diff --git a/src/views/cms/cmsSpec/components/search.vue b/src/views/cms/cmsSpec/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsSpec/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsSpec/index.vue b/src/views/cms/cmsSpec/index.vue new file mode 100644 index 0000000..cfb62de --- /dev/null +++ b/src/views/cms/cmsSpec/index.vue @@ -0,0 +1,231 @@ + + + + + + + diff --git a/src/views/cms/cmsSpecValue/components/cmsSpecValueEdit.vue b/src/views/cms/cmsSpecValue/components/cmsSpecValueEdit.vue new file mode 100644 index 0000000..4acc5bd --- /dev/null +++ b/src/views/cms/cmsSpecValue/components/cmsSpecValueEdit.vue @@ -0,0 +1,197 @@ + + + + diff --git a/src/views/cms/cmsSpecValue/components/search.vue b/src/views/cms/cmsSpecValue/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/cms/cmsSpecValue/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/cms/cmsSpecValue/index.vue b/src/views/cms/cmsSpecValue/index.vue new file mode 100644 index 0000000..1c792bd --- /dev/null +++ b/src/views/cms/cmsSpecValue/index.vue @@ -0,0 +1,239 @@ + + + + + + + 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/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..77f3ec7 --- /dev/null +++ b/src/views/cms/cmsWebsite/components/websiteEdit.vue @@ -0,0 +1,400 @@ + + + + diff --git a/src/views/cms/cmsWebsite/index.vue b/src/views/cms/cmsWebsite/index.vue new file mode 100644 index 0000000..2ce2e06 --- /dev/null +++ b/src/views/cms/cmsWebsite/index.vue @@ -0,0 +1,372 @@ + + + + + + + diff --git a/src/views/cms/cmsWebsiteField/components/cmsWebsiteFieldEdit.vue b/src/views/cms/cmsWebsiteField/components/cmsWebsiteFieldEdit.vue new file mode 100644 index 0000000..3f4b3a3 --- /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..abda9bd --- /dev/null +++ b/src/views/cms/cmsWebsiteField/components/edit.vue @@ -0,0 +1,290 @@ + + + + diff --git a/src/views/cms/cmsWebsiteField/components/search.vue b/src/views/cms/cmsWebsiteField/components/search.vue new file mode 100644 index 0000000..b7fc642 --- /dev/null +++ b/src/views/cms/cmsWebsiteField/components/search.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/views/cms/cmsWebsiteField/index.vue b/src/views/cms/cmsWebsiteField/index.vue new file mode 100644 index 0000000..8a8ac10 --- /dev/null +++ b/src/views/cms/cmsWebsiteField/index.vue @@ -0,0 +1,248 @@ + + + + + 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..e283452 --- /dev/null +++ b/src/views/cms/dashboard/index.vue @@ -0,0 +1,255 @@ + + + + + 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..51e8c67 --- /dev/null +++ b/src/views/cms/dict/index.vue @@ -0,0 +1,214 @@ + + + + + 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..7219757 --- /dev/null +++ b/src/views/cms/photo/dict/index.vue @@ -0,0 +1,213 @@ + + + + + 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..34ce745 --- /dev/null +++ b/src/views/cms/photo/list.vue @@ -0,0 +1,350 @@ + + + + + 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..0919e74 --- /dev/null +++ b/src/views/cms/setting/index.vue @@ -0,0 +1,359 @@ + + + + + + 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/hjm/count/components/hjmFenceEdit.vue b/src/views/hjm/count/components/hjmFenceEdit.vue new file mode 100644 index 0000000..5d3ae2d --- /dev/null +++ b/src/views/hjm/count/components/hjmFenceEdit.vue @@ -0,0 +1,306 @@ + + + + diff --git a/src/views/hjm/count/components/search.vue b/src/views/hjm/count/components/search.vue new file mode 100644 index 0000000..f7509dc --- /dev/null +++ b/src/views/hjm/count/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/hjm/count/index.vue b/src/views/hjm/count/index.vue new file mode 100644 index 0000000..6baa8ee --- /dev/null +++ b/src/views/hjm/count/index.vue @@ -0,0 +1,150 @@ + + + + + + + diff --git a/src/views/hjm/hjmBxLog/components/hjmBxLogEdit.vue b/src/views/hjm/hjmBxLog/components/hjmBxLogEdit.vue new file mode 100644 index 0000000..48c5723 --- /dev/null +++ b/src/views/hjm/hjmBxLog/components/hjmBxLogEdit.vue @@ -0,0 +1,207 @@ + + + + diff --git a/src/views/hjm/hjmBxLog/components/search.vue b/src/views/hjm/hjmBxLog/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/hjm/hjmBxLog/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/hjm/hjmBxLog/index.vue b/src/views/hjm/hjmBxLog/index.vue new file mode 100644 index 0000000..565f266 --- /dev/null +++ b/src/views/hjm/hjmBxLog/index.vue @@ -0,0 +1,252 @@ + + + + + + + diff --git a/src/views/hjm/hjmCar/components/Extra.vue b/src/views/hjm/hjmCar/components/Extra.vue new file mode 100644 index 0000000..ed37d61 --- /dev/null +++ b/src/views/hjm/hjmCar/components/Extra.vue @@ -0,0 +1,54 @@ + + + + diff --git a/src/views/hjm/hjmCar/components/Import.vue b/src/views/hjm/hjmCar/components/Import.vue new file mode 100644 index 0000000..26209a8 --- /dev/null +++ b/src/views/hjm/hjmCar/components/Import.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/views/hjm/hjmCar/components/hjmCarEdit.vue b/src/views/hjm/hjmCar/components/hjmCarEdit.vue new file mode 100644 index 0000000..59800b2 --- /dev/null +++ b/src/views/hjm/hjmCar/components/hjmCarEdit.vue @@ -0,0 +1,429 @@ + + + + diff --git a/src/views/hjm/hjmCar/components/qrcode.vue b/src/views/hjm/hjmCar/components/qrcode.vue new file mode 100644 index 0000000..7fb667b --- /dev/null +++ b/src/views/hjm/hjmCar/components/qrcode.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/views/hjm/hjmCar/components/search.vue b/src/views/hjm/hjmCar/components/search.vue new file mode 100644 index 0000000..f8fab33 --- /dev/null +++ b/src/views/hjm/hjmCar/components/search.vue @@ -0,0 +1,453 @@ + + + + diff --git a/src/views/hjm/hjmCar/index.vue b/src/views/hjm/hjmCar/index.vue new file mode 100644 index 0000000..e9b698b --- /dev/null +++ b/src/views/hjm/hjmCar/index.vue @@ -0,0 +1,410 @@ + + + + + diff --git a/src/views/hjm/hjmChoices/components/hjmChoicesEdit.vue b/src/views/hjm/hjmChoices/components/hjmChoicesEdit.vue new file mode 100644 index 0000000..57e0a95 --- /dev/null +++ b/src/views/hjm/hjmChoices/components/hjmChoicesEdit.vue @@ -0,0 +1,228 @@ + + + + diff --git a/src/views/hjm/hjmChoices/components/search.vue b/src/views/hjm/hjmChoices/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/hjm/hjmChoices/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/hjm/hjmChoices/index.vue b/src/views/hjm/hjmChoices/index.vue new file mode 100644 index 0000000..c70202f --- /dev/null +++ b/src/views/hjm/hjmChoices/index.vue @@ -0,0 +1,263 @@ + + + + + + + diff --git a/src/views/hjm/hjmCourses/components/hjmCoursesEdit.vue b/src/views/hjm/hjmCourses/components/hjmCoursesEdit.vue new file mode 100644 index 0000000..c74f0f8 --- /dev/null +++ b/src/views/hjm/hjmCourses/components/hjmCoursesEdit.vue @@ -0,0 +1,248 @@ + + + + diff --git a/src/views/hjm/hjmCourses/components/search.vue b/src/views/hjm/hjmCourses/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/hjm/hjmCourses/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/hjm/hjmCourses/index.vue b/src/views/hjm/hjmCourses/index.vue new file mode 100644 index 0000000..e42a4f4 --- /dev/null +++ b/src/views/hjm/hjmCourses/index.vue @@ -0,0 +1,256 @@ + + + + + + + diff --git a/src/views/hjm/hjmExamLog/components/hjmExamLogEdit.vue b/src/views/hjm/hjmExamLog/components/hjmExamLogEdit.vue new file mode 100644 index 0000000..023f2c8 --- /dev/null +++ b/src/views/hjm/hjmExamLog/components/hjmExamLogEdit.vue @@ -0,0 +1,228 @@ + + + + diff --git a/src/views/hjm/hjmExamLog/components/search.vue b/src/views/hjm/hjmExamLog/components/search.vue new file mode 100644 index 0000000..0b06bf1 --- /dev/null +++ b/src/views/hjm/hjmExamLog/components/search.vue @@ -0,0 +1,59 @@ + + + + diff --git a/src/views/hjm/hjmExamLog/index.vue b/src/views/hjm/hjmExamLog/index.vue new file mode 100644 index 0000000..86247a8 --- /dev/null +++ b/src/views/hjm/hjmExamLog/index.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/src/views/hjm/hjmFence/components/hjmFenceEdit.vue b/src/views/hjm/hjmFence/components/hjmFenceEdit.vue new file mode 100644 index 0000000..5d3ae2d --- /dev/null +++ b/src/views/hjm/hjmFence/components/hjmFenceEdit.vue @@ -0,0 +1,306 @@ + + + + diff --git a/src/views/hjm/hjmFence/components/search.vue b/src/views/hjm/hjmFence/components/search.vue new file mode 100644 index 0000000..f7509dc --- /dev/null +++ b/src/views/hjm/hjmFence/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/hjm/hjmFence/index.vue b/src/views/hjm/hjmFence/index.vue new file mode 100644 index 0000000..2b24f3f --- /dev/null +++ b/src/views/hjm/hjmFence/index.vue @@ -0,0 +1,272 @@ + + + + + + + diff --git a/src/views/hjm/hjmGpsLog/components/hjmGpsLogEdit.vue b/src/views/hjm/hjmGpsLog/components/hjmGpsLogEdit.vue new file mode 100644 index 0000000..0cb7b68 --- /dev/null +++ b/src/views/hjm/hjmGpsLog/components/hjmGpsLogEdit.vue @@ -0,0 +1,210 @@ + + + + diff --git a/src/views/hjm/hjmGpsLog/components/search.vue b/src/views/hjm/hjmGpsLog/components/search.vue new file mode 100644 index 0000000..339f305 --- /dev/null +++ b/src/views/hjm/hjmGpsLog/components/search.vue @@ -0,0 +1,51 @@ + + + + diff --git a/src/views/hjm/hjmGpsLog/index.vue b/src/views/hjm/hjmGpsLog/index.vue new file mode 100644 index 0000000..345d625 --- /dev/null +++ b/src/views/hjm/hjmGpsLog/index.vue @@ -0,0 +1,261 @@ + + + + + + + diff --git a/src/views/hjm/hjmQuestions/components/Extra.vue b/src/views/hjm/hjmQuestions/components/Extra.vue new file mode 100644 index 0000000..a4b536d --- /dev/null +++ b/src/views/hjm/hjmQuestions/components/Extra.vue @@ -0,0 +1,59 @@ + + + + diff --git a/src/views/hjm/hjmQuestions/components/Import.vue b/src/views/hjm/hjmQuestions/components/Import.vue new file mode 100644 index 0000000..9f343ec --- /dev/null +++ b/src/views/hjm/hjmQuestions/components/Import.vue @@ -0,0 +1,82 @@ + + + + diff --git a/src/views/hjm/hjmQuestions/components/hjmQuestionsEdit.vue b/src/views/hjm/hjmQuestions/components/hjmQuestionsEdit.vue new file mode 100644 index 0000000..1bb3284 --- /dev/null +++ b/src/views/hjm/hjmQuestions/components/hjmQuestionsEdit.vue @@ -0,0 +1,432 @@ + + + + diff --git a/src/views/hjm/hjmQuestions/components/search.vue b/src/views/hjm/hjmQuestions/components/search.vue new file mode 100644 index 0000000..10a6ff0 --- /dev/null +++ b/src/views/hjm/hjmQuestions/components/search.vue @@ -0,0 +1,98 @@ + + + + diff --git a/src/views/hjm/hjmQuestions/index.vue b/src/views/hjm/hjmQuestions/index.vue new file mode 100644 index 0000000..7ef2f81 --- /dev/null +++ b/src/views/hjm/hjmQuestions/index.vue @@ -0,0 +1,303 @@ + + + + + + + diff --git a/src/views/hjm/hjmViolation/components/hjmViolationEdit.vue b/src/views/hjm/hjmViolation/components/hjmViolationEdit.vue new file mode 100644 index 0000000..1e6e9ba --- /dev/null +++ b/src/views/hjm/hjmViolation/components/hjmViolationEdit.vue @@ -0,0 +1,214 @@ + + + + diff --git a/src/views/hjm/hjmViolation/components/search.vue b/src/views/hjm/hjmViolation/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/hjm/hjmViolation/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/hjm/hjmViolation/index.vue b/src/views/hjm/hjmViolation/index.vue new file mode 100644 index 0000000..16f27ab --- /dev/null +++ b/src/views/hjm/hjmViolation/index.vue @@ -0,0 +1,243 @@ + + + + + + + diff --git a/src/views/hjm/staff/components/org-edit.vue b/src/views/hjm/staff/components/org-edit.vue new file mode 100644 index 0000000..101b98e --- /dev/null +++ b/src/views/hjm/staff/components/org-edit.vue @@ -0,0 +1,229 @@ + + + + diff --git a/src/views/hjm/staff/components/org-select.vue b/src/views/hjm/staff/components/org-select.vue new file mode 100644 index 0000000..587424f --- /dev/null +++ b/src/views/hjm/staff/components/org-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/hjm/staff/components/org-type-select.vue b/src/views/hjm/staff/components/org-type-select.vue new file mode 100644 index 0000000..c969d57 --- /dev/null +++ b/src/views/hjm/staff/components/org-type-select.vue @@ -0,0 +1,39 @@ + + + + diff --git a/src/views/hjm/staff/components/org-user-edit.vue b/src/views/hjm/staff/components/org-user-edit.vue new file mode 100644 index 0000000..478f648 --- /dev/null +++ b/src/views/hjm/staff/components/org-user-edit.vue @@ -0,0 +1,509 @@ + + + + diff --git a/src/views/hjm/staff/components/org-user-list.vue b/src/views/hjm/staff/components/org-user-list.vue new file mode 100644 index 0000000..6edc31e --- /dev/null +++ b/src/views/hjm/staff/components/org-user-list.vue @@ -0,0 +1,199 @@ + + + diff --git a/src/views/hjm/staff/components/org-user-search.vue b/src/views/hjm/staff/components/org-user-search.vue new file mode 100644 index 0000000..b24a88e --- /dev/null +++ b/src/views/hjm/staff/components/org-user-search.vue @@ -0,0 +1,31 @@ + + + + diff --git a/src/views/hjm/staff/components/role-select.vue b/src/views/hjm/staff/components/role-select.vue new file mode 100644 index 0000000..04534b9 --- /dev/null +++ b/src/views/hjm/staff/components/role-select.vue @@ -0,0 +1,71 @@ + + + + diff --git a/src/views/hjm/staff/components/sex-select.vue b/src/views/hjm/staff/components/sex-select.vue new file mode 100644 index 0000000..1497ad5 --- /dev/null +++ b/src/views/hjm/staff/components/sex-select.vue @@ -0,0 +1,45 @@ + + + + diff --git a/src/views/hjm/staff/index.vue b/src/views/hjm/staff/index.vue new file mode 100644 index 0000000..16a34e0 --- /dev/null +++ b/src/views/hjm/staff/index.vue @@ -0,0 +1,213 @@ + + + + + + + diff --git a/src/views/hjm/userAlert/components/Edit.vue b/src/views/hjm/userAlert/components/Edit.vue new file mode 100644 index 0000000..a9c1147 --- /dev/null +++ b/src/views/hjm/userAlert/components/Edit.vue @@ -0,0 +1,149 @@ + + + + diff --git a/src/views/hjm/userAlert/components/search.vue b/src/views/hjm/userAlert/components/search.vue new file mode 100644 index 0000000..f5b8521 --- /dev/null +++ b/src/views/hjm/userAlert/components/search.vue @@ -0,0 +1,36 @@ + + + + diff --git a/src/views/hjm/userAlert/index.vue b/src/views/hjm/userAlert/index.vue new file mode 100644 index 0000000..fe1eacc --- /dev/null +++ b/src/views/hjm/userAlert/index.vue @@ -0,0 +1,171 @@ + + + + + + + diff --git a/src/views/hjm/userVerify/components/Extra.vue b/src/views/hjm/userVerify/components/Extra.vue new file mode 100644 index 0000000..56181bd --- /dev/null +++ b/src/views/hjm/userVerify/components/Extra.vue @@ -0,0 +1,55 @@ + + + + diff --git a/src/views/hjm/userVerify/components/search.vue b/src/views/hjm/userVerify/components/search.vue new file mode 100644 index 0000000..54511b3 --- /dev/null +++ b/src/views/hjm/userVerify/components/search.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/hjm/userVerify/components/userVerifyEdit.vue b/src/views/hjm/userVerify/components/userVerifyEdit.vue new file mode 100644 index 0000000..f279ad5 --- /dev/null +++ b/src/views/hjm/userVerify/components/userVerifyEdit.vue @@ -0,0 +1,352 @@ + + + + diff --git a/src/views/hjm/userVerify/index.vue b/src/views/hjm/userVerify/index.vue new file mode 100644 index 0000000..2d5c1ca --- /dev/null +++ b/src/views/hjm/userVerify/index.vue @@ -0,0 +1,279 @@ + + + + + + + diff --git a/src/views/hjm/userVerify2/components/search.vue b/src/views/hjm/userVerify2/components/search.vue new file mode 100644 index 0000000..4194d41 --- /dev/null +++ b/src/views/hjm/userVerify2/components/search.vue @@ -0,0 +1,67 @@ + + + + diff --git a/src/views/hjm/userVerify2/components/userVerifyEdit.vue b/src/views/hjm/userVerify2/components/userVerifyEdit.vue new file mode 100644 index 0000000..184a622 --- /dev/null +++ b/src/views/hjm/userVerify2/components/userVerifyEdit.vue @@ -0,0 +1,374 @@ + + + + diff --git a/src/views/hjm/userVerify2/index.vue b/src/views/hjm/userVerify2/index.vue new file mode 100644 index 0000000..0ac72f6 --- /dev/null +++ b/src/views/hjm/userVerify2/index.vue @@ -0,0 +1,273 @@ + + + + + + + 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..946f6ef --- /dev/null +++ b/src/views/passport/login/index.vue @@ -0,0 +1,750 @@ + + + + + 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/register/index.vue b/src/views/passport/register/index.vue new file mode 100644 index 0000000..eca38fd --- /dev/null +++ b/src/views/passport/register/index.vue @@ -0,0 +1,804 @@ + + + + + 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/shopGoods/components/extra.vue b/src/views/shop/shopGoods/components/extra.vue new file mode 100644 index 0000000..7708c0d --- /dev/null +++ b/src/views/shop/shopGoods/components/extra.vue @@ -0,0 +1,41 @@ + + + + diff --git a/src/views/shop/shopGoods/components/search.vue b/src/views/shop/shopGoods/components/search.vue new file mode 100644 index 0000000..5ef63dd --- /dev/null +++ b/src/views/shop/shopGoods/components/search.vue @@ -0,0 +1,141 @@ + + + + diff --git a/src/views/shop/shopGoods/components/shopGoodsEdit.vue b/src/views/shop/shopGoods/components/shopGoodsEdit.vue new file mode 100644 index 0000000..4005941 --- /dev/null +++ b/src/views/shop/shopGoods/components/shopGoodsEdit.vue @@ -0,0 +1,1944 @@ + + + + diff --git a/src/views/shop/shopGoods/index.vue b/src/views/shop/shopGoods/index.vue new file mode 100644 index 0000000..7d0c01d --- /dev/null +++ b/src/views/shop/shopGoods/index.vue @@ -0,0 +1,319 @@ + + + + + + + diff --git a/src/views/shop/shopOrder/components/bszxPayEdit.vue b/src/views/shop/shopOrder/components/bszxPayEdit.vue new file mode 100644 index 0000000..876727d --- /dev/null +++ b/src/views/shop/shopOrder/components/bszxPayEdit.vue @@ -0,0 +1,249 @@ + + + + diff --git a/src/views/shop/shopOrder/components/orderInfo.vue b/src/views/shop/shopOrder/components/orderInfo.vue new file mode 100644 index 0000000..42a849b --- /dev/null +++ b/src/views/shop/shopOrder/components/orderInfo.vue @@ -0,0 +1,572 @@ + + + + + + diff --git a/src/views/shop/shopOrder/components/search.vue b/src/views/shop/shopOrder/components/search.vue new file mode 100644 index 0000000..7346f4c --- /dev/null +++ b/src/views/shop/shopOrder/components/search.vue @@ -0,0 +1,204 @@ + + + + diff --git a/src/views/shop/shopOrder/index.vue b/src/views/shop/shopOrder/index.vue new file mode 100644 index 0000000..a260a15 --- /dev/null +++ b/src/views/shop/shopOrder/index.vue @@ -0,0 +1,307 @@ + + + + + + + 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..d862530 --- /dev/null +++ b/src/views/shop/shopUserReferee/components/shopUserRefereeEdit.vue @@ -0,0 +1,211 @@ + + + + diff --git a/src/views/shop/shopUserReferee/index.vue b/src/views/shop/shopUserReferee/index.vue new file mode 100644 index 0000000..ad50570 --- /dev/null +++ b/src/views/shop/shopUserReferee/index.vue @@ -0,0 +1,251 @@ + + + + + + + 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..9807008 --- /dev/null +++ b/src/views/system/access-key/components/accesskey-edit.vue @@ -0,0 +1,233 @@ + + + + + + diff --git a/src/views/system/access-key/index.vue b/src/views/system/access-key/index.vue new file mode 100644 index 0000000..eb87902 --- /dev/null +++ b/src/views/system/access-key/index.vue @@ -0,0 +1,148 @@ + + + + + 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..0d8cbcb --- /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..ea277c1 --- /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..c894024 --- /dev/null +++ b/src/views/system/chatConversation/components/chatConversationEdit.vue @@ -0,0 +1,230 @@ + + + + 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..efd5289 --- /dev/null +++ b/src/views/system/chatMessage/components/chatMessageEdit.vue @@ -0,0 +1,259 @@ + + + + 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/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..48039e0 --- /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/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.vue b/src/views/system/menu/components/menu-search.vue new file mode 100644 index 0000000..81afbf5 --- /dev/null +++ b/src/views/system/menu/components/menu-search.vue @@ -0,0 +1,106 @@ + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..cc9dd52 --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,393 @@ + + + + + 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..c38c5ee --- /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..7f6c328 --- /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..09cb99c --- /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..04534b9 --- /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..0d8cbcb --- /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..2487376 --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,571 @@ + + + + + + + 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..d3523c4 --- /dev/null +++ b/src/views/system/version/index.vue @@ -0,0 +1,239 @@ + + + + + + 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..65d52d7 --- /dev/null +++ b/src/views/user/chat-conversation/components/chatConversationEdit.vue @@ -0,0 +1,225 @@ + + + + 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..8b11435 --- /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..230bf57 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,79 @@ +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'; + +export default defineConfig(({ command }) => { + const isBuild = command === 'build'; + return { + // 在这里增加 base 写子路径 + base: '/', + resolve: { + alias: { + '@/': resolve('src') + '/', + 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js' + } + }, + // server: { + // proxy: { + // '/api': 'https://server.gxwebsoft.com' + // } + // }, + plugins: [ + vue(), + // 组件按需引入 + ViteComponents({ + dts: false, + resolvers: [ + AntDesignVueResolver({ + importStyle: isBuild ? 'less' : false + }), + EleAdminResolver({ + importStyle: isBuild ? 'less' : false + }) + ], + directoryAsNamespace: true + }), + // gzip 压缩 + ViteCompression({ + disable: !isBuild, + threshold: 10240, + algorithm: 'gzip', + ext: '.gz' + }) + ], + 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' + ] + }, + build: { + target: 'chrome63', + chunkSizeWarningLimit: 2000 + } + }; +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..6c88674 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,6869 @@ +# 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.npmmirror.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + +"@amap/amap-jsapi-loader@^1.0.1": + 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@^6.0.0": + 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" + +"@ant-design/icons-svg@^4.2.1": + 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@^6.1.0": + 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" + +"@antfu/utils@^0.5.2": + version "0.5.2" + resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz" + integrity sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA== + +"@antv/component@^2.0.0": + version "2.0.1" + resolved "https://registry.npmmirror.com/@antv/component/-/component-2.0.1.tgz" + integrity sha512-VldsSv2O/JNjZYenFIzmtLeC+KD2RcpNARsCLKpi04Iz26joQ3uMtnwxM5W4bd/SCJYKp+eeQeMHMAbwaNR1pw== + dependencies: + "@antv/g" "^6.0.5" + "@antv/scale" "^0.4.3" + "@antv/util" "^3.3.5" + svg-path-parser "^1.1.0" + +"@antv/coord@^0.4.6": + version "0.4.7" + resolved "https://registry.npmmirror.com/@antv/coord/-/coord-0.4.7.tgz" + 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.npmmirror.com/@antv/event-emitter/-/event-emitter-0.1.3.tgz" + integrity sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg== + +"@antv/g-camera-api@2.0.9": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + "@antv/util" "^3.3.5" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-canvas@^2.0.0": + version "2.0.8" + resolved "https://registry.npmmirror.com/@antv/g-canvas/-/g-canvas-2.0.8.tgz" + integrity sha512-XyzFGq3xqIRxEnIIU310FyOyuNAuUKyh93plgkRkF2dOCpS3RAVQRRxD1vnG47NShwjfo3Pn0qiIKTSyxGXQZg== + 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" + +"@antv/g-dom-mutation-observer-api@2.0.6": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + +"@antv/g-lite@2.0.6": + version "2.0.6" + resolved "https://registry.npmmirror.com/@antv/g-lite/-/g-lite-2.0.6.tgz" + integrity sha512-7lYAtxrNHqtQIsBYCub6HLrMNm0828dzBed9Kge1hZtLbTL0weCmZBq/te/0lpdNDVeP/XqwYmT6toIi3sc0Ew== + 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" + +"@antv/g-math@3.0.0": + 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== + dependencies: + "@antv/util" "^3.3.5" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-plugin-canvas-path-generator@2.0.6": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + "@antv/g-math" "3.0.0" + "@antv/util" "^3.3.5" + tslib "^2.5.3" + +"@antv/g-plugin-canvas-picker@2.0.7": + 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== + 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" + +"@antv/g-plugin-canvas-renderer@2.0.7": + 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== + 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" + +"@antv/g-plugin-dom-interaction@2.0.6": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + tslib "^2.5.3" + +"@antv/g-plugin-dragndrop@^2.0.0": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + "@antv/util" "^3.3.5" + tslib "^2.5.3" + +"@antv/g-plugin-html-renderer@2.0.7": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + "@antv/util" "^3.3.5" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-plugin-image-loader@2.0.6": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + "@antv/util" "^3.3.5" + gl-matrix "^3.4.3" + tslib "^2.5.3" + +"@antv/g-web-animations-api@2.0.7": + 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== + dependencies: + "@antv/g-lite" "2.0.6" + "@antv/util" "^3.3.5" + tslib "^2.5.3" + +"@antv/g@^6.0.0", "@antv/g@^6.0.5": + version "6.0.10" + resolved "https://registry.npmmirror.com/@antv/g/-/g-6.0.10.tgz" + integrity sha512-VH45ddgHQhEzWZ4aDpHHcu6f77vIVKhfEMgHZzUL9bnMTmJ2P4qf0DtarhP6BKvxcHlFFpJcSyYSxTurNHvW5w== + 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" + +"@antv/g2@^5.1.22": + version "5.2.1" + resolved "https://registry.npmmirror.com/@antv/g2/-/g2-5.2.1.tgz" + integrity sha512-Kb3e1ohkLxGEd0+yjc/2ff2hAzIUzUoSR+PP0riI1Pp+c6CobLiK68ji6aoCmfndQMDknvLYAZHSOL8OXc7ChA== + 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" + +"@antv/path-util@^3.0.1": + version "3.0.1" + resolved "https://registry.npmmirror.com/@antv/path-util/-/path-util-3.0.1.tgz" + integrity sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q== + dependencies: + gl-matrix "^3.1.0" + lodash-es "^4.17.21" + tslib "^2.0.3" + +"@antv/scale@^0.4.12", "@antv/scale@^0.4.3": + version "0.4.16" + resolved "https://registry.npmmirror.com/@antv/scale/-/scale-0.4.16.tgz" + 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.npmmirror.com/@antv/util/-/util-2.0.17.tgz" + integrity sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q== + dependencies: + csstype "^3.0.8" + tslib "^2.0.3" + +"@antv/util@^3.3.5", "@antv/util@^3.3.7": + version "3.3.7" + resolved "https://registry.npmmirror.com/@antv/util/-/util-3.3.7.tgz" + integrity sha512-qqPg7rIPCsJyl7N56jAC25v/99mJ3ApVkgBsGijhiWrEeKvzXBPk1r5P77Pm9nCljpnn+hH8Z3t5AivbEoTJMg== + dependencies: + fast-deep-equal "^3.1.3" + gl-matrix "^3.3.0" + tslib "^2.3.1" + +"@babel/helper-string-parser@^7.25.9": + 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@^7.25.9": + 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@^7.15.8", "@babel/parser@^7.25.3": + version "7.26.9" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.9.tgz" + integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A== + dependencies: + "@babel/types" "^7.26.9" + +"@babel/runtime@^7.10.5": + 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" + +"@babel/standalone@^7.18.12": + version "7.18.13" + resolved "https://registry.npmmirror.com/@babel/standalone/-/standalone-7.18.13.tgz" + integrity sha512-5hjvvFkaXyfQri+s4CAZtx6FTKclfTNd2QN2RwgzCVJhnYYgKh4YFBCnNJSxurzvpSKD2NmpCkoWAkMc+j9y+g== + +"@babel/types@^7.26.9": + 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== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + +"@bytemd/plugin-gfm@^1.17.2": + 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" + +"@bytemd/plugin-highlight-ssr@^1.20.2": + 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" + +"@bytemd/plugin-highlight@^1.17.4": + 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" + +"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1": + version "6.18.6" + resolved "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.6.tgz" + 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": + version "6.8.0" + resolved "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.8.0.tgz" + integrity sha512-q8VPEFaEP4ikSlt6ZxjB3zW72+7osfAYW9i8Zu943uqbKuz6utc1+F170hyLUCUltXORjQXRyYQNfkckzA/bPQ== + 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.3" + resolved "https://registry.npmmirror.com/@codemirror/lang-angular/-/lang-angular-0.1.3.tgz" + integrity sha512-xgeWGJQQl1LyStvndWtruUvb4SnBZDAu/gvFH/ZU+c0W25tQR8e5hq7WTwiIY2dNxnf+49mRiGI/9yxIwB6f5w== + 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.2" + resolved "https://registry.npmmirror.com/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz" + integrity sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg== + 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.npmmirror.com/@codemirror/lang-css/-/lang-css-6.3.1.tgz" + 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.npmmirror.com/@codemirror/lang-go/-/lang-go-6.0.1.tgz" + 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.npmmirror.com/@codemirror/lang-html/-/lang-html-6.4.9.tgz" + 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.1" + resolved "https://registry.npmmirror.com/@codemirror/lang-java/-/lang-java-6.0.1.tgz" + integrity sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg== + 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.3" + resolved "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.3.tgz" + integrity sha512-8PR3vIWg7pSu7ur8A07pGiYHgy3hHj+mRYRCSG8q+mPIrl0F02rgpGv+DsQTHRTc30rydOsf5PZ7yjKFg2Ackw== + 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.1" + resolved "https://registry.npmmirror.com/@codemirror/lang-json/-/lang-json-6.0.1.tgz" + integrity sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/json" "^1.0.0" + +"@codemirror/lang-less@^6.0.0": + version "6.0.2" + resolved "https://registry.npmmirror.com/@codemirror/lang-less/-/lang-less-6.0.2.tgz" + 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.2.2" + resolved "https://registry.npmmirror.com/@codemirror/lang-liquid/-/lang-liquid-6.2.2.tgz" + integrity sha512-7Dm841fk37+JQW6j2rI1/uGkJyESrjzyhiIkaLjbbR0U6aFFQvMrJn35WxQreRMADMhzkyVkZM4467OR7GR8nQ== + 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.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== + 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.1" + resolved "https://registry.npmmirror.com/@codemirror/lang-php/-/lang-php-6.0.1.tgz" + integrity sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA== + 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.1.7" + resolved "https://registry.npmmirror.com/@codemirror/lang-python/-/lang-python-6.1.7.tgz" + integrity sha512-mZnFTsL4lW5p9ch8uKNKeRU3xGGxr1QpESLilfON2E3fQzOa/OygEMkaDvERvXDJWJA9U9oN/D4w0ZuUzNO4+g== + 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.1" + resolved "https://registry.npmmirror.com/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz" + integrity sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ== + dependencies: + "@codemirror/language" "^6.0.0" + "@lezer/rust" "^1.0.0" + +"@codemirror/lang-sass@^6.0.0": + version "6.0.2" + resolved "https://registry.npmmirror.com/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz" + 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.8.0" + resolved "https://registry.npmmirror.com/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz" + integrity sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg== + 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.npmmirror.com/@codemirror/lang-vue/-/lang-vue-0.1.3.tgz" + 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.npmmirror.com/@codemirror/lang-wast/-/lang-wast-6.0.2.tgz" + 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.npmmirror.com/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz" + 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.npmmirror.com/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz" + 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.npmmirror.com/@codemirror/language-data/-/language-data-6.5.1.tgz" + 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.3.0", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0": + version "6.10.8" + resolved "https://registry.npmmirror.com/@codemirror/language/-/language-6.10.8.tgz" + integrity sha512-wcP8XPPhDH2vTqf181U8MbZnW+tDyPYy0UzVOa+oHORjyT+mhhom9vBd7dApJwoDz9Nb/a8kHjJIsuA/t8vNFw== + 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.4.3" + resolved "https://registry.npmmirror.com/@codemirror/legacy-modes/-/legacy-modes-6.4.3.tgz" + integrity sha512-s1g+q4bil8Cs4O+ueIiKIhz9MQOGcRyxJglma8BYIWc/oEJLo13S3LYSWKaqhKwXGgt1GgZ66hCploHZD9Sstw== + dependencies: + "@codemirror/language" "^6.0.0" + +"@codemirror/lint@^6.0.0": + version "6.8.4" + resolved "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz" + integrity sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A== + dependencies: + "@codemirror/state" "^6.0.0" + "@codemirror/view" "^6.35.0" + crelt "^1.0.5" + +"@codemirror/search@^6.0.0": + version "6.5.10" + resolved "https://registry.npmmirror.com/@codemirror/search/-/search-6.5.10.tgz" + integrity sha512-RMdPdmsrUf53pb2VwflKGHEe1XVM07hI7vV2ntgw1dmqhimpatSJKva4VA9h4TLUDOD4EIF02201oZurpnEFsg== + 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": + version "6.5.2" + resolved "https://registry.npmmirror.com/@codemirror/state/-/state-6.5.2.tgz" + 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": + version "6.36.4" + resolved "https://registry.npmmirror.com/@codemirror/view/-/view-6.36.4.tgz" + integrity sha512-ZQ0V5ovw/miKEXTvjgzRyjnrk9TwriUB1k4R5p7uNnHR9Hus+D1SXHGdJshijEzPFjU25xea/7nhIeSqYFKdbA== + dependencies: + "@codemirror/state" "^6.5.0" + style-mod "^4.1.0" + w3c-keyname "^2.2.4" + +"@ctrl/tinycolor@^3.4.0": + version "3.4.1" + resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz" + integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw== + +"@eslint/eslintrc@^1.3.1": + version "1.3.1" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.1.tgz" + integrity sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ== + 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" + +"@fast-csv/format@4.3.5": + 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" + +"@fast-csv/parse@4.3.6": + 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" + +"@humanwhocodes/config-array@^0.10.4": + version "0.10.4" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz" + integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/gitignore-to-minimatch@^1.0.2": + 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== + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^1.2.1": + 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== + +"@icon-park/svg@^1.4.2": + 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@9.2.2": + 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" + +"@intlify/devtools-if@9.2.2": + 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" + +"@intlify/message-compiler@9.2.2": + 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" + +"@intlify/shared@9.2.2": + version "9.2.2" + resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz" + integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q== + +"@intlify/vue-devtools@9.2.2": + 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" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz" + 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.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.npmmirror.com/@jridgewell/source-map/-/source-map-0.3.2.tgz" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.5.0": + 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@^0.3.9": + version "0.3.15" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz" + integrity sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@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.npmmirror.com/@lezer/common/-/common-1.2.3.tgz" + integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA== + +"@lezer/cpp@^1.0.0": + version "1.1.2" + resolved "https://registry.npmmirror.com/@lezer/cpp/-/cpp-1.1.2.tgz" + integrity sha512-macwKtyeUO0EW86r3xWQCzOV9/CF8imJLpJlPv3sDY57cPGeUZ8gXWOWNlJr52TVByMV3PayFQCA5SHEERDmVQ== + 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.1.10" + resolved "https://registry.npmmirror.com/@lezer/css/-/css-1.1.10.tgz" + integrity sha512-V5/89eDapjeAkWPBpWEfQjZ1Hag3aYUUJOL8213X0dFRuXJ4BXa5NKl9USzOnaLod4AOpmVCkduir2oKwZYZtg== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/go@^1.0.0": + version "1.0.0" + resolved "https://registry.npmmirror.com/@lezer/go/-/go-1.0.0.tgz" + integrity sha512-co9JfT3QqX1YkrMmourYw2Z8meGC50Ko4d54QEcQbEYpvdUvN4yb0NBZdn/9ertgvjsySxHsKzH3lbm3vqJ4Jw== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.0.0" + +"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3", "@lezer/highlight@^1.2.0": + version "1.2.1" + resolved "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz" + integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/html@^1.3.0": + version "1.3.10" + resolved "https://registry.npmmirror.com/@lezer/html/-/html-1.3.10.tgz" + 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.npmmirror.com/@lezer/java/-/java-1.1.3.tgz" + 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.4.21" + resolved "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.21.tgz" + integrity sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ== + 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.npmmirror.com/@lezer/json/-/json-1.0.3.tgz" + 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.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz" + integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA== + dependencies: + "@lezer/common" "^1.0.0" + +"@lezer/markdown@^1.0.0": + version "1.4.2" + resolved "https://registry.npmmirror.com/@lezer/markdown/-/markdown-1.4.2.tgz" + integrity sha512-iYewCigG/517D0xJPQd7RGaCjZAFwROiH8T9h7OTtz0bRVtkxzFhGBFJ9JGKgBBs4uuo1cvxzyQ5iKhDLMcLUQ== + dependencies: + "@lezer/common" "^1.0.0" + "@lezer/highlight" "^1.0.0" + +"@lezer/php@^1.0.0": + version "1.0.2" + resolved "https://registry.npmmirror.com/@lezer/php/-/php-1.0.2.tgz" + integrity sha512-GN7BnqtGRpFyeoKSEqxvGvhJQiI4zkgmYnDk/JIyc7H7Ifc1tkPnUn/R2R8meH3h/aBf5rzjvU8ZQoyiNDtDrA== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.1.0" + +"@lezer/python@^1.1.4": + version "1.1.15" + resolved "https://registry.npmmirror.com/@lezer/python/-/python-1.1.15.tgz" + integrity sha512-aVQ43m2zk4FZYedCqL0KHPEUsqZOrmAvRhkhHlVPnDD1HODDyyQv5BRIuod4DadkgBEZd53vQOtXTonNbEgjrQ== + 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.npmmirror.com/@lezer/rust/-/rust-1.0.2.tgz" + 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.0.7" + resolved "https://registry.npmmirror.com/@lezer/sass/-/sass-1.0.7.tgz" + integrity sha512-8HLlOkuX/SMHOggI2DAsXUw38TuURe+3eQ5hiuk9QmYOUyC55B1dYEIMkav5A4IELVaW4e1T4P9WRiI5ka4mdw== + 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.npmmirror.com/@lezer/xml/-/xml-1.0.6.tgz" + 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.npmmirror.com/@lezer/yaml/-/yaml-1.0.3.tgz" + integrity sha512-GuBLekbw9jDBDhGur82nuwkxKQ+a3W5H0GfaAthDXcAu+XdpS43VlnxA9E9hllkpSP5ellRDKjLLj7Lu9Wr6xA== + dependencies: + "@lezer/common" "^1.2.0" + "@lezer/highlight" "^1.0.0" + "@lezer/lr" "^1.4.0" + +"@ljharb/resumer@~0.0.1": + version "0.0.1" + resolved "https://registry.npmmirror.com/@ljharb/resumer/-/resumer-0.0.1.tgz" + integrity sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw== + dependencies: + "@ljharb/through" "^2.3.9" + +"@ljharb/through@^2.3.9", "@ljharb/through@~2.3.9": + version "2.3.13" + resolved "https://registry.npmmirror.com/@ljharb/through/-/through-2.3.13.tgz" + integrity sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ== + dependencies: + call-bind "^1.0.7" + +"@marijn/find-cluster-break@^1.0.0": + 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@2.1.5": + version "2.1.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + version "2.0.5" + resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + 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.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@popperjs/core@^2.11.5", "@popperjs/core@^2.9.0": + version "2.11.6" + resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.6.tgz" + integrity sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw== + +"@rollup/pluginutils@^4.2.1": + version "4.2.1" + resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@simonwep/pickr@~1.8.0": + 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" + +"@socket.io/component-emitter@~3.1.0": + 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@^5.0.0", "@types/codemirror@^5.60.5": + version "5.60.5" + resolved "https://registry.npmmirror.com/@types/codemirror/-/codemirror-5.60.5.tgz" + integrity sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg== + dependencies: + "@types/tern" "*" + +"@types/debug@^4.0.0": + version "4.1.7" + resolved "https://registry.npmmirror.com/@types/debug/-/debug-4.1.7.tgz" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + dependencies: + "@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@^2.0.7": + 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== + +"@types/hast@^2.0.0", "@types/hast@^2.3.4": + 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" "*" + +"@types/json-schema@^7.0.9": + 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== + +"@types/linkify-it@^5": + 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-es@^4.17.6": + 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" "*" + +"@types/lodash@*": + version "4.14.184" + resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.184.tgz" + integrity sha512-RoZphVtHbxPZizt4IcILciSWiC6dcn+eZ8oX9IWEYfDMcocdd42f7NPI6fQj+6zI8y4E0L7gu2pcZKLGTRaV9Q== + +"@types/markdown-it@^14.0.1": + 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== + dependencies: + "@types/linkify-it" "^5" + "@types/mdurl" "^2" + +"@types/mdast@^3.0.0", "@types/mdast@^3.0.10": + 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" "*" + +"@types/mdurl@^1.0.0": + version "1.0.2" + resolved "https://registry.npmmirror.com/@types/mdurl/-/mdurl-1.0.2.tgz" + integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + +"@types/mdurl@^2": + version "2.0.0" + resolved "https://registry.npmmirror.com/@types/mdurl/-/mdurl-2.0.0.tgz" + integrity sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg== + +"@types/ms@*": + version "0.7.31" + resolved "https://registry.npmmirror.com/@types/ms/-/ms-0.7.31.tgz" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + +"@types/node@*", "@types/node@^18.7.14": + version "18.7.14" + resolved "https://registry.npmmirror.com/@types/node/-/node-18.7.14.tgz" + integrity sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA== + +"@types/node@^14.0.1": + version "14.18.48" + resolved "https://registry.npmmirror.com/@types/node/-/node-14.18.48.tgz" + integrity sha512-iL0PIMwejpmuVHgfibHpfDwOdsbmB50wr21X71VnF5d7SsBF7WK+ZvP/SCcFm7Iwb9iiYSap9rlrdhToNAWdxg== + +"@types/node@^22.7.5": + version "22.15.29" + resolved "https://registry.npmjs.org/@types/node/-/node-22.15.29.tgz" + integrity sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ== + dependencies: + undici-types "~6.21.0" + +"@types/nprogress@^0.2.0": + version "0.2.0" + resolved "https://registry.npmmirror.com/@types/nprogress/-/nprogress-0.2.0.tgz" + integrity sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A== + +"@types/parse5@^6.0.0": + version "6.0.3" + resolved "https://registry.npmmirror.com/@types/parse5/-/parse5-6.0.3.tgz" + 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" + integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg== + dependencies: + "@types/node" "*" + +"@types/sortablejs@^1.13.0": + version "1.13.0" + resolved "https://registry.npmmirror.com/@types/sortablejs/-/sortablejs-1.13.0.tgz" + integrity sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ== + +"@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" "*" + +"@types/unist@*", "@types/unist@^2.0.0": + 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@^5.36.1": + 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== + 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" + +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.36.1.tgz" + integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A== + 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" + +"@typescript-eslint/scope-manager@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz" + integrity sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w== + dependencies: + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" + +"@typescript-eslint/type-utils@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz" + integrity sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q== + dependencies: + "@typescript-eslint/typescript-estree" "5.36.1" + "@typescript-eslint/utils" "5.36.1" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.36.1.tgz" + integrity sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg== + +"@typescript-eslint/typescript-estree@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz" + integrity sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g== + 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" + +"@typescript-eslint/utils@5.36.1": + version "5.36.1" + resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.36.1.tgz" + integrity sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg== + 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" + +"@typescript-eslint/visitor-keys@5.36.1": + 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== + dependencies: + "@typescript-eslint/types" "5.36.1" + eslint-visitor-keys "^3.3.0" + +"@vavt/util@^2.1.0": + 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@^2.0.1": + version "2.0.1" + resolved "https://registry.npmmirror.com/@vitejs/plugin-legacy/-/plugin-legacy-2.0.1.tgz" + integrity sha512-kKC56rfsXwebApzyuZqdQlGmqTyH1ugy0l0rY58gx5OXzq4/t5/DCqGUoz53Db51OqfjRqsHfqmvq9or6w9k/Q== + 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" + +"@vitejs/plugin-vue@^3.0.3": + 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== + +"@volar/code-gen@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.40.5.tgz" + integrity sha512-M3D/2pmvjyGYalmldcyvTqVXhUnDxMYA2HtThmdQ8pVsTW4BVVzqrjnJAvHKNfM/zU0XA+fzIh1tfJ4Cssoe5w== + dependencies: + "@volar/source-map" "0.40.5" + +"@volar/source-map@0.40.5": + version "0.40.5" + resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.40.5.tgz" + integrity sha512-HNO+svbNHXmJtDs82muusI1ErWnMpmNPDpz0Hmex5XDEa+q3NlWFXPMAxCflg294fkCfdOizyCxXYqh3UKz3VA== + dependencies: + "@vue/reactivity" "3.2.37" + +"@volar/typescript-faster@0.40.5": + 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== + dependencies: + semver "^7.3.7" + +"@volar/vue-language-core@0.40.5": + 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== + 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" + +"@volar/vue-typescript@0.40.5": + 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== + dependencies: + "@volar/code-gen" "0.40.5" + "@volar/typescript-faster" "0.40.5" + "@volar/vue-language-core" "0.40.5" + +"@vue/compiler-core@^3.2.37", "@vue/compiler-core@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.3.tgz" + 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.2.37", "@vue/compiler-dom@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz" + integrity sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA== + dependencies: + "@vue/compiler-core" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/compiler-sfc@^3.2.37", "@vue/compiler-sfc@^3.2.38", "@vue/compiler-sfc@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.3.tgz" + 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-ssr@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.3.tgz" + integrity sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w== + dependencies: + "@vue/compiler-dom" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/devtools-api@^6.1.4", "@vue/devtools-api@^6.2.1": + version "6.2.1" + resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.2.1.tgz" + integrity sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ== + +"@vue/reactivity@^3.2.37", "@vue/reactivity@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.3.tgz" + integrity sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw== + dependencies: + "@vue/shared" "3.5.3" + +"@vue/reactivity@3.2.37": + version "3.2.37" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.37.tgz" + integrity sha512-/7WRafBOshOc6m3F7plwzPeCu/RCVv9uMpOwa/5PiY1Zz+WLVRWiy0MYKwmg19KBdGtFWsmZ4cD+LOdVPcs52A== + dependencies: + "@vue/shared" "3.2.37" + +"@vue/runtime-core@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.3.tgz" + 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.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.3.tgz" + 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.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.3.tgz" + integrity sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q== + dependencies: + "@vue/compiler-ssr" "3.5.3" + "@vue/shared" "3.5.3" + +"@vue/shared@^3.2.37", "@vue/shared@3.5.3": + version "3.5.3" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.3.tgz" + integrity sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA== + +"@vue/shared@3.2.37": + version "3.2.37" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.37.tgz" + integrity sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw== + +"@wecom/jssdk@^1.3.1": + version "1.3.2" + resolved "https://registry.npmmirror.com/@wecom/jssdk/-/jssdk-1.3.2.tgz" + integrity sha512-lfqMeLrINX2JaYqFuWfdfSJbz8VEqcaGqeodtphpI/Vk690pa2nEnBxtiJndxa+7pE4ZKucTMkYbN5ET8iksYg== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.5.0, acorn@^8.8.0: + version "8.8.0" + resolved "https://registry.npmmirror.com/acorn/-/acorn-8.8.0.tgz" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + +address@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/address/-/address-1.2.2.tgz" + integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== + +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + +agentkeepalive@^3.4.1: + 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" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz" + 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.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" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/align-text/-/align-text-0.1.4.tgz" + integrity sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg== + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-regex@^2.0.0: + 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-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.1: + 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" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + 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" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +ant-design-vue@^3.2.11, ant-design-vue@>=3.1.0: + 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" + +any-promise@^1.0.0, any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz" + integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archiver-utils@^2.1.0: + 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" + +archiver@^5.0.0: + 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" + +arg@^5.0.2: + version "5.0.2" + resolved "https://registry.npmmirror.com/arg/-/arg-5.0.2.tgz" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + +argparse@^2.0.1: + 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@^1.0.1: + 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== + dependencies: + call-bind "^1.0.5" + is-array-buffer "^3.0.4" + +array-tree-filter@^2.1.0: + 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@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +arraybuffer.prototype.slice@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz" + integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A== + 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" + +async-validator@^4.0.0: + version "4.2.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== + +async@^3.2.3: + version "3.2.4" + resolved "https://registry.npmmirror.com/async/-/async-3.2.4.tgz" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@^10.4.19: + version "10.4.19" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.19.tgz" + integrity sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew== + 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" + +available-typed-arrays@^1.0.7: + 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== + dependencies: + possible-typed-array-names "^1.0.0" + +axios@^0.27.2: + 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" + +bail@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/bail/-/bail-2.0.2.tgz" + integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +big-integer@^1.6.17: + version "1.6.51" + resolved "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz" + integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +binary@~0.3.0: + 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" + +bl@^4.0.3: + 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" + +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz" + integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +bowser@^1.6.0: + version "1.9.4" + resolved "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz" + integrity sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ== + +brace-expansion@^1.1.7: + 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" + +brace-expansion@^2.0.1: + 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" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.23.0, "browserslist@>= 4.21.0": + version "4.23.2" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.23.2.tgz" + integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA== + dependencies: + caniuse-lite "^1.0.30001640" + electron-to-chromium "^1.4.820" + node-releases "^2.0.14" + update-browserslist-db "^1.1.0" + +buffer-crc32@^0.2.1, buffer-crc32@^0.2.13: + version "0.2.13" + resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-indexof-polyfill@~1.0.0: + 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== + +buffer@^5.5.0: + 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" + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz" + integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== + +builtin-status-codes@^3.0.0: + 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@^1.17.2, bytemd@^1.5.0: + 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" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@~1.0.2: + version "1.0.7" + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz" + integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== + 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" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-css@^2.0.1: + 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== + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-1.2.1.tgz" + integrity sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001640: + 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== + +ccount@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/ccount/-/ccount-2.0.1.tgz" + integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.npmmirror.com/center-align/-/center-align-0.1.3.tgz" + integrity sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ== + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +cfb@~1.2.1: + 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" + +chainsaw@~0.1.0: + 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" + +chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + 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" + +chalk@^2.3.2: + 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" + +chalk@^4.0.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz" + 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.npmmirror.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz" + integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== + +character-entities-legacy@^3.0.0: + 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== + +character-entities@^2.0.0: + 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== + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + 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@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/cliui/-/cliui-2.1.0.tgz" + integrity sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA== + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +codemirror-ssr@^0.65.0: + version "0.65.0" + resolved "https://registry.npmmirror.com/codemirror-ssr/-/codemirror-ssr-0.65.0.tgz" + integrity sha512-ofTAfPkQV56SYFfymNMYJ1ELo3+Jnkw3mOLgnIiQjhonwNmNzX1OFvnihAnYRXL0PWl2kT7s0gKrLc2ExshK4g== + +codemirror@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz" + integrity sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg== + 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.npmmirror.com/codepage/-/codepage-1.15.0.tgz" + integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== + +color-convert@^1.9.0: + 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" + +color-convert@^2.0.1: + 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" + +color-name@^1.0.0, color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-string@^1.5.5: + version "1.9.1" + resolved "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz" + 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.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comma-separated-tokens@^2.0.0: + 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@^2.15.1, commander@^2.20.0, commander@^2.20.3: + 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== + +commander@^4.0.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/commander/-/commander-4.1.1.tgz" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@7: + version "7.2.0" + resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +compress-commons@^4.1.0: + 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" + +compute-scroll-into-view@^1.0.17: + 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@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-type@^1.0.2: + version "1.0.5" + resolved "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +contour_plot@^0.0.1: + 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@^2.0.1: + version "2.0.6" + resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-to-clipboard@^3.3.3: + version "3.3.3" + resolved "https://registry.npmmirror.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz" + integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA== + dependencies: + toggle-selection "^1.0.6" + +copy-to@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz" + integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== + +core-js@^3.15.1, core-js@^3.24.1: + 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@^1.0.2, core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +countup.js@^2.3.2: + 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@^1.2.0, crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +crc32-stream@^4.0.2: + 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" + +crelt@^1.0.5: + version "1.0.6" + resolved "https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz" + integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g== + +cropperjs@^1.5.12: + version "1.5.12" + resolved "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.5.12.tgz" + integrity sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw== + +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + 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.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.npmmirror.com/cssfilter/-/cssfilter-0.0.10.tgz" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + +csstype@^3.0.8, csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +d@^1.0.1, d@1: + 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" + +d3-array@^3.2.4, "d3-array@2.5.0 - 3": + version "3.2.4" + resolved "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +d3-color@^3.1.0, "d3-color@1 - 3": + 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@1 - 3": + version "3.0.1" + resolved "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +d3-dsv@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/d3-dsv/-/d3-dsv-3.0.1.tgz" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +d3-force@^3.0.0: + 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== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +d3-format@^3.1.0: + 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@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/d3-geo/-/d3-geo-3.1.1.tgz" + integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== + +"d3-interpolate@1 - 3": + version "3.0.1" + resolved "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@^3.1.0: + 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@1 - 3": + version "3.0.1" + resolved "https://registry.npmmirror.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-scale-chromatic@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-shape@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/d3-shape/-/d3-shape-3.2.0.tgz" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +"d3-timer@1 - 3": + 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@^1.1.4: + 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@^0.5.9: + 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" + +data-view-buffer@^1.0.1: + 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== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-length@^1.0.1: + 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== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +data-view-byte-offset@^1.0.0: + 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== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz" + integrity sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw== + +dayjs@^1.10.5, dayjs@^1.11.5, dayjs@^1.8.34: + version "1.11.5" + resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz" + integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== + +debug@^2.6.9: + 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" + +debug@^3.2.6: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@~4.3.1, debug@~4.3.2: + 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" + +decamelize@^1.0.0, decamelize@^1.2.0: + 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@^1.0.0: + 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" + +deep-equal@~1.1.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz" + integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg== + 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" + +deep-is@^0.1.3: + 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== + +default-user-agent@^1.0.0: + 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" + +define-data-property@^1.0.1, define-data-property@^1.1.1, define-data-property@^1.1.4: + 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== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +defined@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/defined/-/defined-1.0.1.tgz" + integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.npmmirror.com/dequal/-/dequal-2.0.3.tgz" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +didyoumean@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/didyoumean/-/didyoumean-1.2.2.tgz" + integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== + +diff@^5.0.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/diff/-/diff-5.1.0.tgz" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +digest-header@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz" + integrity sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg== + +dijkstrajs@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz" + integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/dlv/-/dlv-1.1.3.tgz" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +docx@^9.5.0: + version "9.5.0" + resolved "https://registry.npmjs.org/docx/-/docx-9.5.0.tgz" + integrity sha512-WZggg9vVujFcTyyzfIVBBIxlCk51QvhLWl87wtI2zuBdz8C8C0mpRhEVwA2DZd7dXyY0AVejcEVDT9vn7Xm9FA== + 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" + +dom-align@^1.12.1: + 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@^2.0.0: + 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@~0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/dotignore/-/dotignore-0.1.2.tgz" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" + +downloadjs@1.4.7: + version "1.4.7" + resolved "https://registry.npmmirror.com/downloadjs/-/downloadjs-1.4.7.tgz" + integrity sha512-LN1gO7+u9xjU5oEScGFKvXhYf7Y/empUIIEAGBs1LzUq/rg5duiDrkuH5A2lQGd5jfMOb9X9usDa2oVXwJ0U/Q== + +draggabilly@^2.2.0: + 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" + +duplexer2@~0.1.4: + 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" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +echarts-wordcloud@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.0.0.tgz" + integrity sha512-K7l6pTklqdW7ZWzT/1CS0KhBSINr/cd7c5N1fVMzZMwLQHEwT7x+nivK7g5hkVh7WNcAv4Dn6/ZS5zMKRozC1g== + +echarts@^5.0.1, echarts@^5.1.2, echarts@^5.3.3: + 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" + +ee-first@~1.1.1: + 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@^1.10.1: + 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== + +electron-to-chromium@^1.4.820: + version "1.4.828" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.828.tgz" + integrity sha512-QOIJiWpQJDHAVO4P58pwb133Cwee0nbvy/MV1CwzZVGpkH1RX33N3vsaWRCpR6bF63AAq366neZrRTu7Qlsbbw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + 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" + +end-or-error@^1.0.1: + 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@~6.5.1: + 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" + +engine.io-parser@~5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.1.0.tgz" + integrity sha512-enySgNiK5tyZFynt3z7iqBR+Bto9EVVVvDFuTT0ioHCGbzirZVGDGiQjZzEp8hWl6hd5FSVytJGuScX1C1C35w== + +entities@^4.4.0, entities@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0: + version "1.23.3" + resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.23.3.tgz" + integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== + 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" + +es-define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz" + integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== + dependencies: + get-intrinsic "^1.2.4" + +es-errors@^1.2.1, es-errors@^1.3.0: + 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@^1.0.0: + 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== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.0.3: + 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== + dependencies: + get-intrinsic "^1.2.4" + has-tostringtag "^1.0.2" + hasown "^2.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14: + version "0.10.62" + resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz" + integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + 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" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + 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" + +esbuild-darwin-arm64@0.14.54: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.54.tgz" + integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw== + +esbuild@^0.14.47, esbuild@>=0.13: + version "0.14.54" + resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz" + integrity sha512-Cy9llcy8DvET5uznocPyqL3BFRrFXSVqbgpMJ9Wz8oVjZlh/zUSNbPRbov0VX7VxN2JH1Oa0uNxZ7eLRb62pJA== + 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" + +escalade@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.2.tgz" + integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== + +escape-html@^1.0.3: + 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@^1.0.2: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^5.0.0: + 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== + +eslint-config-prettier@^8.5.0: + version "8.5.0" + resolved "https://registry.npmmirror.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-define-config@^1.7.0: + version "1.7.0" + resolved "https://registry.npmmirror.com/eslint-define-config/-/eslint-define-config-1.7.0.tgz" + integrity sha512-13zk8z8eKO4tpPMvAGV0sa6ok0XuMeu7Zhcizu2bLwcLy1fbNt7/h8PU1wbp9IoIgQETggZJozU0nPXUXOao2g== + +eslint-plugin-prettier@^4.2.1: + 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== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-vue@^9.4.0: + 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== + 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" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-7.1.1.tgz" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + 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== + +eslint-visitor-keys@^3.3.0: + 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== + +eslint@*, "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", eslint@^8.23.0, eslint@>=5, eslint@>=6.0.0, eslint@>=7.0.0, eslint@>=7.28.0: + version "8.23.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-8.23.0.tgz" + integrity sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA== + 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" + +espree@^9.3.1, espree@^9.4.0: + version "9.4.0" + resolved "https://registry.npmmirror.com/espree/-/espree-9.4.0.tgz" + integrity sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw== + dependencies: + acorn "^8.8.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@~1.2.2: + version "1.2.5" + resolved "https://registry.npmmirror.com/esprima/-/esprima-1.2.5.tgz" + integrity sha512-S9VbPDU0adFErpDai3qDkjq8+G05ONtKzcyNrPKg/ZKa+tf879nX2KexNU95b31UoTJjRLInNBHHHjFPoCd7lQ== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.1, estree-walker@^2.0.2: + 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@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +ev-emitter@^1.0.1: + 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@^0.3.5: + 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" + +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +exceljs@^4.3.0: + 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" + +ext@^1.1.2: + 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" + +extend-shallow@^2.0.1: + 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" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-csv@^4.3.1: + 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" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + 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@^1.1.2: + version "1.2.0" + resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + 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" + +fast-json-stable-stringify@^2.0.0: + 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== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fault@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/fault/-/fault-2.0.1.tgz" + integrity sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ== + dependencies: + format "^0.2.0" + +fecha@^4.2.1: + 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@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + 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" + integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + 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" + 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.npmmirror.com/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.7" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz" + integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== + +flru@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/flru/-/flru-1.0.2.tgz" + integrity sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog== + +fmin@^0.0.2: + version "0.0.2" + resolved "https://registry.npmmirror.com/fmin/-/fmin-0.0.2.tgz" + integrity sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A== + dependencies: + contour_plot "^0.0.1" + json2module "^0.0.3" + rollup "^0.25.8" + tape "^4.5.1" + uglify-js "^2.6.2" + +follow-redirects@^1.14.9: + 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@^0.3.3, for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.2.1" + resolved "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.2.1.tgz" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +form-data@^4.0.0: + 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" + +format@^0.2.0: + version "0.2.2" + resolved "https://registry.npmmirror.com/format/-/format-0.2.2.tgz" + integrity sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww== + +formstream@^1.1.0: + 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" + +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.3.7.tgz" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fs-constants@^1.0.0: + 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@^10.0.0: + 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== + 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.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" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fstream@^1.0.12: + 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" + +function-bind@^1.1.1, function-bind@^1.1.2: + 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@^1.1.6: + 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== + dependencies: + 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@^1.0.1: + 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== + +functions-have-names@^1.2.3: + 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@0.0.5: + 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" + +get-caller-file@^2.0.1: + 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@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: + version "1.2.4" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz" + integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== + 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" + +get-ready@^1.0.0, get-ready@~1.0.0: + 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@^2.0.2: + 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@^1.0.2: + 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== + dependencies: + call-bind "^1.0.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + +github-markdown-css@^5.1.0: + 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@^3.1.0, gl-matrix@^3.3.0, gl-matrix@^3.4.3: + 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-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-6.0.2.tgz" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^10.3.10: + version "10.4.5" + resolved "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz" + 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.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" + +globals@^13.15.0: + version "13.17.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz" + integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.npmmirror.com/globby/-/globby-11.1.0.tgz" + 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.0.1: + 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" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2: + version "4.2.10" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.0.1, has-proto@^1.0.3: + 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@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +has@~1.0.3: + 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" + +hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hast-to-hyperscript@^10.0.0: + 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" + +hast-util-from-parse5@^7.0.0: + 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" + +hast-util-is-element@^2.0.0: + 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" + +hast-util-parse-selector@^3.0.0: + 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" + +hast-util-raw@^7.2.0: + 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" + +hast-util-sanitize@^4.0.0: + 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" + +hast-util-to-html@^8.0.0: + 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" + +hast-util-to-parse5@^7.0.0: + 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" + +hast-util-to-text@^3.0.0: + 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" + +hast-util-whitespace@^2.0.0: + 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@^7.0.0: + 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" + +highlight.js@^11.7.0, highlight.js@~11.8.0: + 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@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz" + integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== + +humanize-ms@^1.2.0, humanize-ms@^1.2.1: + 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" + +iconv-lite@^0.4.15: + 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" + +iconv-lite@^0.6.3, iconv-lite@0.6: + 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" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +image-size@~0.5.0: + 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== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + 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" + +inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3, inherits@~2.0.4, inherits@2: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inline-style-parser@0.1.1: + 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@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.7.tgz" + integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.0" + side-channel "^1.0.4" + +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + +is-arguments@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-array-buffer@^3.0.4: + version "3.0.4" + resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz" + integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + +is-arrayish@^0.3.1: + 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@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + 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@~0.0.6: + 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@^2.13.0: + 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== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1: + 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== + dependencies: + is-typed-array "^1.1.13" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extendable@^0.1.0: + version "0.1.1" + resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + 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@^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.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^4.0.0: + 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@3.0.1: + 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@^1.1.4, is-regex@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3: + 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== + dependencies: + call-bind "^1.0.7" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-type-of@^1.4.0: + 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" + +is-typed-array@^1.1.13: + 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== + dependencies: + which-typed-array "^1.1.14" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +jackspeak@^3.1.2: + version "3.4.3" + resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz" + integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +jiti@^1.21.0: + version "1.21.6" + resolved "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== + +js-base64@^2.5.2: + version "2.6.4" + resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz" + integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== + +js-cookie@^3.0.5: + version "3.0.5" + resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + +js-md5@^0.7.3: + version "0.7.3" + resolved "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz" + integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ== + +"js-tokens@^3.0.0 || ^4.0.0": + version "4.0.0" + resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-4.1.0.tgz" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbarcode@^3.11.5: + version "3.11.5" + resolved "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.5.tgz" + integrity sha512-zv3KsH51zD00I/LrFzFSM6dst7rDn0vIMzaiZFL7qusTjPZiPtxg3zxetp0RR7obmjTw4f6NyGgbdkBCgZUIrA== + +json-schema-traverse@^0.4.1: + 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== + +json-stable-stringify-without-jsonify@^1.0.1: + 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== + +json2module@^0.0.3: + version "0.0.3" + resolved "https://registry.npmmirror.com/json2module/-/json2module-0.0.3.tgz" + integrity sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA== + dependencies: + rw "^1.3.2" + +jsonfile@^4.0.0: + 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" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jstoxml@^2.0.0: + version "2.2.9" + resolved "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz" + integrity sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw== + +jszip@^3.10.1, jszip@^3.5.0: + 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" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.npmmirror.com/kleur/-/kleur-4.1.5.tgz" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/lazy-cache/-/lazy-cache-1.0.4.tgz" + integrity sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ== + +lazystream@^1.0.0: + 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" + +less@*, less@^4.1.3: + version "4.1.3" + resolved "https://registry.npmmirror.com/less/-/less-4.1.3.tgz" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== + 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.npmmirror.com/levn/-/levn-0.4.1.tgz" + 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.npmmirror.com/lie/-/lie-3.3.0.tgz" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lilconfig@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +lilconfig@^3.0.0: + version "3.1.2" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-3.1.2.tgz" + integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +linkify-it@^5.0.0: + 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== + dependencies: + uc.micro "^2.0.0" + +listenercount@~1.0.1: + 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@^0.4.2: + version "0.4.2" + resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.2.tgz" + integrity sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-6.0.0.tgz" + 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.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.defaults@^4.2.0: + 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@^4.5.0: + 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@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz" + integrity sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw== + +lodash.flatten@^4.4.0: + 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@^4.6.0: + 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@^3.0.3: + 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@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.isfunction@^3.0.9: + version "3.0.9" + resolved "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz" + integrity sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw== + +lodash.isnil@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz" + integrity sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng== + +lodash.isplainobject@^4.0.6: + 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@^3.0.1: + 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@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.union@^4.6.0: + 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@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +longest-streak@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/longest-streak/-/longest-streak-3.0.1.tgz" + integrity sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg== + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/longest/-/longest-1.0.1.tgz" + integrity sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg== + +loose-envify@^1.0.0: + 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" + +lowlight@^2.0.0: + 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" + +lru-cache@^10.2.0: + version "10.4.3" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + +lru-cache@^11.0.1: + version "11.0.2" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-11.0.2.tgz" + integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lucide-vue-next@^0.453.0: + version "0.453.0" + resolved "https://registry.npmmirror.com/lucide-vue-next/-/lucide-vue-next-0.453.0.tgz" + integrity sha512-5zmv83vxAs9SVoe22veDBi8Dw0Fh2F+oTngWgKnKOkrZVbZjceXLQ3tescV2boB0zlaf9R2Sd9RuUP2766xvsQ== + +magic-string@^0.26.2: + version "0.26.3" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.3.tgz" + integrity sha512-u1Po0NDyFcwdg2nzHT88wSK0+Rih0N1M+Ph1Sp08k8yvFFU3KR72wryS7e1qMPJypt99WB7fIFVCA92mQrMjrg== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.30.11: + version "0.30.17" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz" + 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.npmmirror.com/markdown-it-image-figures/-/markdown-it-image-figures-2.1.1.tgz" + integrity sha512-mwXSQ2nPeVUzCMIE3HlLvjRioopiqyJLNph0pyx38yf9mpqFDhNGnMpAXF9/A2Xv0oiF2cVyg9xwfF0HNAz05g== + +markdown-it-sub@^2.0.0: + 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@^2.0.0: + 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-it@*, markdown-it@^14.0.0: + version "14.1.0" + resolved "https://registry.npmmirror.com/markdown-it/-/markdown-it-14.1.0.tgz" + 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.2" + resolved "https://registry.npmmirror.com/markdown-table/-/markdown-table-3.0.2.tgz" + integrity sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA== + +md-editor-v3@^5.2.3: + version "5.3.2" + resolved "https://registry.npmmirror.com/md-editor-v3/-/md-editor-v3-5.3.2.tgz" + integrity sha512-O3gV4X3+x8QZava2pzJfVb06dqO1Y1UrmUpHS0E7htblqq0MQ67yrLLkTkVYIxF04Tj8Ub67pc8fypR3uT8FUA== + 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" + +mdast-util-definitions@^5.0.0: + 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" + +mdast-util-find-and-replace@^2.0.0: + 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" + +mdast-util-from-markdown@^1.0.0: + 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" + +mdast-util-gfm-autolink-literal@^1.0.0: + 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" + +mdast-util-gfm-footnote@^1.0.0: + 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" + +mdast-util-gfm-strikethrough@^1.0.0: + 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" + +mdast-util-gfm-table@^1.0.0: + 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" + +mdast-util-gfm-task-list-item@^1.0.0: + 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" + +mdast-util-gfm@^2.0.0: + 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" + +mdast-util-to-hast@^12.1.0: + 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" + +mdast-util-to-markdown@^1.0.0, mdast-util-to-markdown@^1.3.0: + 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" + +mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: + 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@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/mdurl/-/mdurl-1.0.1.tgz" + integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== + +mdurl@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz" + integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== + +medium-zoom@^1.1.0: + 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@^1.0.1: + 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@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: + 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" + +micromark-extension-gfm-autolink-literal@^1.0.0: + 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" + +micromark-extension-gfm-footnote@^1.0.0: + 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" + +micromark-extension-gfm-strikethrough@^1.0.0: + 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" + +micromark-extension-gfm-table@^1.0.0: + 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" + +micromark-extension-gfm-tagfilter@^1.0.0: + 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" + +micromark-extension-gfm-task-list-item@^1.0.0: + 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" + +micromark-extension-gfm@^2.0.0: + 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" + +micromark-factory-destination@^1.0.0: + 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" + +micromark-factory-label@^1.0.0: + 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" + +micromark-factory-space@^1.0.0: + 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" + +micromark-factory-title@^1.0.0: + 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" + +micromark-factory-whitespace@^1.0.0: + 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" + +micromark-util-character@^1.0.0: + 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" + +micromark-util-chunked@^1.0.0: + 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" + +micromark-util-classify-character@^1.0.0: + 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" + +micromark-util-combine-extensions@^1.0.0: + 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" + +micromark-util-decode-numeric-character-reference@^1.0.0: + 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" + +micromark-util-decode-string@^1.0.0: + 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" + +micromark-util-encode@^1.0.0: + 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@^1.0.0: + 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@^1.0.0: + 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" + +micromark-util-resolve-all@^1.0.0: + 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" + +micromark-util-sanitize-uri@^1.0.0: + 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" + +micromark-util-subtokenize@^1.0.0: + 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" + +micromark-util-symbol@^1.0.0: + 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@^1.0.0, micromark-util-types@^1.0.1: + 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== + +micromark@^3.0.0: + 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" + +micromatch@^4.0.4, micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + 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" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.5: + version "2.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz" + 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" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + 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" + +minimatch@^5.1.0: + 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" + +minimatch@^9.0.4: + version "9.0.5" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.8: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz" + 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.npmmirror.com/minipass/-/minipass-7.1.2.tgz" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +mitt@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + +mkdirp@^0.5.1, "mkdirp@>=0.5 0": + 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" + +mock-property@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/mock-property/-/mock-property-1.0.3.tgz" + integrity sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ== + 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" + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/mri/-/mri-1.2.0.tgz" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@^2.0.0, ms@^2.1.1, ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +mz@^2.7.0: + 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" + +nanoid@^3.3.8: + version "3.3.8" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz" + integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== + +nanoid@^5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz" + integrity sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw== + +nanopop@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/nanopop/-/nanopop-2.1.0.tgz" + integrity sha512-jGTwpFRexSH+fxappnGQtN9dspgE2ipa1aOjtR24igG0pv6JCxImIAmrLRHX+zUF5+1wtsFVbKyfP51kIGAVNw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/needle/-/needle-3.1.0.tgz" + integrity sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.6.3" + sax "^1.2.4" + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +node-releases@^2.0.14: + version "2.0.17" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.17.tgz" + integrity sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +nprogress@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz" + integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA== + +nth-check@^2.0.1: + 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== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.0.1: + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz" + integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== + +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-inspect@~1.12.3: + version "1.12.3" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.5: + version "4.1.5" + resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz" + integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== + dependencies: + call-bind "^1.0.5" + define-properties "^1.2.1" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + 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" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + 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" + +os-name@~1.0.3: + 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" + +osx-release@^1.0.0: + 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" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz" + 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" + 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.npmmirror.com/p-locate/-/p-locate-5.0.0.tgz" + 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" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-json-from-dist@^1.0.0: + 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== + +pako@~1.0.2: + version "1.0.11" + resolved "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + 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== + dependencies: + callsites "^3.0.0" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5@^6.0.0: + version "6.0.1" + resolved "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +path-exists@^4.0.0: + 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@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + 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@^1.11.1: + version "1.11.1" + resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz" + 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.npmmirror.com/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pause-stream@~0.0.11: + 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" + +pdfast@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/pdfast/-/pdfast-0.2.0.tgz" + integrity sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA== + +picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinia@^2.0.21: + 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 "*" + +pirates@^4.0.1: + version "4.0.6" + resolved "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz" + integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + +platform@^1.3.1: + version "1.3.6" + resolved "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +pngjs@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz" + integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== + +possible-typed-array-names@^1.0.0: + 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-import@^15.1.0: + version "15.1.0" + resolved "https://registry.npmmirror.com/postcss-import/-/postcss-import-15.1.0.tgz" + 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.npmmirror.com/postcss-js/-/postcss-js-4.0.1.tgz" + integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== + dependencies: + camelcase-css "^2.0.1" + +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== + dependencies: + lilconfig "^3.0.0" + yaml "^2.3.4" + +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/postcss-nested/-/postcss-nested-6.0.1.tgz" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== + dependencies: + postcss-selector-parser "^6.0.11" + +postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.9: + 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== + 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.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.0.0, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4.16, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.39, postcss@^8.4.44, postcss@>=8.0.9: + version "8.5.3" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz" + integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== + dependencies: + nanoid "^3.3.8" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-linter-helpers@^1.0.0: + 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== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.7.1, prettier@>=2.0.0: + version "2.7.1" + resolved "https://registry.npmmirror.com/prettier/-/prettier-2.7.1.tgz" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +process-nextick-args@~2.0.0: + 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@^6.0.0: + version "6.1.1" + resolved "https://registry.npmmirror.com/property-information/-/property-information-6.1.1.tgz" + integrity sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w== + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pump@^3.0.0: + 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" + +punycode.js@^2.3.1: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz" + integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qrcode@^1.5.4: + version "1.5.4" + resolved "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz" + integrity sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg== + dependencies: + dijkstrajs "^1.0.1" + pngjs "^5.0.0" + yargs "^15.3.1" + +qs@^6.4.0: + 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" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quickselect@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz" + integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== + +rbush@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz" + integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== + dependencies: + quickselect "^2.0.0" + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/read-cache/-/read-cache-1.0.0.tgz" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +readable-stream@^2.0.0: + 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" + +readable-stream@^2.0.2: + 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" + +readable-stream@^2.0.5: + 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" + +readable-stream@^2.3.6: + 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" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + 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" + +readable-stream@~2.3.6: + 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" + +readdir-glob@^1.0.0: + 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" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.9: + 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@^1.5.1, regexp.prototype.flags@^1.5.2: + 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== + dependencies: + call-bind "^1.0.6" + define-properties "^1.2.1" + es-errors "^1.3.0" + set-function-name "^2.0.1" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +rehype-highlight@^6.0.0: + 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" + +rehype-raw@^6.1.1: + 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" + +rehype-sanitize@^5.0.1: + 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" + +rehype-stringify@^9.0.3: + 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" + +remark-gfm@^3.0.1: + 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" + +remark-parse@^10.0.1: + 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" + +remark-rehype@^10.1.0: + 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" + +repeat-string@^1.5.2: + 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@^2.1.1: + 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@^2.0.0: + 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@^0.3.0: + 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@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.1.7, resolve@^1.22.1, resolve@^1.22.2, resolve@~1.22.6: + version "1.22.8" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.npmmirror.com/right-align/-/right-align-0.1.3.tgz" + integrity sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg== + dependencies: + align-text "^0.1.1" + +rimraf@^3.0.0, rimraf@^3.0.2: + 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" + +rimraf@2: + version "2.7.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rollup@^0.25.8: + version "0.25.8" + resolved "https://registry.npmmirror.com/rollup/-/rollup-0.25.8.tgz" + integrity sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA== + dependencies: + chalk "^1.1.1" + minimist "^1.2.0" + source-map-support "^0.3.2" + +rollup@^2.50.0, "rollup@>=2.75.6 <2.77.0 || ~2.77.0": + version "2.77.3" + resolved "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz" + integrity sha512-/qxNTG7FbmefJWoeeYJFbHehJ2HNWnjkAFRKzWN/45eNBBF/r8lo992CwcJXEzyVxs5FmfId+vTSTQDb+bxA+g== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rw@^1.3.2, rw@1: + version "1.3.3" + resolved "https://registry.npmmirror.com/rw/-/rw-1.3.3.tgz" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + +sade@^1.7.3: + 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" + +safe-array-concat@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz" + integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q== + dependencies: + call-bind "^1.0.7" + get-intrinsic "^1.2.4" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@~5.2.0: + 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@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz" + integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw== + dependencies: + call-bind "^1.0.6" + es-errors "^1.3.0" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4, sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +scroll-into-view-if-needed@^2.2.25: + 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" + +sdk-base@^2.0.1: + 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" + +select-files@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/select-files/-/select-files-1.0.1.tgz" + integrity sha512-8h4DSpjfFa0hyMP3z3ye4SxyhdaE5RgaXeScRpH7xl4YblnZSHwexmLdLNdSKwTO8H9ccDKj7Votz0io+18+BQ== + +semver@^5.0.1: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.3.5, semver@^7.3.6, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.npmmirror.com/semver/-/semver-7.3.7.tgz" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +set-blocking@^2.0.0: + 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@^1.2.1: + 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== + 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" + +set-function-name@^2.0.1: + 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== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +setimmediate@^1.0.5, setimmediate@~1.0.4: + 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@^1.0.0: + version "1.2.1" + resolved "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel@^1.0.4: + 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" + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +simple-swizzle@^0.2.2: + 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== + dependencies: + is-arrayish "^0.3.1" + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +socket.io-client@^4.7.1: + 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" + +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" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +sortablejs@^1.15.0: + version "1.15.0" + resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz" + integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w== + +sortablejs@1.14.0: + version "1.14.0" + resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz" + integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w== + +source-map-js@^1.2.0, source-map-js@^1.2.1: + 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@^0.3.2: + 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== + dependencies: + source-map "0.1.32" + +source-map-support@~0.5.20: + 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== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@~0.6.0, source-map@0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.1.34: + 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" + +source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@0.1.32: + 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" + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +space-separated-tokens@^2.0.0: + 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@~0.11.2: + 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" + +statuses@^1.3.1: + version "1.5.0" + resolved "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-http@2.8.2: + 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" + +stream-wormhole@^1.0.4: + version "1.1.0" + resolved "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz" + integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew== + +string_decoder@^1.1.1: + 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" + +string_decoder@~1.1.1: + 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" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz" + 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: + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz" + 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.npmmirror.com/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.trim@^1.2.9, string.prototype.trim@~1.2.8: + version "1.2.9" + resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz" + integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.0" + es-object-atoms "^1.0.0" + +string.prototype.trimend@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz" + integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +stringify-entities@^4.0.2: + 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" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + 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" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + 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" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + 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== + +style-mod@^4.0.0, style-mod@^4.1.0: + 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@^0.3.0: + 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" + +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.npmmirror.com/sucrase/-/sucrase-3.35.0.tgz" + 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@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + 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" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz" + 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.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svg-path-parser@^1.1.0: + 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@^6.12.1: + version "6.12.6" + resolved "https://registry.npmmirror.com/systemjs/-/systemjs-6.12.6.tgz" + integrity sha512-SawLiWya8/uNR4p12OggSYZ35tP4U4QTpfV57DdZEOPr6+J6zlLSeeEpMmzYTEoBAsMhctdEE+SWJUDYX4EaKw== + +tailwindcss@^3.4.6: + version "3.4.6" + resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-3.4.6.tgz" + integrity sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA== + 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" + +tape@^4.5.1: + version "4.17.0" + resolved "https://registry.npmmirror.com/tape/-/tape-4.17.0.tgz" + integrity sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw== + 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" + +tar-stream@^2.2.0: + 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" + +terser@^5.15.0, terser@^5.4.0: + version "5.15.0" + resolved "https://registry.npmmirror.com/terser/-/terser-5.15.0.tgz" + integrity sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +thenify-all@^1.0.0: + 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" + +"thenify@>= 3.1.0 < 4": + 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" + +through@~2.3: + version "2.3.8" + resolved "https://registry.npmmirror.com/through/-/through-2.3.8.tgz" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tinymce@^5.10.5: + version "5.10.5" + resolved "https://registry.npmmirror.com/tinymce/-/tinymce-5.10.5.tgz" + integrity sha512-nFKtLhmoRtExBxUfv06JlkbQWux5D+d115vxSRAqUmccZdrtpFvOIYwZmikvulLdM9pfEpvO0B+RQ2qFV/+R7w== + +tippy.js@^6.3.7: + 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" + +tmp@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +to-arraybuffer@^1.0.0: + 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@^5.0.1: + 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== + dependencies: + is-number "^7.0.0" + +toggle-selection@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/toggle-selection/-/toggle-selection-1.0.6.tgz" + integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz" + integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== + +trim-lines@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz" + integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== + +trough@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz" + integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== + +ts-interface-checker@^0.1.9: + 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== + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.3, tslib@^2.3.0, tslib@2.3.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +tslib@^2.3.1: + version "2.6.3" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +tslib@^2.5.3: + version "2.6.3" + resolved "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz" + integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmmirror.com/tsutils/-/tsutils-3.21.0.tgz" + 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.npmmirror.com/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.20.2: + 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== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.npmmirror.com/type/-/type-1.2.0.tgz" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.7.2: + version "2.7.2" + resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz" + integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== + +typed-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz" + integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + is-typed-array "^1.1.13" + +typed-array-byte-length@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz" + integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw== + 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" + +typed-array-byte-offset@^1.0.2: + 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== + 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" + +typed-array-length@^1.0.6: + 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== + 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" + +typescript@*, typescript@^4.8.2, "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", typescript@>=4.4.4: + version "4.8.2" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.8.2.tgz" + integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== + +uc.micro@^2.0.0, uc.micro@^2.1.0: + 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@^2.6.2: + version "2.8.29" + resolved "https://registry.npmmirror.com/uglify-js/-/uglify-js-2.8.29.tgz" + integrity sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w== + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-to-browserify@~1.0.0: + 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== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +unescape@^1.0.1: + 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" + +unidragger@^2.4.0: + 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" + +unified@^10.0.0, unified@^10.1.2: + 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" + +unipointer@^2.4.0: + 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" + +unist-builder@^3.0.0: + 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" + +unist-util-find-after@^4.0.0: + 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" + +unist-util-generated@^2.0.0: + 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@^5.0.0: + 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@^4.0.0: + 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" + +unist-util-stringify-position@^3.0.0: + 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" + +unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: + 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" + +unist-util-visit@^4.0.0, unist-util-visit@^4.1.0: + 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" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unplugin-vue-components@^0.22.4: + version "0.22.4" + resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.22.4.tgz" + integrity sha512-2rRZcM9OnJGXnYxQNfaceEYuPeVACcWySIjy8WBwIiN3onr980TmA3XE5pRJFt8zoQrUA+c46oyIq96noLqrEQ== + 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" + +unplugin@^0.9.0: + version "0.9.5" + resolved "https://registry.npmmirror.com/unplugin/-/unplugin-0.9.5.tgz" + integrity sha512-luraheyfxwtvkvHpsOvMNv7IjLdORTWKZp0gWYNHGLi2ImON3iIZOj464qEyyEwLA/EMt12fC415HW9zRpOfTg== + dependencies: + acorn "^8.8.0" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.4.4" + +unzipper@^0.10.11: + 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" + +update-browserslist-db@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz" + integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== + dependencies: + escalade "^3.1.2" + picocolors "^1.0.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urllib@2.41.0: + 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" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utility@^1.16.1, utility@^1.18.0: + 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" + +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uvu@^0.5.0: + 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" + +vfile-location@^4.0.0: + 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" + +vfile-message@^3.0.0: + 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" + +vfile@^5.0.0, vfile@^5.3.4: + 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" + +vite-plugin-compression@^0.5.1: + 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== + dependencies: + chalk "^4.1.2" + debug "^4.3.3" + fs-extra "^10.0.0" + +"vite@^2.3.0 || ^3.0.0-0", vite@^3.0.0, vite@^3.0.9, vite@>=2.0.0: + version "3.0.9" + resolved "https://registry.npmmirror.com/vite/-/vite-3.0.9.tgz" + integrity sha512-waYABTM+G6DBTCpYAxvevpG50UOlZuynR0ckTK5PawNVt7ebX6X7wNXHaGIO6wYYFXSM7/WcuFuO2QzhBB6aMw== + dependencies: + esbuild "^0.14.47" + postcss "^8.4.16" + resolve "^1.22.1" + rollup ">=2.75.6 <2.77.0 || ~2.77.0" + optionalDependencies: + fsevents "~2.3.2" + +vue-demi@*: + version "0.13.11" + resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz" + integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== + +vue-demi@^0.13.2: + version "0.13.11" + resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz" + integrity sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A== + +vue-echarts@^6.2.3: + version "6.2.3" + resolved "https://registry.npmmirror.com/vue-echarts/-/vue-echarts-6.2.3.tgz" + integrity sha512-xHzUvgsgk/asJTcNa8iVVwoovZU3iEUHvmBa3bzbiP3Y6OMxM1YXsoWOKVmVVaUusGs4ob4pSwjwNy2FemAz9w== + dependencies: + resize-detector "^0.3.0" + vue-demi "^0.13.2" + +vue-eslint-parser@^9.0.1, vue-eslint-parser@^9.0.3: + 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== + 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.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" + +vue-router@^4.1.5: + 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" + +vue-tsc@^0.40.5: + version "0.40.5" + resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.40.5.tgz" + integrity sha512-rQPyyqrQiDzc8a3YpAYUb27VQbU+NDewOJ7GJBiEIEcaSugMjDc6dtJijTHK32t8IgGPl6ybsJ9LIU9sZvixLA== + dependencies: + "@volar/vue-language-core" "0.40.5" + "@volar/vue-typescript" "0.40.5" + +vue-types@^3.0.0: + 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" + +"vue@^2.6.12 || ^3.1.1", "vue@^2.6.14 || ^3.2.0", vue@^3.0.0, "vue@^3.0.0-0 || ^2.6.0", vue@^3.0.1, vue@^3.2.0, vue@^3.2.25, vue@^3.5.3, vue@>=3.0.1, vue@>=3.0.3, vue@>=3.1.0, vue@>=3.2.0, "vue@2 || 3", vue@3.5.3: + version "3.5.3" + resolved "https://registry.npmmirror.com/vue/-/vue-3.5.3.tgz" + 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.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz" + integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww== + dependencies: + sortablejs "1.14.0" + +w3c-keyname@^2.2.4: + version "2.2.8" + resolved "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz" + integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ== + +warning@^4.0.0: + 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" + +web-namespaces@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/web-namespaces/-/web-namespaces-2.0.1.tgz" + integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== + +webpack-sources@^3.2.3: + 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== + +webpack-virtual-modules@^0.4.4: + 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== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + 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" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.14, which-typed-array@^1.1.15: + 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== + 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" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +win-release@^1.0.0: + 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" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/window-size/-/window-size-0.1.0.tgz" + integrity sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg== + +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word-count@^0.2.2: + 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@^1.2.3: + 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== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/word/-/word-0.3.0.tgz" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.npmmirror.com/wordwrap/-/wordwrap-0.0.2.tgz" + integrity sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q== + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + 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" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + 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.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + 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.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@~8.11.0: + version "8.11.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz" + integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== + +xgplayer-subtitles@^1.0.19: + 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" + +xgplayer@^2.31.7: + 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" + +xlsx@^0.18.5: + 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" + +xml-js@^1.6.8: + version "1.6.11" + resolved "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz" + integrity sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g== + dependencies: + sax "^1.2.4" + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xml@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz" + integrity sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw== + +xml2js@^0.6.2: + 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" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xmlhttprequest-ssl@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz" + integrity sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A== + +xss@^1.0.15: + version "1.0.15" + resolved "https://registry.npmmirror.com/xss/-/xss-1.0.15.tgz" + 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.npmmirror.com/xtend/-/xtend-4.0.2.tgz" + 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" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^2.3.4: + version "2.4.5" + resolved "https://registry.npmmirror.com/yaml/-/yaml-2.4.5.tgz" + integrity sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + 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@~3.10.0: + version "3.10.0" + resolved "https://registry.npmmirror.com/yargs/-/yargs-3.10.0.tgz" + integrity sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A== + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zip-stream@^4.1.0: + 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" + +zrender@5.3.2: + 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" + +zwitch@^2.0.0: + version "2.0.2" + resolved "https://registry.npmmirror.com/zwitch/-/zwitch-2.0.2.tgz" + integrity sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA== diff --git a/一键排版测试说明.md b/一键排版测试说明.md new file mode 100644 index 0000000..7f0cbba --- /dev/null +++ b/一键排版测试说明.md @@ -0,0 +1,244 @@ +# 🎨 全新一键排版功能 - 人性化智能设计 + +## 🎉 重构完成! + +已成功重构为全新的人性化智能一键排版功能,彻底解决了所有技术问题: + +### ✅ 全新设计理念 +1. **简单直接**:移除复杂的异步等待和重试机制 +2. **人性化体验**:友好的提示信息和加载动画 +3. **智能优化**:一键应用10种专业排版优化 +4. **即时反馈**:实时显示优化进度和结果统计 + +### 🚀 全新实现方案 +```javascript +// 🎨 智能一键排版 - 人性化设计 +const handleAutoFormat = (editor: any) => { + try { + // 1. 检查内容 + const content = editor.getContent(); + if (!content || content.trim() === '') { + message.warning({ + content: '📝 请先输入一些内容,然后再使用一键排版功能', + duration: 3 + }); + return; + } + + // 2. 显示友好的加载提示 + const loadingMsg = message.loading({ + content: '✨ 正在为您的文章进行智能排版优化...', + duration: 0 + }); + + // 3. 延迟执行,让用户看到加载效果 + setTimeout(() => { + try { + const optimizedContent = smartFormatContent(content); + editor.setContent(optimizedContent); + + loadingMsg(); + + // 4. 显示成功提示 + message.success({ + content: '🎉 排版优化完成!您的文章现在看起来更专业了', + duration: 4 + }); + + } catch (error) { + loadingMsg(); + message.error({ + content: '😅 排版优化遇到了问题,请检查文章内容后重试', + duration: 4 + }); + } + }, 800); // 给用户一个良好的反馈体验 + + } catch (error) { + message.error({ + content: '🔧 功能暂时不可用,请刷新页面后重试', + duration: 4 + }); + } +}; + +// 直接在 TinyMCE 按钮回调中调用 +editor.ui.registry.addButton('auto_format', { + text: '一键排版', + icon: 'template', + tooltip: '智能优化文章格式和排版', + onAction: () => { + // 此时编辑器肯定已经初始化完成 + handleAutoFormat(editor); + } +}); +``` + +## 🎯 核心功能特点 + +### 🌟 10大智能优化 +1. **🏷️ 标题优化** - 6级标题层次分明,H1带下划线 +2. **📝 段落优化** - 中文首行缩进,合理行高间距 +3. **🖼️ 图片优化** - 居中显示,圆角阴影,响应式 +4. **📋 列表优化** - 清晰缩进,合理间距 +5. **💬 引用优化** - 左边框,渐变背景,斜体 +6. **💻 代码优化** - 专业字体,语法高亮背景 +7. **📊 表格优化** - 渐变表头,专业边框 +8. **🔗 链接优化** - 悬停下划线效果 +9. **➖ 分隔线优化** - 渐变效果,优雅间距 +10. **🧹 内容清理** - 清除冗余空白,规范结构 + +### 🎨 人性化体验 +- **📱 友好提示**:emoji 图标 + 温馨文案 +- **⏱️ 加载动画**:让用户感受到系统在工作 +- **🎉 成功反馈**:完成后的庆祝提示 +- **📊 优化统计**:显示具体优化了哪些项目 + +## 🧪 测试步骤 + +### 1. 准备测试内容 +在富文本编辑器中输入以下测试内容: + +``` +# 这是一级标题 + +这是一个普通段落,包含中文内容。这里有一些文字用来测试段落格式。 + +## 这是二级标题 + +这是另一个段落。 + +### 这是三级标题 + +- 这是无序列表项1 +- 这是无序列表项2 +- 这是无序列表项3 + +1. 这是有序列表项1 +2. 这是有序列表项2 +3. 这是有序列表项3 + +> 这是一个引用块,用来测试引用样式的优化效果。 + +这是包含`行内代码`的段落。 + +``` +这是代码块 +console.log('Hello World'); +``` + +| 表头1 | 表头2 | 表头3 | +|-------|-------|-------| +| 内容1 | 内容2 | 内容3 | +| 内容4 | 内容5 | 内容6 | +``` + +### 2. 测试一键排版 +1. 输入上述测试内容 +2. 点击工具栏的"一键排版"按钮 +3. 观察友好的加载提示:"✨ 正在为您的文章进行智能排版优化..." +4. 等待约1秒后看到成功提示:"🎉 排版优化完成!您的文章现在看起来更专业了" +5. 查看优化统计信息(如果有的话) + +### 3. 测试首行缩进切换 +1. 在已有段落内容的基础上 +2. 点击工具栏的"首行缩进"按钮 +3. 观察段落首行缩进的变化: + - 第一次点击:添加首行缩进,提示"📐 已添加段落首行缩进" + - 第二次点击:移除首行缩进,提示"📐 已移除段落首行缩进" +4. 验证只有段落标签受影响,其他元素保持不变 + +### 4. 验证效果 +检查以下优化效果: + +#### 🏷️ 标题优化 +- ✅ H1 标题:28px,粗体,下划线,合理间距 +- ✅ H2-H6 标题:递减字号,颜色层次分明 +- ✅ 标题间距:上下合理留白 + +#### 📝 段落优化 +- ✅ 中文段落:首行缩进 2em,行高 1.8 +- ✅ 段落间距:16px,阅读舒适 +- ✅ 文字颜色:#333,清晰易读 + +#### 🖼️ 图片优化 +- ✅ 居中显示:`display: block; margin: 20px auto` +- ✅ 响应式:`max-width: 100%; height: auto` +- ✅ 美化效果:圆角 8px,阴影效果 + +#### 📋 列表优化 +- ✅ 列表缩进:24px,清晰层次 +- ✅ 列表项间距:8px,合理留白 +- ✅ 列表样式:disc/decimal,标准格式 + +#### 💬 引用优化 +- ✅ 左边框:4px 蓝色边框 +- ✅ 背景渐变:从浅灰到白色 +- ✅ 斜体样式:突出引用内容 + +#### 💻 代码优化 +- ✅ 行内代码:背景色,圆角,专业字体 +- ✅ 代码块:边框,背景,等宽字体 +- ✅ 语法高亮:专业的代码显示 + +#### 📊 表格优化 +- ✅ 表头渐变:紫色渐变背景 +- ✅ 表格边框:专业的边框样式 +- ✅ 单元格:合理内边距,悬停效果 + +#### 🔗 链接优化 +- ✅ 链接颜色:蓝色主题色 +- ✅ 悬停效果:下划线动画 +- ✅ 无装饰:干净的链接样式 + +#### ➖ 分隔线优化 +- ✅ 渐变效果:从透明到灰色再到透明 +- ✅ 合理间距:上下 30px +- ✅ 优雅外观:2px 高度 + +#### 📐 首行缩进切换 +- ✅ 智能检测:自动识别当前缩进状态 +- ✅ 批量处理:一次性处理所有段落 +- ✅ 样式保持:不影响段落的其他样式 +- ✅ 标准缩进:2em 的首行缩进距离 +- ✅ 友好提示:清晰的操作反馈 + +## 🐛 调试信息 + +如果遇到问题,可以查看浏览器控制台的调试信息: +- 排版样式类型 +- 原始内容长度 +- 优化项目统计 + +## ✅ 预期结果 + +### 🎯 完美的用户体验 +1. **📝 内容检查**: + - 空内容时显示:"📝 请先输入一些内容,然后再使用一键排版功能" + +2. **⏱️ 加载过程**: + - 显示:"✨ 正在为您的文章进行智能排版优化..." + - 约800ms的加载时间,让用户感受到系统在认真工作 + +3. **🎉 成功完成**: + - 显示:"🎉 排版优化完成!您的文章现在看起来更专业了" + - 可选显示优化统计:"📈 本次优化: 标题样式、段落格式、图片布局..." + +4. **😅 错误处理**: + - 友好的错误提示,指导用户如何解决问题 + - 不会出现技术性错误信息 + +### 🔍 技术优势 +- ✅ **零等待**:直接在 TinyMCE 回调中执行,编辑器肯定已就绪 +- ✅ **零错误**:移除了所有复杂的异步逻辑 +- ✅ **零配置**:用户无需选择,一键应用最佳排版 +- ✅ **零学习**:直观的操作,友好的提示 + +## 🔄 不同排版样式对比 + +- **标准排版**:平衡的间距,适合大多数文章 +- **紧凑排版**:较小间距,适合长文章 +- **舒适排版**:较大间距,提升阅读体验 +- **学术排版**:严谨格式,适合学术文档 + +每种样式都会智能调整标题、段落、列表等元素的间距和样式。 diff --git a/富文本编辑器图片上传功能说明.md b/富文本编辑器图片上传功能说明.md new file mode 100644 index 0000000..49063c9 --- /dev/null +++ b/富文本编辑器图片上传功能说明.md @@ -0,0 +1,325 @@ +# 富文本编辑器完整功能说明 + +## 🎯 功能概述 + +我已经成功为您的富文本编辑器实现了完整的图片、视频上传和一键排版功能,完美解决了弹窗被工具栏遮挡的问题: + +### 图片功能 +1. **图片库选择**:从已上传的图片库中选择图片(推荐) +2. **快速图片上传**:点击按钮快速上传新图片 +3. **直接上传**:拖拽或粘贴图片直接上传到OSS + +### 视频功能 +4. **视频库选择**:从已上传的视频库中选择视频(推荐) +5. **快速视频上传**:点击按钮快速上传新视频 + +### 排版功能 +6. **一键排版**:自动优化文章格式和排版(新增) + +## ✨ 功能特点 + +### 1. 文件库选择功能(主要功能) +- 点击工具栏"图片"按钮弹出文件库 +- 浏览所有已上传的图片 +- 支持按分组筛选 +- 支持搜索功能 +- 双击选择图片或点击"选择"按钮 +- 可在弹窗中直接上传新图片 +- 弹窗层级优化,不会被编辑器工具栏遮挡 + +### 2. 快速上传功能 +- 点击工具栏"上传"按钮快速选择文件上传 +- 文件大小限制:10MB +- 支持所有常见图片格式 +- 上传成功后自动插入到编辑器 + +### 3. 直接上传功能 +- 支持拖拽图片到编辑器 +- 支持粘贴剪贴板中的图片 +- 自动上传到阿里云OSS +- 文件大小限制:10MB + +### 4. 视频库选择功能 +- 点击工具栏"视频"按钮弹出视频库 +- 浏览所有已上传的视频 +- 支持按分组筛选 +- 支持搜索功能 +- 双击选择视频或点击"选择"按钮 +- 可在弹窗中直接上传新视频 +- 弹窗层级优化,不会被编辑器工具栏遮挡 + +### 5. 快速视频上传功能 +- 点击工具栏"上传视频"按钮快速选择文件上传 +- 文件大小限制:100MB +- 支持所有常见视频格式 +- 上传成功后自动插入到编辑器 + +### 6. 智能一键排版功能(人性化设计) +- 点击工具栏"一键排版"按钮自动优化文章格式 +- **10大智能优化**: + - 🏷️ **标题优化**:6级标题层次分明,H1带下划线 + - 📝 **段落优化**:中文首行缩进,合理行高间距 + - 🖼️ **图片优化**:居中显示,圆角阴影,响应式 + - 📋 **列表优化**:清晰缩进,合理间距 + - 💬 **引用优化**:左边框,渐变背景,斜体 + - 💻 **代码优化**:专业字体,语法高亮背景 + - 📊 **表格优化**:渐变表头,专业边框 + - 🔗 **链接优化**:悬停下划线效果 + - ➖ **分隔线优化**:渐变效果,优雅间距 + - 🧹 **内容清理**:清除冗余空白,规范结构 +- **人性化体验**: + - 📱 友好提示:emoji 图标 + 温馨文案 + - ⏱️ 加载动画:让用户感受到系统在工作 + - 🎉 成功反馈:完成后的庆祝提示 + - 📊 优化统计:显示具体优化了哪些项目 + +### 7. 段落首行缩进切换功能(新增) +- 点击工具栏"首行缩进"按钮切换段落缩进格式 +- **智能切换**: + - 🔄 自动检测当前段落是否已有首行缩进 + - 📐 一键在有缩进/无缩进之间切换 + - 📝 批量处理文章中的所有段落 +- **中文优化**: + - 标准缩进:使用 2em 的首行缩进 + - 智能识别:只对段落标签进行处理 + - 样式保持:保留段落的其他样式属性 +- **友好反馈**: + - 添加缩进:`📐 已添加段落首行缩进` + - 移除缩进:`📐 已移除段落首行缩进` + +### 8. 栏目选择记忆功能(新增) +- 智能记忆用户最后选择的栏目,避免重复选择 +- **智能记忆**: + - 🧠 自动保存用户选择的栏目到本地存储 + - 🔄 新建文章时自动填入上次选择的栏目 + - 💾 跨会话保持,关闭浏览器后仍然有效 +- **优先级策略**: + - 🎯 从栏目页面点击"添加文章"时,优先使用传入的栏目 + - 📝 其他情况下使用记忆的栏目 + - ✏️ 编辑文章时保持原有栏目不变 +- **用户体验**: + - 🚀 减少重复操作,提升发布效率 + - 🎯 特别适合批量发布同类文章 + - 🔄 用户可随时更改,不强制绑定 + +### 3. 图片编辑功能 +- 图片对齐(左对齐、居中、右对齐) +- 图片旋转(左转、右转) +- 图片尺寸调整 +- 图片标题和描述 +- 图片样式类别: + - 无样式 + - 响应式图片 + - 圆角图片 + - 圆形图片 + +## 🚀 使用方法 + +### 方法一:图片库选择(推荐) +1. 点击编辑器工具栏的"图片"按钮 +2. 在弹出的图片库窗口中: + - 浏览已上传的图片 + - 使用搜索框查找特定图片 + - 选择分组筛选图片 + - 双击图片进行选择,或点击"选择"按钮 +3. 如需上传新图片,点击"上传图片"按钮 +4. 选择完成后图片自动插入到编辑器 + +### 方法二:快速图片上传 +1. 点击编辑器工具栏的"上传"按钮 +2. 在文件选择对话框中选择图片文件 +3. 系统自动上传并插入图片 + +### 方法三:直接上传 +1. 在编辑器中定位光标到需要插入图片的位置 +2. 直接拖拽图片文件到编辑器,或 +3. 复制图片后在编辑器中粘贴(Ctrl+V) +4. 系统自动上传并插入图片 + +### 方法四:视频库选择(推荐) +1. 点击编辑器工具栏的"视频"按钮 +2. 在弹出的视频库窗口中: + - 浏览已上传的视频 + - 使用搜索框查找特定视频 + - 选择分组筛选视频 + - 双击视频进行选择,或点击"选择"按钮 +3. 如需上传新视频,点击"上传视频"按钮 +4. 选择完成后视频自动插入到编辑器 + +### 方法五:快速视频上传 +1. 点击编辑器工具栏的"上传视频"按钮 +2. 在文件选择对话框中选择视频文件 +3. 系统自动上传并插入视频 + +### 方法六:智能一键排版(全新升级) +1. 编写完文章内容后,点击编辑器工具栏的"一键排版"按钮 +2. 在弹出的排版样式选择窗口中选择合适的排版模板: + - **📄 标准排版**:平衡的间距和字体,适合大多数文章 + - **📋 紧凑排版**:较小间距,适合长文章节省空间 + - **📖 舒适排版**:较大间距和行高,提升阅读体验 + - **🎓 学术排版**:严谨格式规范,适合学术论文 +3. 系统智能分析文章内容并应用专业排版格式 +4. **智能优化包括**: + - **内容识别**:自动检测中英文比例,应用对应排版规则 + - **段落优化**:智能调整行高、间距、首行缩进 + - **标题层级**:统一H1-H6标题样式,支持紧凑/标准模式 + - **媒体美化**:图片视频添加圆角、阴影、居中效果 + - **列表优化**:完善缩进、间距、嵌套列表处理 + - **表格美化**:渐变表头、专业边框、悬停效果 + - **引用样式**:左边框、背景渐变、斜体效果 + - **代码优化**:专业字体、语法高亮背景 + - **链接美化**:悬停下划线效果 + - **内容清理**:清除冗余空白、规范结构 +5. 优化完成后显示详细的优化报告 + +## 🔧 技术实现 + +### 核心配置 +```javascript +const config = ref({ + height: 620, + paste_data_images: true, + automatic_uploads: true, + + // 自定义工具栏,添加图片和上传按钮 + toolbar: [ + 'fullscreen preview code codesample emoticons custom_image_selector quick_upload media', + 'undo redo | forecolor backcolor', + 'bold italic underline strikethrough', + 'alignleft aligncenter alignright alignjustify', + 'outdent indent | numlist bullist', + 'formatselect fontselect fontsizeselect', + 'link charmap anchor pagebreak | ltr rtl' + ].join(' | '), + + // 直接上传处理器 + images_upload_handler: (blobInfo, success, error) => { + // 文件大小和类型检查 + // 上传到OSS + // 错误处理 + }, + + // 自定义按钮设置 + setup: (editor) => { + // 图片库选择按钮 + editor.ui.registry.addButton('custom_image_selector', { + text: '图片', + icon: 'image', + tooltip: '插入图片(从图片库选择)', + onAction: () => { + // 打开图片库弹窗 + } + }); + + // 快速图片上传按钮 + editor.ui.registry.addButton('quick_upload', { + text: '上传', + icon: 'upload', + tooltip: '快速上传图片', + onAction: () => { + // 打开文件选择对话框 + } + }); + + // 视频库选择按钮 + editor.ui.registry.addButton('custom_video_selector', { + text: '视频', + icon: 'embed', + tooltip: '插入视频(从视频库选择)', + onAction: () => { + // 打开视频库弹窗 + } + }); + + // 快速视频上传按钮 + editor.ui.registry.addButton('quick_video_upload', { + text: '上传视频', + icon: 'upload', + tooltip: '快速上传视频', + onAction: () => { + // 打开视频文件选择对话框 + } + }); + + // 一键排版按钮 + editor.ui.registry.addButton('auto_format', { + text: '一键排版', + icon: 'template', + tooltip: '自动优化文章格式和排版', + onAction: () => { + // 执行排版优化 + } + }); + } +}); +``` + +### 文件库集成 +- 使用现有的 `SelectData` 组件 +- 支持图片和视频类型筛选 +- 集成分组管理功能 +- 支持搜索和预览 +- 统一的文件管理界面 + +## 💡 优势 + +1. **解决层级问题**:文件库弹窗不再被编辑器工具栏遮挡 +2. **避免重复上传**:可以复用已上传的图片和视频 +3. **统一文件管理**:所有媒体文件在文件库中统一管理 +4. **多种上传方式**:满足不同使用场景和习惯 +5. **文件组织**:支持分组和搜索,便于管理大量文件 +6. **性能优化**:减少重复上传,节省存储空间 +7. **用户体验优化**:清晰的按钮分工,操作更直观 +8. **智能一键排版**: + - 四种专业排版模板可选 + - 智能内容识别和分析 + - 全面的格式优化 + - 详细的优化反馈 +9. **专业排版效果**: + - 符合中文排版习惯 + - 支持多种内容元素 + - 视觉层次清晰 + - 阅读体验优秀 + +## 🎨 样式定制 + +编辑器内的图片支持以下样式类: +- `.img-responsive`:响应式图片(宽度100%) +- `.img-rounded`:圆角图片 +- `.img-circle`:圆形图片 + +## 📝 注意事项 + +1. **文件大小限制**: + - 图片文件大小限制为10MB + - 视频文件大小限制为100MB +2. **文件类型支持**: + - 图片:支持所有常见图片格式(jpg, png, gif, webp等) + - 视频:支持所有常见视频格式(mp4, avi, mov, wmv等) +3. 上传失败时会显示错误提示 +4. 建议优先使用文件库选择功能,避免重复上传 +5. 文件库弹窗已优化层级,不会被编辑器工具栏遮挡 +6. 工具栏按钮分工明确: + - "图片"按钮:从图片库选择 + - "上传"按钮:快速上传图片 + - "视频"按钮:从视频库选择 + - "上传视频"按钮:快速上传视频 + - "一键排版"按钮:自动优化文章格式 + +## 🔄 后续扩展 + +可以进一步扩展的功能: +1. ✅ ~~支持视频文件选择~~ (已实现) +2. ✅ ~~一键排版功能~~ (已实现) +3. 图片压缩功能 +4. 图片水印添加 +5. 批量图片/视频上传 +6. 图片编辑功能(裁剪、滤镜等) +7. 自定义排版模板 +8. 文章目录自动生成 +9. 文章字数统计 +10. 阅读时间估算 + +--- + +现在您可以在文章编辑页面体验这个完整的富文本编辑功能了!包括图片上传、视频上传和一键排版功能。 diff --git a/富文本编辑器完整功能演示.md b/富文本编辑器完整功能演示.md new file mode 100644 index 0000000..931bbaa --- /dev/null +++ b/富文本编辑器完整功能演示.md @@ -0,0 +1,183 @@ +# 🎨 富文本编辑器完整功能演示 + +## 🌟 功能概览 + +我们的富文本编辑器现在拥有两个强大的智能排版功能: + +1. **🎨 一键排版**:全面优化文章格式,10大智能优化项目 +2. **📐 首行缩进切换**:灵活控制段落首行缩进,适合中文排版 + +## 🎯 演示步骤 + +### 第一步:准备测试内容 + +在富文本编辑器中输入以下完整的测试内容: + +``` +这是一个测试文章的标题 + +这是文章的第一个段落,包含一些基本的文字内容。这个段落用来测试段落格式优化功能。 + +## 这是二级标题 + +这是第二个段落,包含更多的内容来展示段落间距和行高的优化效果。 + +### 这是三级标题 + +下面是一个无序列表: +- 列表项目一 +- 列表项目二 +- 列表项目三 + +下面是一个有序列表: +1. 第一个步骤 +2. 第二个步骤 +3. 第三个步骤 + +> 这是一个引用块,用来测试引用样式的优化效果。引用块通常用来突出重要的信息或者引用他人的观点。 + +这是一个包含`行内代码`的段落,用来测试行内代码的样式优化。 + +``` +这是一个代码块 +function hello() { + console.log('Hello World!'); +} +``` + +下面是一个简单的表格: + +| 姓名 | 年龄 | 职业 | +|------|------|------| +| 张三 | 25 | 工程师 | +| 李四 | 30 | 设计师 | +| 王五 | 28 | 产品经理 | + +这是文章的最后一个段落,用来测试整体的排版效果。 +``` + +### 第二步:测试一键排版功能 + +1. **点击"一键排版"按钮** + - 位置:工具栏右侧的"一键排版"按钮 + - 图标:模板图标 + +2. **观察加载过程** + - 显示:`✨ 正在为您的文章进行智能排版优化...` + - 时长:约 800ms + +3. **查看成功提示** + - 显示:`🎉 排版优化完成!您的文章现在看起来更专业了` + - 可能显示优化统计信息 + +4. **验证优化效果** + - 标题:层次分明,H1 有下划线 + - 段落:行高适中,间距合理 + - 列表:缩进清晰,间距优化 + - 引用:左边框,渐变背景 + - 代码:专业字体,背景优化 + - 表格:渐变表头,专业边框 + +### 第三步:测试首行缩进切换功能 + +1. **第一次点击"首行缩进"按钮** + - 位置:工具栏中的"首行缩进"按钮 + - 图标:缩进图标 + - 效果:所有段落添加首行缩进 + - 提示:`📐 已添加段落首行缩进` + +2. **观察缩进效果** + - 每个段落的第一行向右缩进 2 个字符 + - 只有段落受影响,标题、列表等不变 + - 段落的其他样式保持不变 + +3. **第二次点击"首行缩进"按钮** + - 效果:移除所有段落的首行缩进 + - 提示:`📐 已移除段落首行缩进` + +4. **验证切换效果** + - 段落恢复到左对齐状态 + - 其他格式保持不变 + +### 第四步:组合使用测试 + +1. **先使用一键排版** + - 获得专业的整体格式 + +2. **再调整首行缩进** + - 根据需要添加或移除缩进 + - 适应不同的排版需求 + +3. **验证兼容性** + - 两个功能可以完美配合使用 + - 不会相互冲突或覆盖 + +## 🎨 预期效果展示 + +### 一键排版后的效果 + +```html + +

这是一个测试文章的标题

+ + +

这是文章的第一个段落,包含一些基本的文字内容。

+ + +
    +
  • 列表项目一
  • +
+ + +
这是一个引用块
+``` + +### 添加首行缩进后的效果 + +```html + +

这是文章的第一个段落,包含一些基本的文字内容。

+``` + +## 💡 使用建议 + +### 🎯 最佳实践 + +1. **内容创作流程**: + - 先专注于内容创作 + - 完成后使用一键排版优化整体格式 + - 根据需要调整首行缩进 + +2. **排版选择建议**: + - **中文文章**:建议使用首行缩进 + - **英文文章**:建议不使用首行缩进 + - **中英混排**:根据主要语言选择 + +3. **功能组合使用**: + - 一键排版 + 首行缩进 = 完美的中文排版 + - 一键排版 + 无缩进 = 现代简洁风格 + +### 🔧 故障排除 + +1. **如果按钮不响应**: + - 检查是否有内容输入 + - 刷新页面重试 + +2. **如果效果不理想**: + - 检查原始内容格式 + - 尝试清理格式后重新应用 + +3. **如果样式冲突**: + - 使用一键排版重置所有样式 + - 再根据需要调整 + +## 🎉 总结 + +这两个功能的结合为用户提供了: + +1. **专业的排版效果**:一键获得杂志级别的排版质量 +2. **灵活的个性化选择**:根据需要调整首行缩进 +3. **简单的操作体验**:点击按钮即可完成复杂的排版工作 +4. **智能的用户反馈**:友好的提示和状态显示 + +现在您可以轻松创建既美观又专业的文章内容! diff --git a/栏目记忆功能测试指南.md b/栏目记忆功能测试指南.md new file mode 100644 index 0000000..8cd73d1 --- /dev/null +++ b/栏目记忆功能测试指南.md @@ -0,0 +1,236 @@ +# 🧪 栏目选择记忆功能测试指南 + +## 🎯 测试目标 + +验证栏目选择记忆功能是否按预期工作,确保用户体验的提升。 + +## 📋 测试准备 + +### 环境要求 +- 浏览器支持 localStorage +- 已登录 CMS 系统 +- 至少有 2-3 个不同的栏目可供选择 + +### 测试数据 +- 栏目A:例如"技术文章" +- 栏目B:例如"产品动态" +- 栏目C:例如"公司新闻" + +## 🔬 详细测试用例 + +### 测试用例 1:首次使用记忆功能 + +**步骤:** +1. 清空浏览器 localStorage(可选,模拟首次使用) +2. 进入文章管理页面 +3. 点击"添加文章"按钮 +4. 观察栏目选择框的状态 +5. 选择"栏目A" +6. 填写文章标题和内容 +7. 保存文章 + +**预期结果:** +- 初始状态栏目选择框为空或显示默认值 +- 选择栏目A后,系统应该记住这个选择 +- 保存成功后,栏目A被保存到 localStorage + +**验证方法:** +- 打开浏览器开发者工具 +- 查看 Application > Local Storage +- 确认存在 `cms_article_last_category` 键,值为栏目A的ID + +--- + +### 测试用例 2:记忆功能恢复 + +**步骤:** +1. 在测试用例1的基础上 +2. 关闭添加文章弹窗 +3. 重新点击"添加文章"按钮 +4. 观察栏目选择框的状态 + +**预期结果:** +- 栏目选择框应该自动显示"栏目A" +- 用户无需重新选择栏目 + +**验证方法:** +- 确认栏目选择框的值确实是栏目A +- 确认这是自动填入的,不是用户手动选择的 + +--- + +### 测试用例 3:更换栏目记忆 + +**步骤:** +1. 在测试用例2的基础上 +2. 将栏目从"栏目A"改为"栏目B" +3. 填写文章内容并保存 +4. 重新打开添加文章弹窗 + +**预期结果:** +- 保存后,localStorage 中的值应该更新为栏目B的ID +- 重新打开弹窗时,应该显示"栏目B" + +**验证方法:** +- 检查 localStorage 中的值是否已更新 +- 确认新弹窗中显示的是栏目B + +--- + +### 测试用例 4:从栏目页面添加文章 + +**步骤:** +1. 进入栏目管理页面 +2. 找到"栏目C",点击其"添加文章"按钮 +3. 观察栏目选择框的状态 +4. 填写文章内容并保存 +5. 重新从文章管理页面点击"添加文章" + +**预期结果:** +- 从栏目C页面打开的弹窗应该显示"栏目C" +- 保存后,记忆应该更新为栏目C +- 从文章管理页面重新打开时,应该显示栏目C + +**验证方法:** +- 确认优先级策略正确工作 +- 确认传入的栏目ID优先于记忆的栏目ID + +--- + +### 测试用例 5:编辑文章不影响记忆 + +**步骤:** +1. 确保当前记忆的栏目是"栏目C" +2. 编辑一篇属于"栏目A"的现有文章 +3. 修改文章内容(不修改栏目) +4. 保存文章 +5. 重新打开添加文章弹窗 + +**预期结果:** +- 编辑时显示的栏目应该是文章原有的栏目A +- 保存后,记忆的栏目仍然是栏目C(不变) +- 新建文章时仍然显示栏目C + +**验证方法:** +- 确认编辑操作不会影响栏目记忆 +- 确认新增和编辑的逻辑完全独立 + +--- + +### 测试用例 6:跨会话持久化 + +**步骤:** +1. 确保当前记忆的栏目是"栏目C" +2. 完全关闭浏览器 +3. 重新打开浏览器并登录系统 +4. 点击"添加文章"按钮 + +**预期结果:** +- 栏目选择框应该仍然显示"栏目C" +- 记忆功能跨会话保持有效 + +**验证方法:** +- 确认 localStorage 数据在浏览器重启后仍然存在 +- 确认功能正常恢复 + +--- + +### 测试用例 7:手动选择栏目的即时保存 + +**步骤:** +1. 打开添加文章弹窗 +2. 当前显示栏目A,手动改为栏目B +3. 不保存文章,直接关闭弹窗 +4. 重新打开添加文章弹窗 + +**预期结果:** +- 手动选择栏目B后,应该立即保存到记忆中 +- 重新打开弹窗时应该显示栏目B +- 即使没有保存文章,栏目记忆也应该更新 + +**验证方法:** +- 确认栏目选择的 onChange 事件正确触发保存 +- 确认不依赖文章保存就能更新记忆 + +--- + +## 🔍 边界情况测试 + +### 边界测试 1:清空栏目选择 + +**步骤:** +1. 打开添加文章弹窗(当前有记忆的栏目) +2. 点击栏目选择框的"清空"按钮 +3. 观察系统行为 + +**预期结果:** +- 栏目选择框应该变为空 +- 系统应该正常处理空值情况 + +### 边界测试 2:无效栏目ID + +**步骤:** +1. 手动修改 localStorage 中的栏目ID为一个不存在的值 +2. 刷新页面并打开添加文章弹窗 +3. 观察系统行为 + +**预期结果:** +- 系统应该优雅地处理无效ID +- 栏目选择框应该显示为空或默认状态 +- 不应该出现错误提示 + +### 边界测试 3:localStorage 不可用 + +**步骤:** +1. 禁用浏览器的 localStorage 功能 +2. 尝试使用栏目记忆功能 +3. 观察系统行为 + +**预期结果:** +- 系统应该正常工作,只是没有记忆功能 +- 不应该出现 JavaScript 错误 +- 功能应该优雅降级 + +--- + +## ✅ 测试检查清单 + +### 基础功能 +- [ ] 首次选择栏目能够正确保存 +- [ ] 重新打开弹窗能够正确恢复栏目 +- [ ] 更换栏目能够正确更新记忆 +- [ ] 手动选择栏目能够即时保存 + +### 优先级策略 +- [ ] 从栏目页面添加文章时优先使用传入栏目 +- [ ] 其他情况下使用记忆的栏目 +- [ ] 编辑文章时不影响栏目记忆 + +### 持久化 +- [ ] 关闭浏览器后重新打开仍然有效 +- [ ] localStorage 数据格式正确 +- [ ] 数据读写操作正常 + +### 用户体验 +- [ ] 功能对用户透明,不干扰正常操作 +- [ ] 栏目选择状态清晰可见 +- [ ] 没有不必要的提示或干扰 + +### 错误处理 +- [ ] 无效栏目ID的处理 +- [ ] localStorage 不可用时的降级 +- [ ] 空值和边界情况的处理 + +--- + +## 🎯 测试通过标准 + +所有测试用例都应该通过,特别是: + +1. **核心功能正常**:记忆和恢复功能完全正常 +2. **优先级正确**:各种场景下的栏目选择优先级符合预期 +3. **数据持久化**:跨会话数据保持有效 +4. **用户体验良好**:功能提升效率,不造成困扰 +5. **错误处理完善**:边界情况和异常情况处理得当 + +通过这些测试,可以确保栏目选择记忆功能稳定可靠,真正提升用户的使用体验! diff --git a/栏目选择记忆功能说明.md b/栏目选择记忆功能说明.md new file mode 100644 index 0000000..32f0bb9 --- /dev/null +++ b/栏目选择记忆功能说明.md @@ -0,0 +1,173 @@ +# 💾 栏目选择记忆功能说明 + +## 🎯 功能概述 + +新增了智能的栏目选择记忆功能,让用户在添加文章时不用每次都重新选择栏目,大大提升了内容发布的效率。 + +## ✨ 功能特点 + +### 🧠 智能记忆 +- **自动保存**:用户选择栏目后自动保存到本地存储 +- **智能恢复**:新建文章时自动填入上次选择的栏目 +- **优先级设置**:合理的栏目选择优先级策略 + +### 🎯 优先级策略 +1. **传入栏目优先**:从栏目页面点击"添加文章"时,使用传入的栏目ID +2. **记忆栏目备选**:其他情况下使用上次保存的栏目 +3. **编辑模式保持**:编辑文章时保持原有栏目不变 + +### 💾 持久化存储 +- **本地存储**:使用 localStorage 保存栏目选择 +- **跨会话保持**:关闭浏览器后重新打开仍然有效 +- **自动更新**:每次选择新栏目时自动更新记忆 + +## 🛠️ 技术实现 + +### 核心常量 +```javascript +const LAST_CATEGORY_KEY = 'cms_article_last_category'; +``` + +### 保存功能 +```javascript +// 保存最后选择的栏目到本地存储 +const saveLastCategory = (categoryId: number | undefined) => { + if (categoryId) { + localStorage.setItem(LAST_CATEGORY_KEY, categoryId.toString()); + } +}; +``` + +### 恢复功能 +```javascript +// 从本地存储获取最后选择的栏目 +const getLastCategory = (): number | undefined => { + const saved = localStorage.getItem(LAST_CATEGORY_KEY); + return saved ? parseInt(saved) : undefined; +}; +``` + +### 触发时机 +```javascript +// 1. 用户手动选择栏目时 +const onCategoryId = (id: number) => { + form.categoryId = id; + // 💾 在新增模式下,用户手动选择栏目时也保存到本地存储 + if (!isUpdate.value && id) { + saveLastCategory(id); + } +}; + +// 2. 保存成功后 +saveOrUpdate(formData) + .then((msg) => { + // 💾 保存成功后,记住当前选择的栏目(仅在新增时) + if (!isUpdate.value && form.categoryId) { + saveLastCategory(form.categoryId); + } + // ... + }); +``` + +### 恢复逻辑 +```javascript +// 新增模式:恢复上次选择的栏目 +if (props.data) { + // 编辑模式:加载现有文章数据 + // ... +} else { + // 新增模式:恢复上次选择的栏目 + isUpdate.value = false; + + // 🎯 优先级设置栏目: + // 1. 如果传入了 categoryId(从栏目页面点击添加),使用传入的 + // 2. 否则使用上次保存的栏目 + if (props.categoryId) { + form.categoryId = props.categoryId; + } else { + const lastCategory = getLastCategory(); + if (lastCategory) { + form.categoryId = lastCategory; + } + } +} +``` + +## 🎮 使用场景 + +### 场景一:常规文章发布 +1. **首次使用**:用户选择栏目,系统自动记忆 +2. **后续使用**:打开添加文章弹窗,栏目自动填入 +3. **更换栏目**:选择新栏目时,系统更新记忆 + +### 场景二:从栏目页面添加 +1. **点击添加**:从栏目管理页面点击"添加文章" +2. **自动填入**:使用当前栏目,不使用记忆的栏目 +3. **保存记忆**:发布成功后更新记忆为当前栏目 + +### 场景三:编辑现有文章 +1. **保持原样**:编辑时保持文章原有的栏目 +2. **不影响记忆**:编辑操作不会更新栏目记忆 +3. **独立处理**:编辑和新增的栏目处理完全独立 + +## 💡 用户体验提升 + +### 🚀 效率提升 +- **减少操作**:不用每次都选择栏目 +- **快速发布**:特别适合批量发布同类文章 +- **减少错误**:避免忘记选择栏目或选错栏目 + +### 🎯 智能化 +- **上下文感知**:根据使用场景智能选择栏目 +- **用户习惯**:记住用户的使用偏好 +- **无感知操作**:功能在后台默默工作 + +### 🔄 灵活性 +- **随时更改**:用户可以随时选择不同的栏目 +- **不强制绑定**:不会强制用户使用记忆的栏目 +- **清晰反馈**:栏目选择状态清晰可见 + +## 🔍 技术细节 + +### 数据存储 +- **存储位置**:浏览器 localStorage +- **存储格式**:字符串形式的栏目ID +- **存储时机**:栏目选择变化时和保存成功后 + +### 兼容性处理 +- **类型转换**:字符串和数字之间的安全转换 +- **空值处理**:处理 undefined 和 null 值 +- **错误容错**:localStorage 不可用时的降级处理 + +### 性能优化 +- **最小化存储**:只存储必要的栏目ID +- **即时更新**:选择变化时立即保存 +- **读取优化**:只在需要时读取存储的值 + +## 🎉 总结 + +栏目选择记忆功能是一个贴心的用户体验优化,它: + +1. **解决痛点**:彻底解决了重复选择栏目的问题 +2. **智能设计**:考虑了各种使用场景的优先级 +3. **技术可靠**:使用成熟的本地存储技术 +4. **用户友好**:功能透明,不干扰正常操作流程 + +这个功能让内容管理变得更加高效和人性化,特别适合需要频繁发布文章的用户! + +## 🧪 测试建议 + +### 基础功能测试 +1. **首次选择**:选择一个栏目,发布文章,检查是否记忆 +2. **自动恢复**:重新打开添加文章弹窗,检查栏目是否自动填入 +3. **更换栏目**:选择不同栏目,检查记忆是否更新 + +### 场景测试 +1. **从栏目页添加**:从栏目管理页面点击添加,检查优先级 +2. **编辑文章**:编辑现有文章,检查是否不影响记忆 +3. **跨会话测试**:关闭浏览器重新打开,检查记忆是否保持 + +### 边界情况测试 +1. **清空栏目**:清空栏目选择,检查处理是否正确 +2. **无效栏目**:删除记忆的栏目后,检查是否正常降级 +3. **多用户环境**:不同用户登录,检查记忆是否独立 diff --git a/段落首行缩进切换功能说明.md b/段落首行缩进切换功能说明.md new file mode 100644 index 0000000..111321c --- /dev/null +++ b/段落首行缩进切换功能说明.md @@ -0,0 +1,159 @@ +# 📐 段落首行缩进切换功能说明 + +## 🎯 功能概述 + +新增了一个智能的段落首行缩进切换功能,让用户可以根据需要快速切换中文段落的首行缩进格式。 + +## ✨ 功能特点 + +### 🔄 智能切换 +- **自动检测**:智能检测当前段落是否已有首行缩进 +- **一键切换**:点击按钮即可在有缩进/无缩进之间切换 +- **批量处理**:一次性处理文章中的所有段落 + +### 📝 中文优化 +- **标准缩进**:使用 2em 的首行缩进,符合中文排版规范 +- **智能识别**:只对段落标签 `

` 进行处理 +- **样式保持**:保留段落的其他样式属性 + +### 🎨 用户体验 +- **友好提示**:使用 emoji 和温馨文案 +- **状态反馈**:清晰显示当前操作结果 +- **错误处理**:完善的异常处理和用户指导 + +## 🛠️ 技术实现 + +### 按钮配置 +```javascript +// 添加段落首行缩进切换按钮 +editor.ui.registry.addButton('toggle_indent', { + text: '首行缩进', + icon: 'indent', + tooltip: '切换段落首行缩进(适合中文排版)', + onAction: () => { + toggleParagraphIndent(editor); + } +}); +``` + +### 核心功能 +```javascript +// 🔄 段落首行缩进切换功能 +const toggleParagraphIndent = (editor: any) => { + // 1. 检查内容 + // 2. 检测当前缩进状态 + // 3. 执行相应操作(添加/移除) + // 4. 显示操作结果 +} +``` + +### 添加缩进算法 +```javascript +const addIndentToParagraphs = (content: string): string => { + return content.replace(/]*)>/g, (match, attrs) => { + if (attrs.includes('style=')) { + if (attrs.includes('text-indent')) { + // 更新现有的 text-indent + return match.replace(/text-indent:\s*[^;]+;?/g, 'text-indent: 2em;'); + } else { + // 在现有 style 中添加 text-indent + return match.replace(/style="([^"]*)"/, 'style="$1 text-indent: 2em;"'); + } + } else { + // 添加新的 style 属性 + return ``; + } + }); +}; +``` + +### 移除缩进算法 +```javascript +const removeIndentFromParagraphs = (content: string): string => { + return content.replace(/]*)>/g, (match, attrs) => { + if (attrs.includes('text-indent')) { + // 移除 text-indent 属性 + let newAttrs = attrs.replace(/text-indent:\s*[^;]+;?\s*/g, ''); + + // 如果 style 属性变空了,移除整个 style 属性 + newAttrs = newAttrs.replace(/style="\s*"/g, ''); + newAttrs = newAttrs.replace(/style=''\s*/g, ''); + + return ``; + } + return match; + }); +}; +``` + +## 🧪 使用方法 + +### 1. 准备内容 +在富文本编辑器中输入一些段落内容: +``` +这是第一个段落,用来测试首行缩进功能。 + +这是第二个段落,也是用来测试的内容。 + +这是第三个段落,包含更多的文字内容来展示效果。 +``` + +### 2. 切换缩进 +1. 点击工具栏的"首行缩进"按钮 +2. 观察提示信息: + - 添加缩进时:`📐 已添加段落首行缩进` + - 移除缩进时:`📐 已移除段落首行缩进` + +### 3. 验证效果 +- **有缩进时**:每个段落的第一行会向右缩进 2 个字符的距离 +- **无缩进时**:段落恢复到左对齐状态 + +## 🎯 应用场景 + +### 📚 中文文章 +- **学术论文**:符合中文学术写作规范 +- **新闻报道**:传统中文排版习惯 +- **小说散文**:提升阅读体验 + +### 🌍 多语言内容 +- **中英混排**:可以选择性应用缩进 +- **灵活切换**:根据内容类型调整格式 +- **用户偏好**:满足不同用户的排版需求 + +## 💡 设计亮点 + +### 🎨 人性化设计 +- **直观操作**:一键切换,简单易用 +- **智能检测**:自动判断当前状态 +- **友好反馈**:清晰的操作提示 + +### 🔧 技术优势 +- **正则匹配**:精确处理 HTML 标签 +- **样式保持**:不影响其他段落样式 +- **兼容性好**:与现有功能完美配合 + +### 🚀 扩展性强 +- **模块化设计**:独立的功能模块 +- **易于维护**:清晰的代码结构 +- **可扩展**:可以轻松添加更多排版选项 + +## 🔍 错误处理 + +### 内容检查 +- **空内容提示**:`📝 请先输入一些段落内容,然后再切换首行缩进` +- **异常处理**:`🔧 首行缩进切换失败,请重试` + +### 状态检测 +- **智能识别**:检查 `text-indent: 2em` 或 `text-indent:2em` +- **容错处理**:处理各种可能的样式格式 + +## 🎉 总结 + +段落首行缩进切换功能是对一键排版功能的完美补充,它: + +1. **提升用户体验**:简单直观的操作方式 +2. **满足实际需求**:符合中文排版习惯 +3. **技术实现优雅**:高效的算法和完善的错误处理 +4. **扩展性良好**:为未来功能扩展奠定基础 + +这个功能让用户可以根据具体需求灵活调整段落格式,真正实现了人性化的智能排版体验!

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