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 @@ + + \ 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 @@ + + + + + \ 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 @@ + + + \ 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 @@ + + + \ 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 @@ + + + + + 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 @@ + + + \ 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 @@ + + + \ 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==