From ce9943bcd5c00574bf21fbdeb5f4d21ccc62059a Mon Sep 17 00:00:00 2001 From: callmeyan Date: Tue, 9 Jan 2024 22:25:12 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=A1=B5=E9=9D=A2=E6=95=88?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 24 +- package.json | 2 +- src/App.vue | 38 +-- src/app-config.ts | 4 + src/components/button/btn-style.scss | 69 +++++ src/components/button/button.vue | 29 ++ src/components/button/index.ts | 4 + src/components/login/index.vue | 196 ++++++++++--- src/components/login/login_pic.png | Bin 0 -> 34117 bytes src/components/message/index.ts | 40 +++ src/components/message/notice.vue | 91 ++++++ src/components/message/notification-group.vue | 44 +++ src/components/message/types.ts | 7 + src/components/page-header.vue | 27 ++ src/components/page-loading/index.vue | 116 +------- src/components/select/index.ts | 8 + src/components/select/select-item.vue | 11 + src/components/select/select.vue | 130 +++++++++ src/main.ts | 7 +- src/pages/Layout.vue | 141 +++++++--- src/pages/datas.vue | 116 +++++++- src/pages/result.vue | 13 + src/pages/user.vue | 116 +++++++- src/router.ts | 9 +- src/service/click-outside.ts | 24 ++ src/service/user-store.ts | 10 +- src/style.css | 11 - src/style.scss | 210 ++++++++++++++ vite.config.ts | 8 +- yarn.lock | 263 ++++++++++++------ 30 files changed, 1437 insertions(+), 331 deletions(-) create mode 100644 src/app-config.ts create mode 100644 src/components/button/btn-style.scss create mode 100644 src/components/button/button.vue create mode 100644 src/components/button/index.ts create mode 100644 src/components/login/login_pic.png create mode 100644 src/components/message/index.ts create mode 100644 src/components/message/notice.vue create mode 100644 src/components/message/notification-group.vue create mode 100644 src/components/message/types.ts create mode 100644 src/components/page-header.vue create mode 100644 src/components/select/index.ts create mode 100644 src/components/select/select-item.vue create mode 100644 src/components/select/select.vue create mode 100644 src/service/click-outside.ts delete mode 100644 src/style.css create mode 100644 src/style.scss diff --git a/index.html b/index.html index 6143dde..1c6e501 100644 --- a/index.html +++ b/index.html @@ -6,24 +6,26 @@ 营养与健康数据管理处理平台
- - - +
+
+
+
+
初始化中...
diff --git a/package.json b/package.json index 8bcdec5..6e62a43 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,9 @@ "preview": "vite preview" }, "dependencies": { + "ant-design-vue": "4.x", "dayjs": "^1.11.10", "pinia": "^2.1.7", - "view-ui-plus": "^1.3.15", "vue": "^3.4.0", "vue-router": "4" }, diff --git a/src/App.vue b/src/App.vue index 26b676a..54a338c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,42 +1,31 @@ -./service/api/user.ts diff --git a/src/app-config.ts b/src/app-config.ts new file mode 100644 index 0000000..ca984d9 --- /dev/null +++ b/src/app-config.ts @@ -0,0 +1,4 @@ +export const AppConfig = { + appName: '营养计算器管理后台', + appDescription: '临床营养制剂能量及营养素计算', +} diff --git a/src/components/button/btn-style.scss b/src/components/button/btn-style.scss new file mode 100644 index 0000000..5d9ea2f --- /dev/null +++ b/src/components/button/btn-style.scss @@ -0,0 +1,69 @@ +.btn { + display: inline-block; + margin-bottom: 0; + font-weight: 400; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + border: 1px solid transparent; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + height: 40px; + padding: 0 15px; + font-size: 14px; + border-radius: 4px; + outline: none; + transition: color .2s linear, background-color .2s linear, border .2s linear, box-shadow .2s linear; + + &.btn-primary { + color: #fff; + background-color: var(--primary-color-1); + border-color: var(--primary-color-1); + + &:hover, &:active { + background-color: var(--primary-color-1-hover); + border-color: var(--primary-color-1-hover); + } + } + &.btn-loading { + pointer-events: none; + position: relative; + } + .icon-loading{ + display: inline-block; + margin-right: 5px; + animation: loading-360 linear 1s infinite; + vertical-align: middle; + display: inline-flex; + align-items: center; + color: inherit; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + + &.btn-block { + display: block; + width: 100%; + } + + &.btn-circle, + &.btn-circle-outline { + border-radius: 32px; + } + + &.btn-round, + &.btn-round-outline { + border-radius: 32px; + } +} diff --git a/src/components/button/button.vue b/src/components/button/button.vue new file mode 100644 index 0000000..8f2df49 --- /dev/null +++ b/src/components/button/button.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/components/button/index.ts b/src/components/button/index.ts new file mode 100644 index 0000000..6fd1e5e --- /dev/null +++ b/src/components/button/index.ts @@ -0,0 +1,4 @@ +import ButtonComponent from './button.vue'; + +console.log(ButtonComponent) +export const Button = ButtonComponent diff --git a/src/components/login/index.vue b/src/components/login/index.vue index 17126e3..731801c 100644 --- a/src/components/login/index.vue +++ b/src/components/login/index.vue @@ -1,32 +1,63 @@ @@ -35,40 +66,133 @@ const handleSubmit = (...e: any) => { height: 100vh; position: fixed; inset: 0; - display: flex; - align-items: center; text-align: center; - justify-content: center; - background: rgba(0, 0, 0, 0.3); + background: var(--primary-background); z-index: 101; } -.logo { +.login-container { + width: 800px; + max-width: 90%; + display: flex; + overflow: hidden; + border-radius: var(--primary-border-radius); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.05); +} + +.left-panel { + background: var(--primary-color-1); + color: white; + width: 50%; + padding: 50px 0px; + text-align: center; + img { - width: 200px; + margin: 50px 20px 10px; + width: 90%; } - - margin-bottom: 10px; } -.desc { - margin-bottom: 30px; - color: #ccc; +.app-desc { + margin-top: 10px; } -.submit { +.login-form-wrapper { + background: white; + width: 50%; + transition: all 0.2s; +} +.submit{ + margin-top: 20px; +} +.form-container { + width: 75%; +} + +.form-title { + font-size: 16px; + font-weight: bold; + + &:after { + content: ' '; + width: 30px; + height: 2px; + display: block; + margin: 5px auto; + background: var(--primary-color-1); + } +} + +.login-form { margin-top: 50px; } -.login-container { - width: 300px; +.message-tips { + height: 30px; + line-height: 30px; + color: red; + text-align: left; } -.mask { - position: fixed; - inset: 0; - background: url("https://bing.biturl.top/?resolution=1920&format=image&index=0&mkt=zh-CN") #fff; - z-index: 100; - filter: blur(5px); +.form-item { + margin-top: 20px; + input { + outline: none; + display: block; + width: 100%; + border: none; + border-bottom: solid 1px #e8eaef; + padding: 5px; + transition: all 0.5s; + + &:focus { + border-color: var(--primary-color-1); + } + } } + +.origin { + + // + //.logo { + // img { + // width: 200px; + // } + // + // margin-bottom: 10px; + //} + // + //.desc { + // margin-bottom: 30px; + // color: #ccc; + //} + // + //.submit { + // margin-top: 50px; + //} + // +} + +@media screen and (max-width: 800px) { + .login-form-wrapper { + padding: 50px 0; + width: 100%; + } + .login-container { + display: block; + max-width: 100%; + border-radius: 0; + height: 100%; + background: #fff; + } + .left-panel { + width: 100%; + + img { + width: 250px; + margin: 10px 0; + } + } +} + diff --git a/src/components/login/login_pic.png b/src/components/login/login_pic.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ac7c035d5ffb44ef24902a5db17b153fff10e2 GIT binary patch literal 34117 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 BL_z=n literal 0 HcmV?d00001 diff --git a/src/components/message/index.ts b/src/components/message/index.ts new file mode 100644 index 0000000..e6cc21e --- /dev/null +++ b/src/components/message/index.ts @@ -0,0 +1,40 @@ +import Notification from "./notification-group.vue"; +import {h, render, VNode} from 'vue' +import {NotificationProps} from "./types"; + +let vNode: VNode | null = null; + +function getInstance() { + if (!vNode) { + vNode = h(Notification, { + ref:'noticeNode' + }) + let noticeWrapper = document.querySelector('.notice-wrapper-c') + + if (!noticeWrapper) { + noticeWrapper = document.createElement('div') + noticeWrapper.classList.add('notice-wrapper-c') + document.body.appendChild(noticeWrapper) + } + render(vNode, noticeWrapper) + } + return vNode?.component?.exposed; +} + +function showNotification(prop: NotificationProps) { + const instance = getInstance(); + instance?.addNotice?.(prop) +} + + +export const message = { + show(content: string, title?: string,duration = 3) { + showNotification({ + type: 'notice', + content, + title, + duration, + closable:true + }) + } +} diff --git a/src/components/message/notice.vue b/src/components/message/notice.vue new file mode 100644 index 0000000..c504c45 --- /dev/null +++ b/src/components/message/notice.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/src/components/message/notification-group.vue b/src/components/message/notification-group.vue new file mode 100644 index 0000000..cac3d11 --- /dev/null +++ b/src/components/message/notification-group.vue @@ -0,0 +1,44 @@ + + + + diff --git a/src/components/message/types.ts b/src/components/message/types.ts new file mode 100644 index 0000000..ce8d51c --- /dev/null +++ b/src/components/message/types.ts @@ -0,0 +1,7 @@ +export type NotificationProps = { + type: 'notice' | 'message'; + title?: string; + content: string; + closable?: boolean; + duration?: number; +} diff --git a/src/components/page-header.vue b/src/components/page-header.vue new file mode 100644 index 0000000..3cd192a --- /dev/null +++ b/src/components/page-header.vue @@ -0,0 +1,27 @@ + + + + + \ No newline at end of file diff --git a/src/components/page-loading/index.vue b/src/components/page-loading/index.vue index eba651c..eb580b4 100644 --- a/src/components/page-loading/index.vue +++ b/src/components/page-loading/index.vue @@ -1,110 +1,14 @@ - - - - + diff --git a/src/components/select/index.ts b/src/components/select/index.ts new file mode 100644 index 0000000..337e5af --- /dev/null +++ b/src/components/select/index.ts @@ -0,0 +1,8 @@ +import Select from './select.vue' +import SelectItem from './select-item.vue' + + +export { + Select, + SelectItem +} diff --git a/src/components/select/select-item.vue b/src/components/select/select-item.vue new file mode 100644 index 0000000..63cf316 --- /dev/null +++ b/src/components/select/select-item.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/src/components/select/select.vue b/src/components/select/select.vue new file mode 100644 index 0000000..c71d347 --- /dev/null +++ b/src/components/select/select.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/main.ts b/src/main.ts index cdafc3e..ac2b673 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,11 +1,14 @@ import { createApp } from 'vue' -import 'view-ui-plus/dist/styles/viewuiplus.css' +// import 'view-ui-plus/dist/styles/viewuiplus.css' import { createPinia } from 'pinia' import App from './App.vue' import router from './router' -import './style.css' +import './style.scss' +// import 'ant-design-vue/dist/reset.css'; +import {ClickOutsideDirective} from "./service/click-outside.ts"; createApp(App) .use(createPinia()) .use(router) + .directive('click-outside',ClickOutsideDirective) .mount('#app') diff --git a/src/pages/Layout.vue b/src/pages/Layout.vue index 232c7fe..9aa0dcc 100644 --- a/src/pages/Layout.vue +++ b/src/pages/Layout.vue @@ -1,10 +1,14 @@ + diff --git a/src/pages/result.vue b/src/pages/result.vue index 39428d4..f404e9a 100644 --- a/src/pages/result.vue +++ b/src/pages/result.vue @@ -1,3 +1,16 @@ + diff --git a/src/pages/user.vue b/src/pages/user.vue index d6c0588..dba4de7 100644 --- a/src/pages/user.vue +++ b/src/pages/user.vue @@ -1,3 +1,115 @@ + \ No newline at end of file +
+ +
+ + + 营养制剂 + + + + 类型 + + + + + + + +
+
+
+ + + + + + + + + + + + + + + +
营养制剂{{ th.name }}操作
{{ tr.product.name }}{{ it.value }} + + 编辑 + 删除 + +
+
+
+ +
+
+
+ + diff --git a/src/router.ts b/src/router.ts index 0ad75c4..5c33401 100644 --- a/src/router.ts +++ b/src/router.ts @@ -26,7 +26,8 @@ export const routes:RouteRecordRaw[] = [ path: '', name: 'home', meta: { - title: '输出计算' + title: '输出计算', + icon:'icon-calculator' }, component: () => import('./pages/result.vue') }, @@ -34,7 +35,8 @@ export const routes:RouteRecordRaw[] = [ path: 'data', name: 'data', meta: { - title: '数据管理' + title: '数据管理', + icon:'icon-input' }, component: () => import('./pages/datas.vue') }, @@ -44,7 +46,8 @@ export const routes:RouteRecordRaw[] = [ component: () => import('./pages/user.vue'), meta: { role: 'root', - title: '用户管理' + title: '用户管理', + icon:'icon-user' } } ] diff --git a/src/service/click-outside.ts b/src/service/click-outside.ts new file mode 100644 index 0000000..103522e --- /dev/null +++ b/src/service/click-outside.ts @@ -0,0 +1,24 @@ +import {DirectiveBinding, ObjectDirective} from "vue"; + +export const ClickOutsideDirective: ObjectDirective = { + beforeMount(el: HTMLElement, binding: DirectiveBinding) { + + function documentHandler(e: any ) { + if (el.contains(e.target)) { + return false; + } + binding.value?.(e); + } + + //@ts-ignore + el.__vueClickOutside__ = documentHandler; + document.addEventListener('click', documentHandler); + }, + + unmounted(el: HTMLElement) { + //@ts-ignore + document.removeEventListener('click', el.__vueClickOutside__); + //@ts-ignore + delete el.__vueClickOutside__; + }, +} diff --git a/src/service/user-store.ts b/src/service/user-store.ts index 838c4b3..8c375c0 100644 --- a/src/service/user-store.ts +++ b/src/service/user-store.ts @@ -2,7 +2,6 @@ import {defineStore} from "pinia" import {onMounted, ref} from "vue" import {GetLoginInfo, LoginService} from "./api/user"; import {BizError} from "../core/errors.ts"; -import router from "../router.ts"; import {sleep} from "../core/sleep.ts"; type LoginParam = { @@ -26,6 +25,7 @@ export const useUserStore = defineStore('counter', () => { // 登出 const logout = async () => { + await sleep(1000); localStorage.removeItem(LOGIN_SESSION_KEY) userInfo.value = undefined; } @@ -42,13 +42,17 @@ export const useUserStore = defineStore('counter', () => { userInfo.value = await GetLoginInfo(); } onMounted(() => { + getUserInfo().catch((e: BizError) => { if (e.code == 401) { - router.replace(`/login?redirect=${router.currentRoute.value.path}`).then(() => console.log('401 show login')) + //router.replace(`/login?redirect=${router.currentRoute.value.path}`).then(() => ) + console.log('401 show login') } }).finally(() => { console.log('onMounted inited') - userInit.value = true + setTimeout(()=>{ + userInit.value = true + },500) }) }) diff --git a/src/style.css b/src/style.css deleted file mode 100644 index b774814..0000000 --- a/src/style.css +++ /dev/null @@ -1,11 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} diff --git a/src/style.scss b/src/style.scss new file mode 100644 index 0000000..bdaeee8 --- /dev/null +++ b/src/style.scss @@ -0,0 +1,210 @@ +@font-face { + font-family: 'iconfont'; + /* Project id 4404323 */ + src: url('//at.alicdn.com/t/c/font_4404323_pubb123lqt.woff2?t=1704788291593') format('woff2'), + url('//at.alicdn.com/t/c/font_4404323_pubb123lqt.woff?t=1704788291593') format('woff'), + url('//at.alicdn.com/t/c/font_4404323_pubb123lqt.ttf?t=1704788291593') format('truetype'); +} + +@keyframes loading-360 { + 0% { + transform: rotate(0) + } + + 100% { + transform: rotate(360deg) + } +} + +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; + --primary-background: #f0f0f2; + --primary-color-1: rgb(46, 199, 165); + --primary-color-1-hover: rgba(46, 199, 165, .9); + + --primary-color-2: #3894ff; + --primary-color-2-hover: #3895ffbf; + --primary-border-radius: 3px; +} + +[type=reset], +[type=submit], +button, +html [type=button] { + -webkit-appearance: button; +} + +article, +aside, +blockquote, +body, +button, +dd, +details, +div, +dl, +dt, +fieldset, +figcaption, +figure, +footer, +form, +h1, +h2, +h3, +h4, +h5, +h6, +header, +hgroup, +hr, +input, +legend, +li, +menu, +nav, +ol, +p, +section, +td, +textarea, +th, +ul { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif; + font-size: 14px; + line-height: 1.5; + color: #313a6e; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: var(--primary-background); +} + +a { + text-decoration: none; +} + +button, +input, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +img { + max-width: 100%; +} + +[class*=icon] { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + vertical-align: -.125em; + speak: none; + font-variant: normal; + text-transform: none; + text-rendering: optimizeLegibility; +} + +.icon-arrow-down:before { + content: "\e665"; +} + +.icon-close:before { + content: "\e646"; +} + +.icon-close-circle:before { + content: "\e66e"; +} + +.icon-search:before { + content: "\e600"; +} + +.icon-calculator:before { + content: "\e799"; +} + +.icon-user:before { + content: "\e7ae"; +} + +.icon-add:before { + content: "\e6df"; +} + +.icon-input:before { + content: "\e660"; +} + +.icon-loading:before { + content: "\e617"; +} + +.layout-center { + display: flex; + align-items: center; + justify-content: center; +} + +.ant-btn { + &.btn-info { + background-color: var(--primary-color-2); + border-color: var(--primary-color-2); + color: #fff; + + &:hover { + background-color: var(--primary-color-2-hover); + border-color: var(--primary-color-2-hover); + color: #fff; + } + } +} + +.table { + table-layout: fixed; + border-collapse: collapse; + width: 100%; + th,td{ + min-width: 0; + height: 42px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + text-align: left; + text-overflow: ellipsis; + vertical-align: middle; + border-bottom: 1px solid #e8e8ec; + padding: 0 16px; + } + th { + white-space: nowrap; + overflow: hidden; + background-color: #f2f3f5; + position: relative; + height: 100%; + padding:10px 16px; + } + tr{ + &:hover{ + background-color: #ebf7ff; + } + } +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index f14925c..91376a1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -12,13 +12,13 @@ export default defineConfig({ output: { manualChunks(id) { // console.log('chunk id',id) - if (id.includes('view-ui-plus')) { - return 'view-ui' + if (id.includes('ant-design')) { + return 'ui-libs' } // if (id.includes('vue')) { + // if (id.includes('node_modules')) { // return 'vue' // } - // if (id.includes('node_modules')) { // return id.toString().split('node_modules/')[1].split('/')[0].toString(); // } } @@ -28,7 +28,7 @@ export default defineConfig({ base: './', // resolve:{ // alias:{ - // '@': path.resolve(__dirname,"./src") + // '@': path.resolve(__dirname,"./src") // } // }, }) diff --git a/yarn.lock b/yarn.lock index 31e530b..3b0d98a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,53 @@ # yarn lockfile v1 +"@ant-design/colors@^6.0.0": + version "6.0.0" + resolved "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz#9b9366257cffcc47db42b9d0203bb592c13c0298" + integrity sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ== + dependencies: + "@ctrl/tinycolor" "^3.4.0" + +"@ant-design/icons-svg@^4.2.1": + version "4.3.1" + resolved "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.3.1.tgz#4b2f65a17d4d32b526baa6414aca2117382bf8da" + integrity sha512-4QBZg8ccyC6LPIRii7A0bZUk3+lEDCLnhB+FVsflGdcWPPmV+j3fire4AwwoqHV/BibgvBmR9ZIo4s867smv+g== + +"@ant-design/icons-vue@^7.0.0": + version "7.0.1" + resolved "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-7.0.1.tgz#83de301771fadd03f3890e627314102405c31c22" + integrity sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-svg" "^4.2.1" + "@babel/parser@^7.23.6": version "7.23.6" resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.6.tgz" integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== +"@babel/runtime@^7.10.5": + version "7.23.8" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" + integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== + dependencies: + regenerator-runtime "^0.14.0" + +"@ctrl/tinycolor@^3.4.0", "@ctrl/tinycolor@^3.5.0": + version "3.6.1" + resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31" + integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA== + +"@emotion/hash@^0.9.0": + version "0.9.1" + resolved "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" + integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== + +"@emotion/unitless@^0.8.0": + version "0.8.1" + resolved "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" + integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== + "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" @@ -122,6 +164,14 @@ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@simonwep/pickr@~1.8.0": + version "1.8.2" + resolved "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz#96dc86675940d7cad63d69c22083dd1cbb9797cb" + integrity sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA== + dependencies: + core-js "^3.15.1" + nanopop "^2.1.0" + "@types/node@^20.10.5": version "20.10.5" resolved "https://registry.npmmirror.com/@types/node/-/node-20.10.5.tgz" @@ -255,6 +305,34 @@ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.0.tgz" integrity sha512-Nhh3ed3G1R6HDAWiG6YYFt0Zmq/To6u5vjzwa9TIquGheCXPY6nEdIAO8ZdlwXsWqC2yNLj700FOvShpYt5CEA== +ant-design-vue@4.x: + version "4.1.0" + resolved "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-4.1.0.tgz#ec8d429cea7173775bc86ff083631897d5bdcdfb" + integrity sha512-sVQAfTCxpGRfFykM033/0ZWfNWbsL8EsqhBP9knbP4Ptc52zG57mQsCPWvq6Cj3yqmDJW6ykY05v0KB+5rAPXg== + dependencies: + "@ant-design/colors" "^6.0.0" + "@ant-design/icons-vue" "^7.0.0" + "@babel/runtime" "^7.10.5" + "@ctrl/tinycolor" "^3.5.0" + "@emotion/hash" "^0.9.0" + "@emotion/unitless" "^0.8.0" + "@simonwep/pickr" "~1.8.0" + array-tree-filter "^2.1.0" + async-validator "^4.0.0" + csstype "^3.1.1" + 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" + stylis "^4.1.3" + throttle-debounce "^5.0.0" + vue-types "^3.0.0" + warning "^4.0.0" + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz" @@ -263,21 +341,21 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -async-validator@^3.3.0: - version "3.5.2" - resolved "https://registry.npmmirror.com/async-validator/-/async-validator-3.5.2.tgz" - integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ== +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#873ac00fec83749f255ac8dd083814b4f6329190" + integrity sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw== + +async-validator@^4.0.0: + version "4.2.5" + resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339" + integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg== 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== -batch-processor@1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/batch-processor/-/batch-processor-1.0.0.tgz" - integrity sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz" @@ -312,27 +390,27 @@ braces@~3.0.2: optionalDependencies: fsevents "~2.3.2" +compute-scroll-into-view@^1.0.20: + version "1.0.20" + resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz#1768b5522d1172754f5d0c9b02de3af6be506a43" + integrity sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg== + computeds@^0.0.1: version "0.0.1" resolved "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz" integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== -countup.js@^1.9.3: - version "1.9.3" - resolved "https://registry.npmmirror.com/countup.js/-/countup.js-1.9.3.tgz" - integrity sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A== +core-js@^3.15.1: + version "3.35.0" + resolved "https://registry.npmmirror.com/core-js/-/core-js-3.35.0.tgz#58e651688484f83c34196ca13f099574ee53d6b4" + integrity sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg== -csstype@^3.1.3: +csstype@^3.1.1, csstype@^3.1.3: version "3.1.3" resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -dayjs@^1.11.0: - version "1.11.10" - resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== - -dayjs@^1.11.10: +dayjs@^1.10.5, dayjs@^1.11.10: version "1.11.10" resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== @@ -342,17 +420,15 @@ de-indent@^1.0.2: resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz" integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== -deepmerge@^2.2.1: - version "2.2.1" - resolved "https://registry.npmmirror.com/deepmerge/-/deepmerge-2.2.1.tgz" - integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== +dom-align@^1.12.1: + version "1.12.4" + resolved "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz#3503992eb2a7cfcb2ed3b2a6d21e0b9c00d54511" + integrity sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw== -element-resize-detector@^1.2.0: - version "1.2.4" - resolved "https://registry.npmmirror.com/element-resize-detector/-/element-resize-detector-1.2.4.tgz" - integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg== - dependencies: - batch-processor "1.0.0" +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#0decc8522801fd8d3f1c6ba355a74d382c5f989b" + integrity sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w== entities@^4.5.0: version "4.5.0" @@ -445,20 +521,32 @@ is-number@^7.0.0: resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -js-calendar@^1.2.3: - version "1.2.3" - resolved "https://registry.npmmirror.com/js-calendar/-/js-calendar-1.2.3.tgz" - integrity sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw== +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#662d92d24c0aa4302407b0d45d21f2251c85f85b" + integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.npmmirror.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz" - integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== +"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#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -lodash.throttle@^4.1.1: - version "4.1.1" - resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz" - integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== +lodash-es@^4.17.15: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" lru-cache@^6.0.0: version "6.0.0" @@ -491,16 +579,16 @@ nanoid@^3.3.7: resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +nanopop@^2.1.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/nanopop/-/nanopop-2.3.0.tgz#a5f672fba27d45d6ecbd0b59789c040072915123" + integrity sha512-fzN+T2K7/Ah25XU02MJkPZ5q4Tj5FpjmIYq4rvoHX4yb16HzFdCO6JxFFn5Y/oBhQ8no8fUZavnyIv9/+xkBBw== + 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== -numeral@^2.0.6: - version "2.0.6" - resolved "https://registry.npmmirror.com/numeral/-/numeral-2.0.6.tgz" - integrity sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA== - path-browserify@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz" @@ -524,11 +612,6 @@ pinia@^2.1.7: "@vue/devtools-api" "^6.5.0" vue-demi ">=0.14.5" -popper.js@^1.14.6: - version "1.16.1" - resolved "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz" - integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== - postcss@^8.4.27, postcss@^8.4.32: version "8.4.32" resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.32.tgz" @@ -545,6 +628,16 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +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#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + rollup@^3.27.1: version "3.29.4" resolved "https://registry.npmmirror.com/rollup/-/rollup-3.29.4.tgz" @@ -561,10 +654,12 @@ sass@^1.69.5: immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -select@^1.1.2: - version "1.1.2" - resolved "https://registry.npmmirror.com/select/-/select-1.1.2.tgz" - integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== +scroll-into-view-if-needed@^2.2.25: + version "2.2.31" + resolved "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz#d3c482959dc483e37962d1521254e3295d0d1587" + integrity sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA== + dependencies: + compute-scroll-into-view "^1.0.20" semver@^7.5.4: version "7.5.4" @@ -573,15 +668,25 @@ semver@^7.5.4: dependencies: lru-cache "^6.0.0" +shallow-equal@^1.0.0: + version "1.2.1" + resolved "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da" + integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA== + "source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -tinycolor2@^1.4.1: - version "1.6.0" - resolved "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz" - integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== +stylis@^4.1.3: + version "4.3.1" + resolved "https://registry.npmmirror.com/stylis/-/stylis-4.3.1.tgz#ed8a9ebf9f76fe1e12d462f5cc3c4c980b23a7eb" + integrity sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ== + +throttle-debounce@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" + integrity sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg== to-regex-range@^5.0.1: version "5.0.1" @@ -600,30 +705,6 @@ undici-types@~5.26.4: resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -v-click-outside-x@^3.7.1: - version "3.7.1" - resolved "https://registry.npmmirror.com/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz" - integrity sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg== - -view-ui-plus@^1.3.15: - version "1.3.15" - resolved "https://registry.npmmirror.com/view-ui-plus/-/view-ui-plus-1.3.15.tgz" - integrity sha512-dbi3uTk8twgtpino0QFIvCb3Gck135czbnvxs2M0lOmUQMKAK7GqJ3m8IobwyWXAxkoA1+Ek8QMeC3a+InOWpQ== - dependencies: - async-validator "^3.3.0" - countup.js "^1.9.3" - dayjs "^1.11.0" - deepmerge "^2.2.1" - element-resize-detector "^1.2.0" - js-calendar "^1.2.3" - lodash.chunk "^4.2.0" - lodash.throttle "^4.1.1" - numeral "^2.0.6" - popper.js "^1.14.6" - select "^1.1.2" - tinycolor2 "^1.4.1" - v-click-outside-x "^3.7.1" - vite@^4.3.2: version "4.5.1" resolved "https://registry.npmmirror.com/vite/-/vite-4.5.1.tgz" @@ -664,6 +745,13 @@ vue-tsc@^1.4.2: "@vue/language-core" "1.8.27" semver "^7.5.4" +vue-types@^3.0.0: + version "3.0.2" + resolved "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz#ec16e05d412c038262fc1efa4ceb9647e7fb601d" + integrity sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw== + dependencies: + is-plain-object "3.0.1" + vue@^3.4.0: version "3.4.0" resolved "https://registry.npmmirror.com/vue/-/vue-3.4.0.tgz" @@ -675,6 +763,13 @@ vue@^3.4.0: "@vue/server-renderer" "3.4.0" "@vue/shared" "3.4.0" +warning@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + yallist@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz"