commit af5072e5ef1f19f68e8ce7a2cdd30cbd984afb05
Author: funjia <13429193897@163.com>
Date: Thu Mar 27 19:33:39 2025 +0800
feat: first commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d53507e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,26 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+# dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+dist
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
new file mode 100644
index 0000000..5e073f1
--- /dev/null
+++ b/auto-imports.d.ts
@@ -0,0 +1,6 @@
+// Generated by 'unplugin-auto-import'
+// We suggest you to commit this file into source control
+declare global {
+
+}
+export {}
diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 0000000..a4f963b
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,38 @@
+// generated by unplugin-vue-components
+// We suggest you to commit this file into source control
+// Read more: https://github.com/vuejs/core/pull/3399
+import '@vue/runtime-core'
+
+declare module '@vue/runtime-core' {
+ export interface GlobalComponents {
+ Angle: typeof import('./src/components/Angle.vue')['default']
+ Autoresponsive: typeof import('./src/components/autoresponsive.vue')['default']
+ CalcRectDock: typeof import('./src/components/CalcRectDock.vue')['default']
+ CodeMirror: typeof import('./src/components/CodeMirror.vue')['default']
+ CountDownMessage: typeof import('./src/components/CountDownMessage.vue')['default']
+ DynamicTags: typeof import('./src/components/DynamicTags.vue')['default']
+ ElButton: typeof import('element-plus/es')['ElButton']
+ ElCol: typeof import('element-plus/es')['ElCol']
+ ElDropdown: typeof import('element-plus/es')['ElDropdown']
+ ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
+ ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
+ ElForm: typeof import('element-plus/es')['ElForm']
+ ElFormItem: typeof import('element-plus/es')['ElFormItem']
+ ElIcon: typeof import('element-plus/es')['ElIcon']
+ ElInput: typeof import('element-plus/es')['ElInput']
+ ElLink: typeof import('element-plus/es')['ElLink']
+ ElMenu: typeof import('element-plus/es')['ElMenu']
+ ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
+ ElRow: typeof import('element-plus/es')['ElRow']
+ ImgPreview: typeof import('./src/components/ImgPreview.vue')['default']
+ Layout: typeof import('./src/components/Layout.vue')['default']
+ ObjectRect: typeof import('./src/components/ObjectRect.vue')['default']
+ RouterLink: typeof import('vue-router')['RouterLink']
+ RouterView: typeof import('vue-router')['RouterView']
+ SingleUpload: typeof import('./src/components/SingleUpload.vue')['default']
+ SystemLayout: typeof import('./src/components/SystemLayout.vue')['default']
+ SystemMenu: typeof import('./src/components/SystemMenu.vue')['default']
+ }
+}
+
+export {}
diff --git a/dist/Magnet.css b/dist/Magnet.css
new file mode 100644
index 0000000..636bea7
--- /dev/null
+++ b/dist/Magnet.css
@@ -0,0 +1 @@
+@charset "UTF-8";:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","\5fae\8f6f\96c5\9ed1",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645, .045, .355, 1);--el-transition-function-fast-bezier:cubic-bezier(.23, 1, .32, 1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier)}:root{color-scheme:light;--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary:#409eff;--el-color-primary-light-3:#79bbff;--el-color-primary-light-5:#a0cfff;--el-color-primary-light-7:#c6e2ff;--el-color-primary-light-8:#d9ecff;--el-color-primary-light-9:#ecf5ff;--el-color-primary-dark-2:#337ecc;--el-color-success:#67c23a;--el-color-success-light-3:#95d475;--el-color-success-light-5:#b3e19d;--el-color-success-light-7:#d1edc4;--el-color-success-light-8:#e1f3d8;--el-color-success-light-9:#f0f9eb;--el-color-success-dark-2:#529b2e;--el-color-warning:#e6a23c;--el-color-warning-light-3:#eebe77;--el-color-warning-light-5:#f3d19e;--el-color-warning-light-7:#f8e3c5;--el-color-warning-light-8:#faecd8;--el-color-warning-light-9:#fdf6ec;--el-color-warning-dark-2:#b88230;--el-color-danger:#f56c6c;--el-color-danger-light-3:#f89898;--el-color-danger-light-5:#fab6b6;--el-color-danger-light-7:#fcd3d3;--el-color-danger-light-8:#fde2e2;--el-color-danger-light-9:#fef0f0;--el-color-danger-dark-2:#c45656;--el-color-error:#f56c6c;--el-color-error-light-3:#f89898;--el-color-error-light-5:#fab6b6;--el-color-error-light-7:#fcd3d3;--el-color-error-light-8:#fde2e2;--el-color-error-light-9:#fef0f0;--el-color-error-dark-2:#c45656;--el-color-info:#909399;--el-color-info-light-3:#b1b3b8;--el-color-info-light-5:#c8c9cc;--el-color-info-light-7:#dedfe0;--el-color-info-light-8:#e9e9eb;--el-color-info-light-9:#f4f4f5;--el-color-info-dark-2:#73767a;--el-bg-color:#ffffff;--el-bg-color-page:#ffffff;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, .04),0px 8px 20px rgba(0, 0, 0, .08);--el-box-shadow-light:0px 0px 12px rgba(0, 0, 0, .12);--el-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, .12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, .08),0px 12px 32px rgba(0, 0, 0, .12),0px 8px 16px -8px rgba(0, 0, 0, .16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0, 0, 0, .8);--el-overlay-color-light:rgba(0, 0, 0, .7);--el-overlay-color-lighter:rgba(0, 0, 0, .5);--el-mask-color:rgba(255, 255, 255, .9);--el-mask-color-extra-light:rgba(255, 255, 255, .3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center top}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--el-transition-md-fade);transform-origin:center bottom}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--el-transition-md-fade);transform-origin:top left}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.el-icon{--color:inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255, 255, 255, .5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color)}.el-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);color:var(--el-button-text-color);-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;transition:.1s;font-weight:var(--el-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;padding:8px 15px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button>span{display:inline-flex;align-items:center}.el-button+.el-button{margin-left:12px}.el-button.is-round{padding:8px 15px}.el-button:focus,.el-button:hover{color:var(--el-button-hover-text-color);border-color:var(--el-button-hover-border-color);background-color:var(--el-button-hover-bg-color);outline:0}.el-button:active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{color:var(--el-button-active-text-color);border-color:var(--el-button-active-border-color);background-color:var(--el-button-active-bg-color);outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:var(--el-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--el-button-disabled-bg-color);border-color:var(--el-button-disabled-border-color)}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{z-index:1;pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:var(--el-mask-color-extra-light)}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-plain{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-plain{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:var(--el-color-success-light-5);background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-plain{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:var(--el-color-warning-light-5);background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-plain{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:var(--el-color-danger-light-5);background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-plain{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:var(--el-color-info-light-5);background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8)}.el-button--large{--el-button-size:40px;height:var(--el-button-size);padding:12px 19px;font-size:var(--el-font-size-base);border-radius:var(--el-border-radius-base)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{width:var(--el-button-size);padding:12px}.el-button--small{--el-button-size:24px;height:var(--el-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--el-border-radius-base) - 1px)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{width:var(--el-button-size);padding:5px}.el-button--text{border-color:transparent;color:var(--el-color-primary);background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:var(--el-color-primary-light-3);border-color:transparent;background-color:transparent}.el-button--text:active{color:var(--el-color-primary-dark-2);border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--el-font-size-base)}.el-textarea__inner{position:relative;display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;font-family:inherit;color:var(--el-input-text-color,var(--el-text-color-regular));background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);border:none}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{outline:0;box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-textarea .el-input__count{color:var(--el-color-info);background:var(--el-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{border-color:var(--el-color-danger)}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);position:relative;font-size:var(--el-font-size-base);display:inline-flex;width:100%;line-height:32px;box-sizing:border-box}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--el-text-color-disabled)}.el-input::-webkit-scrollbar-corner{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);font-size:14px;cursor:pointer;transition:var(--el-transition-color)!important;margin-left:8px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:var(--el-color-info);font-size:12px}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);line-height:initial;display:inline-block;padding:0 5px}.el-input__wrapper{display:inline-flex;flex-grow:1;align-items:center;justify-content:center;padding:0 11px;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));transition:var(--el-transition-box-shadow);box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner{width:100%;flex-grow:1;-webkit-appearance:none;color:var(--el-input-text-color,var(--el-text-color-regular));font-size:inherit;height:32px;line-height:32px;padding:0;outline:0;border:none;background:0 0}.el-input__inner:focus{outline:0}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__prefix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__prefix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__suffix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));transition:all var(--el-transition-duration);pointer-events:none}.el-input__suffix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border,) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{font-size:14px;line-height:38px}.el-input--large .el-input__wrapper{padding:0 15px}.el-input--large .el-input__inner{height:40px;line-height:40px}.el-input--large .el-input__icon{line-height:40px}.el-input--small{font-size:12px;line-height:22px}.el-input--small .el-input__wrapper{padding:0 7px}.el-input--small .el-input__inner{height:24px;line-height:24px}.el-input--small .el-input__icon{line-height:24px}.el-input-group{display:inline-flex;width:100%;align-items:center}.el-input-group__append,.el-input-group__prepend{background-color:var(--el-fill-color-light);color:var(--el-color-info);position:relative;display:inline-flex;align-items:center;justify-content:center;height:100%;border-radius:var(--el-input-border-radius);padding:0 20px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-input__wrapper,.el-input-group__append div.el-select:hover .el-input__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-input__wrapper,.el-input-group__prepend div.el-select:hover .el-input__wrapper{border-color:transparent;background-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper{box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper:focus{outline:0;z-index:2;box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__wrapper{z-index:1;box-shadow:1px 0 0 0 var(--el-input-hover-border-color) inset,1px 0 0 0 var(--el-input-hover-border-color),0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-input-group--append>.el-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__wrapper{z-index:2;box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__wrapper{z-index:1;box-shadow:-1px 0 0 0 var(--el-input-hover-border-color),-1px 0 0 0 var(--el-input-hover-border-color) inset,0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important}.el-message{--el-message-min-width:380px;--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:15px 15px 15px 20px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary)}.el-message{min-width:var(--el-message-min-width);box-sizing:border-box;border-radius:var(--el-border-radius-base);border-width:var(--el-border-width-base);border-style:var(--el-border-style-base);border-color:var(--el-message-border-color);position:fixed;left:50%;top:20px;transform:translate(-50%);transition:opacity .3s,transform .4s,top .4s;background-color:var(--el-message-bg-color);transition:opacity var(--el-transition-duration),transform .4s,top .4s;padding:var(--el-message-padding);display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content,.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content,.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content,.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content,.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message__icon{margin-right:10px}.el-message .el-message__badge{position:absolute;top:-8px;right:-8px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:var(--el-message-close-icon-color);font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}
diff --git a/doc.md b/doc.md
new file mode 100644
index 0000000..b9f2849
--- /dev/null
+++ b/doc.md
@@ -0,0 +1,161 @@
+这段代码是一个使用装饰器实现的Vue表格组件配置类,主要用于管理系统中的通知(Notice)数据的增删改查操作。以下是对代码的详细分析:
+
+### 1. 核心功能
+- **数据展示**:通过装饰器配置表格列和搜索表单
+- **CRUD操作**:实现通知的创建、读取、更新、删除功能
+- **表单验证**:内置字段验证规则
+- **权限控制**:支持动态显示操作按钮
+- **API集成**:与后端接口对接
+
+### 2. 主要装饰器解析
+
+#### 2.1 字段装饰器
+```typescript
+@tcpd({ "lang": "", "def": "消息", minWidth: 120 })
+@tfcpd({ "lang": "", "def": "消息", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+message: string = ""
+```
+- `@tcpd`:配置表格列属性
+ - minWidth:最小列宽
+ - def:列显示名称
+- `@tfcpd`:配置表单字段属性
+ - fieldType:字段类型
+ - rule:验证规则
+
+#### 2.2 方法装饰器
+```typescript
+@tcmd({
+ "key": "table:toolbar",
+ "value": {
+ "type": "添加",
+ "priority": 1,
+ "es": "onAfter",
+ "dialogContent": UmTableForm,
+ "dialogTitle": "增加",
+ "dialogWidth": 650
+ }
+})
+onAdd = async (data: any) => { ... }
+```
+- `@tcmd`:配置表格操作
+ - type:操作类型(添加/编辑/删除)
+ - dialogContent:使用的表单组件
+ - dialogWidth:对话框宽度
+ - sort:操作按钮排序
+
+### 3. 核心方法说明
+
+#### 3.1 数据获取
+```typescript
+@tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+getList = async (params: any) => {
+ return await api.getNoticeList(params);
+}
+```
+- 通过API获取通知列表
+- 装饰器配置为搜索表单的后置方法
+
+#### 3.2 新增操作
+```typescript
+onAdd = async (data: any) => {
+ const { code, msg } = await api.addNotice({ ...data, userId: Notice.userId });
+ return { code: code === 0 ? 0 : 1, message: msg };
+}
+```
+- 提交新增请求
+- 自动附加用户ID
+- 返回操作结果
+
+#### 3.3 编辑操作
+```typescript
+@tcmd({ "value": { "type": "edit", "es": "onBefore", ... } })
+getDetail = async (rowId: number) => {
+ const { data } = await api.getNotice({ id: rowId });
+ return data;
+}
+
+@tcmd({ "value": { "type": "edit", "es": "onAfter", ... } })
+onEdit = async (params: any) => {
+ const { code, msg } = await api.updateNotice({ ...params, userId: Notice.userId });
+ return { code: code === 0 ? 0 : 1, message: msg };
+}
+```
+- 分两个阶段处理:
+ 1. getDetail:编辑前获取详情数据
+ 2. onEdit:提交编辑请求
+
+#### 3.4 删除操作
+```typescript
+@tcmd({
+ "value": {
+ "type": "del",
+ "es": "onAfter",
+ "dialogContent": "确定要删除该条数据吗?"
+ }
+})
+delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteNotice({ ids: [rowId] });
+ return { code: code === 0 ? 0 : 1, message: msg };
+}
+```
+- 删除前弹出确认对话框
+- 支持批量删除(当前实现为单条删除)
+
+### 4. 特色功能实现
+
+#### 4.1 动态显示控制
+```typescript
+isShow = (rowData: any) => {
+ return rowData?.source_add_type == "1";
+}
+```
+- 通过判断数据字段决定是否显示操作按钮
+
+#### 4.2 用户上下文
+```typescript
+static userId: any;
+```
+- 通过静态属性存储当前用户ID
+- 在提交操作时自动附加到请求参数
+
+### 5. 使用建议
+
+1. **用户ID设置**:
+```typescript
+// 在使用前设置当前用户ID
+Notice.userId = store.getters.userId;
+```
+
+2. **自定义操作扩展**:
+```typescript
+@tcmd({
+ "value": {
+ "id": 1,
+ "type": "customOperateEvent",
+ "title": "详情",
+ isShow: (row) => row.status === 1
+ }
+})
+customAction = (rowId: number) => {
+ router.push(`/detail/${rowId}`);
+}
+```
+
+3. **表单验证增强**:
+```typescript
+@tfcpd({
+ fieldType: "number",
+ rule: [
+ { type: "require", message: "不能为空" },
+ { validator: (v) => v > 0, message: "必须大于0" }
+ ]
+})
+sort: number = 1;
+```
+
+4. **国际化支持**:
+```typescript
+@tcpd({ lang: "notice.message", def: "消息" })
+```
+
+该设计通过装饰器实现了高度可配置的表格组件,建议结合具体业务需求扩展装饰器配置,并确保API接口的异常处理完备。
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e76f8f6
--- /dev/null
+++ b/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..67fb74a
--- /dev/null
+++ b/package.json
@@ -0,0 +1,50 @@
+{
+ "name": "funjia-table-viewmodel-template",
+ "private": true,
+ "version": "0.0.1",
+ "scripts": {
+ "dev": "vite --port=4444",
+ "build": "vite build",
+ "preview": "vite preview --port=4444"
+ },
+ "dependencies": {
+ "@codemirror/lang-javascript": "^6.1.7",
+ "@kousum/vue3-window": "^0.0.3",
+ "@types/axios": "^0.14.0",
+ "@types/js-cookie": "^3.0.1",
+ "autoresponsive-vue3": "^2.0.4",
+ "axios": "^0.26.1",
+ "codemirror": "^6.0.1",
+ "dayjs": "^1.10.7",
+ "element-plus": "2.1.10",
+ "funjialib": "git+http://git.funjia.top/funjia/FunJiaLib_Package.git",
+ "funjiaui": "git+http://git.funjia.top/funjia/FunjiaUI_Vue.git#v1.1.2",
+ "funjia-axios": "git+http://git.funjia.top/funjia/funjia-axios.git",
+ "html-print-element": "^0.0.5",
+ "html2pdf.js": "^0.10.2",
+ "js-cookie": "^3.0.1",
+ "lodash-es": "^4.17.21",
+ "md5": "^2.3.0",
+ "pinia": "2.0.13",
+ "printd": "^1.6.0",
+ "react-dnd-html5-backend": "^16.0.1",
+ "vue": "3.2.33",
+ "vue-codemirror": "^6.1.1",
+ "vue-cropperjs": "^5.0.0",
+ "vue-router": "^4.0.14",
+ "vue3-dnd": "^2.1.0"
+ },
+ "devDependencies": {
+ "@types/lodash-es": "^4.17.6",
+ "@types/node": "^17.0.25",
+ "@vitejs/plugin-vue": "^2.3.1",
+ "reflect-metadata": "^0.1.13",
+ "sass": "^1.50.1",
+ "typescript": "^4.5.4",
+ "unplugin-auto-import": "^0.7.1",
+ "unplugin-element-plus": "^0.4.0",
+ "unplugin-vue-components": "^0.19.3",
+ "vite": "^2.9.5",
+ "vue-tsc": "^0.34.7"
+ }
+ }
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..bc30081
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
diff --git a/src/BatchMagnetLinks.ts b/src/BatchMagnetLinks.ts
new file mode 100644
index 0000000..656f1e6
--- /dev/null
+++ b/src/BatchMagnetLinks.ts
@@ -0,0 +1,122 @@
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm,
+ UmByClassEnhance as UmTableClassEnhance
+} from "funjiaui";
+import * as api from "./api";
+import MagnetOperate from './MagnetOperate.vue';
+// import { h, ref } from "vue";
+// import MagnetBase from './MagnetBase';
+
+const tableName = "magnet";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export default class BatchMagnetLinks {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tcpd({ "lang": "", "def": "资源名称", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "资源名称", fieldType: "textarea", rule: [{ "type": "require", message: "不能为空" }] })
+ name: string = ""
+
+ @tcpd({ "lang": "", "def": "保存路径", minWidth: 650 })
+ @tfcpd({ "lang": "", "def": "保存路径", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ savePath: string = "/movie/2025";
+
+ // @tcpd({ "lang": "", "def": "磁力地址", minWidth: 600 })
+ // @tfcpd({ "lang": "", "def": "磁力地址", fieldType: "custom", component: h(UmTableClassEnhance, { target: MagnetBase, data: "[]" }) })
+ // magnetAddress: string = ""
+
+
+ // // Getter 方法
+ // get content(): string {
+ // console.log("Getting name");
+ // return this.content1;
+ // }
+
+ // // Setter 方法
+ // set content(newName: string) {
+ // this.content1 = newName;
+ // this.operate = newName;
+ // }
+
+ @tfcpd({
+ "lang": "", "def": "磁力列表", fieldType: "custom", component: MagnetOperate, rule: [{ "type": "require", message: "不能为空" }]
+ })
+ magnetList: any;
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addDynamic({ ...data }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getDynamic({ id: rowId }, tableName);
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateDynamic({ ...params }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteDynamic({ ids: [rowId] }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Magnet.ts b/src/Magnet.ts
new file mode 100644
index 0000000..746c75d
--- /dev/null
+++ b/src/Magnet.ts
@@ -0,0 +1,211 @@
+import 'reflect-metadata';
+import { h, reactive, render } from 'vue';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm,
+ UmDialog
+} from "funjiaui";
+import * as api from "./api";
+import BatchMagnetLinks from "./BatchMagnetLinks";
+import MagnetBase from './MagnetBase';
+import { ElMessage } from 'element-plus';
+
+function getRandomNumberBetween(min, max) {
+ // Math.random() 生成 [0, 1) 之间的随机数
+ // 乘以 (max - min + 1) 将范围扩展到 [0, max - min + 1)
+ // 加上 min 将范围偏移到 [min, max + 1)
+ // 使用 Math.floor 向下取整,确保结果是整数
+ return Math.floor(Math.random() * (max - min + 1)) + min;
+}
+
+/**
+ * 随机延迟函数执行
+ * @param min
+ * @param max
+ */
+function randomDelay(min = 2000, max = 4000) {
+ const delay = getRandomNumberBetween(min, max);
+ console.log(`等待 ${delay} 毫秒...`);
+ return sleep(delay);
+}
+
+
+const tableName = "magnet";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function sleep(ms) {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
+
+
+export default class Magnet extends MagnetBase {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getDynamicList(params, tableName);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addDynamic({ ...data }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getDynamic({ id: rowId }, tableName);
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateDynamic({ ...params }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteDynamic({ ids: [rowId] }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({ "key": "table:toolbar", "value": { "type": "批量删除", "priority": 5, "es": "onAfter", "dialogContent": "确定要删除选择的数据吗?" } })
+ onMutilDel = async (ids: any[]) => {
+ const { code, msg } = await api.deleteDynamic({ ids }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "自定义", "priority": 2, "es": "onAfter", title: "导入磁力信息"
+ }
+ })
+ onImportMagnet = async (params: any) => {
+ // 1. 定义一个组件
+ const MyComponent = {
+ data() {
+ return {
+ visible: true
+ };
+ },
+ methods: {
+ async onResetSubmit(data) {
+ // console.log('submit',data,this.magnetData);
+ if (data?.magnetList?.length > 0) {
+ const magnetList = data?.magnetList || [];
+ const resourceName = data?.name;
+ for (const item of magnetList) {
+ const magnet = new Magnet();
+ magnet.name = resourceName;
+ magnet.mgnetAddress = item.name;
+ const taskInfo = await api.offDownBaiduCloudPan({ magnet: item.name, savePath: data?.savePath });
+ console.log(taskInfo);
+ magnet.taskId = taskInfo?.data?.task_id;
+ const { code, msg } =
+ await api.addDynamic(magnet, tableName);
+ if (code != 0) {
+ // return { code: 1, message: msg };
+ ElMessage.error(msg);
+ }
+ else {
+ ElMessage.info("导入成功" + item.name);
+ }
+ await randomDelay(20000, 40000);
+ }
+ this.visible = false;
+
+ location.reload();
+ }
+ },
+ onResetCancel() {
+ this.visible = false;
+ // console.log('cancel');
+ }
+ },
+ render() {
+ console.log(this.visible);
+ return h(UmDialog, {
+ "modelValue": this.visible,
+ title: "批量磁力",
+ width: "1000px",
+ footer: false,
+
+ onUpdateModelValue: function (value) {
+ this.visible = value;
+ console.log(value);
+ }
+ }, h(UmTableForm, {
+ target: BatchMagnetLinks,
+ data: this.magnetData,
+ onOk: this.onResetSubmit,
+ onCancel: this.onResetCancel,
+ }));
+ }
+ };
+
+
+ // 2. 使用 render 函数将组件渲染到页面上
+ const container = document.createElement('div');
+ document.body.appendChild(container);
+ render(h(MyComponent), container);
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/MagnetBase.ts b/src/MagnetBase.ts
new file mode 100644
index 0000000..cfe997c
--- /dev/null
+++ b/src/MagnetBase.ts
@@ -0,0 +1,49 @@
+import 'reflect-metadata';
+import { h, render } from 'vue';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm,
+ UmDialog
+} from "funjiaui";
+import * as api from "./api";
+import BatchMagnetLinks from "./BatchMagnetLinks";
+
+const tableName = "magnet";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export default class MagnetBase {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tcpd({ "lang": "", "def": "名称", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "名称", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ name: string = ""
+
+ @tcpd({ "lang": "", "def": "磁力地址", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "磁力地址", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ mgnetAddress: string = ""
+
+ @tcpd({ "lang": "", "def": "任务Id", minWidth: 120 })
+ taskId: string = "";
+
+ @tcpd({ "lang": "", "def": "下载状态", minWidth: 120 })
+ isDown: boolean = false;
+}
\ No newline at end of file
diff --git a/src/MagnetOperate.vue b/src/MagnetOperate.vue
new file mode 100644
index 0000000..02dca9b
--- /dev/null
+++ b/src/MagnetOperate.vue
@@ -0,0 +1,95 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/Notice.ts b/src/Notice.ts
new file mode 100644
index 0000000..73ae3c6
--- /dev/null
+++ b/src/Notice.ts
@@ -0,0 +1,105 @@
+
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm
+} from "funjiaui";
+import * as api from "./api";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export default class Notice {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tcpd({ "lang": "", "def": "消息", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "消息", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ message: string = ""
+
+ @tcpd({ "lang": "", "def": "排序", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "排序", fieldType: "number", rule: [{ "type": "require", message: "不能为空" }] })
+ sort: number = 1;
+
+ static userId: any;
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getNoticeList(params);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addNotice({ ...data, userId: Notice.userId });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getNotice({ id: rowId });
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateNotice({ ...params, userId: Notice.userId });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteNotice({ ids: [rowId] });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Tag.ts b/src/Tag.ts
new file mode 100644
index 0000000..679f925
--- /dev/null
+++ b/src/Tag.ts
@@ -0,0 +1,118 @@
+
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm
+} from "funjiaui";
+import * as api from "./api";
+
+const tableName = "tag";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export default class Tag {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tcpd({ "lang": "", "def": "名称", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "名称", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ name: string = ""
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getDynamicList(params, tableName);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addDynamic({ ...data }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getDynamic({ id: rowId }, tableName);
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateDynamic({ ...params }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteDynamic({ ids: [rowId] }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ // @tcmd({
+ // "value": {
+ // "id": 1, "type": "customOperateEvent", "title": "详情",
+ // sort: 1,
+ // isShow: (rowData) => {
+ // if (rowData?.snaper_image > 0) {
+ // return true;
+ // } else {
+ // return false;
+ // }
+ // }
+ // }
+ // })
+ // jumpEmployee = (rowId: number) => {
+ // return rowId;
+ // }
+}
\ No newline at end of file
diff --git a/src/api.ts b/src/api.ts
new file mode 100644
index 0000000..fc08e13
--- /dev/null
+++ b/src/api.ts
@@ -0,0 +1,81 @@
+import axios from "funjia-axios";
+
+/**
+ * 获取Notice列表
+ */
+export const getNoticeList = (params: any): Promise => {
+ return axios.post("/api/Notice/list", params);
+};
+
+
+/**
+ * 获取Notice详情
+ */
+export const getNotice = (params: any): Promise => {
+ return axios.get("/api/Notice", { params });
+};
+
+/**
+ * 添加Notice
+ */
+export const addNotice = (params: any): Promise => {
+ return axios.post("/api/Notice/add", params);
+};
+
+/**
+ * 修改Notice
+ */
+export const updateNotice = (params: any): Promise => {
+ return axios.post("/api/Notice/upd", params);
+};
+
+/**
+ * 删除Notice
+ */
+export const deleteNotice = (params: any): Promise => {
+ return axios.post("/api/Notice/delete", params);
+};
+
+
+/**
+ * 获取Dynamic列表
+ */
+export const getDynamicList = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/list/" + tableName, params);
+};
+
+
+/**
+ * 获取Dynamic详情
+ */
+export const getDynamic = (params: any, tableName: string): Promise => {
+ return axios.get("/api/dynamic/" + tableName, { params });
+};
+
+/**
+ * 添加Dynamic
+ */
+export const addDynamic = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/add/" + tableName, params);
+};
+
+/**
+ * 修改Dynamic
+ */
+export const updateDynamic = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/upd/" + tableName, params);
+};
+
+/**
+ * 删除Dynamic
+ */
+export const deleteDynamic = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/delete/" + tableName, params);
+};
+
+
+// 操作百度云盘api
+export const offDownBaiduCloudPan = (params: any): Promise => {
+ return axios.post("/api/baiduCloudPan/offDown", params);
+};
+
diff --git a/src/assets/icon/iconfont.css b/src/assets/icon/iconfont.css
new file mode 100644
index 0000000..eaa251b
--- /dev/null
+++ b/src/assets/icon/iconfont.css
@@ -0,0 +1,135 @@
+@font-face {
+ font-family: "iconfont"; /* Project id 3015159 */
+ src: url('iconfont.woff2?t=1646121864615') format('woff2'),
+ url('iconfont.woff?t=1646121864615') format('woff'),
+ url('iconfont.ttf?t=1646121864615') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-a-bianzu171:before {
+ content: "\e66b";
+}
+
+.icon-duobianxing:before {
+ content: "\e697";
+}
+
+.icon-radio-on:before {
+ content: "\ea6a";
+}
+
+.icon-zhibo-qingping:before {
+ content: "\e63a";
+}
+
+.icon-gouxuan11:before {
+ content: "\e628";
+}
+
+.icon-weigouxuan:before {
+ content: "\e623";
+}
+
+.icon-bianji1:before {
+ content: "\e607";
+}
+
+.icon-shanchu:before {
+ content: "\e625";
+}
+
+.icon-guanbi:before {
+ content: "\e611";
+}
+
+.icon-danxuan_weixuanzhong:before {
+ content: "\e653";
+}
+
+.icon-danxuan_xuanzhong:before {
+ content: "\e655";
+}
+
+.icon-Shape:before {
+ content: "\e665";
+}
+
+.icon-jiahaozhankaibeifen:before {
+ content: "\e664";
+}
+
+.icon-jiahaozhankai:before {
+ content: "\e663";
+}
+
+.icon-shangchuan:before {
+ content: "\e662";
+}
+
+.icon-a-gonganjubeifen5:before {
+ content: "\e65e";
+}
+
+.icon-gonganju:before {
+ content: "\e65d";
+}
+
+.icon-duoxuan-xuanzhong:before {
+ content: "\e65c";
+}
+
+.icon-duoxuan-weixuan:before {
+ content: "\e659";
+}
+
+.icon-xiala:before {
+ content: "\e6b9";
+}
+
+.icon-dingweixiao:before {
+ content: "\e654";
+}
+
+.icon-shanchu-:before {
+ content: "\e652";
+}
+
+.icon-daoru:before {
+ content: "\e651";
+}
+
+.icon-daochu:before {
+ content: "\e650";
+}
+
+.icon-xiazai:before {
+ content: "\e64f";
+}
+
+.icon-tianjia:before {
+ content: "\e64e";
+}
+
+.icon-rili_calendar:before {
+ content: "\e64d";
+}
+
+.icon-bianji:before {
+ content: "\e648";
+}
+
+.icon-mimabeifen:before {
+ content: "\e638";
+}
+
+.icon-qietu:before {
+ content: "\e637";
+}
+
diff --git a/src/assets/icon/iconfont.json b/src/assets/icon/iconfont.json
new file mode 100644
index 0000000..47598b3
--- /dev/null
+++ b/src/assets/icon/iconfont.json
@@ -0,0 +1,219 @@
+{
+ "id": "3015159",
+ "name": "仲恺综合治理平台",
+ "font_family": "iconfont",
+ "css_prefix_text": "icon-",
+ "description": "",
+ "glyphs": [
+ {
+ "icon_id": "27921080",
+ "name": "派出所下的二级图标",
+ "font_class": "a-bianzu171",
+ "unicode": "e66b",
+ "unicode_decimal": 58987
+ },
+ {
+ "icon_id": "9706996",
+ "name": "多边形",
+ "font_class": "duobianxing",
+ "unicode": "e697",
+ "unicode_decimal": 59031
+ },
+ {
+ "icon_id": "18175740",
+ "name": "圆形",
+ "font_class": "radio-on",
+ "unicode": "ea6a",
+ "unicode_decimal": 60010
+ },
+ {
+ "icon_id": "26849757",
+ "name": "zhibo-qingping",
+ "font_class": "zhibo-qingping",
+ "unicode": "e63a",
+ "unicode_decimal": 58938
+ },
+ {
+ "icon_id": "16368199",
+ "name": "勾选1",
+ "font_class": "gouxuan11",
+ "unicode": "e628",
+ "unicode_decimal": 58920
+ },
+ {
+ "icon_id": "351775",
+ "name": "未勾选",
+ "font_class": "weigouxuan",
+ "unicode": "e623",
+ "unicode_decimal": 58915
+ },
+ {
+ "icon_id": "4880425",
+ "name": "编辑",
+ "font_class": "bianji1",
+ "unicode": "e607",
+ "unicode_decimal": 58887
+ },
+ {
+ "icon_id": "26535246",
+ "name": "删除",
+ "font_class": "shanchu",
+ "unicode": "e625",
+ "unicode_decimal": 58917
+ },
+ {
+ "icon_id": "4942640",
+ "name": "关闭",
+ "font_class": "guanbi",
+ "unicode": "e611",
+ "unicode_decimal": 58897
+ },
+ {
+ "icon_id": "6548521",
+ "name": "单选_未选中",
+ "font_class": "danxuan_weixuanzhong",
+ "unicode": "e653",
+ "unicode_decimal": 58963
+ },
+ {
+ "icon_id": "6548524",
+ "name": "单选_选中",
+ "font_class": "danxuan_xuanzhong",
+ "unicode": "e655",
+ "unicode_decimal": 58965
+ },
+ {
+ "icon_id": "26507365",
+ "name": "搜索",
+ "font_class": "Shape",
+ "unicode": "e665",
+ "unicode_decimal": 58981
+ },
+ {
+ "icon_id": "26507356",
+ "name": "jiahaozhankai备份",
+ "font_class": "jiahaozhankaibeifen",
+ "unicode": "e664",
+ "unicode_decimal": 58980
+ },
+ {
+ "icon_id": "26507350",
+ "name": "jiahaozhankai",
+ "font_class": "jiahaozhankai",
+ "unicode": "e663",
+ "unicode_decimal": 58979
+ },
+ {
+ "icon_id": "26507342",
+ "name": "上传照片",
+ "font_class": "shangchuan",
+ "unicode": "e662",
+ "unicode_decimal": 58978
+ },
+ {
+ "icon_id": "26507072",
+ "name": "街道,区域",
+ "font_class": "a-gonganjubeifen5",
+ "unicode": "e65e",
+ "unicode_decimal": 58974
+ },
+ {
+ "icon_id": "26507064",
+ "name": "派出所",
+ "font_class": "gonganju",
+ "unicode": "e65d",
+ "unicode_decimal": 58973
+ },
+ {
+ "icon_id": "26507030",
+ "name": "复选框-选中",
+ "font_class": "duoxuan-xuanzhong",
+ "unicode": "e65c",
+ "unicode_decimal": 58972
+ },
+ {
+ "icon_id": "26506763",
+ "name": "复选框-未选中",
+ "font_class": "duoxuan-weixuan",
+ "unicode": "e659",
+ "unicode_decimal": 58969
+ },
+ {
+ "icon_id": "672036",
+ "name": "下拉",
+ "font_class": "xiala",
+ "unicode": "e6b9",
+ "unicode_decimal": 59065
+ },
+ {
+ "icon_id": "26506542",
+ "name": "定位",
+ "font_class": "dingweixiao",
+ "unicode": "e654",
+ "unicode_decimal": 58964
+ },
+ {
+ "icon_id": "26506492",
+ "name": "删除",
+ "font_class": "shanchu-",
+ "unicode": "e652",
+ "unicode_decimal": 58962
+ },
+ {
+ "icon_id": "26506468",
+ "name": "导入",
+ "font_class": "daoru",
+ "unicode": "e651",
+ "unicode_decimal": 58961
+ },
+ {
+ "icon_id": "26506447",
+ "name": "导出",
+ "font_class": "daochu",
+ "unicode": "e650",
+ "unicode_decimal": 58960
+ },
+ {
+ "icon_id": "26506428",
+ "name": "下载",
+ "font_class": "xiazai",
+ "unicode": "e64f",
+ "unicode_decimal": 58959
+ },
+ {
+ "icon_id": "26506404",
+ "name": "添加",
+ "font_class": "tianjia",
+ "unicode": "e64e",
+ "unicode_decimal": 58958
+ },
+ {
+ "icon_id": "26506240",
+ "name": "日期",
+ "font_class": "rili_calendar",
+ "unicode": "e64d",
+ "unicode_decimal": 58957
+ },
+ {
+ "icon_id": "26505995",
+ "name": "编辑",
+ "font_class": "bianji",
+ "unicode": "e648",
+ "unicode_decimal": 58952
+ },
+ {
+ "icon_id": "26462764",
+ "name": "密码",
+ "font_class": "mimabeifen",
+ "unicode": "e638",
+ "unicode_decimal": 58936
+ },
+ {
+ "icon_id": "26462757",
+ "name": "用户",
+ "font_class": "qietu",
+ "unicode": "e637",
+ "unicode_decimal": 58935
+ }
+ ]
+}
diff --git a/src/assets/icon/iconfont.ttf b/src/assets/icon/iconfont.ttf
new file mode 100644
index 0000000..4516d76
Binary files /dev/null and b/src/assets/icon/iconfont.ttf differ
diff --git a/src/assets/icon/iconfont.woff b/src/assets/icon/iconfont.woff
new file mode 100644
index 0000000..a6caee5
Binary files /dev/null and b/src/assets/icon/iconfont.woff differ
diff --git a/src/assets/icon/iconfont.woff2 b/src/assets/icon/iconfont.woff2
new file mode 100644
index 0000000..add7e27
Binary files /dev/null and b/src/assets/icon/iconfont.woff2 differ
diff --git a/src/common/api/index.ts b/src/common/api/index.ts
new file mode 100644
index 0000000..4559223
--- /dev/null
+++ b/src/common/api/index.ts
@@ -0,0 +1,278 @@
+import axios from "funjia-axios";
+// import imgList from "../../../public/data/image_cache.json";
+// import serviceInfo from "../../../public/data/get_service_info.json";
+
+
+
+/**
+ * 登录
+ */
+export const login = (params: any): Promise => {
+ return axios.post("/api/login", params);
+};
+
+/**
+ * 修改密码
+ */
+export const udpdatePwd = (params: any): Promise => {
+ return axios.post("/api/user/password/update", params);
+};
+
+/**
+ * 获取系统信息
+ */
+export const getSytemInfo = (): Promise => {
+ return axios.get("/api/get/system");
+};
+
+/**
+ * 根据ipcId获取抓拍图片列表
+ */
+export const getCaputreImgListByIpcId = (params: any): Promise => {
+ return axios.post("/api/query/device/obejct/image/cache", params);
+ // return imgList;
+};
+
+/**
+ * 获取日志级别列表
+ */
+export const getLevelList = (): Promise => {
+ return axios.post("/api/get/log/level");
+};
+
+/**
+ * 获取日志列表
+ */
+export const getLogList = (params: any): Promise => {
+ return axios.post("/api/get/log/last", params);
+};
+
+/**
+ * 设置日志级别
+ */
+export const setLogLevel = (params: any): Promise => {
+ return axios.post(`/set/log/level/${params.level}`, params);
+};
+
+/**
+ * 重启系统
+ */
+export const restartSystem = (): Promise => {
+ return axios.get('/api/system/reboot');
+};
+
+/**
+ * 重启程序
+ */
+export const restartApp = (): Promise => {
+ return axios.get('/api/system/restart');
+};
+
+/**
+ * 获取服务状态
+ */
+export const getServiceStatus = (): Promise => {
+ return axios.get('/get/service/info');
+ // return serviceInfo;
+};
+
+/**
+ * 设置服务
+ */
+export const setService = (params: any): Promise => {
+ return axios.post('/api/set/service/manager', params);
+};
+
+
+
+
+/**
+ * 获取TravelInformation列表
+ */
+export const getTravelInformationList = (params: any): Promise => {
+ return axios.post("/api/TravelInformation/list", params);
+};
+
+
+/**
+ * 获取TravelInformation详情
+ */
+export const getTravelInformation = (params: any): Promise => {
+ return axios.get("/api/travelInformation", { params });
+};
+
+/**
+ * 添加TravelInformation
+ */
+export const addTravelInformation = (params: any): Promise => {
+ return axios.post("/api/TravelInformation/add", params);
+};
+
+/**
+ * 修改TravelInformation
+ */
+export const updateTravelInformation = (params: any): Promise => {
+ return axios.post("/api/TravelInformation/upd", params);
+};
+
+/**
+ * 删除TravelInformation
+ */
+export const deleteTravelInformation = (params: any): Promise => {
+ return axios.post("/api/TravelInformation/delete", params);
+};
+
+
+/**
+ * 获取Employee列表
+ */
+export const getEmployeeList = (params: any): Promise => {
+ return axios.post("/api/Employee/list", params);
+};
+
+
+/**
+ * 获取Employee详情
+ */
+export const getEmployee = (params: any): Promise => {
+ return axios.get("/api/Employee", { params });
+};
+
+/**
+ * 添加Employee
+ */
+export const addEmployee = (params: any): Promise => {
+ return axios.post("/api/Employee/add", params);
+};
+
+/**
+ * 修改Employee
+ */
+export const updateEmployee = (params: any): Promise => {
+ return axios.post("/api/Employee/upd", params);
+};
+
+/**
+ * 删除Employee
+ */
+export const deleteEmployee = (params: any): Promise => {
+ return axios.post("/api/Employee/delete", params);
+};
+
+/**
+ * Employee登录
+ */
+export const employeeLogin = (params: any): Promise => {
+ return axios.post("/api/Employee/login", params);
+};
+
+
+
+/**
+ * 获取Notice列表
+ */
+export const getNoticeList = (params: any): Promise => {
+ return axios.post("/api/Notice/list", params);
+};
+
+
+/**
+ * 获取Notice详情
+ */
+export const getNotice = (params: any): Promise => {
+ return axios.get("/api/Notice", { params });
+};
+
+/**
+ * 添加Notice
+ */
+export const addNotice = (params: any): Promise => {
+ return axios.post("/api/Notice/add", params);
+};
+
+/**
+ * 修改Notice
+ */
+export const updateNotice = (params: any): Promise => {
+ return axios.post("/api/Notice/upd", params);
+};
+
+/**
+ * 删除Notice
+ */
+export const deleteNotice = (params: any): Promise => {
+ return axios.post("/api/Notice/delete", params);
+};
+
+
+
+/**
+ * 获取QA列表
+ */
+export const getQAList = (params: any): Promise => {
+ return axios.post("/api/QA/list", params);
+};
+
+
+/**
+ * 获取QA详情
+ */
+export const getQA = (params: any): Promise => {
+ return axios.get("/api/QA", { params });
+};
+
+/**
+ * 添加QA
+ */
+export const addQA = (params: any): Promise => {
+ return axios.post("/api/QA/add", params);
+};
+
+/**
+ * 修改QA
+ */
+export const updateQA = (params: any): Promise => {
+ return axios.post("/api/QA/upd", params);
+};
+
+/**
+ * 删除QA
+ */
+export const deleteQA = (params: any): Promise => {
+ return axios.post("/api/QA/delete", params);
+};
+
+/**
+ * 获取Dynamic列表
+ */
+export const getDynamicList = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/list/" + tableName, params);
+};
+
+/**
+ * 获取Dynamic详情
+ */
+export const getDynamic = (params: any, tableName: string): Promise => {
+ return axios.get("/api/dynamic/" + tableName, { params });
+};
+
+/**
+ * 添加Dynamic
+ */
+export const addDynamic = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/add/" + tableName, params);
+};
+
+/**
+ * 修改Dynamic
+ */
+export const updateDynamic = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/upd/" + tableName, params);
+};
+
+/**
+ * 删除Dynamic
+ */
+export const deleteDynamic = (params: any, tableName: string): Promise => {
+ return axios.post("/api/dynamic/delete/" + tableName, params);
+};
diff --git a/src/common/axios.ts b/src/common/axios.ts
new file mode 100644
index 0000000..86c0136
--- /dev/null
+++ b/src/common/axios.ts
@@ -0,0 +1,116 @@
+import axios, { AxiosRequestConfig, AxiosResponse } from "axios";
+import Cookies from "js-cookie";
+import 'element-plus/es/components/message/style/css'
+import { ElMessage } from 'element-plus'
+
+// axios.defaults.baseURL = ""; // 请求后台地址
+axios.defaults.headers.post["Content-Type"] = "application/json;charset=utf-8";
+
+interface LogOutCodesProps {
+ status: number;
+ code: number;
+ msg?: string;
+}
+
+axios.interceptors.request.use(
+ (config: AxiosRequestConfig) => {
+ // token授权
+ const jwtToken: string = Cookies.get("Authorization") ?? "";
+ config.headers = config.headers || {};
+ config.headers.Authorization = `${jwtToken}`;
+ // 缓存问题
+ config.headers["Cache-Control"] = "no-cache";
+ return config;
+ },
+ (err) => {
+ return Promise.reject(err);
+ }
+);
+
+axios.interceptors.response.use(
+ (response: AxiosResponse) => {
+ const xhr: any = response.data ?? {};
+ const { code, msg: resultMsg } = xhr;
+ // 需要退出重登的code和msg
+ let msg: string = "";
+ switch (code) {
+ case 9:
+ msg = "请重新登录";
+ break;
+ case 18:
+ msg = "授权过期,请重新登录";
+ break;
+ case 27:
+ msg = "未安装License或License已过期";
+ break;
+ case 28:
+ msg = "License权限不足";
+ break;
+ default:
+ break;
+ }
+ if (code) {
+ ElMessage.error(msg || resultMsg || "系统异常");
+ }
+ return xhr;
+ },
+ (error) => {
+ const response: any = error.response ?? {};
+ const { data, status } = response;
+ const { code, reason } = data;
+ let msg: string = "";
+ // 获取错误提示
+ switch (status) {
+ case 400:
+ msg =
+ code === 17
+ ? `异地登录,登录IP为${data.data},请重新登录`
+ : "请求错误";
+ break;
+ case 401:
+ msg = reason || "鉴权失败";
+ break;
+ case 403:
+ msg = "拒绝访问";
+ break;
+ case 404:
+ msg = "请求错误,未找到该资源";
+ break;
+ case 405:
+ msg = "请求方法未允许";
+ break;
+ case 408:
+ msg = "请求超时";
+ break;
+ case 413:
+ msg = "请求数据过多";
+ break;
+ case 500:
+ msg = "服务器端出错";
+ break;
+ case 501:
+ msg = "网络未实现";
+ break;
+ case 503:
+ msg = "服务不可用";
+ break;
+ case 504:
+ msg = "网络超时";
+ break;
+ case 505:
+ msg = "http版本不支持该请求";
+ break;
+ case 502:
+ default:
+ break;
+ }
+ ElMessage.error(msg);
+ return Promise.reject(error).catch(() => {
+ if (401 == status) {
+ window.location.href = "/";
+ }
+ });
+ }
+);
+
+export default axios;
diff --git a/src/common/tool/index.ts b/src/common/tool/index.ts
new file mode 100644
index 0000000..0e2a936
--- /dev/null
+++ b/src/common/tool/index.ts
@@ -0,0 +1,147 @@
+/**
+ * 获取目标类型的名称 0:人脸, 1:自行车, 2:巴士, 3:小汽车, 4:电动车|摩托车, 5:人体, 6:三轮车,7货车、8车牌、9推车,10鸟、11猫,12 狗,13老鼠
+ * @param objectType
+ * @returns
+ */
+export const getObjectTypeName = (objectType: TObjectType) => {
+ switch (objectType) {
+ case 0:
+ return "人脸";
+ case 1:
+ return "自行车";
+ case 2:
+ return "巴士";
+ case 3:
+ return "小汽车";
+ case 4:
+ return "电动车|摩托车";
+ case 5:
+ return "人体";
+ case 6:
+ return "三轮车";
+ case 7:
+ return "货车";
+ case 8:
+ return "车牌";
+ case 9:
+ return "推车";
+ case 10:
+ return "鸟";
+ case 11:
+ return "猫";
+ case 12:
+ return "狗";
+ case 13:
+ return "老鼠";
+ default:
+ return "--";
+ }
+}
+
+
+// 解决加减乘除中浮点数精度问题
+
+/**
+ * arg1 第一位数字
+ * arg2 第二位数字
+ * type 运算符类型 加add, 减reduce,乘ride,除except
+ */
+export const FloatPoint = (arg1: number, arg2: number, type: 'add' | 'reduce' | 'ride' | 'except') => {
+ let r1: number = 0;
+ let r2: number = 0;
+ try {
+ r1 = arg1.toString().split(".")[1].length;
+ } catch (e) {
+ r1 = 0;
+ }
+ try {
+ r2 = arg2.toString().split(".")[1].length;
+ } catch (e) {
+ r2 = 0;
+ }
+ const c: number = Math.abs(r1 - r2); // 位数差的绝对值
+ const m: number = Math.pow(10, Math.max(r1, r2)); // 较大数的幂
+ if (c > 0) {
+ // 位数相差
+ const cm: number = Math.pow(10, c);
+ if (r1 > r2) {
+ arg1 = Number(arg1.toString().replace(".", "")); // 转化成数字
+ arg2 = Number(arg2.toString().replace(".", "")) * cm;
+ } else {
+ arg1 = Number(arg1.toString().replace(".", "")) * cm;
+ arg2 = Number(arg2.toString().replace(".", ""));
+ }
+ } else { // 位数相等
+ arg1 = Number(arg1.toString().replace(".", ""));
+ arg2 = Number(arg2.toString().replace(".", ""));
+ }
+ let res: any = null;
+ if (type === 'add') {
+ res = (arg1 + arg2) / m;
+ } else if (type === 'reduce') {
+ res = (arg1 - arg2) / m;
+ } else if (type === 'ride') {
+ res = (arg1 * arg2) / m / m;
+ } else if (type === 'except') {
+ res = (arg1 / arg2);
+ }
+ return res;
+};
+
+/**
+ * 对字符串保留小数
+ * @param value 原始值,有可能大于1
+ * @param num 位数
+ */
+export const toFixed = (str: any, num: number = 2) => {
+ try {
+ if (typeof (str) === "string") {
+ str = parseFloat(str);
+ } else if (typeof (str) === "number") {
+ str = str;
+ } else {
+ str = parseFloat(str);
+ }
+ str = FloatPoint(str, 100, 'ride');
+ str = str.toString(); // 字符串值
+ const pointIdx = str.indexOf("."); // 字符串中小数点的位置
+ if (pointIdx !== -1) {
+ if (num > 0) {
+ // 存在小数点的情况下
+ // 最多保留num位小数
+ str = str.substring(0, pointIdx + (num + 1));
+ // 小数位小于num位的情况下,在末尾补零
+ const decimalStr = str.substring(pointIdx + 1); // 小数位字符串
+ if (decimalStr.length < num) {
+ for (let i = 0; i < num - decimalStr.length; i++) {
+ str += "0";
+ }
+ }
+ }
+ else {
+ str = str.substring(0, pointIdx);
+ return parseFloat(str);
+ }
+ }
+ } catch (error) {
+ return 0;
+ }
+ return parseFloat(str);
+}
+
+export function encode(str) {
+ // 对字符串进行编码
+ const encode = encodeURI(str);
+ // 对编码的字符串转化base64
+ const base64 = btoa(encode);
+ return base64;
+}
+
+export function decode(base64) {
+ // 对base64转编码
+ const decode = atob(base64);
+ // 编码转字符串
+ const str = decodeURI(decode);
+ return str;
+}
+
diff --git a/src/components/Angle.vue b/src/components/Angle.vue
new file mode 100644
index 0000000..d82c90d
--- /dev/null
+++ b/src/components/Angle.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/CalcRectDock.vue b/src/components/CalcRectDock.vue
new file mode 100644
index 0000000..2ce4dc2
--- /dev/null
+++ b/src/components/CalcRectDock.vue
@@ -0,0 +1,13 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/components/CodeMirror.vue b/src/components/CodeMirror.vue
new file mode 100644
index 0000000..53a5912
--- /dev/null
+++ b/src/components/CodeMirror.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/CountDownMessage.vue b/src/components/CountDownMessage.vue
new file mode 100644
index 0000000..7a71d9e
--- /dev/null
+++ b/src/components/CountDownMessage.vue
@@ -0,0 +1,36 @@
+
+ {{ getMsgTempalte ? getMsgTempalte(countDownTime) : countDownTime }}
+
+
\ No newline at end of file
diff --git a/src/components/DynamicTags.vue b/src/components/DynamicTags.vue
new file mode 100644
index 0000000..a59abec
--- /dev/null
+++ b/src/components/DynamicTags.vue
@@ -0,0 +1,57 @@
+
+
+ {{ tag }}
+
+
+
+ + New Tag
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ImgPreview.vue b/src/components/ImgPreview.vue
new file mode 100644
index 0000000..76ac95d
--- /dev/null
+++ b/src/components/ImgPreview.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Layout.vue b/src/components/Layout.vue
new file mode 100644
index 0000000..edc2039
--- /dev/null
+++ b/src/components/Layout.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ObjectRect.vue b/src/components/ObjectRect.vue
new file mode 100644
index 0000000..853a2d2
--- /dev/null
+++ b/src/components/ObjectRect.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/SingleUpload.vue b/src/components/SingleUpload.vue
new file mode 100644
index 0000000..5512d17
--- /dev/null
+++ b/src/components/SingleUpload.vue
@@ -0,0 +1,47 @@
+
+
+
+
+ 浏览
+
+
+
+
\ No newline at end of file
diff --git a/src/components/SystemLayout.vue b/src/components/SystemLayout.vue
new file mode 100644
index 0000000..f28296f
--- /dev/null
+++ b/src/components/SystemLayout.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/SystemMenu.vue b/src/components/SystemMenu.vue
new file mode 100644
index 0000000..06668ab
--- /dev/null
+++ b/src/components/SystemMenu.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/animation.js b/src/components/animation.js
new file mode 100644
index 0000000..63001f3
--- /dev/null
+++ b/src/components/animation.js
@@ -0,0 +1,83 @@
+'use strict';
+
+import ExecutionEnvironment from 'exenv';
+
+function transitionEnd() {
+ const transitionEndEventNames = {
+ WebkitTransition: 'webkitTransitionEnd',
+ MozTransition: 'transitionend',
+ OTransition: 'oTransitionEnd otransitionend',
+ transition: 'transitionend'
+ };
+ if (!ExecutionEnvironment.canUseDOM) {
+ return transitionEndEventNames;
+ }
+ const el = document.createElement('pin');
+
+ for (const name in transitionEndEventNames) {
+ if (el.style[name] !== undefined) {
+ return transitionEndEventNames[name];
+ }
+ }
+ return false;
+}
+
+const ifHasTransitionEnd = transitionEnd();
+
+const prefixes = ['Webkit', 'Moz', 'ms', 'O', ''];
+
+class AnimationManager {
+ constructor() {
+ this.animationHandle = `css${ifHasTransitionEnd ? 3 : 2}Animation`;
+ }
+
+ generate(options) {
+ Object.assign(this, options);
+ return this[this.animationHandle]();
+ }
+
+ css2Animation() {
+ const style = {};
+ style[this.horizontalDirection] = `${this.position[0]}px`;
+ style[this.verticalDirection] = `${this.position[1]}px`;
+
+ this.mixAnimation(style);
+ return style;
+ }
+
+ css3Animation() {
+ const style = {};
+
+ prefixes.map(prefix => {
+ let x, y;
+
+ if (this.horizontalDirection === 'right') {
+ x = this.containerWidth - this.size.width - this.position[0];
+ } else {
+ x = this.position[0];
+ }
+
+ if (this.verticalDirection === 'bottom') {
+ y = this.containerHeight - this.size.height - this.position[1];
+ } else {
+ y = this.position[1];
+ }
+
+ style[`${prefix}Transform`] = `translate3d(${x}px, ${y}px, 0)`;
+ });
+
+ this.mixAnimation(style);
+ return style;
+ }
+
+ mixAnimation(style) {
+ if (!this.closeAnimation) {
+ prefixes.map(prefix => {
+ style[`${prefix}TransitionDuration`] = `${this.transitionDuration}s`;
+ style[`${prefix}TransitionTimingFunction`] = this.transitionTimingFunction;
+ });
+ }
+ }
+}
+
+export default AnimationManager;
\ No newline at end of file
diff --git a/src/components/autoresponsive.vue b/src/components/autoresponsive.vue
new file mode 100644
index 0000000..35eefd0
--- /dev/null
+++ b/src/components/autoresponsive.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/consts/dataDict.ts b/src/consts/dataDict.ts
new file mode 100644
index 0000000..ea47408
--- /dev/null
+++ b/src/consts/dataDict.ts
@@ -0,0 +1,6 @@
+// 接口地址
+export const RECORD_URL = "clyx9ba3a0000qwrb2mjd25sd"
+// 菜单项
+export const MENU_JSON = "clyzxul91000mqorb1w503q2o"
+// 系统名称
+export const SYSTEM_TITLE = "cm64rpfik0000egrb3x33hbhj"
\ No newline at end of file
diff --git a/src/containers/HomeHeader.vue b/src/containers/HomeHeader.vue
new file mode 100644
index 0000000..291a8ab
--- /dev/null
+++ b/src/containers/HomeHeader.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+ {{systemTitle||'...'}}
+
+
+
+
+
+
+
+
+
+ 更改密码
+ 退出登录
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/containers/ImageCell.vue b/src/containers/ImageCell.vue
new file mode 100644
index 0000000..2b1181e
--- /dev/null
+++ b/src/containers/ImageCell.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/containers/ImageList.vue b/src/containers/ImageList.vue
new file mode 100644
index 0000000..9e4936c
--- /dev/null
+++ b/src/containers/ImageList.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ $emit('show', id)">
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/containers/PwdDialog/PwdForm.vue b/src/containers/PwdDialog/PwdForm.vue
new file mode 100644
index 0000000..bef6323
--- /dev/null
+++ b/src/containers/PwdDialog/PwdForm.vue
@@ -0,0 +1,93 @@
+
+
+
+ {{ appStore.userinfo.userName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/containers/PwdDialog/index.vue b/src/containers/PwdDialog/index.vue
new file mode 100644
index 0000000..9db73a4
--- /dev/null
+++ b/src/containers/PwdDialog/index.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/containers/viewModel/DataDict.ts b/src/containers/viewModel/DataDict.ts
new file mode 100644
index 0000000..2577cd9
--- /dev/null
+++ b/src/containers/viewModel/DataDict.ts
@@ -0,0 +1,149 @@
+
+import 'reflect-metadata';
+import { UmTableForm,
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd,
+ TableSearchFormPropertyDecorator as tsfpd
+ } from "funjiaui";
+import * as api from "@/common/api"
+// 数据字典
+const tableName = "dataDict";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+// 数据字典
+export default class DataDict {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tcpd({ "lang": "", "def": "数据", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tcpd({ "lang": "", "def": "唯一标识", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "唯一标识", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ unionKey: string = ""
+
+ @tcpd({ "lang": "", "def": "数据", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "数据", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ value: string = ""
+
+ @tcpd({ "lang": "", "def": "描述", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "描述", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ desc: string = ""
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getDynamicList(params, tableName);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addDynamic({ ...data, unionKey: data.unionKey.toUpperCase() }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getDynamic({ id: rowId }, tableName);
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateDynamic({ ...params, unionKey: params.unionKey.toUpperCase() }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteDynamic({ ids: [rowId] }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({ "key": "table:toolbar", "value": { "type": "批量删除", "priority": 5, "es": "onAfter", "dialogContent": "确定要删除选择的数据吗?" } })
+ onMutilDel = async (ids: any[]) => {
+ const { code, msg } = await api.deleteDynamic({ ids }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ exportText(filename, text) {
+ var element = document.createElement('a');
+ element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
+ element.setAttribute('download', filename);
+
+ element.style.display = 'none';
+ document.body.appendChild(element);
+
+ element.click();
+
+ document.body.removeChild(element);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "自定义", id: "anki", "priority": 1, "es": "onAfter", title: "导出字典常量表"
+ }
+ })
+ onExport = async (params: any) => {
+ const { data } = await api.getDynamicList({ ...params, page: 1, pageSize: 10000 }, tableName);
+
+ const content = data.map(item => {
+ return `export const ${item.unionKey} = "${item.id}"`;
+ }).join("\n")
+
+ this.exportText("dataDict.ts", content);
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/src/containers/viewModel/Employee.ts b/src/containers/viewModel/Employee.ts
new file mode 100644
index 0000000..8744e0e
--- /dev/null
+++ b/src/containers/viewModel/Employee.ts
@@ -0,0 +1,113 @@
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm
+} from "funjiaui";
+import * as api from "@/common/api"
+
+
+export default class Employee {
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tcpd({ "lang": "", "def": "姓名", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "姓名", rule: [{ "type": "require", message: "不能为空" }] })
+ name: string = "";
+
+ @tcpd({ "lang": "", "def": "用戶名", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "用戶名", rule: [{ "type": "require", message: "不能为空" }] })
+ userName: string = "";
+
+ @tfcpd({ "lang": "", "def": "密码", rule: [{ "type": "require", message: "不能为空" }] })
+ pwd: string = "";
+
+ @tcpd({ "lang": "", "def": "手机号", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "手机号", rule: [{ "type": "require", message: "不能为空" }] })
+ phone: string = "";
+
+ @tcpd({ "lang": "", "def": "车牌号码", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "车牌号码", rule: [{ "type": "require", message: "不能为空" }] })
+ vehiclePlateNumber: string = "";
+
+ @tcpd({ "lang": "", "def": "用户信息图片地址", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "用户信息图片地址", rule: [{ "type": "require", message: "不能为空" }] })
+ userInfoPic: string = "";
+
+ @tcpd({ "lang": "", "def": "通知总数", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "通知总数", fieldType: "number", rule: [{ "type": "require", message: "不能为空" }] })
+ noticeTotal: number = 0;
+
+ @tcpd({ "lang": "", "def": "备注", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "备注" })
+ remark: string = "";
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getEmployeeList(params);
+ }
+
+ // @tcmd({
+ // "key": "table:toolbar", "value": {
+ // "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ // }
+ // })
+ // onAdd = async (data: any) => {
+ // const { code, msg } = await api.addEmployee(data);
+ // if (code != 0) {
+ // return { code: 1, message: msg };
+ // }
+ // else {
+ // return { code: 0 };
+ // }
+ // }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getEmployee({ id: rowId });
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ params.source_type = "IPC";
+ params.forever = true;
+
+ const { code, msg } = await api.updateEmployee(params);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ // @tcmd({
+ // "value": {
+ // "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ // sort: 3,
+ // // isShow
+ // }
+ // })
+ // delByIds = async (rowId: number) => {
+ // const { code, msg } = await api.deleteEmployee({ ids: [rowId] });
+ // if (code != 0) {
+ // return { code: 1, message: msg };
+ // }
+ // else {
+ // return { code: 0 };
+ // }
+ // }
+}
\ No newline at end of file
diff --git a/src/containers/viewModel/Notice.ts b/src/containers/viewModel/Notice.ts
new file mode 100644
index 0000000..d16caa8
--- /dev/null
+++ b/src/containers/viewModel/Notice.ts
@@ -0,0 +1,124 @@
+
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm
+} from "funjiaui";
+import * as api from "@/common/api"
+// import { ElMessage } from 'element-plus'
+import { h } from 'vue';
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export default class Notice {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tcpd({ "lang": "", "def": "消息", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "消息", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ message: string = ""
+
+ @tcpd({ "lang": "", "def": "排序", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "排序", fieldType: "number", rule: [{ "type": "require", message: "不能为空" }] })
+ sort: number = 1;
+
+ static userId: any;
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getNoticeList(params);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addNotice({ ...data, userId: Notice.userId });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getNotice({ id: rowId });
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateNotice({ ...params, userId: Notice.userId });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteNotice({ ids: [rowId] });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ // @tcmd({
+ // "value": {
+ // "id": 1, "type": "customOperateEvent", "title": "详情",
+ // sort: 1,
+ // isShow: (rowData) => {
+ // if (rowData?.snaper_image > 0) {
+ // return true;
+ // } else {
+ // return false;
+ // }
+ // }
+ // }
+ // })
+ // jumpEmployee = (rowId: number) => {
+ // return rowId;
+ // }
+}
\ No newline at end of file
diff --git a/src/containers/viewModel/Plugin.ts b/src/containers/viewModel/Plugin.ts
new file mode 100644
index 0000000..6cf20f0
--- /dev/null
+++ b/src/containers/viewModel/Plugin.ts
@@ -0,0 +1,145 @@
+
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm
+} from "funjiaui";
+import * as api from "@/common/api"
+import { h, ref } from 'vue';
+import SingleUpload from '@/components/SingleUpload.vue';
+import axios from 'axios';
+
+// 插件模块
+const tableName = "plugin";
+
+const isShow = (rowData: any) => {
+ if (rowData?.source_add_type == "1") {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+export default class Plugin2 {
+ // 侵入性事件注入
+ static singleListen: any = null
+
+ static isEdit = false;
+
+ // 操作列宽度
+ static operateWidth = "140px";
+
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ questionId: string = ""
+
+ @tcpd({ "lang": "", "def": "名称", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "名称", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ name: string = ""
+
+ @tcpd({ "lang": "", "def": "描述", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "描述", fieldType: "string", rule: [{ "type": "require", message: "不能为空" }] })
+ desc: string = ""
+
+ @tcpd({ "lang": "", "def": "插件脚本绝对地址", minWidth: 120 })
+ @tfcpd({
+ "lang": "", "def": "插件脚本绝对地址", component: function (props) {
+ const value = ref();
+ const that = this;
+ return h(SingleUpload, {
+ modelValue: value,
+ "onFileChange": async (data) => {
+ const fdata = new FormData();
+ fdata.append("file", data);
+ const res = await axios.post('/api/upload/file', fdata);
+ value.value = res.data?.url
+ // this.$emit("");
+ // debugger;
+ // console.log(res.data?.url,props);
+ props['onUpdate:modelValue']?.(res.data?.url);
+ }
+ })
+ },
+ rule: [{ "type": "require", message: "不能为空" }]
+ })
+ pluginUrl: string = ""
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getDynamicList(params, tableName);
+ // return [];
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addDynamic({ ...data }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑" } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getDynamic({ id: rowId }, tableName);
+ return data;
+ }
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateDynamic({ ...params }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteDynamic({ ids: [rowId] }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({ "key": "table:toolbar", "value": { "type": "批量删除", "priority": 5, "es": "onAfter", "dialogContent": "确定要删除选择的数据吗?" } })
+ onMutilDel = async (ids: any[]) => {
+ const { code, msg } = await api.deleteDynamic({ ids }, tableName);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/containers/viewModel/QA.ts b/src/containers/viewModel/QA.ts
new file mode 100644
index 0000000..3f3c98a
--- /dev/null
+++ b/src/containers/viewModel/QA.ts
@@ -0,0 +1,242 @@
+import 'reflect-metadata';
+// import {
+// TableColumnPropertyDecorator as tcpd,
+// TableFormColumnPropertyDecorator as tfcpd,
+// TableColumnMethodDecorator as tcmd, TOperateType,
+// TableSearchFormPropertyDecorator as tsfpd
+// } from "@/components/UmTable";
+import * as api from "@/common/api"
+// import UmTableForm from '@/components/UmTable/UmTableForm.vue';
+
+import { UmTableForm,
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd
+ } from "funjiaui";
+// import {
+// TableColumnPropertyDecorator as tcpd,
+// TableFormColumnPropertyDecorator as tfcpd,
+// TableColumnMethodDecorator as tcmd, TOperateType,
+// TableSearchFormPropertyDecorator as tsfpd
+// } from "funjiaui/UmTable";
+
+
+import DynamicTags from '@/components/DynamicTags.vue';
+// import { ElButton, ElInput, ElTag,ElDialog } from 'element-plus';
+import { Codemirror } from 'vue-codemirror';
+
+
+export default class QA {
+ @tcpd({ "lang": "", "def": "id", width: 240 })
+ @tfcpd({ "lang": "", "def": "id", fieldType: "primaryKey" })
+ id: number = 0;
+
+ @tsfpd({ lang: "", "def": "题目" })
+ @tcpd({ "lang": "", "def": "题目", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "题目", rule: [{ "type": "require", message: "不能为空" }], component: Codemirror })
+ question: string = "";
+
+ // @tcpd({ "lang": "", "def": "答案", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "答案", component: Codemirror, width: 300 })
+ answer: string = "";
+
+ @tcpd({ "lang": "", "def": "标签", minWidth: 120 })
+ @tfcpd({ "lang": "", "def": "标签", component: DynamicTags, width: 300 })
+ @tsfpd({
+ lang: "", "def": "标签", fieldType: "select", async getData() {
+ return {
+ data: [{
+ label: "vue3",
+ value: "vue3"
+ }, {
+ label: "react",
+ value: "react"
+ }, {
+ label: "js",
+ value: "js"
+ }, {
+ label: "html",
+ value: "html"
+ }, {
+ label: "css",
+ value: "css"
+ }, {
+ label: "webpack",
+ value: "webpack"
+ }, {
+ label: "微信小程序",
+ value: "微信小程序"
+ }, {
+ label: "typescript",
+ value: "typescript"
+ }, {
+ label: "boss_vue",
+ value: "boss_vue"
+ }, {
+ label: "高频_css",
+ value: "高频_css"
+ }]
+ }
+ }
+ })
+ tag: string[] = [];
+
+ @tcmd({ "key": "table:searchFormMethod", "value": { "type": "getList", "es": "onAfter" } })
+ getList = async (params: any) => {
+ return await api.getQAList(params);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 1200
+ }
+ })
+ onAdd = async (data: any) => {
+ const { code, msg } = await api.addQA({ ...data });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ exportText(filename, text) {
+ var element = document.createElement('a');
+ element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
+ element.setAttribute('download', filename);
+
+ element.style.display = 'none';
+ document.body.appendChild(element);
+
+ element.click();
+
+ document.body.removeChild(element);
+ }
+
+ @tcmd({
+ "key": "table:toolbar", "value": {
+ "type": "自定义", "priority": 1, "es": "onAfter", title: "导出anki脚本"
+ }
+ })
+ onExport = async (params: any) => {
+ const { data } = await api.getQAList({ ...params, page: 1, pageSize: 10000 });
+ const head = `#separator:tab
+#html:true
+#tags column:3
+`
+ const style = ``;
+
+ const content = data.map(item => {
+ return `"${style} " "${style} "`;
+ }).join("\n")
+
+ this.exportText("anki脚本.txt", head + content);
+ return true;
+ }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑", "dialogWidth": 1200 } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getQA({ id: rowId });
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateQA({ ...params });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ @tcmd({
+ "value": {
+ "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ sort: 3,
+ dialogWidth: 400
+ // isShow
+ }
+ })
+ delByIds = async (rowId: number) => {
+ const { code, msg } = await api.deleteQA({ ids: [rowId] });
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ // @tcmd({
+ // "key": "table:toolbar", "value": {
+ // "type": "添加", "priority": 1, "es": "onAfter", "dialogContent": UmTableForm, "dialogTitle": "增加", "dialogWidth": 650
+ // }
+ // })
+ // onAdd = async (data: any) => {
+ // const { code, msg } = await api.addQA(data);
+ // if (code != 0) {
+ // return { code: 1, message: msg };
+ // }
+ // else {
+ // return { code: 0 };
+ // }
+ // }
+
+ /**
+ * 获取详情数据
+ */
+ @tcmd({ "value": { "type": "edit", "es": "onBefore", "dialogContent": UmTableForm, "dialogTitle": "编辑", dialogWidth: 1200 } })
+ getDetail = async (rowId: number, r, meta) => {
+ const { data } = await api.getQA({ id: rowId });
+ return data;
+ }
+
+
+ @tcmd({
+ "value": {
+ "type": "edit", "es": "onAfter",
+ sort: 2,
+ // isShow
+ }
+ })
+ onEdit = async (params: any) => {
+ const { code, msg } = await api.updateQA(params);
+ if (code != 0) {
+ return { code: 1, message: msg };
+ }
+ else {
+ return { code: 0 };
+ }
+ }
+
+ // @tcmd({
+ // "value": {
+ // "type": "del", "es": "onAfter", "dialogContent": "确定要删除该条数据吗?",
+ // sort: 3,
+ // // isShow
+ // }
+ // })
+ // delByIds = async (rowId: number) => {
+ // const { code, msg } = await api.deleteQA({ ids: [rowId] });
+ // if (code != 0) {
+ // return { code: 1, message: msg };
+ // }
+ // else {
+ // return { code: 0 };
+ // }
+ // }
+}
\ No newline at end of file
diff --git a/src/containers/viewModel/UpdatePassword.ts b/src/containers/viewModel/UpdatePassword.ts
new file mode 100644
index 0000000..23311ee
--- /dev/null
+++ b/src/containers/viewModel/UpdatePassword.ts
@@ -0,0 +1,51 @@
+
+import 'reflect-metadata';
+import {
+ TableColumnPropertyDecorator as tcpd,
+ TableFormColumnPropertyDecorator as tfcpd,
+ TableColumnMethodDecorator as tcmd, TOperateType,
+ TableSearchFormPropertyDecorator as tsfpd,
+ UmTableForm
+} from "funjiaui";
+import * as api from "@/common/api"
+// import UmTableForm from '@/components/UmTable/UmTableForm.vue';
+
+/**
+ * 修改密码
+ */
+ export class UpdatePassword {
+ @tfcpd({ "lang": "", "def": "编号", "fieldType": "primaryKey" })
+ id: number | string = 0;
+
+ // @tcpd({ lang: "name", def: "账号名称" })
+ // @tfcpd({
+ // "lang": "", "def": "账号名称", "fieldType": "default", rule: [{ "type": "require", message: "不能为空" }],
+ // disabled: true
+ // })
+ // userName: string = "";
+
+ @tfcpd({ "lang": "", "def": "原密码", "fieldType": "password", rule: [{ "type": "require", message: "不能为空" }] })
+ oldPassword: string = "";
+
+ @tfcpd({ "lang": "", "def": "新密码", "fieldType": "password", rule: [{ "type": "require", message: "不能为空" }] })
+ password: string = "";
+
+ @tfcpd({
+ "lang": "", "def": "确认密码", "fieldType": "password", rule: [{
+ "type": "require", message: "不能为空",
+ }, {
+ "type": "validator",
+ validator: function (rule: any, value: any, callback: any) {
+ const that: any = this;
+ if (value != that.formData["password"]) {
+ return new Error("两次输入的密码不对");
+ }
+ else {
+ return true;
+ }
+ }
+ }
+ ]
+ })
+ passwordConfirm: string = "";
+}
\ No newline at end of file
diff --git a/src/env.d.ts b/src/env.d.ts
new file mode 100644
index 0000000..2695e21
--- /dev/null
+++ b/src/env.d.ts
@@ -0,0 +1,10 @@
+///
+
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue'
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
+ const component: DefineComponent<{}, {}, any>
+ export default component
+}
+
+declare module 'vue-cropperjs';
\ No newline at end of file
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000..6ee938f
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,10 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+import router from "@/router";
+import { createPinia } from "pinia";
+import "./assets/icon/iconfont.css";
+
+const app = createApp(App);
+app.use(router);
+app.use(createPinia());
+app.mount('#app')
diff --git a/src/router/index.ts b/src/router/index.ts
new file mode 100644
index 0000000..c603adf
--- /dev/null
+++ b/src/router/index.ts
@@ -0,0 +1,69 @@
+import { createRouter, createWebHashHistory, RouteRecordRaw } from "vue-router";
+import Employee from "@/views/Employee.vue";
+import Notice from "@/views/Notice.vue";
+import QA from "@/views/QA.vue";
+import DataDict from "@/views/DataDict.vue";
+import DynamicTable from "@/views/DynamicTable.vue";
+import Plugin from "@/views/Plugin.vue";
+
+const routes: Array = [
+ {
+ path: "/",
+ component: () => import("@/views/Login.vue"),
+ },
+ {
+ path: "/login",
+ component: () => import("@/views/Login.vue"),
+ },
+ {
+ path: "/app",
+ component: () => import("@/components/Layout.vue"),
+ children: [
+ {
+ path: "",
+ component: Employee,
+ },
+ {
+ path: "/app/Employee",
+ component: Employee,
+ },
+ {
+ path: "/app/Notice",
+ component: Notice,
+ },
+ {
+ path: "/app/QA",
+ component: QA,
+ },
+ // {
+ // path: "/app/tag",
+ // component: Tag,
+ // },
+ {
+ path: "/app/dynamicTable/:name/:path/:title?",
+ // component: Record,
+ component: DynamicTable,
+ // 动态表格
+ },
+ {
+ path: "/app/dataDict",
+ component: DataDict,
+ },
+ {
+ path: "/app/plugin",
+ component: Plugin,
+ }
+ ]
+ },
+ // {
+ // path: "/:pathMatch(.*)*",
+ // component: () => import("@/views/NotFound/index.vue"),
+ // },
+];
+
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes,
+});
+
+export default router;
diff --git a/src/store/app.ts b/src/store/app.ts
new file mode 100644
index 0000000..daba3ff
--- /dev/null
+++ b/src/store/app.ts
@@ -0,0 +1,24 @@
+import { defineStore } from "pinia";
+
+interface AppType {
+ userInfo: any;
+ isMiniMenu: boolean;
+}
+
+export const useAppStore = defineStore("app", {
+ state: (): AppType => ({
+ userInfo: {},
+ isMiniMenu: false
+ }),
+ actions: {
+ /**
+ * 保存登录者信息
+ */
+ saveUserInfo(payload: any) {
+ this.userInfo = payload;
+ },
+ removeUserInfo() {
+ this.userInfo = null;
+ }
+ },
+});
diff --git a/src/type/index.ts b/src/type/index.ts
new file mode 100644
index 0000000..fbaa3f0
--- /dev/null
+++ b/src/type/index.ts
@@ -0,0 +1,15 @@
+/** 图片预览图片索引切换类型值 */
+declare type TImgPreviewIdx = -1 | 1;
+
+/**
+ * 图片类型
+ * 图片类型, 0:人脸, 1:自行车, 2:巴士, 3:小汽车, 4:电动车|摩托车, 5:人体, 6:三轮车,7货车、8车牌、9推车,10鸟、11猫,12 狗,13老鼠
+ * "0 face","1 bicycle","2 bus","3 car","4 motorbike","5 person","6 tricycle","7 truck","8 carplate","9 pram","10 bird","11 cat", "12 dog", "13 mouse"
+ */
+declare type TObjectType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13;
+
+/**
+ * 订单状态
+ * 0:待完成 1:已完成 2:已取消
+ */
+declare type TStatus = 0 | 1 | 2;
\ No newline at end of file
diff --git a/src/views/DataDict.vue b/src/views/DataDict.vue
new file mode 100644
index 0000000..22b3828
--- /dev/null
+++ b/src/views/DataDict.vue
@@ -0,0 +1,64 @@
+
+
+
数据字典列表
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/DynamicTable.vue b/src/views/DynamicTable.vue
new file mode 100644
index 0000000..4f7cdc2
--- /dev/null
+++ b/src/views/DynamicTable.vue
@@ -0,0 +1,139 @@
+
+
+
{{ router.params?.title || router.params?.name }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Employee.vue b/src/views/Employee.vue
new file mode 100644
index 0000000..cd6a49a
--- /dev/null
+++ b/src/views/Employee.vue
@@ -0,0 +1,29 @@
+
+
+
用戶列表
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Login.vue b/src/views/Login.vue
new file mode 100644
index 0000000..cd6ec81
--- /dev/null
+++ b/src/views/Login.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
{{systemTitle||'...'}}
+
+
+
+
+
+
+
+
+
+ 登 录
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Notice.vue b/src/views/Notice.vue
new file mode 100644
index 0000000..bd9e1b7
--- /dev/null
+++ b/src/views/Notice.vue
@@ -0,0 +1,109 @@
+
+
+
通知列表
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Plugin.vue b/src/views/Plugin.vue
new file mode 100644
index 0000000..537fd9b
--- /dev/null
+++ b/src/views/Plugin.vue
@@ -0,0 +1,35 @@
+
+
+
插件列表
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/QA.vue b/src/views/QA.vue
new file mode 100644
index 0000000..082a5a3
--- /dev/null
+++ b/src/views/QA.vue
@@ -0,0 +1,100 @@
+
+
+
问答列表
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..5a66b77
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,41 @@
+{
+ "compilerOptions": {
+ "baseUrl": ".",
+ "paths": {
+ "@/*": [
+ "src/*"
+ ]
+ },
+ "target": "esnext",
+ "useDefineForClassFields": true,
+ "module": "esnext",
+ "moduleResolution": "node",
+ "strict": true,
+ "jsx": "preserve",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "lib": [
+ "esnext",
+ "dom"
+ ],
+ "skipLibCheck": true,
+ "types": [
+ "element-plus/global"
+ ],
+ "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
+ "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
+ },
+ "include": [
+ "src/**/*.ts",
+ "src/**/*.d.ts",
+ "src/**/*.tsx",
+ "src/**/*.vue"
+ ],
+ "references": [
+ {
+ "path": "./tsconfig.node.json"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 0000000..b307842
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "esnext",
+ "moduleResolution": "node"
+ },
+ "include": [
+ "vite.config.ts"
+ ]
+}
\ No newline at end of file
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000..3e0c03a
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,84 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import AutoImport from 'unplugin-auto-import/vite'
+import Components from 'unplugin-vue-components/vite'
+import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
+import ElementPlus from 'unplugin-element-plus/vite'
+import { resolve } from "path";
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue(),
+ AutoImport({
+ resolvers: [ElementPlusResolver()],
+ }),
+ Components({
+ resolvers: [ElementPlusResolver()],
+ }),
+ ElementPlus({
+ // options
+ })
+ ],
+ server: {
+ host: "0.0.0.0",
+ proxy: {
+ "^/api": {
+ target: "http://localhost:4873/",
+ changeOrigin: true,
+ },
+ "^/static": {
+ target: "http://localhost:4873/resource/",
+ changeOrigin: true,
+ },
+ "^/set/log/level": {
+ target: "http://192.168.1.89:4873/",
+ changeOrigin: true,
+ },
+ "^/cache/image/": {
+ target: "http://192.168.1.102:1221/",
+ changeOrigin: true,
+ },
+ "^/get/service/": {
+ target: "http://192.168.1.102:1221/",
+ changeOrigin: true,
+ },
+ }
+ },
+ resolve: {
+ alias: {
+ "@": resolve(__dirname, "src"),
+ },
+ },
+ build: {
+ cssCodeSplit: true, // 如果设置为false,整个项目中的所有 CSS 将被提取到一个 CSS 文件中
+ sourcemap: false, // 构建后是否生成 source map 文件。如果为 true,将会创建一个独立的 source map 文件
+ target: 'modules', // 设置最终构建的浏览器兼容目标。默认值是一个 Vite 特有的值——'modules' 还可设置为 'es2015' 'es2016'等
+ chunkSizeWarningLimit: 550, // 单位kb 打包后文件大小警告的限制 (文件大于此此值会出现警告)
+ assetsInlineLimit: 4096, // 单位字节(1024等于1kb) 小于此阈值的导入或引用资源将内联为 base64 编码,以避免额外的 http 请求。设置为 0 可以完全禁用此项。
+ // minify: false,
+ minify:'terser', // 'terser', // 'terser' 相对较慢,但大多数情况下构建后的文件体积更小。'esbuild' 最小化混淆更快但构建后的文件相对更大。
+ lib: {
+ // 入口文件
+ entry: './src/Magnet.ts',
+ // 名称
+ name: 'Magnet',
+ // 格式,可选 'es', 'umd', 'iife'
+ formats: ['es','iife']
+ },
+ rollupOptions: {
+ external: ['element-plus', 'vue', 'path', 'url', 'node','funjiaui','reflect-metadata','lodash-es','axois','funjia-axios'],
+ output: {
+ globals: {
+ "elementPlus": "element-plus",
+ "vue": "vue",
+ },
+ }
+ },
+ terserOptions: {
+ compress: {
+ drop_console: true, // 生产环境去除console
+ drop_debugger: true // 生产环境去除debugger
+ }
+ }
+ }
+})
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..f90e93d
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,2117 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@antfu/utils@^0.5.1", "@antfu/utils@^0.5.2":
+ version "0.5.2"
+ resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.5.2.tgz#8c2d931ff927be0ebe740169874a3d4004ab414b"
+ integrity sha512-CQkeV+oJxUazwjlHD0/3ZD08QWKuGQkhnrKo3e6ly5pd48VUpXbb77q0xMU4+vc2CkJnDS02Eq/M9ugyX20XZA==
+
+"@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#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
+ 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#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
+ integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
+
+"@babel/parser@^7.16.4", "@babel/parser@^7.25.3":
+ version "7.26.7"
+ resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.7.tgz#e114cd099e5f7d17b05368678da0fb9f69b3385c"
+ integrity sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==
+ dependencies:
+ "@babel/types" "^7.26.7"
+
+"@babel/runtime@^7.12.5", "@babel/runtime@^7.17.8", "@babel/runtime@^7.23.2", "@babel/runtime@^7.9.2":
+ version "7.26.7"
+ resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.7.tgz#f4e7fe527cd710f8dc0618610b61b4b060c3c341"
+ integrity sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/types@^7.26.7":
+ version "7.26.7"
+ resolved "https://registry.npmmirror.com/@babel/types/-/types-7.26.7.tgz#5e2b89c0768e874d4d061961f3a5a153d71dc17a"
+ integrity sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.25.9"
+ "@babel/helper-validator-identifier" "^7.25.9"
+
+"@codemirror/autocomplete@^6.0.0":
+ version "6.18.4"
+ resolved "https://registry.npmmirror.com/@codemirror/autocomplete/-/autocomplete-6.18.4.tgz#4394f55d6771727179f2e28a871ef46bbbeb11b1"
+ integrity sha512-sFAphGQIqyQZfP2ZBsSHV7xQvo9Py0rV0dW7W3IMRdS+zDuNb2l3no78CvUaWKGfzFjI4FTrLdUSj86IGb2hRA==
+ dependencies:
+ "@codemirror/language" "^6.0.0"
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.17.0"
+ "@lezer/common" "^1.0.0"
+
+"@codemirror/commands@6.x", "@codemirror/commands@^6.0.0":
+ version "6.8.0"
+ resolved "https://registry.npmmirror.com/@codemirror/commands/-/commands-6.8.0.tgz#92f200b66f852939bd6ebb90d48c2d9e9c813d64"
+ 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-javascript@^6.1.7":
+ version "6.2.2"
+ resolved "https://registry.npmmirror.com/@codemirror/lang-javascript/-/lang-javascript-6.2.2.tgz#7141090b22994bef85bcc5608a3bc1257f2db2ad"
+ integrity sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==
+ 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/language@6.x", "@codemirror/language@^6.0.0", "@codemirror/language@^6.6.0":
+ version "6.10.8"
+ resolved "https://registry.npmmirror.com/@codemirror/language/-/language-6.10.8.tgz#3e3a346a2b0a8cf63ee1cfe03349eb1965dce5f9"
+ 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/lint@^6.0.0":
+ version "6.8.4"
+ resolved "https://registry.npmmirror.com/@codemirror/lint/-/lint-6.8.4.tgz#7d8aa5d1a6dec89ffcc23ad45ddca2e12e90982d"
+ 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.8"
+ resolved "https://registry.npmmirror.com/@codemirror/search/-/search-6.5.8.tgz#b59b3659b46184cc75d6108d7c050a4ca344c3a0"
+ integrity sha512-PoWtZvo7c1XFeZWmmyaOp2G0XVbOnm+fJzvghqGAktBW3cufwJUWvSCcNG0ppXiBEM05mZu6RhMtXPv2hpllig==
+ dependencies:
+ "@codemirror/state" "^6.0.0"
+ "@codemirror/view" "^6.0.0"
+ crelt "^1.0.5"
+
+"@codemirror/state@6.x", "@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#8eca3a64212a83367dc85475b7d78d5c9b7076c6"
+ integrity sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==
+ dependencies:
+ "@marijn/find-cluster-break" "^1.0.0"
+
+"@codemirror/view@6.x", "@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.2"
+ resolved "https://registry.npmmirror.com/@codemirror/view/-/view-6.36.2.tgz#aeb644e161440734ac5a153bf6e5b4a4355047be"
+ integrity sha512-DZ6ONbs8qdJK0fdN7AB82CgI6tYXf4HWk1wSVa0+9bhVznCuuvhQtX8bFBoy3dv8rZSQqUd8GvhVAcielcidrA==
+ dependencies:
+ "@codemirror/state" "^6.5.0"
+ style-mod "^4.1.0"
+ w3c-keyname "^2.2.4"
+
+"@ctrl/tinycolor@^3.4.1":
+ 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==
+
+"@element-plus/icons-vue@^1.1.4":
+ version "1.1.4"
+ resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-1.1.4.tgz#5d2788ea356f1458068e6d400e724ca5f3d29aca"
+ integrity sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ==
+
+"@esbuild/linux-loong64@0.14.54":
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
+ integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
+
+"@floating-ui/core@^0.6.2":
+ version "0.6.2"
+ resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.2.tgz#f2813f0e5f3d5ed7af5029e1a082203dadf02b7d"
+ integrity sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==
+
+"@floating-ui/dom@^0.4.4":
+ version "0.4.5"
+ resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.5.tgz#2e88d16646119cc67d44683f75ee99840475bbfa"
+ integrity sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==
+ dependencies:
+ "@floating-ui/core" "^0.6.2"
+
+"@jridgewell/sourcemap-codec@^1.5.0":
+ version "1.5.0"
+ resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
+ integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
+
+"@kousum/vue3-window@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.npmmirror.com/@kousum/vue3-window/-/vue3-window-0.0.3.tgz#f115d3575655decc1c70f514de00b5bbb1629c41"
+ integrity sha512-yWH3FZRJUap69Q2MbNSqj2mSvjQhMQuHL+62E3y344rukAu4Vq08ISofSQpnjzg0TtaK68CcPexlkMJHnxxaPA==
+ dependencies:
+ "@babel/runtime" "^7.17.8"
+ memoize-one "^6.0.0"
+ vue "^3.2.31"
+
+"@lezer/common@^1.0.0", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0":
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/@lezer/common/-/common-1.2.3.tgz#138fcddab157d83da557554851017c6c1e5667fd"
+ integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
+
+"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3":
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/@lezer/highlight/-/highlight-1.2.1.tgz#596fa8f9aeb58a608be0a563e960c373cbf23f8b"
+ integrity sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==
+ dependencies:
+ "@lezer/common" "^1.0.0"
+
+"@lezer/javascript@^1.0.0":
+ version "1.4.21"
+ resolved "https://registry.npmmirror.com/@lezer/javascript/-/javascript-1.4.21.tgz#8ebf7d1f891c70e3d00864f5a03ac42c75d19492"
+ integrity sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ==
+ dependencies:
+ "@lezer/common" "^1.2.0"
+ "@lezer/highlight" "^1.1.3"
+ "@lezer/lr" "^1.3.0"
+
+"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
+ version "1.4.2"
+ resolved "https://registry.npmmirror.com/@lezer/lr/-/lr-1.4.2.tgz#931ea3dea8e9de84e90781001dae30dea9ff1727"
+ integrity sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==
+ dependencies:
+ "@lezer/common" "^1.0.0"
+
+"@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#775374306116d51c0c500b8c4face0f9a04752d8"
+ integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
+
+"@microsoft/api-extractor-model@7.30.3":
+ version "7.30.3"
+ resolved "https://registry.npmmirror.com/@microsoft/api-extractor-model/-/api-extractor-model-7.30.3.tgz#d1256b6955c8c2a1115e0cfe99e1e8f9802e52cc"
+ integrity sha512-yEAvq0F78MmStXdqz9TTT4PZ05Xu5R8nqgwI5xmUmQjWBQ9E6R2n8HB/iZMRciG4rf9iwI2mtuQwIzDXBvHn1w==
+ dependencies:
+ "@microsoft/tsdoc" "~0.15.1"
+ "@microsoft/tsdoc-config" "~0.17.1"
+ "@rushstack/node-core-library" "5.11.0"
+
+"@microsoft/api-extractor@^7.49.1":
+ version "7.49.2"
+ resolved "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.49.2.tgz#bc08c5fef1a3064f86657fd2e2f84c0ea64462f5"
+ integrity sha512-DI/WnvhbkHcucxxc4ys00ejCiViFls5EKPrEfe4NV3GGpVkoM5ZXF61HZNSGA8IG0oEV4KfTqIa59Rc3wdMopw==
+ dependencies:
+ "@microsoft/api-extractor-model" "7.30.3"
+ "@microsoft/tsdoc" "~0.15.1"
+ "@microsoft/tsdoc-config" "~0.17.1"
+ "@rushstack/node-core-library" "5.11.0"
+ "@rushstack/rig-package" "0.5.3"
+ "@rushstack/terminal" "0.14.6"
+ "@rushstack/ts-command-line" "4.23.4"
+ lodash "~4.17.15"
+ minimatch "~3.0.3"
+ resolve "~1.22.1"
+ semver "~7.5.4"
+ source-map "~0.6.1"
+ typescript "5.7.2"
+
+"@microsoft/tsdoc-config@~0.17.1":
+ version "0.17.1"
+ resolved "https://registry.npmmirror.com/@microsoft/tsdoc-config/-/tsdoc-config-0.17.1.tgz#e0f0b50628f4ad7fe121ca616beacfe6a25b9335"
+ integrity sha512-UtjIFe0C6oYgTnad4q1QP4qXwLhe6tIpNTRStJ2RZEPIkqQPREAwE5spzVxsdn9UaEMUqhh0AqSx3X4nWAKXWw==
+ dependencies:
+ "@microsoft/tsdoc" "0.15.1"
+ ajv "~8.12.0"
+ jju "~1.4.0"
+ resolve "~1.22.2"
+
+"@microsoft/tsdoc@0.15.1", "@microsoft/tsdoc@~0.15.1":
+ version "0.15.1"
+ resolved "https://registry.npmmirror.com/@microsoft/tsdoc/-/tsdoc-0.15.1.tgz#d4f6937353bc4568292654efb0a0e0532adbcba2"
+ integrity sha512-4aErSrCR/On/e5G2hDP0wjooqDdauzEbIq8hIkIe5pXV0rtWJZvdCEKL0ykZxex+IxIwBp0eGeV48hQN07dXtw==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ 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#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@parcel/watcher-android-arm64@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1"
+ integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==
+
+"@parcel/watcher-darwin-arm64@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67"
+ integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==
+
+"@parcel/watcher-darwin-x64@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8"
+ integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==
+
+"@parcel/watcher-freebsd-x64@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b"
+ integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==
+
+"@parcel/watcher-linux-arm-glibc@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1"
+ integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==
+
+"@parcel/watcher-linux-arm-musl@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e"
+ integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==
+
+"@parcel/watcher-linux-arm64-glibc@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30"
+ integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==
+
+"@parcel/watcher-linux-arm64-musl@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2"
+ integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==
+
+"@parcel/watcher-linux-x64-glibc@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e"
+ integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==
+
+"@parcel/watcher-linux-x64-musl@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee"
+ integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==
+
+"@parcel/watcher-win32-arm64@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243"
+ integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==
+
+"@parcel/watcher-win32-ia32@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6"
+ integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==
+
+"@parcel/watcher-win32-x64@2.5.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947"
+ integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==
+
+"@parcel/watcher@^2.4.1":
+ version "2.5.1"
+ resolved "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200"
+ integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==
+ dependencies:
+ detect-libc "^1.0.3"
+ is-glob "^4.0.3"
+ micromatch "^4.0.5"
+ node-addon-api "^7.0.0"
+ optionalDependencies:
+ "@parcel/watcher-android-arm64" "2.5.1"
+ "@parcel/watcher-darwin-arm64" "2.5.1"
+ "@parcel/watcher-darwin-x64" "2.5.1"
+ "@parcel/watcher-freebsd-x64" "2.5.1"
+ "@parcel/watcher-linux-arm-glibc" "2.5.1"
+ "@parcel/watcher-linux-arm-musl" "2.5.1"
+ "@parcel/watcher-linux-arm64-glibc" "2.5.1"
+ "@parcel/watcher-linux-arm64-musl" "2.5.1"
+ "@parcel/watcher-linux-x64-glibc" "2.5.1"
+ "@parcel/watcher-linux-x64-musl" "2.5.1"
+ "@parcel/watcher-win32-arm64" "2.5.1"
+ "@parcel/watcher-win32-ia32" "2.5.1"
+ "@parcel/watcher-win32-x64" "2.5.1"
+
+"@popperjs/core@^2.11.5":
+ version "2.11.8"
+ resolved "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
+
+"@react-dnd/asap@^5.0.1":
+ version "5.0.2"
+ resolved "https://registry.npmmirror.com/@react-dnd/asap/-/asap-5.0.2.tgz#1f81f124c1cd6f39511c11a881cfb0f715343488"
+ integrity sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==
+
+"@react-dnd/invariant@^4.0.1", "@react-dnd/invariant@^4.0.2":
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/@react-dnd/invariant/-/invariant-4.0.2.tgz#b92edffca10a26466643349fac7cdfb8799769df"
+ integrity sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==
+
+"@react-dnd/shallowequal@^4.0.2":
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz#d1b4befa423f692fa4abf1c79209702e7d8ae4b4"
+ integrity sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==
+
+"@rollup/pluginutils@^4.2.0", "@rollup/pluginutils@^4.2.1":
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d"
+ integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==
+ dependencies:
+ estree-walker "^2.0.1"
+ picomatch "^2.2.2"
+
+"@rollup/pluginutils@^5.1.4":
+ version "5.1.4"
+ resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz#bb94f1f9eaaac944da237767cdfee6c5b2262d4a"
+ integrity sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^2.0.2"
+ picomatch "^4.0.2"
+
+"@rushstack/node-core-library@5.11.0":
+ version "5.11.0"
+ resolved "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-5.11.0.tgz#8ceb980f3a591e1254167bb5ffdc200d1893b783"
+ integrity sha512-I8+VzG9A0F3nH2rLpPd7hF8F7l5Xb7D+ldrWVZYegXM6CsKkvWc670RlgK3WX8/AseZfXA/vVrh0bpXe2Y2UDQ==
+ dependencies:
+ ajv "~8.13.0"
+ ajv-draft-04 "~1.0.0"
+ ajv-formats "~3.0.1"
+ fs-extra "~11.3.0"
+ import-lazy "~4.0.0"
+ jju "~1.4.0"
+ resolve "~1.22.1"
+ semver "~7.5.4"
+
+"@rushstack/rig-package@0.5.3":
+ version "0.5.3"
+ resolved "https://registry.npmmirror.com/@rushstack/rig-package/-/rig-package-0.5.3.tgz#ea4d8a3458540b1295500149c04e645f23134e5d"
+ integrity sha512-olzSSjYrvCNxUFZowevC3uz8gvKr3WTpHQ7BkpjtRpA3wK+T0ybep/SRUMfr195gBzJm5gaXw0ZMgjIyHqJUow==
+ dependencies:
+ resolve "~1.22.1"
+ strip-json-comments "~3.1.1"
+
+"@rushstack/terminal@0.14.6":
+ version "0.14.6"
+ resolved "https://registry.npmmirror.com/@rushstack/terminal/-/terminal-0.14.6.tgz#a58a6bbbd1dead6c0701960b583645f10e5577ec"
+ integrity sha512-4nMUy4h0u5PGXVG71kEA9uYI3l8GjVqewoHOFONiM6fuqS51ORdaJZ5ZXB2VZEGUyfg1TOTSy88MF2cdAy+lqA==
+ dependencies:
+ "@rushstack/node-core-library" "5.11.0"
+ supports-color "~8.1.1"
+
+"@rushstack/ts-command-line@4.23.4":
+ version "4.23.4"
+ resolved "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.23.4.tgz#f04c04f039621c47e25793d551e67300cd0dfcba"
+ integrity sha512-pqmzDJCm0TS8VyeqnzcJ7ncwXgiLDQ6LVmXXfqv2nPL6VIz+UpyTpNVfZRJpyyJ+UDxqob1vIj2liaUfBjv8/A==
+ dependencies:
+ "@rushstack/terminal" "0.14.6"
+ "@types/argparse" "1.0.38"
+ argparse "~1.0.9"
+ string-argv "~0.3.1"
+
+"@types/argparse@1.0.38":
+ version "1.0.38"
+ resolved "https://registry.npmmirror.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9"
+ integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==
+
+"@types/axios@^0.14.0":
+ version "0.14.4"
+ resolved "https://registry.npmmirror.com/@types/axios/-/axios-0.14.4.tgz#174e3a05fe7677f13bc719f0d2a427f5defacedf"
+ integrity sha512-9JgOaunvQdsQ/qW2OPmE5+hCeUB52lQSolecrFrthct55QekhmXEwT203s20RL+UHtCQc15y3VXpby9E7Kkh/g==
+ dependencies:
+ axios "*"
+
+"@types/estree@^1.0.0":
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
+ integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
+
+"@types/js-cookie@^3.0.1":
+ version "3.0.6"
+ resolved "https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-3.0.6.tgz#a04ca19e877687bd449f5ad37d33b104b71fdf95"
+ integrity sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==
+
+"@types/lodash-es@^4.17.6":
+ version "4.17.12"
+ resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b"
+ integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*", "@types/lodash@^4.14.181":
+ version "4.17.15"
+ resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.15.tgz#12d4af0ed17cc7600ce1f9980cec48fc17ad1e89"
+ integrity sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==
+
+"@types/node@^17.0.25":
+ version "17.0.45"
+ resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190"
+ integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==
+
+"@types/raf@^3.4.0":
+ version "3.4.3"
+ resolved "https://registry.npmmirror.com/@types/raf/-/raf-3.4.3.tgz#85f1d1d17569b28b8db45e16e996407a56b0ab04"
+ integrity sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==
+
+"@types/web-bluetooth@^0.0.14":
+ version "0.0.14"
+ resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.14.tgz#94e175b53623384bff1f354cdb3197a8d63cdbe5"
+ integrity sha512-5d2RhCard1nQUC3aHcq/gHzWYO6K0WJmAbjO7mQJgCQKtZpgXxv1rOM6O/dBDhDYYVutk1sciOgNSe+5YyfM8A==
+
+"@vitejs/plugin-vue@^2.3.1":
+ version "2.3.4"
+ resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-2.3.4.tgz#966a6279060eb2d9d1a02ea1a331af071afdcf9e"
+ integrity sha512-IfFNbtkbIm36O9KB8QodlwwYvTEsJb4Lll4c2IwB3VHc2gie2mSPtSzL0eYay7X2jd/2WX02FjSGTWR6OPr/zg==
+
+"@volar/code-gen@0.34.17":
+ version "0.34.17"
+ resolved "https://registry.npmmirror.com/@volar/code-gen/-/code-gen-0.34.17.tgz#fd46e369454e6bd9599b511500b4c43acb9730bd"
+ integrity sha512-rHR7BA71BJ/4S7xUOPMPiB7uk6iU9oTWpEMZxFi5VGC9iJmDncE82WzU5iYpcbOBCVHsOjMh0+5CGMgdO6SaPA==
+ dependencies:
+ "@volar/source-map" "0.34.17"
+
+"@volar/language-core@2.4.11", "@volar/language-core@~2.4.11":
+ version "2.4.11"
+ resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.11.tgz#d95a9ec4f14fbdb41a6a64f9f321d11d23a5291c"
+ integrity sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==
+ dependencies:
+ "@volar/source-map" "2.4.11"
+
+"@volar/source-map@0.34.17":
+ version "0.34.17"
+ resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-0.34.17.tgz#79efc4d088e11f59fc857953185a1f852df70968"
+ integrity sha512-3yn1IMXJGGWB/G817/VFlFMi8oh5pmE7VzUqvgMZMrppaZpKj6/juvJIEiXNxRsgWc0RxIO8OSp4htdPUg1Raw==
+
+"@volar/source-map@2.4.11":
+ version "2.4.11"
+ resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.11.tgz#5876d4531508129724c2755e295db1df98bd5895"
+ integrity sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==
+
+"@volar/typescript@^2.4.11":
+ version "2.4.11"
+ resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.11.tgz#aafbfa413337654db211bf4d8fb6670c89f6fa57"
+ integrity sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==
+ dependencies:
+ "@volar/language-core" "2.4.11"
+ path-browserify "^1.0.1"
+ vscode-uri "^3.0.8"
+
+"@volar/vue-code-gen@0.34.17":
+ version "0.34.17"
+ resolved "https://registry.npmmirror.com/@volar/vue-code-gen/-/vue-code-gen-0.34.17.tgz#55ca9c21b38c91bf362761b268a77b9f0ecae8bf"
+ integrity sha512-17pzcK29fyFWUc+C82J3JYSnA+jy3QNrIldb9kPaP9Itbik05ZjEIyEue9FjhgIAuHeYSn4LDM5s6nGjxyfhsQ==
+ dependencies:
+ "@volar/code-gen" "0.34.17"
+ "@volar/source-map" "0.34.17"
+ "@vue/compiler-core" "^3.2.36"
+ "@vue/compiler-dom" "^3.2.36"
+ "@vue/shared" "^3.2.36"
+
+"@volar/vue-typescript@0.34.17":
+ version "0.34.17"
+ resolved "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-0.34.17.tgz#497eb471ebac25ff61af04031b78ec71a34d470b"
+ integrity sha512-U0YSVIBPRWVPmgJHNa4nrfq88+oS+tmyZNxmnfajIw9A/GOGZQiKXHC0k09SVvbYXlsjgJ6NIjhm9NuAhGRQjg==
+ dependencies:
+ "@volar/code-gen" "0.34.17"
+ "@volar/source-map" "0.34.17"
+ "@volar/vue-code-gen" "0.34.17"
+ "@vue/compiler-sfc" "^3.2.36"
+ "@vue/reactivity" "^3.2.36"
+
+"@vue/compiler-core@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.33.tgz#e915d59cce85898f5c5cfebe4c09e539278c3d59"
+ integrity sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/shared" "3.2.33"
+ estree-walker "^2.0.2"
+ source-map "^0.6.1"
+
+"@vue/compiler-core@3.5.13", "@vue/compiler-core@^3.2.36":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz#b0ae6c4347f60c03e849a05d34e5bf747c9bda05"
+ integrity sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==
+ dependencies:
+ "@babel/parser" "^7.25.3"
+ "@vue/shared" "3.5.13"
+ entities "^4.5.0"
+ estree-walker "^2.0.2"
+ source-map-js "^1.2.0"
+
+"@vue/compiler-dom@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz#6db84296f949f18e5d3e7fd5e80f943dbed7d5ec"
+ integrity sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==
+ dependencies:
+ "@vue/compiler-core" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/compiler-dom@3.5.13", "@vue/compiler-dom@^3.2.36", "@vue/compiler-dom@^3.5.0":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz#bb1b8758dbc542b3658dda973b98a1c9311a8a58"
+ integrity sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==
+ dependencies:
+ "@vue/compiler-core" "3.5.13"
+ "@vue/shared" "3.5.13"
+
+"@vue/compiler-sfc@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz#7ce01dc947a8b76c099811dc6ca58494d4dc773d"
+ integrity sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.33"
+ "@vue/compiler-dom" "3.2.33"
+ "@vue/compiler-ssr" "3.2.33"
+ "@vue/reactivity-transform" "3.2.33"
+ "@vue/shared" "3.2.33"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+ postcss "^8.1.10"
+ source-map "^0.6.1"
+
+"@vue/compiler-sfc@3.5.13", "@vue/compiler-sfc@^3.2.36":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz#461f8bd343b5c06fac4189c4fef8af32dea82b46"
+ integrity sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==
+ dependencies:
+ "@babel/parser" "^7.25.3"
+ "@vue/compiler-core" "3.5.13"
+ "@vue/compiler-dom" "3.5.13"
+ "@vue/compiler-ssr" "3.5.13"
+ "@vue/shared" "3.5.13"
+ estree-walker "^2.0.2"
+ magic-string "^0.30.11"
+ postcss "^8.4.48"
+ source-map-js "^1.2.0"
+
+"@vue/compiler-ssr@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz#3e820267e4eea48fde9519f006dedca3f5e42e71"
+ integrity sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==
+ dependencies:
+ "@vue/compiler-dom" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/compiler-ssr@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz#e771adcca6d3d000f91a4277c972a996d07f43ba"
+ integrity sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==
+ dependencies:
+ "@vue/compiler-dom" "3.5.13"
+ "@vue/shared" "3.5.13"
+
+"@vue/compiler-vue2@^2.7.16":
+ version "2.7.16"
+ resolved "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz#2ba837cbd3f1b33c2bc865fbe1a3b53fb611e249"
+ integrity sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==
+ dependencies:
+ de-indent "^1.0.2"
+ he "^1.2.0"
+
+"@vue/devtools-api@^6.1.4", "@vue/devtools-api@^6.6.4":
+ version "6.6.4"
+ resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
+ integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
+
+"@vue/language-core@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.0.tgz#e48c54584f889f78b120ce10a050dfb316c7fcdf"
+ integrity sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==
+ dependencies:
+ "@volar/language-core" "~2.4.11"
+ "@vue/compiler-dom" "^3.5.0"
+ "@vue/compiler-vue2" "^2.7.16"
+ "@vue/shared" "^3.5.0"
+ alien-signals "^0.4.9"
+ minimatch "^9.0.3"
+ muggle-string "^0.4.1"
+ path-browserify "^1.0.1"
+
+"@vue/reactivity-transform@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz#286063f44ca56150ae9b52f8346a26e5913fa699"
+ integrity sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==
+ dependencies:
+ "@babel/parser" "^7.16.4"
+ "@vue/compiler-core" "3.2.33"
+ "@vue/shared" "3.2.33"
+ estree-walker "^2.0.2"
+ magic-string "^0.25.7"
+
+"@vue/reactivity@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.33.tgz#c84eedb5225138dbfc2472864c151d3efbb4b673"
+ integrity sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==
+ dependencies:
+ "@vue/shared" "3.2.33"
+
+"@vue/reactivity@3.5.13", "@vue/reactivity@^3.2.36":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz#b41ff2bb865e093899a22219f5b25f97b6fe155f"
+ integrity sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==
+ dependencies:
+ "@vue/shared" "3.5.13"
+
+"@vue/runtime-core@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.33.tgz#2df8907c85c37c3419fbd1bdf1a2df097fa40df2"
+ integrity sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==
+ dependencies:
+ "@vue/reactivity" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/runtime-core@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz#1fafa4bf0b97af0ebdd9dbfe98cd630da363a455"
+ integrity sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==
+ dependencies:
+ "@vue/reactivity" "3.5.13"
+ "@vue/shared" "3.5.13"
+
+"@vue/runtime-dom@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz#123b8969247029ea0d9c1983676d4706a962d848"
+ integrity sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==
+ dependencies:
+ "@vue/runtime-core" "3.2.33"
+ "@vue/shared" "3.2.33"
+ csstype "^2.6.8"
+
+"@vue/runtime-dom@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz#610fc795de9246300e8ae8865930d534e1246215"
+ integrity sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==
+ dependencies:
+ "@vue/reactivity" "3.5.13"
+ "@vue/runtime-core" "3.5.13"
+ "@vue/shared" "3.5.13"
+ csstype "^3.1.3"
+
+"@vue/server-renderer@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.33.tgz#4b45d6d2ae10ea4e3d2cf8e676804cf60f331979"
+ integrity sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==
+ dependencies:
+ "@vue/compiler-ssr" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+"@vue/server-renderer@3.5.13":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz#429ead62ee51de789646c22efe908e489aad46f7"
+ integrity sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==
+ dependencies:
+ "@vue/compiler-ssr" "3.5.13"
+ "@vue/shared" "3.5.13"
+
+"@vue/shared@3.2.33":
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.33.tgz#69a8c99ceb37c1b031d5cc4aec2ff1dc77e1161e"
+ integrity sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==
+
+"@vue/shared@3.5.13", "@vue/shared@^3.2.36", "@vue/shared@^3.5.0":
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz#87b309a6379c22b926e696893237826f64339b6f"
+ integrity sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==
+
+"@vueuse/core@^8.2.5":
+ version "8.9.4"
+ resolved "https://registry.npmmirror.com/@vueuse/core/-/core-8.9.4.tgz#c7db40f19390b3c9f4ff9294a30461497f62ec19"
+ integrity sha512-B/Mdj9TK1peFyWaPof+Zf/mP9XuGAngaJZBwPaXBvU3aCTZlx3ltlrFFFyMV4iGBwsjSCeUCgZrtkEj9dS2Y3Q==
+ dependencies:
+ "@types/web-bluetooth" "^0.0.14"
+ "@vueuse/metadata" "8.9.4"
+ "@vueuse/shared" "8.9.4"
+ vue-demi "*"
+
+"@vueuse/metadata@8.9.4":
+ version "8.9.4"
+ resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.9.4.tgz#a4132db33e4c1b1023636acfa20aa7b37ab3d978"
+ integrity sha512-IwSfzH80bnJMzqhaapqJl9JRIiyQU0zsRGEgnxN6jhq7992cPUJIRfV+JHRIZXjYqbwt07E1gTEp0R0zPJ1aqw==
+
+"@vueuse/shared@8.9.4":
+ version "8.9.4"
+ resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.9.4.tgz#c9741c30ffb666b50d62f0dd80b76119fd47573e"
+ integrity sha512-wt+T30c4K6dGRMVqPddexEVLa28YwxW5OFIPmzUHICjphfAuBFTTdDoyqREZNDOFJZ44ARH1WWQNCUK8koJ+Ag==
+ dependencies:
+ vue-demi "*"
+
+acorn@^8.14.0, acorn@^8.7.1:
+ version "8.14.0"
+ resolved "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
+ integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
+
+ajv-draft-04@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz#3b64761b268ba0b9e668f0b41ba53fce0ad77fc8"
+ integrity sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==
+
+ajv-formats@~3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-3.0.1.tgz#3d5dc762bca17679c3c2ea7e90ad6b7532309578"
+ integrity sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==
+ dependencies:
+ ajv "^8.0.0"
+
+ajv@^8.0.0:
+ version "8.17.1"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+
+ajv@~8.12.0:
+ version "8.12.0"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
+ integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
+ajv@~8.13.0:
+ version "8.13.0"
+ resolved "https://registry.npmmirror.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91"
+ integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.4.1"
+
+alien-signals@^0.4.9:
+ version "0.4.14"
+ resolved "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.4.14.tgz#9ff8f72a272300a51692f54bd9bbbada78fbf539"
+ integrity sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==
+
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
+argparse@~1.0.9:
+ version "1.0.10"
+ resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+async-validator@^4.0.7:
+ 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==
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+ integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
+
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoresponsive-core3@^1.0.20:
+ version "1.0.20"
+ resolved "https://registry.npmmirror.com/autoresponsive-core3/-/autoresponsive-core3-1.0.20.tgz#b822e1c60fe90252a67874bcdff6d9d68a60fdca"
+ integrity sha512-tippYElkHTlH3uscsH0ctOfvTuzqFhRaLeREimYUJMaUzkjYsOKI7nZnGRH6Qjtk4zFtXU7ZJ2iVd/1oGhMy+w==
+
+autoresponsive-vue3@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmmirror.com/autoresponsive-vue3/-/autoresponsive-vue3-2.0.4.tgz#33434429982c2a14fe9b4367a8f2fd03191c5f5e"
+ integrity sha512-O19ccKPayCdBWhmOWktsFuCLYznlMBta4z0kh/uozsxJ9aA7ldn0z8ECdysvlh0lyejdJ3L2g+2hWhYgULiGTg==
+ dependencies:
+ autoresponsive-core3 "^1.0.20"
+ exenv "^1.2.2"
+ vue "^3.2.41"
+
+axios@*:
+ version "1.7.9"
+ resolved "https://registry.npmmirror.com/axios/-/axios-1.7.9.tgz#d7d071380c132a24accda1b2cfc1535b79ec650a"
+ integrity sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==
+ dependencies:
+ follow-redirects "^1.15.6"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
+
+axios@^0.26.1:
+ version "0.26.1"
+ resolved "https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9"
+ integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==
+ dependencies:
+ follow-redirects "^1.14.8"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+base64-arraybuffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#1c37589a7c4b0746e34bd1feb951da2df01c1bdc"
+ integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
+
+binary-extensions@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
+ integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ 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#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
+ integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
+ dependencies:
+ balanced-match "^1.0.0"
+
+braces@^3.0.3, braces@~3.0.2:
+ version "3.0.3"
+ resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
+ integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
+ dependencies:
+ fill-range "^7.1.1"
+
+btoa@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.npmmirror.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73"
+ integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==
+
+canvg@^3.0.6:
+ version "3.0.10"
+ resolved "https://registry.npmmirror.com/canvg/-/canvg-3.0.10.tgz#8e52a2d088b6ffa23ac78970b2a9eebfae0ef4b3"
+ integrity sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ "@types/raf" "^3.4.0"
+ core-js "^3.8.3"
+ raf "^3.4.1"
+ regenerator-runtime "^0.13.7"
+ rgbcolor "^1.0.1"
+ stackblur-canvas "^2.0.0"
+ svg-pathdata "^6.0.3"
+
+charenc@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.npmmirror.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667"
+ integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==
+
+chokidar@^3.5.3:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
+ integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+chokidar@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30"
+ integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
+ dependencies:
+ readdirp "^4.0.1"
+
+codemirror@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmmirror.com/codemirror/-/codemirror-6.0.1.tgz#62b91142d45904547ee3e0e0e4c1a79158035a29"
+ 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"
+
+combined-stream@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
+ integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
+ dependencies:
+ delayed-stream "~1.0.0"
+
+compare-versions@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.npmmirror.com/compare-versions/-/compare-versions-6.1.1.tgz#7af3cc1099ba37d244b3145a9af5201b629148a9"
+ integrity sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+confbox@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
+ integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
+
+core-js@^3.6.0, core-js@^3.8.3:
+ version "3.40.0"
+ resolved "https://registry.npmmirror.com/core-js/-/core-js-3.40.0.tgz#2773f6b06877d8eda102fc42f828176437062476"
+ integrity sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==
+
+crelt@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.npmmirror.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
+ integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
+
+cropperjs@^1.5.6:
+ version "1.6.2"
+ resolved "https://registry.npmmirror.com/cropperjs/-/cropperjs-1.6.2.tgz#d1a5d627d880581cca41b7901f06923500e4201b"
+ integrity sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==
+
+crypt@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.npmmirror.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
+ integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==
+
+css-line-break@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz#bfef660dfa6f5397ea54116bb3cb4873edbc4fa0"
+ integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
+ dependencies:
+ utrie "^1.0.2"
+
+csstype@^2.6.8:
+ version "2.6.21"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e"
+ integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==
+
+csstype@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+dayjs@^1.10.7, dayjs@^1.11.0:
+ version "1.11.13"
+ resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
+ integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
+
+de-indent@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
+ integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==
+
+debug@^4.3.4, debug@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a"
+ integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
+ dependencies:
+ ms "^2.1.3"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+ integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+
+detect-libc@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+
+dnd-core@^16.0.1:
+ version "16.0.1"
+ resolved "https://registry.npmmirror.com/dnd-core/-/dnd-core-16.0.1.tgz#a1c213ed08961f6bd1959a28bb76f1a868360d19"
+ integrity sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==
+ dependencies:
+ "@react-dnd/asap" "^5.0.1"
+ "@react-dnd/invariant" "^4.0.1"
+ redux "^4.2.0"
+
+dompurify@^2.5.4:
+ version "2.5.8"
+ resolved "https://registry.npmmirror.com/dompurify/-/dompurify-2.5.8.tgz#2809d89d7e528dc7a071dea440d7376df676f824"
+ integrity sha512-o1vSNgrmYMQObbSSvF/1brBYEQPHhV1+gsmrusO7/GXtp1T9rCS8cXFqVxK/9crT1jA6Ccv+5MTSjBNqr7Sovw==
+
+element-plus@2.1.10:
+ version "2.1.10"
+ resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.1.10.tgz#3251745714416a3184d78c3d93474a8abc97c6b8"
+ integrity sha512-sS9OMgP20dlYipmzHlEEgCJU+ID7+03YpRpoJWNQEH736C6ArmDMLnGFe8DUjPvwbUEXRA2d0Eo5d0apFgkSqg==
+ dependencies:
+ "@ctrl/tinycolor" "^3.4.1"
+ "@element-plus/icons-vue" "^1.1.4"
+ "@floating-ui/dom" "^0.4.4"
+ "@popperjs/core" "^2.11.5"
+ "@types/lodash" "^4.14.181"
+ "@types/lodash-es" "^4.17.6"
+ "@vueuse/core" "^8.2.5"
+ async-validator "^4.0.7"
+ dayjs "^1.11.0"
+ escape-html "^1.0.3"
+ lodash "^4.17.21"
+ lodash-es "^4.17.21"
+ lodash-unified "^1.0.2"
+ memoize-one "^6.0.0"
+ normalize-wheel-es "^1.1.2"
+
+entities@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
+es-module-lexer@^0.10.5:
+ version "0.10.5"
+ resolved "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.10.5.tgz#06f76d51fa53b1f78e3bd8bb36dd275eda2fdd53"
+ integrity sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==
+
+es6-promise@^4.2.5:
+ version "4.2.8"
+ resolved "https://registry.npmmirror.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
+ integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
+
+esbuild-android-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.54.tgz#505f41832884313bbaffb27704b8bcaa2d8616be"
+ integrity sha512-Tz2++Aqqz0rJ7kYBfz+iqyE3QMycD4vk7LBRyWaAVFgFtQ/O8EJOnVmTOiDWYZ/uYzB4kvP+bqejYdVKzE5lAQ==
+
+esbuild-android-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.54.tgz#8ce69d7caba49646e009968fe5754a21a9871771"
+ integrity sha512-F9E+/QDi9sSkLaClO8SOV6etqPd+5DgJje1F9lOWoNncDdOBL2YF59IhsWATSt0TLZbYCf3pNlTHvVV5VfHdvg==
+
+esbuild-darwin-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.54.tgz#24ba67b9a8cb890a3c08d9018f887cc221cdda25"
+ integrity sha512-jtdKWV3nBviOd5v4hOpkVmpxsBy90CGzebpbO9beiqUYVMBtSc0AL9zGftFuBon7PNDcdvNCEuQqw2x0wP9yug==
+
+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#3f7cdb78888ee05e488d250a2bdaab1fa671bf73"
+ integrity sha512-OPafJHD2oUPyvJMrsCvDGkRrVCar5aVyHfWGQzY1dWnzErjrDuSETxwA2HSsyg2jORLY8yBfzc1MIpUkXlctmw==
+
+esbuild-freebsd-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.54.tgz#09250f997a56ed4650f3e1979c905ffc40bbe94d"
+ integrity sha512-OKwd4gmwHqOTp4mOGZKe/XUlbDJ4Q9TjX0hMPIDBUWWu/kwhBAudJdBoxnjNf9ocIB6GN6CPowYpR/hRCbSYAg==
+
+esbuild-freebsd-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.54.tgz#bafb46ed04fc5f97cbdb016d86947a79579f8e48"
+ integrity sha512-sFwueGr7OvIFiQT6WeG0jRLjkjdqWWSrfbVwZp8iMP+8UHEHRBvlaxL6IuKNDwAozNUmbb8nIMXa7oAOARGs1Q==
+
+esbuild-linux-32@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-32/-/esbuild-linux-32-0.14.54.tgz#e2a8c4a8efdc355405325033fcebeb941f781fe5"
+ integrity sha512-1ZuY+JDI//WmklKlBgJnglpUL1owm2OX+8E1syCD6UAxcMM/XoWd76OHSjl/0MR0LisSAXDqgjT3uJqT67O3qw==
+
+esbuild-linux-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-64/-/esbuild-linux-64-0.14.54.tgz#de5fdba1c95666cf72369f52b40b03be71226652"
+ integrity sha512-EgjAgH5HwTbtNsTqQOXWApBaPVdDn7XcK+/PtJwZLT1UmpLoznPd8c5CxqsH2dQK3j05YsB3L17T8vE7cp4cCg==
+
+esbuild-linux-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.54.tgz#dae4cd42ae9787468b6a5c158da4c84e83b0ce8b"
+ integrity sha512-WL71L+0Rwv+Gv/HTmxTEmpv0UgmxYa5ftZILVi2QmZBgX3q7+tDeOQNqGtdXSdsL8TQi1vIaVFHUPDe0O0kdig==
+
+esbuild-linux-arm@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.54.tgz#a2c1dff6d0f21dbe8fc6998a122675533ddfcd59"
+ integrity sha512-qqz/SjemQhVMTnvcLGoLOdFpCYbz4v4fUo+TfsWG+1aOu70/80RV6bgNpR2JCrppV2moUQkww+6bWxXRL9YMGw==
+
+esbuild-linux-mips64le@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.54.tgz#d9918e9e4cb972f8d6dae8e8655bf9ee131eda34"
+ integrity sha512-qTHGQB8D1etd0u1+sB6p0ikLKRVuCWhYQhAHRPkO+OF3I/iSlTKNNS0Lh2Oc0g0UFGguaFZZiPJdJey3AGpAlw==
+
+esbuild-linux-ppc64le@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.54.tgz#3f9a0f6d41073fb1a640680845c7de52995f137e"
+ integrity sha512-j3OMlzHiqwZBDPRCDFKcx595XVfOfOnv68Ax3U4UKZ3MTYQB5Yz3X1mn5GnodEVYzhtZgxEBidLWeIs8FDSfrQ==
+
+esbuild-linux-riscv64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.54.tgz#618853c028178a61837bc799d2013d4695e451c8"
+ integrity sha512-y7Vt7Wl9dkOGZjxQZnDAqqn+XOqFD7IMWiewY5SPlNlzMX39ocPQlOaoxvT4FllA5viyV26/QzHtvTjVNOxHZg==
+
+esbuild-linux-s390x@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.54.tgz#d1885c4c5a76bbb5a0fe182e2c8c60eb9e29f2a6"
+ integrity sha512-zaHpW9dziAsi7lRcyV4r8dhfG1qBidQWUXweUjnw+lliChJqQr+6XD71K41oEIC3Mx1KStovEmlzm+MkGZHnHA==
+
+esbuild-netbsd-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.54.tgz#69ae917a2ff241b7df1dbf22baf04bd330349e81"
+ integrity sha512-PR01lmIMnfJTgeU9VJTDY9ZerDWVFIUzAtJuDHwwceppW7cQWjBBqP48NdeRtoP04/AtO9a7w3viI+PIDr6d+w==
+
+esbuild-openbsd-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.54.tgz#db4c8495287a350a6790de22edea247a57c5d47b"
+ integrity sha512-Qyk7ikT2o7Wu76UsvvDS5q0amJvmRzDyVlL0qf5VLsLchjCa1+IAvd8kTBgUxD7VBUUVgItLkk609ZHUc1oCaw==
+
+esbuild-sunos-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.54.tgz#54287ee3da73d3844b721c21bc80c1dc7e1bf7da"
+ integrity sha512-28GZ24KmMSeKi5ueWzMcco6EBHStL3B6ubM7M51RmPwXQGLe0teBGJocmWhgwccA1GeFXqxzILIxXpHbl9Q/Kw==
+
+esbuild-windows-32@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-windows-32/-/esbuild-windows-32-0.14.54.tgz#f8aaf9a5667630b40f0fb3aa37bf01bbd340ce31"
+ integrity sha512-T+rdZW19ql9MjS7pixmZYVObd9G7kcaZo+sETqNH4RCkuuYSuv9AGHUVnPoP9hhuE1WM1ZimHz1CIBHBboLU7w==
+
+esbuild-windows-64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-windows-64/-/esbuild-windows-64-0.14.54.tgz#bf54b51bd3e9b0f1886ffdb224a4176031ea0af4"
+ integrity sha512-AoHTRBUuYwXtZhjXZbA1pGfTo8cJo3vZIcWGLiUcTNgHpJJMC1rVA44ZereBHMJtotyN71S8Qw0npiCIkW96cQ==
+
+esbuild-windows-arm64@0.14.54:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.54.tgz#937d15675a15e4b0e4fafdbaa3a01a776a2be982"
+ integrity sha512-M0kuUvXhot1zOISQGXwWn6YtS+Y/1RT9WrVIOywZnJHo3jCDyewAc79aKNQWFCQm+xNHVTq9h8dZKvygoXQQRg==
+
+esbuild@^0.14.27:
+ version "0.14.54"
+ resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.14.54.tgz#8b44dcf2b0f1a66fc22459943dccf477535e9aa2"
+ 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"
+
+escape-html@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
+
+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#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+exenv@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmmirror.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d"
+ integrity sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==
+
+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#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-glob@^3.2.11:
+ version "3.3.3"
+ resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
+ integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
+ dependencies:
+ "@nodelib/fs.stat" "^2.0.2"
+ "@nodelib/fs.walk" "^1.2.3"
+ glob-parent "^5.1.2"
+ merge2 "^1.3.0"
+ micromatch "^4.0.8"
+
+fast-uri@^3.0.1:
+ version "3.0.6"
+ resolved "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748"
+ integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==
+
+fastq@^1.6.0:
+ version "1.19.0"
+ resolved "https://registry.npmmirror.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89"
+ integrity sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==
+ dependencies:
+ reusify "^1.0.4"
+
+fflate@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.npmmirror.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea"
+ integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
+
+fill-range@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
+ integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
+ dependencies:
+ to-regex-range "^5.0.1"
+
+follow-redirects@^1.14.8, follow-redirects@^1.15.6:
+ version "1.15.9"
+ resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
+ integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
+
+form-data@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48"
+ integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
+fs-extra@~11.3.0:
+ version "11.3.0"
+ resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d"
+ integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fsevents@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+"funjia-axios@git+http://git.funjia.top/funjia/funjia-axios.git":
+ version "0.0.1"
+ resolved "git+http://git.funjia.top/funjia/funjia-axios.git#b76323800995e88c6fcd3ede5a87ff62f0ff0a9d"
+ dependencies:
+ axios "^0.26.1"
+ js-cookie "^3.0.1"
+
+"funjialib@git+http://git.funjia.top/funjia/FunJiaLib_Package.git":
+ version "1.0.0"
+ resolved "git+http://git.funjia.top/funjia/FunJiaLib_Package.git#07908bb596bb21750d0298460df12ba963a70fa6"
+
+"funjiaui@git+http://git.funjia.top/funjia/FunjiaUI_Vue.git#v1.1.2":
+ version "1.1.0"
+ resolved "git+http://git.funjia.top/funjia/FunjiaUI_Vue.git#503af87b2b4d35728f8a8f8aeb7029c2cbf246c5"
+ dependencies:
+ "@codemirror/lang-javascript" "^6.1.7"
+ "@kousum/vue3-window" "^0.0.3"
+ "@types/axios" "^0.14.0"
+ "@types/js-cookie" "^3.0.1"
+ axios "^0.26.1"
+ codemirror "^6.0.1"
+ dayjs "^1.10.7"
+ element-plus "2.1.10"
+ funjialib "git+http://git.funjia.top/funjia/FunJiaLib_Package.git"
+ js-cookie "^3.0.1"
+ lodash-es "^4.17.21"
+ md5 "^2.3.0"
+ pinia "2.0.13"
+ vite-plugin-lib "^2.1.1"
+ vue "3.2.33"
+ vue-codemirror "^6.1.1"
+ vue-cropperjs "^5.0.0"
+ vue-router "^4.0.14"
+
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+ version "4.2.11"
+ resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+html-print-element@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.npmmirror.com/html-print-element/-/html-print-element-0.0.5.tgz#3303d7bb83d7a0943db4a715f58e1c4929bdc7e2"
+ integrity sha512-5zVxfnw/win2ZaezrOipU99zFlvMtNuXJBsznvIe7UOBBRQxEILLzRmPXXMSAM/0l+n5z3sBlWmJqW2fARwyqQ==
+
+html2canvas@^1.0.0, html2canvas@^1.0.0-rc.5:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz#7cef1888311b5011d507794a066041b14669a543"
+ integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
+ dependencies:
+ css-line-break "^2.1.0"
+ text-segmentation "^1.0.3"
+
+html2pdf.js@^0.10.2:
+ version "0.10.2"
+ resolved "https://registry.npmmirror.com/html2pdf.js/-/html2pdf.js-0.10.2.tgz#29c0e4cebf2cbde4ed0c2e8abb98eecac22ff66f"
+ integrity sha512-WyHVeMb18Bp7vYTmBv1GVsThH//K7SRfHdSdhHPkl4JvyQarNQXnailkYn0QUbRRmnN5rdbbmSIGEsPZtzPy2Q==
+ dependencies:
+ es6-promise "^4.2.5"
+ html2canvas "^1.0.0"
+ jspdf "^2.3.1"
+
+immutable@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.npmmirror.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1"
+ integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==
+
+import-lazy@~4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153"
+ integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==
+
+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#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
+is-buffer@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-core-module@^2.16.0:
+ version "2.16.1"
+ resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
+ integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
+ dependencies:
+ hasown "^2.0.2"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+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#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-number@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
+ integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+
+jju@~1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmmirror.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a"
+ integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==
+
+js-cookie@^3.0.1:
+ version "3.0.5"
+ resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
+ integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
+
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jspdf@^2.3.1:
+ version "2.5.2"
+ resolved "https://registry.npmmirror.com/jspdf/-/jspdf-2.5.2.tgz#3c35bb1063ee3ad9428e6353852b0d685d1f923a"
+ integrity sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+ atob "^2.1.2"
+ btoa "^1.2.1"
+ fflate "^0.8.1"
+ optionalDependencies:
+ canvg "^3.0.6"
+ core-js "^3.6.0"
+ dompurify "^2.5.4"
+ html2canvas "^1.0.0-rc.5"
+
+kolorist@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.npmmirror.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
+ integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
+
+local-pkg@^0.4.1:
+ version "0.4.3"
+ resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
+ integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
+
+local-pkg@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz#69658638d2a95287534d4c2fff757980100dbb6d"
+ integrity sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==
+ dependencies:
+ mlly "^1.7.3"
+ pkg-types "^1.2.1"
+
+lodash-es@^4.17.21:
+ 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-unified@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
+ integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
+
+lodash@^4.17.21, lodash@~4.17.15:
+ version "4.17.21"
+ resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
+ dependencies:
+ yallist "^4.0.0"
+
+magic-string@^0.25.7:
+ version "0.25.9"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magic-string@^0.26.1, magic-string@^0.26.2:
+ version "0.26.7"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
+ integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magic-string@^0.30.11, magic-string@^0.30.17:
+ version "0.30.17"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453"
+ integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.5.0"
+
+md5@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmmirror.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f"
+ integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==
+ dependencies:
+ charenc "0.0.2"
+ crypt "0.0.2"
+ is-buffer "~1.1.6"
+
+memoize-one@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
+ integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+
+merge2@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
+micromatch@^4.0.5, micromatch@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+ integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
+ dependencies:
+ braces "^3.0.3"
+ picomatch "^2.3.1"
+
+mime-db@1.52.0:
+ version "1.52.0"
+ resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
+ integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
+
+mime-types@^2.1.12:
+ version "2.1.35"
+ resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
+ integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
+ dependencies:
+ mime-db "1.52.0"
+
+minimatch@^5.1.0:
+ version "5.1.6"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+ integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@^9.0.3:
+ version "9.0.5"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+ integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+ dependencies:
+ brace-expansion "^2.0.1"
+
+minimatch@~3.0.3:
+ version "3.0.8"
+ resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1"
+ integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+mlly@^1.7.3, mlly@^1.7.4:
+ version "1.7.4"
+ resolved "https://registry.npmmirror.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f"
+ integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==
+ dependencies:
+ acorn "^8.14.0"
+ pathe "^2.0.1"
+ pkg-types "^1.3.0"
+ ufo "^1.5.4"
+
+ms@^2.1.3:
+ version "2.1.3"
+ resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+
+muggle-string@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz#3b366bd43b32f809dc20659534dd30e7c8a0d328"
+ integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==
+
+nanoid@^3.3.8:
+ version "3.3.8"
+ resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
+ integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
+
+node-addon-api@^7.0.0:
+ version "7.1.1"
+ resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
+ integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
+
+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#0dcd69ff23a1c9b11fd0978316644a0388216a65"
+ integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+
+normalize-wheel-es@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e"
+ integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
+
+path-browserify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
+ integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+pathe@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/pathe/-/pathe-2.0.2.tgz#5ed86644376915b3c7ee4d00ac8c348d671da3a5"
+ integrity sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==
+
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+picocolors@1.1.1, picocolors@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ 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#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+picomatch@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
+ integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
+
+pinia@2.0.13:
+ version "2.0.13"
+ resolved "https://registry.npmmirror.com/pinia/-/pinia-2.0.13.tgz#6656fc290dae120a9f0cb2f5c520df400d41b8c5"
+ integrity sha512-B7rSqm1xNpwcPMnqns8/gVBfbbi7lWTByzS6aPZ4JOXSJD4Y531rZHDCoYWBwLyHY/8hWnXljgiXp6rRyrofcw==
+ dependencies:
+ "@vue/devtools-api" "^6.1.4"
+ vue-demi "*"
+
+pkg-types@^1.2.1, pkg-types@^1.3.0:
+ version "1.3.1"
+ resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df"
+ integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==
+ dependencies:
+ confbox "^0.1.8"
+ mlly "^1.7.4"
+ pathe "^2.0.1"
+
+postcss@^8.1.10, postcss@^8.4.13, postcss@^8.4.48:
+ version "8.5.1"
+ resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.1.tgz#e2272a1f8a807fafa413218245630b5db10a3214"
+ integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==
+ dependencies:
+ nanoid "^3.3.8"
+ picocolors "^1.1.1"
+ source-map-js "^1.2.1"
+
+printd@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmmirror.com/printd/-/printd-1.6.0.tgz#0abc44583740ca106b51b3b1f38589d6f152882e"
+ integrity sha512-/w99P870SbE4MjVXJbWBvrK/HtVOcTEcmzUXcPYzfIaxgyPUGw8lmbhM3JHYbiZ18BCj+qwVEVshf2MLRoAh0Q==
+
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+punycode@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+raf@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
+ integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
+ dependencies:
+ performance-now "^2.1.0"
+
+react-dnd-html5-backend@^16.0.1:
+ version "16.0.1"
+ resolved "https://registry.npmmirror.com/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz#87faef15845d512a23b3c08d29ecfd34871688b6"
+ integrity sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==
+ dependencies:
+ dnd-core "^16.0.1"
+
+readdirp@^4.0.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.1.tgz#bd115327129672dc47f87408f05df9bd9ca3ef55"
+ integrity sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==
+
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+redux@^4.2.0:
+ version "4.2.1"
+ resolved "https://registry.npmmirror.com/redux/-/redux-4.2.1.tgz#c08f4306826c49b5e9dc901dee0452ea8fce6197"
+ integrity sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+
+reflect-metadata@^0.1.13:
+ version "0.1.14"
+ resolved "https://registry.npmmirror.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859"
+ integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==
+
+regenerator-runtime@^0.13.7:
+ version "0.13.11"
+ resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
+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==
+
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
+resolve@^1.22.0, resolve@~1.22.1, resolve@~1.22.2:
+ version "1.22.10"
+ resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39"
+ integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==
+ dependencies:
+ is-core-module "^2.16.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rgbcolor@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d"
+ integrity sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==
+
+"rollup@>=2.59.0 <2.78.0":
+ version "2.77.3"
+ resolved "https://registry.npmmirror.com/rollup/-/rollup-2.77.3.tgz#8f00418d3a2740036e15deb653bed1a90ee0cc12"
+ 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#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+sass@^1.50.1:
+ version "1.83.4"
+ resolved "https://registry.npmmirror.com/sass/-/sass-1.83.4.tgz#5ccf60f43eb61eeec300b780b8dcb85f16eec6d1"
+ integrity sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==
+ dependencies:
+ chokidar "^4.0.0"
+ immutable "^5.0.2"
+ source-map-js ">=0.6.2 <2.0.0"
+ optionalDependencies:
+ "@parcel/watcher" "^2.4.1"
+
+semver@~7.5.4:
+ version "7.5.4"
+ resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
+"source-map-js@>=0.6.2 <2.0.0", 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#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
+
+source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
+stackblur-canvas@^2.0.0:
+ version "2.7.0"
+ resolved "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz#af931277d0b5096df55e1f91c530043e066989b6"
+ integrity sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==
+
+string-argv@~0.3.1:
+ version "0.3.2"
+ resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
+ integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
+
+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#31f1281b3832630434831c310c01cccda8cbe006"
+ 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#ca238a1ad4786520f7515a8539d5a63691d7bf67"
+ integrity sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==
+
+supports-color@~8.1.1:
+ version "8.1.1"
+ resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
+ integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
+ 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#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
+svg-pathdata@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz#80b0e0283b652ccbafb69ad4f8f73e8d3fbf2cac"
+ integrity sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==
+
+text-segmentation@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz#52a388159efffe746b24a63ba311b6ac9f2d7943"
+ integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
+ dependencies:
+ utrie "^1.0.2"
+
+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#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
+ integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
+ dependencies:
+ is-number "^7.0.0"
+
+typescript@5.7.2:
+ version "5.7.2"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6"
+ integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==
+
+typescript@^4.5.4:
+ version "4.9.5"
+ resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
+ integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+
+ufo@^1.5.4:
+ version "1.5.4"
+ resolved "https://registry.npmmirror.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
+ integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
+
+universalify@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
+ integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
+
+unplugin-auto-import@^0.7.1:
+ version "0.7.2"
+ resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.7.2.tgz#99c42e5002a5cecfd6133c33a1e2919aba0c6d8c"
+ integrity sha512-VzaYUa2VByUT70WSFlOXoovyWuwC/8ePKQUC9fhU+BRmvTC7qhCVgChH/NieWMEVgyT+HhacxM+W7xMEOmA+MA==
+ dependencies:
+ "@antfu/utils" "^0.5.1"
+ "@rollup/pluginutils" "^4.2.0"
+ local-pkg "^0.4.1"
+ magic-string "^0.26.1"
+ resolve "^1.22.0"
+ unplugin "^0.6.1"
+
+unplugin-element-plus@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.npmmirror.com/unplugin-element-plus/-/unplugin-element-plus-0.4.1.tgz#73f391377c581a8bf9ddcaf1e23dbfd16a69300e"
+ integrity sha512-x8L35sppkbtnAf+aSPXNsLPjCUrM0mWKgujqMIgrHiDQaGbpMlNnbN2kjP5CMclykNOw8fUCreEhtxPyzg8tmw==
+ dependencies:
+ "@rollup/pluginutils" "^4.2.1"
+ es-module-lexer "^0.10.5"
+ magic-string "^0.26.2"
+ unplugin "^0.7.1"
+
+unplugin-vue-components@^0.19.3:
+ version "0.19.9"
+ resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-0.19.9.tgz#87e913f3cf8cd1d36c6f5b597ca7a46cddb6229b"
+ integrity sha512-i5mZtg85euPWZrGswFkoa9pf4WjKCP5qOjnwOyg3KOKVzFjnP3osCdrunQMjtoMKehTdz1vV6baZH8bZR4PNgg==
+ dependencies:
+ "@antfu/utils" "^0.5.2"
+ "@rollup/pluginutils" "^4.2.1"
+ chokidar "^3.5.3"
+ debug "^4.3.4"
+ fast-glob "^3.2.11"
+ local-pkg "^0.4.1"
+ magic-string "^0.26.2"
+ minimatch "^5.1.0"
+ resolve "^1.22.0"
+ unplugin "^0.7.0"
+
+unplugin@^0.6.1:
+ version "0.6.3"
+ resolved "https://registry.npmmirror.com/unplugin/-/unplugin-0.6.3.tgz#b8721e2b163a410a7efed726e6a0fc6fbadf975a"
+ integrity sha512-CoW88FQfCW/yabVc4bLrjikN9HC8dEvMU4O7B6K2jsYMPK0l6iAnd9dpJwqGcmXJKRCU9vwSsy653qg+RK0G6A==
+ dependencies:
+ chokidar "^3.5.3"
+ webpack-sources "^3.2.3"
+ webpack-virtual-modules "^0.4.3"
+
+unplugin@^0.7.0, unplugin@^0.7.1:
+ version "0.7.2"
+ resolved "https://registry.npmmirror.com/unplugin/-/unplugin-0.7.2.tgz#4127012fdc2c84ea4ce03ce75e3d4f54ea47bba1"
+ integrity sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==
+ dependencies:
+ acorn "^8.7.1"
+ chokidar "^3.5.3"
+ webpack-sources "^3.2.3"
+ webpack-virtual-modules "^0.4.4"
+
+uri-js@^4.2.2, uri-js@^4.4.1:
+ version "4.4.1"
+ resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+utrie@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz#d42fe44de9bc0119c25de7f564a6ed1b2c87a645"
+ integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
+ dependencies:
+ base64-arraybuffer "^1.0.2"
+
+vite-plugin-dts@4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/vite-plugin-dts/-/vite-plugin-dts-4.5.0.tgz#a83899470dc3d423298755b615f1279abd49e0ac"
+ integrity sha512-M1lrPTdi7gilLYRZoLmGYnl4fbPryVYsehPN9JgaxjJKTs8/f7tuAlvCCvOLB5gRDQTTKnptBcB0ACsaw2wNLw==
+ dependencies:
+ "@microsoft/api-extractor" "^7.49.1"
+ "@rollup/pluginutils" "^5.1.4"
+ "@volar/typescript" "^2.4.11"
+ "@vue/language-core" "2.2.0"
+ compare-versions "^6.1.1"
+ debug "^4.4.0"
+ kolorist "^1.8.0"
+ local-pkg "^0.5.1"
+ magic-string "^0.30.17"
+
+vite-plugin-lib@^2.1.1:
+ version "2.1.5"
+ resolved "https://registry.npmmirror.com/vite-plugin-lib/-/vite-plugin-lib-2.1.5.tgz#7cd582a4b5fd88bb36296c33c68ef60a071ab1fd"
+ integrity sha512-TvTu9mJG+5xvqxboeJkmYqNtG0XCi6pTOJUzbCz9Zx73sDU1ZbW8u/y7RXwb6TtixyKCkhvRg+2uHiCn4jMlrw==
+ dependencies:
+ picocolors "1.1.1"
+ vite-plugin-dts "4.5.0"
+
+vite@^2.9.5:
+ version "2.9.18"
+ resolved "https://registry.npmmirror.com/vite/-/vite-2.9.18.tgz#74e2a83b29da81e602dac4c293312cc575f091c7"
+ integrity sha512-sAOqI5wNM9QvSEE70W3UGMdT8cyEn0+PmJMTFvTB8wB0YbYUWw3gUbY62AOyrXosGieF2htmeLATvNxpv/zNyQ==
+ dependencies:
+ esbuild "^0.14.27"
+ postcss "^8.4.13"
+ resolve "^1.22.0"
+ rollup ">=2.59.0 <2.78.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vscode-uri@^3.0.8:
+ version "3.0.8"
+ resolved "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f"
+ integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
+
+vue-codemirror@^6.1.1:
+ version "6.1.1"
+ resolved "https://registry.npmmirror.com/vue-codemirror/-/vue-codemirror-6.1.1.tgz#246697ef4cfa6b2448dd592ade214bb7ff86611f"
+ integrity sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==
+ dependencies:
+ "@codemirror/commands" "6.x"
+ "@codemirror/language" "6.x"
+ "@codemirror/state" "6.x"
+ "@codemirror/view" "6.x"
+
+vue-cropperjs@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmmirror.com/vue-cropperjs/-/vue-cropperjs-5.0.0.tgz#7f8cbc460737af3831b4ded634c95905198e329e"
+ integrity sha512-RhnC8O33uRZNkn74aiHZwNHnBJOXWlS4P6gsRI0lw4cZlWjKSCywZI9oSI9POlIPI6OYv30jvnHMXGch85tw7w==
+ dependencies:
+ cropperjs "^1.5.6"
+
+vue-demi@*, vue-demi@^0.14.7:
+ version "0.14.10"
+ resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
+ integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
+
+vue-router@^4.0.14:
+ version "4.5.0"
+ resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz#58fc5fe374e10b6018f910328f756c3dae081f14"
+ integrity sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==
+ dependencies:
+ "@vue/devtools-api" "^6.6.4"
+
+vue-tsc@^0.34.7:
+ version "0.34.17"
+ resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-0.34.17.tgz#332fc5c31d64bb9b74b0f26050f3ab067a9a7d6f"
+ integrity sha512-jzUXky44ZLHC4daaJag7FQr3idlPYN719/K1eObGljz5KaS2UnVGTU/XSYCd7d6ampYYg4OsyalbHyJIxV0aEQ==
+ dependencies:
+ "@volar/vue-typescript" "0.34.17"
+
+vue3-dnd@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmmirror.com/vue3-dnd/-/vue3-dnd-2.1.0.tgz#72e19bb9dac885613634651c56ed7964e9ebb799"
+ integrity sha512-szeB4ldsrnXTwBLmkmBuZaP9zE0eL4o8LCgTPeejOHCBsIOEUDf9W8TKCo+rj3cSVfbaa6Y5b27YVa99PI5HhA==
+ dependencies:
+ "@react-dnd/invariant" "^4.0.2"
+ "@react-dnd/shallowequal" "^4.0.2"
+ dnd-core "^16.0.1"
+ fast-deep-equal "^3.1.3"
+ vue-demi "^0.14.7"
+
+vue@3.2.33:
+ version "3.2.33"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.2.33.tgz#7867eb16a3293a28c4d190a837bc447878bd64c2"
+ integrity sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==
+ dependencies:
+ "@vue/compiler-dom" "3.2.33"
+ "@vue/compiler-sfc" "3.2.33"
+ "@vue/runtime-dom" "3.2.33"
+ "@vue/server-renderer" "3.2.33"
+ "@vue/shared" "3.2.33"
+
+vue@^3.2.31, vue@^3.2.41:
+ version "3.5.13"
+ resolved "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz#9f760a1a982b09c0c04a867903fc339c9f29ec0a"
+ integrity sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==
+ dependencies:
+ "@vue/compiler-dom" "3.5.13"
+ "@vue/compiler-sfc" "3.5.13"
+ "@vue/runtime-dom" "3.5.13"
+ "@vue/server-renderer" "3.5.13"
+ "@vue/shared" "3.5.13"
+
+w3c-keyname@^2.2.4:
+ version "2.2.8"
+ resolved "https://registry.npmmirror.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
+ integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
+
+webpack-sources@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
+ integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
+
+webpack-virtual-modules@^0.4.3, webpack-virtual-modules@^0.4.4:
+ version "0.4.6"
+ resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz#3e4008230731f1db078d9cb6f68baf8571182b45"
+ integrity sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==
+
+yallist@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
+ integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==