diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000000000000000000000000000000000000..b60c2cb0e9c6d843faacba1095949be3553df562
--- /dev/null
+++ b/.env.development
@@ -0,0 +1 @@
+VITE_SECRET = 8484ffc0431e4fc4
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/.eslintrc b/.eslintrc
new file mode 100644
index 0000000000000000000000000000000000000000..a8024f23be0946272049ce603d9303d307e3e60e
--- /dev/null
+++ b/.eslintrc
@@ -0,0 +1,33 @@
+{
+ "root": true,
+ "parser": "vue-eslint-parser",
+ "parserOptions": {
+ "sourceType": "module",
+ "ecmaVersion": 2020,
+ "ecmaFeatures": {
+ "tsx": true
+ }
+ },
+ "env": {
+ "browser": true,
+ "node": true,
+ "es6": true
+ },
+ "extends": [
+ "plugin:vue/vue3-recommended",
+ "@vue/typescript/recommended",
+ "plugin:@typescript-eslint/recommended",
+ "@vue/prettier"
+ ],
+ "plugins": ["@typescript-eslint"],
+ "rules": {
+ "no-console": "warn",
+ "no-debugger": "error",
+ "no-var": "error",
+ "no-unused-vars": "error",
+ "no-multiple-empty-lines": "error",
+ "eqeqeq": "error",
+ "@typescript-eslint/no-explicit-any": "off",
+ "vue/no-v-model-argument": "off"
+ }
+}
diff --git a/.gitignore b/.gitignore
index 5d947ca8879f8a9072fe485c566204e3c2929e80..d6211aa47d68bbe1f8d933dfa0d6cfc88610373b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,18 +1,124 @@
-# Build and Release Folders
-bin-debug/
-bin-release/
-[Oo]bj/
-[Bb]in/
-
-# Other files and folders
-.settings/
-
-# Executables
-*.swf
-*.air
-*.ipa
-*.apk
-
-# Project files, i.e. `.project`, `.actionScriptProperties` and `.flexProperties`
-# should NOT be excluded as they contain compiler settings and other important
-# information for Eclipse / Flash Builder.
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+# mac
+.DS_Store
+
+app/.vitepress/.cache
+app/.vitepress/.temp
+app/.vitepress/dist
+node_modules
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..fa4e095233fbfba3ff88d57fb03190fd96b72d99
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1 @@
+strict-peer-dependencies=false
\ No newline at end of file
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000000000000000000000000000000000000..dc54040f3a9e08af7eb8580530624a56b1433e42
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,10 @@
+{
+ "printWidth": 80,
+ "useTabs": false,
+ "singleQuote": true,
+ "tabWidth": 2,
+ "semi": true,
+ "trailingComma": "es5",
+ "arrowParens": "always",
+ "jsxBracketSameLine": false
+}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000000000000000000000000000000000000..a7cea0b0678120a1b590d1b6592c7318039b9179
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar"]
+}
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..57bc2586f403ea86e1d7e3d2a91d340086f2ecfb
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,21 @@
+FROM gplane/pnpm as Builder
+
+RUN mkdir -p /home/quick-issue/web
+WORKDIR /home/quick-issue/web
+COPY . /home/quick-issue/web
+
+RUN pnpm install
+
+RUN pnpm build
+
+FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/nginx:1.22.0-22.03-lts
+
+COPY --from=Builder /home/quick-issue/web/dist /usr/share/nginx/html/
+RUN chmod -R 755 /usr/share/nginx/html
+COPY ./deploy/nginx/nginx.conf /etc/nginx/nginx.conf
+
+
+ENV RUN_USER nginx
+ENV RUN_GROUP nginx
+EXPOSE 8080
+ENTRYPOINT ["nginx", "-g", "daemon off;"]
diff --git a/auto-imports.d.ts b/auto-imports.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..08908edd6a4136cad144e7a483f291f9d9618be2
--- /dev/null
+++ b/auto-imports.d.ts
@@ -0,0 +1,5 @@
+// Generated by 'unplugin-auto-import'
+export {}
+declare global {
+
+}
diff --git a/components.d.ts b/components.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0f92669b0c5323557fcb3f89c01b0695748d6202
--- /dev/null
+++ b/components.d.ts
@@ -0,0 +1,49 @@
+// 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'
+
+export {}
+
+declare module '@vue/runtime-core' {
+ export interface GlobalComponents {
+ AppContent: typeof import('./src/components/AppContent.vue')['default']
+ AppEditor: typeof import('./src/components/AppEditor.vue')['default']
+ AppFooter: typeof import('./src/components/AppFooter.vue')['default']
+ AppHeader: typeof import('./src/components/AppHeader.vue')['default']
+ AppIssue: typeof import('./src/components/AppIssue.vue')['default']
+ AppPull: typeof import('./src/components/AppPull.vue')['default']
+ AppSlideVerify: typeof import('./src/components/AppSlideVerify.vue')['default']
+ DocAnchor: typeof import('./src/components/DocAnchor.vue')['default']
+ ElCard: typeof import('element-plus/es')['ElCard']
+ ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
+ ElCollapse: typeof import('element-plus/es')['ElCollapse']
+ ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
+ ElDialog: typeof import('element-plus/es')['ElDialog']
+ ElDrawer: typeof import('element-plus/es')['ElDrawer']
+ 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']
+ ElInput: typeof import('element-plus/es')['ElInput']
+ ElOption: typeof import('element-plus/es')['ElOption']
+ ElPagination: typeof import('element-plus/es')['ElPagination']
+ ElPopover: typeof import('element-plus/es')['ElPopover']
+ ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
+ ElSelect: typeof import('element-plus/es')['ElSelect']
+ ElSwitch: typeof import('element-plus/es')['ElSwitch']
+ ElTable: typeof import('element-plus/es')['ElTable']
+ ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
+ ElTabPane: typeof import('element-plus/es')['ElTabPane']
+ ElTabs: typeof import('element-plus/es')['ElTabs']
+ ElTree: typeof import('element-plus/es')['ElTree']
+ ElUpload: typeof import('element-plus/es')['ElUpload']
+ HeaderNav: typeof import('./src/components/HeaderNav.vue')['default']
+ ONav: typeof import('./src/components/ONav.vue')['default']
+ RouterLink: typeof import('vue-router')['RouterLink']
+ RouterView: typeof import('vue-router')['RouterView']
+ SigLandscapeFeature: typeof import('./src/components/SigLandscapeFeature.vue')['default']
+ SlideVerify: typeof import('./src/components/slide-verify/slide-verify.vue')['default']
+ }
+}
diff --git a/deploy/nginx/nginx.conf b/deploy/nginx/nginx.conf
new file mode 100644
index 0000000000000000000000000000000000000000..78aa59fe2e581c3f64fe54a4ccbcaace731c2e51
--- /dev/null
+++ b/deploy/nginx/nginx.conf
@@ -0,0 +1,141 @@
+worker_processes auto;
+
+error_log /dev/stdout warn;
+
+pid /var/run/nginx.pid;
+
+load_module /etc/nginx/modules/ngx_http_geoip2_module.so;
+
+worker_rlimit_nofile 4096;
+events {
+ use epoll;
+ worker_connections 4096;
+}
+
+http {
+ include /etc/nginx/mime.types;
+
+ geoip2 /etc/nginx/geoip/GeoLite2-Country.mmdb {
+ $geoip2_city_country_code source=$http_true_client_ip country iso_code;
+ $geoip2_city_country_name source=$http_true_client_ip country names en;
+ }
+
+ geoip2 /etc/nginx/geoip/GeoLite2-City.mmdb {
+ $geoip2_city source=$http_true_client_ip city names en;
+ }
+
+ log_format main '[$time_local] "remote_addr": "$remote_addr"'
+ '"x_forwarded_for": "$http_x_forwarded_for"'
+ '"true-client-ip": "$http_true_client_ip"'
+ '"$request"'
+ '"geoip2_city_country_code": "$geoip2_city_country_code"'
+ '"geoip2_city_country_name": "$geoip2_city_country_name"'
+ '"geoip2_city": "$geoip2_city"'
+ '$status $body_bytes_sent "$http_referer" '
+ '"$http_user_agent"';
+
+ access_log /dev/stdout main;
+
+ autoindex off;
+ sendfile on;
+
+ keepalive_timeout 300;
+ keepalive_requests 100;
+ proxy_read_timeout 900;
+ proxy_connect_timeout 60;
+
+ proxy_send_timeout 60;
+ client_header_timeout 60;
+ client_header_buffer_size 1k;
+ large_client_header_buffers 4 64k;
+ client_body_buffer_size 16K;
+ client_body_timeout 60;
+ send_timeout 60;
+ server_tokens off;
+ port_in_redirect off;
+ limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
+ limit_conn_zone $server_name zone=perserver:10m;
+ limit_req_zone global zone=req_zone:1m rate=1000r/s;
+ limit_req_zone $binary_remote_addr zone=event_zone:10m rate=20r/s;
+
+ proxy_request_buffering off;
+ client_max_body_size 50m;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_http_version 1.0;
+ gzip_comp_level 5;
+ gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/x-httpd-php application/json;
+ gzip_vary on;
+
+ server {
+ # listen 443 ssl;
+ # server_name localhost;
+ # charset utf-8;
+
+ listen 8080;
+ server_name localhost;
+ charset utf-8;
+ limit_conn perserver 50;
+ if ($request_method = 'OPTIONS') {
+ return 401;
+ }
+
+ location / {
+ location /assets {
+ # publish every two weeks
+ expires 14d;
+ add_header Cache-Control public;
+ }
+ location / {
+ add_header Cache-Control no-cache;
+ }
+
+ location = / {
+ rewrite ^/$ /zh/issues/ redirect;
+ }
+ location = /zh/ {
+ rewrite ^/zh/$ /zh/issues/ redirect;
+ }
+
+ location /api-issues/ {
+ proxy_pass http://119.8.32.82/;
+ # proxy_pass https://ipb.osinfra.cn/;
+ }
+ location /api-omapi/ {
+ proxy_pass https://omapi.osinfra.cn/;
+ }
+ location /api-dsapi/ {
+ proxy_pass https://dsapi.osinfra.cn/;
+ }
+ location /ip-api/ {
+ proxy_pass http://ip-api.com/json/;
+ }
+
+ root /usr/share/nginx/html;
+ index /index.html;
+ # error_page 404 /404.html;
+ }
+
+ location ~ ^/(quick-issue) {
+ try_files $uri /index.html;
+ }
+
+ error_page 500 501 502 503 504 505 /500.html;
+ error_page 401 /401.html;
+ error_page 404 /404.html;
+
+ location = /401.html {
+ root /usr/share/nginx/html;
+ }
+
+ location = /404.html {
+ root /usr/share/nginx/html;
+ }
+
+ location = /500.html {
+ root /usr/share/nginx/html;
+ }
+ }
+}
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..9170f28ee49d9a4108c4eb9a6f996ed27730b53d
--- /dev/null
+++ b/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ Quick-Issue
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/opendesign/_utils/common.ts b/opendesign/_utils/common.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9a855ca113fa95661ac5d37d6055c00b344b1b78
--- /dev/null
+++ b/opendesign/_utils/common.ts
@@ -0,0 +1 @@
+export type SizeType = 'large' | 'medium' | 'small' | 'mini';
diff --git a/opendesign/button/index.ts b/opendesign/button/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ad4db8f068b84568642b64a13383a711c830fa23
--- /dev/null
+++ b/opendesign/button/index.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue';
+import Button from './src/button';
+
+Button.install = function (app: App) {
+ app.component(Button.name, Button);
+};
+
+export { Button };
diff --git a/opendesign/button/src/button-types.ts b/opendesign/button/src/button-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4deb21d56ab96f6b5a472b8f481531085fd7ed7f
--- /dev/null
+++ b/opendesign/button/src/button-types.ts
@@ -0,0 +1,37 @@
+import { ExtractDefaultPropTypes, PropType } from 'vue';
+import { SizeType } from '../../_utils/common';
+
+type ButtonType = 'outline' | 'primary' | 'secondary' | 'text';
+// TODO:status颜色规范待补充
+// type ButtonStatus = 'normal' | 'success' | 'warning' | 'danger';
+type ButtonStatus = 'normal';
+type ButtonNativeType = 'button' | 'submit' | 'reset';
+
+export const buttonProps = {
+ size: {
+ type: String as PropType,
+ default: 'medium',
+ },
+ type: {
+ type: String as PropType,
+ default: 'outline',
+ },
+ status: {
+ type: String as PropType,
+ default: 'nomral',
+ },
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+ animation: {
+ type: Boolean,
+ default: false,
+ },
+ nativeType: {
+ type: String as PropType,
+ default: 'button',
+ },
+};
+
+export type ButtonProps = ExtractDefaultPropTypes;
diff --git a/opendesign/button/src/button.scss b/opendesign/button/src/button.scss
new file mode 100644
index 0000000000000000000000000000000000000000..2eb0a2e8f47ff8f181f2567c7ee72e48a8e99f81
--- /dev/null
+++ b/opendesign/button/src/button.scss
@@ -0,0 +1,187 @@
+@import './var.scss';
+
+.o-button {
+ display: inline-flex;
+ align-items: center;
+ padding: var(--o-button-padding);
+ font-size: var(--o-button-font-size);
+ line-height: var(--o-button-line-height);
+ color: var(--o-button-font-color);
+ background-color: var(--o-button-bg-color);
+ border: var(--o-button-border);
+ outline: none;
+ user-select: none;
+ cursor: pointer;
+
+ &.with-prefix {
+ padding-left: var(--o-button-icon-paddding);
+ }
+
+ &.with-suffix {
+ padding-right: var(--o-button-icon-paddding);
+ }
+
+ &.is-disabled {
+ cursor: not-allowed;
+ }
+
+ &:hover {
+ @media screen and (min-width: 1100px) {
+ color: var(--o-button-font-color_hover);
+ border: var(--o-button-border_hover);
+ background-color: var(--o-button-bg-color_hover);
+ }
+ }
+ &:active {
+ @media screen and (min-width: 1100px) {
+ color: var(--o-button-font-color_active);
+ background-color: var(--o-button-bg-color_active);
+ border: var(--o-button-border_active);
+ }
+ }
+ &.is-disabled {
+ color: var(--o-button-font-color_disabled);
+ border: var(--o-button-border_disabled);
+ background-color: var(--o-button-bg-color_disabled);
+ }
+
+ //primary
+ &.o-button-type-primary {
+ color: var(--o-button-font-color-primary);
+ border: var(--o-button-border-primary);
+ background-color: var(--o-button-bg-color-primary);
+
+ &:hover {
+ @media screen and (min-width: 1100px) {
+ border: var(--o-button-border-primary_hover);
+ background-color: var(--o-button-bg-color-primary_hover);
+ }
+ }
+ &:active {
+ @media screen and (min-width: 1100px) {
+ border: var(--o-button-border-primary_active);
+ background-color: var(--o-button-bg-color-primary_active);
+ }
+ }
+ }
+ &.o-button-type-primary.is-disabled {
+ color: var(--o-button-font-color-primary_disabled);
+ border: var(--o-button-border-primary_disabled);
+ background-color: var(--o-button-bg-color-primary_disabled);
+ }
+
+ // secondary
+ &.o-button-type-secondary {
+ color: var(--o-button-font-color-secondary);
+ border: var(--o-button-border-secondary);
+ background-color: var(--o-button-bg-color-secondary);
+ &:hover {
+ border: var(--o-button-border-secondary_hover);
+ background-color: var(--o-button-bg-color-secondary_hover);
+ }
+ &:active {
+ border: var(--o-button-border-secondary_active);
+ background-color: var(--o-button-bg-color-secondary_active);
+ }
+ }
+ &.o-button-type-secondary.is-disabled {
+ color: var(--o-button-font-color-secondary_disabled);
+ border: var(--o-button-border-secondary_disabled);
+ background-color: var(--o-button-bg-color-secondary_disabled);
+ }
+
+ // text
+ &.o-button-type-text {
+ color: var(--o-button-font-color-text);
+ border: var(--o-button-border-text);
+ background-color: var(--o-button-bg-color-text);
+ &:hover {
+ // border: var(--o-button-border-text_hover);
+ // background-color: var(--o-button-bg-color-text_hover);
+ }
+ &:active {
+ // border: var(--o-button-border-text_active);
+ // background-color: var(--o-button-bg-color-text_active);
+ }
+ }
+ &.o-button-type-text.is-disabled {
+ color: var(--o-button-font-color-text_disabled);
+ border: var(--o-button-border-text_disabled);
+ background-color: var(--o-button-bg-color-text_disabled);
+ }
+
+ .prefix-icon {
+ display: inline-flex;
+ align-items: center;
+ margin-right: var(--o-button-icon-margin);
+ font-size: var(--o-button-icon-font-size);
+ transition: all 0.2s linear;
+ }
+
+ .suffix-icon {
+ display: inline-flex;
+ align-items: center;
+ margin-left: var(--o-button-icon-margin);
+ font-size: var(--o-button-icon-font-size);
+ transition: all 0.2s linear;
+ }
+
+ &.animation:hover .prefix-icon {
+ @media screen and (min-width: 1100px) {
+ transform: translate(-4px);
+ }
+ }
+
+ &.animation:hover .suffix-icon {
+ @media screen and (min-width: 1100px) {
+ transform: translate(4px);
+ }
+ }
+
+ &.o-button-size-small {
+ padding: var(--o-button-padding-small);
+ font-size: var(--o-button-font-size-small);
+ line-height: var(--o-button-line-height-small);
+ &.with-prefix {
+ padding-left: var(--o-button-icon-paddding-small);
+ }
+
+ &.with-suffix {
+ padding-right: var(--o-button-icon-paddding-small);
+ }
+
+ .prefix-icon {
+ margin-right: var(--o-button-icon-margin-small);
+ font-size: var(--o-button-icon-font-size-small);
+ }
+
+ .suffix-icon {
+ margin-left: var(--o-button-icon-margin-small);
+ font-size: var(--o-button-icon-font-size-small);
+ }
+ }
+
+ &.o-button-size-mini {
+ padding: var(--o-button-padding-mini);
+ font-size: var(--o-button-font-size-mini);
+ line-height: var(--o-button-line-height-mini);
+
+ &.with-prefix {
+ padding-left: var(--o-button-icon-paddding-mini);
+ }
+
+ &.with-suffix {
+ padding-right: var(--o-button-icon-paddding-mini);
+ }
+
+ .prefix-icon {
+ margin-right: var(--o-button-icon-margin-mini);
+ font-size: var(--o-button-icon-font-size-mini);
+ }
+
+ .suffix-icon {
+ margin-left: var(--o-button-icon-margin-mini);
+ font-size: var(--o-button-icon-font-size-mini);
+ }
+ }
+}
diff --git a/opendesign/button/src/button.tsx b/opendesign/button/src/button.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..116b113634e9c4d8da7aa149b1f0b4d0ebc15705
--- /dev/null
+++ b/opendesign/button/src/button.tsx
@@ -0,0 +1,46 @@
+import { computed, defineComponent, toRefs } from 'vue';
+import { buttonProps, ButtonProps } from './button-types';
+import './button.scss';
+
+export default defineComponent({
+ name: 'OButton',
+ props: buttonProps,
+ emits: ['click'],
+ setup(props: ButtonProps, { emit, slots }) {
+ const { size, type, status, disabled, animation, nativeType } =
+ toRefs(props);
+
+ const classNames = computed(() => ({
+ 'o-button': true,
+ [`o-button-size-${size.value}`]: true,
+ [`o-button-type-${type.value}`]: true,
+ [`o-button-status-${status.value}`]: true,
+ 'with-prefix': slots.prefixIcon,
+ 'with-suffix': slots.suffix,
+ animation: animation.value,
+ 'is-disabled': disabled.value,
+ }));
+
+ const onClick = (e: MouseEvent) => {
+ emit('click', e);
+ };
+
+ return () => {
+ return (
+
+ );
+ };
+ },
+});
diff --git a/opendesign/button/src/var.scss b/opendesign/button/src/var.scss
new file mode 100644
index 0000000000000000000000000000000000000000..9c992381b2140ac8c1877b1eeb82848c85ec684f
--- /dev/null
+++ b/opendesign/button/src/var.scss
@@ -0,0 +1,90 @@
+.o-button {
+ // 文字颜色
+ --o-button-font-color: var(--o-color-brand1);
+ --o-button-font-color-primary: var(--o-color-text2);
+ --o-button-font-color-secondary: var(--o-color-text1);
+ --o-button-font-color-text: var(--o-color-text1);
+ // 文字颜色 hover态,注:只有类型为outline的按钮hover时有文字颜色变化
+ --o-button-font-color_hover: var(--o-color-brand2);
+ // 文字颜色 avtive态,注:只有类型为outline的按钮active时有文字颜色变化
+ --o-button-font-color_active: var(--o-color-brand3);
+ // 文字颜色 disabled态
+ --o-button-font-color_disabled: var(--o-color-brand5);
+ --o-button-font-color-primary_disabled: var(--o-color-text2);
+ --o-button-font-color-secondary_disabled: var(--o-color-text1);
+ --o-button-font-color-text_disabled: var(--o-color-text5);
+
+ // 背景颜色
+ --o-button-bg-color: var(--o-color-transparent);
+ --o-button-bg-color-primary: var(--o-color-brand1);
+ --o-button-bg-color-secondary: var(--o-color-secondary);
+ --o-button-bg-color-text: var(--o-color-transparent);
+ // 背景颜色 hover态
+ --o-button-bg-color_hover: var(--o-color-transparent);
+ --o-button-bg-color-primary_hover: var(--o-color-brand2);
+ --o-button-bg-color-secondary_hover: var(--o-color-secondary_hover);
+ --o-button-bg-color-text_hover: var(--o-color-secondary_hover);
+ // 背景颜色 active态
+ --o-button-bg-color_active: var(--o-color-transparent);
+ --o-button-bg-color-primary_active: var(--o-color-brand3);
+ --o-button-bg-color-secondary_active: var(--o-color-secondary_active);
+ --o-button-bg-color-text_active: var(--o-color-secondary_active);
+ // 背景颜色 disabled态
+ --o-button-bg-color_disabled: var(--o-color-transparent);
+ --o-button-bg-color-primary_disabled: var(--o-color-brand5);
+ --o-button-bg-color-secondary_disabled: var(--o-color-secondary_disabled);
+ --o-button-bg-color-text_disabled: var(--o-color-secondary_disabled);
+
+ // border
+ --o-button-border: 1px solid var(--o-color-brand1);
+ --o-button-border-primary: 1px solid var(--o-color-brand1);
+ --o-button-border-secondary: 1px solid var(--o-color-secondary);
+ --o-button-border-text: 1px solid var(--o-color-transparent);
+ // border hover态
+ --o-button-border_hover: 1px solid var(--o-color-brand2);
+ --o-button-border-primary_hover: 1px solid var(--o-color-brand2);
+ --o-button-border-secondary_hover: 1px solid var(--o-color-secondary_hover);
+ --o-button-border-text_hover: 1px solid var(--o-color-secondary_hover);
+ // border active态
+ --o-button-border_active: 1px solid var(--o-color-brand3);
+ --o-button-border-primary_active: 1px solid var(--o-color-brand3);
+ --o-button-border-secondary_active: 1px solid var(--o-color-secondary_active);
+ --o-button-border-text_active: 1px solid var(--o-color-secondary_active);
+ // border disabled态
+ --o-button-border_disabled: 1px solid var(--o-color-brand5);
+ --o-button-border-primary_disabled: 1px solid var(--o-color-brand5);
+ --o-button-border-secondary_disabled: 1px solid
+ var(--o-color-secondary_disabled);
+ --o-button-border-text_disabled: 1px solid var(--o-color-transparent);
+
+ // font-size
+ --o-button-font-size: var(--o-font-size-h8);
+ --o-button-font-size-small: var(--o-font-size-text);
+ --o-button-font-size-mini: var(--o-font-size-tip);
+
+ // line-height
+ --o-button-line-height: var(--o-line-height-h8);
+ --o-button-line-height-small: var(--o-line-height-text);
+ --o-button-line-height-mini: var(--o-line-height-tip);
+
+ // padding
+ --o-button-padding: 11px 28px;
+ --o-button-padding-small: 9px 28px;
+ --o-button-padding-mini: 6px 16px;
+
+ // icon margin
+ --o-button-icon-margin: 8px;
+ --o-button-icon-margin-small: 8px;
+ --o-button-icon-margin-mini: 4px;
+ // icon font-size
+ --o-button-icon-font-size: var(--o-font-size-h5);
+ --o-button-icon-font-size-small: var(--o-font-size-h8);
+ --o-button-icon-font-size-mini: var(--o-font-size-tip);
+ // icon padding
+ --o-button-icon-paddding: 20px;
+ --o-button-icon-paddding-small: 14px;
+ --o-button-icon-paddding-mini: 6x;
+
+ // animation
+ -o-button-transition: color 0.2s, background-color 0.3s, border 0.3s;
+}
diff --git a/opendesign/card/OCard.vue b/opendesign/card/OCard.vue
new file mode 100644
index 0000000000000000000000000000000000000000..83c88dcca1efe8dbf9dd80ba2ec2ea43775771b1
--- /dev/null
+++ b/opendesign/card/OCard.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/card/index.ts b/opendesign/card/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7a07a1b9fd0d11195eeb2d749b5dbdf213440876
--- /dev/null
+++ b/opendesign/card/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Card from './OCard.vue';
+Card.install = function (app: App) {
+ app.component('OCard', Card);
+};
+
+export { Card };
diff --git a/opendesign/carousel/index.ts b/opendesign/carousel/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/opendesign/checkbox/index.ts b/opendesign/checkbox/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4992370144fecef6c5fa2847d94461481990b747
--- /dev/null
+++ b/opendesign/checkbox/index.ts
@@ -0,0 +1,13 @@
+import type { App } from 'vue';
+import Checkbox from './src/checkbox';
+import CheckboxGroup from './src/checkbox-group';
+
+Checkbox.install = function (app: App) {
+ app.component(Checkbox.name, Checkbox);
+};
+
+CheckboxGroup.install = function (app: App) {
+ app.component(CheckboxGroup.name, CheckboxGroup);
+};
+
+export { Checkbox, CheckboxGroup };
diff --git a/opendesign/checkbox/src/checkbox-group-types.ts b/opendesign/checkbox/src/checkbox-group-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..608fe1a1a2767c66c863bc97c830c922ddc9093a
--- /dev/null
+++ b/opendesign/checkbox/src/checkbox-group-types.ts
@@ -0,0 +1,28 @@
+import { ExtractDefaultPropTypes, InjectionKey, PropType, Ref } from 'vue';
+
+export const checkboxGroupProps = {
+ // 双向绑定值
+ modelValue: {
+ type: Array as PropType>,
+ default: null,
+ },
+ // 是否禁用
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+};
+
+export type CheckboxGroupProps = ExtractDefaultPropTypes<
+ typeof checkboxGroupProps
+>;
+
+interface CheckboxGroupInjection {
+ modelValue: Ref>;
+ disabled: Ref;
+ // eslint-disable-next-line no-unused-vars
+ onChange: (val: Array) => void;
+}
+
+export const checkboxGroupKey: InjectionKey =
+ Symbol('OCheckboxGroup');
diff --git a/opendesign/checkbox/src/checkbox-group.scss b/opendesign/checkbox/src/checkbox-group.scss
new file mode 100644
index 0000000000000000000000000000000000000000..4b7bd0f3a9a6216085936106622224228a5ae96c
--- /dev/null
+++ b/opendesign/checkbox/src/checkbox-group.scss
@@ -0,0 +1,7 @@
+.o-checkbox-group {
+ display: flex;
+ align-items: center;
+ .o-checkbox + .o-checkbox {
+ margin-left: 24px;
+ }
+}
diff --git a/opendesign/checkbox/src/checkbox-group.tsx b/opendesign/checkbox/src/checkbox-group.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..62bd5f34c7e8c1fd0892d453ff421e05c2e9272c
--- /dev/null
+++ b/opendesign/checkbox/src/checkbox-group.tsx
@@ -0,0 +1,28 @@
+import { defineComponent, provide, toRefs } from 'vue';
+import {
+ checkboxGroupKey,
+ checkboxGroupProps,
+ CheckboxGroupProps,
+} from './checkbox-group-types';
+import './checkbox-group.scss';
+
+export default defineComponent({
+ name: 'OCheckboxGroup',
+ props: checkboxGroupProps,
+ emits: ['update:modelValue', 'change'],
+ setup(props: CheckboxGroupProps, { emit, slots }) {
+ const { modelValue, disabled } = toRefs(props);
+
+ const onChange = (val: Array) => {
+ emit('update:modelValue', val);
+ emit('change', val);
+ };
+
+ // 注入
+ provide(checkboxGroupKey, { modelValue, disabled, onChange });
+
+ return () => {
+ return {slots.default?.()}
;
+ };
+ },
+});
diff --git a/opendesign/checkbox/src/checkbox-types.ts b/opendesign/checkbox/src/checkbox-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..695189bfef4606477520997412e00d09f461d7a3
--- /dev/null
+++ b/opendesign/checkbox/src/checkbox-types.ts
@@ -0,0 +1,27 @@
+import { ExtractDefaultPropTypes, PropType } from 'vue';
+
+export const checkboxProps = {
+ // 双向绑定值
+ modelValue: {
+ type: [String, Number, Boolean] as PropType,
+ default: null,
+ },
+ // value
+ value: {
+ type: [String, Number, Boolean] as PropType,
+ required: true,
+ default: null,
+ },
+ // 是否禁用
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+ // name
+ name: {
+ type: String,
+ default: '',
+ },
+};
+
+export type CheckboxProps = ExtractDefaultPropTypes;
diff --git a/opendesign/checkbox/src/checkbox.scss b/opendesign/checkbox/src/checkbox.scss
new file mode 100644
index 0000000000000000000000000000000000000000..14a203783aa79cd4213619e11b213e755c99b6fe
--- /dev/null
+++ b/opendesign/checkbox/src/checkbox.scss
@@ -0,0 +1,38 @@
+.o-checkbox {
+ display: inline-flex;
+ align-items: center;
+ position: relative;
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-line-height-text);
+ cursor: pointer;
+
+ input[type='checkbox'] {
+ position: absolute;
+ outline: none;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ opacity: 0;
+ }
+
+ &-icon {
+ width: 16px;
+ height: 16px;
+ border: 1px solid var(--o-color-division1);
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+ color: var(--o-color-white);
+ }
+
+ &-label {
+ margin-left: 8px;
+ }
+ &.o-checkbox-checked {
+ .o-checkbox-icon {
+ background-color: var(--o-color-brand1);
+ }
+ }
+}
diff --git a/opendesign/checkbox/src/checkbox.tsx b/opendesign/checkbox/src/checkbox.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..9b69eb1277b6fc54e9aafb98e95a604ebf9dfeec
--- /dev/null
+++ b/opendesign/checkbox/src/checkbox.tsx
@@ -0,0 +1,102 @@
+import { computed, defineComponent, inject } from 'vue';
+import { checkboxGroupKey } from './checkbox-group-types';
+import { checkboxProps, CheckboxProps } from './checkbox-types';
+import './checkbox.scss';
+
+export default defineComponent({
+ name: 'OCheckbox',
+ props: checkboxProps,
+ emits: ['update:modelValue', 'change'],
+ setup(props: CheckboxProps, { emit, slots }) {
+ const checkboxGroupInjection = inject(checkboxGroupKey, null);
+
+ // 是否禁用
+ const isDisabled = computed(
+ () => checkboxGroupInjection?.disabled.value || props.disabled
+ );
+
+ // 是否选中
+ const isChecked = computed(() =>
+ checkboxGroupInjection
+ ? checkboxGroupInjection.modelValue.value.includes(props.value)
+ : props.value === props.modelValue
+ );
+
+ const onClick = (e: Event) => {
+ e.stopPropagation();
+ };
+
+ const onChange = (e: Event) => {
+ if (isDisabled.value) {
+ return;
+ }
+ const { checked } = e.target as HTMLInputElement;
+ let newValue;
+ if (checkboxGroupInjection) {
+ newValue = [...checkboxGroupInjection.modelValue.value];
+ if (checked) {
+ newValue.push(props.value);
+ } else {
+ newValue = newValue.filter((item) => item !== props.value);
+ }
+
+ checkboxGroupInjection?.onChange(newValue);
+ } else {
+ newValue = props.value;
+ }
+
+ emit('update:modelValue', newValue);
+ emit('change', newValue);
+ };
+
+ const getContent = () => {
+ if (slots.checkbox) {
+ return slots.checkbox({
+ checked: isChecked.value,
+ disabled: isDisabled.value,
+ });
+ } else {
+ return (
+ <>
+
+ {isChecked.value ? (
+
+ ) : (
+ ''
+ )}
+
+ {slots.default?.()}
+ >
+ );
+ }
+ };
+
+ return () => {
+ return (
+
+ );
+ };
+ },
+});
diff --git a/opendesign/collapse/OCollapse.vue b/opendesign/collapse/OCollapse.vue
new file mode 100644
index 0000000000000000000000000000000000000000..43a600b64531a4e71b2681faf673eb63dd43a0c4
--- /dev/null
+++ b/opendesign/collapse/OCollapse.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/collapse/OCollapseItem.vue b/opendesign/collapse/OCollapseItem.vue
new file mode 100644
index 0000000000000000000000000000000000000000..263ccfb9f56c1180f47afa5e21e9804198e2e147
--- /dev/null
+++ b/opendesign/collapse/OCollapseItem.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/collapse/index.ts b/opendesign/collapse/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bccdd918fa0140c17ef82682a304a76609fd0d86
--- /dev/null
+++ b/opendesign/collapse/index.ts
@@ -0,0 +1,10 @@
+import type { App } from 'vue';
+import Collapse from './OCollapse.vue';
+import CollapseItem from './OCollapseItem.vue';
+Collapse.install = function (app: App) {
+ app.component('OCollapse', Collapse);
+};
+CollapseItem.install = function (app: App) {
+ app.component('OCollapseItem', CollapseItem);
+};
+export { Collapse, CollapseItem };
diff --git a/opendesign/container/index.ts b/opendesign/container/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d4355f5bb927b2d5a7e4876fa4a269fbf588386c
--- /dev/null
+++ b/opendesign/container/index.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue';
+import Container from './src/container';
+
+Container.install = function (app: App) {
+ app.component(Container.name, Container);
+};
+
+export { Container };
diff --git a/opendesign/container/src/container-types.ts b/opendesign/container/src/container-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8f97141fc197f1c928d5a6d1b58718687b7740ad
--- /dev/null
+++ b/opendesign/container/src/container-types.ts
@@ -0,0 +1,18 @@
+import { ExtractDefaultPropTypes, PropType } from 'vue';
+
+type ContainerLevelIndex = 1 | 2 | 3 | 4 | 5;
+
+export const containerProps = {
+ // 层级
+ levelIndex: {
+ type: Number as PropType,
+ default: 2,
+ },
+ // 是否有阴影
+ shadow: {
+ type: Boolean,
+ default: true,
+ },
+};
+
+export type ContainerProps = ExtractDefaultPropTypes;
diff --git a/opendesign/container/src/container.scss b/opendesign/container/src/container.scss
new file mode 100644
index 0000000000000000000000000000000000000000..b6a8bcd5b799118e7dd23f0d819701aa82340694
--- /dev/null
+++ b/opendesign/container/src/container.scss
@@ -0,0 +1,31 @@
+@import './var.scss';
+
+.o-container {
+ &-level1 {
+ background-color: var(--o-container-bg-color-level1);
+ box-shadow: var(--o-container-shadow-level1);
+ }
+ &-level2 {
+ background-color: var(--o-container-bg-color-level2);
+ box-shadow: var(--o-container-shadow-level2);
+
+ &:hover {
+ @media screen and (min-width: 1100px) {
+ background-color: var(--o-container-bg-color-level2_hover);
+ box-shadow: var(--o-container-shadow-level2_hover);
+ }
+ }
+ }
+ &-level3 {
+ background-color: var(--o-container-bg-color-level3);
+ box-shadow: var(--o-container-shadow-level3);
+ }
+ &-level4 {
+ background-color: var(--o-container-bg-color-level4);
+ box-shadow: var(--o-container-shadow-level4);
+ }
+ &-level5 {
+ background-color: var(--o-container-bg-color-level5);
+ box-shadow: var(--o-container-shadow-level5);
+ }
+}
diff --git a/opendesign/container/src/container.tsx b/opendesign/container/src/container.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..bba10b223678837551901d25f69d31ec30072250
--- /dev/null
+++ b/opendesign/container/src/container.tsx
@@ -0,0 +1,17 @@
+import { defineComponent } from 'vue';
+import { containerProps, ContainerProps } from './container-types';
+import './container.scss';
+
+export default defineComponent({
+ name: 'OContainer',
+ props: containerProps,
+ setup(props: ContainerProps, { slots }) {
+ return () => {
+ return (
+
+ {slots.default?.()}
+
+ );
+ };
+ },
+});
diff --git a/opendesign/container/src/var.scss b/opendesign/container/src/var.scss
new file mode 100644
index 0000000000000000000000000000000000000000..31dbca79815de4a00b062fbca1b45ca25f48d1de
--- /dev/null
+++ b/opendesign/container/src/var.scss
@@ -0,0 +1,17 @@
+.o-container {
+ // 背景颜色
+ --o-container-bg-color-level1: var(--o-color-fill1);
+ --o-container-bg-color-level2: var(--o-color-fill2);
+ --o-container-bg-color-level2_hover: var(--o-color-fill2_hover);
+ --o-container-bg-color-level3: var(--o-color-fill3);
+ --o-container-bg-color-level4: var(--o-color-fill4);
+ --o-container-bg-color-level5: var(--o-color-fill5);
+
+ // 阴影
+ --o-container-shadow-level1: var(--o-shadow-l1);
+ --o-container-shadow-level2: var(--o-shadow-l2);
+ --o-container-shadow-level2_hover: var(--o-shadow-l2_hover);
+ --o-container-shadow-level3: var(--o-shadow-l3);
+ --o-container-shadow-level4: var(--o-shadow-l4);
+ --o-container-shadow-level5: var(--o-shadow-l5);
+}
diff --git a/opendesign/dialog/ODialog.vue b/opendesign/dialog/ODialog.vue
new file mode 100644
index 0000000000000000000000000000000000000000..dddf0341f5b3d5396c1bfa84a2f2698fc546b6e5
--- /dev/null
+++ b/opendesign/dialog/ODialog.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/dialog/index.ts b/opendesign/dialog/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f573583fc0122bd3939ef0309b6720dc6a48df07
--- /dev/null
+++ b/opendesign/dialog/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Dialog from './ODialog.vue';
+
+Dialog.install = function (app: App) {
+ app.component('ODialog', Dialog);
+};
+export { Dialog };
diff --git a/opendesign/drawer/ODrawer.vue b/opendesign/drawer/ODrawer.vue
new file mode 100644
index 0000000000000000000000000000000000000000..136ac5366bb6244e623b59c546f34b7a4c7fcc6d
--- /dev/null
+++ b/opendesign/drawer/ODrawer.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/drawer/index.ts b/opendesign/drawer/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fb09bdd38c8219163740cfbdbaa79a22e9bfdea1
--- /dev/null
+++ b/opendesign/drawer/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Drawer from './ODrawer.vue';
+
+Drawer.install = function (app: App) {
+ app.component('ODrawer', Drawer);
+};
+export { Drawer };
diff --git a/opendesign/dropdown/ODropdown.vue b/opendesign/dropdown/ODropdown.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ed9f557b043488ed973fdae5392879e132571f3e
--- /dev/null
+++ b/opendesign/dropdown/ODropdown.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/dropdown/ODropdownitem.vue b/opendesign/dropdown/ODropdownitem.vue
new file mode 100644
index 0000000000000000000000000000000000000000..8423d3b6400f3772eb05423aae11a8df0b8b494d
--- /dev/null
+++ b/opendesign/dropdown/ODropdownitem.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/opendesign/dropdown/index.ts b/opendesign/dropdown/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0b8b4bbb665f60982fee6d399074a5ea4a2be44a
--- /dev/null
+++ b/opendesign/dropdown/index.ts
@@ -0,0 +1,12 @@
+import type { App } from 'vue';
+import Dropdown from './ODropdown.vue';
+import DropdownItem from './ODropdownitem.vue';
+
+Dropdown.install = function (app: App) {
+ app.component('ODropdown', Dropdown);
+};
+DropdownItem.install = function (app: App) {
+ app.component('ODropdownItem', DropdownItem);
+};
+
+export { Dropdown, DropdownItem };
diff --git a/opendesign/icon/OIcon.vue b/opendesign/icon/OIcon.vue
new file mode 100644
index 0000000000000000000000000000000000000000..5bd32fa69c458a290ecb9caff9f22750c50c1b9c
--- /dev/null
+++ b/opendesign/icon/OIcon.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
diff --git a/opendesign/icon/index.ts b/opendesign/icon/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d2a3f0c2325cb6b8c5baca1da6578ae7a42b69c9
--- /dev/null
+++ b/opendesign/icon/index.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue';
+import Icon from './OIcon.vue';
+
+Icon.install = function (app: App) {
+ app.component('OIcon', Icon);
+};
+
+export { Icon };
diff --git a/opendesign/index.ts b/opendesign/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..97e655d7a8bab37de4852b25e08f74a3b5f38684
--- /dev/null
+++ b/opendesign/index.ts
@@ -0,0 +1,61 @@
+import type { App } from 'vue';
+
+import './style/variable.scss';
+
+import { Button } from './button';
+import { Radio, RadioGroup } from './radio';
+import { Checkbox, CheckboxGroup } from './checkbox';
+import { Select } from './select';
+
+import { Icon } from './icon';
+import { Card } from './card';
+import { Tag } from './tag';
+import { Tabs, TabPane } from './tabs';
+import { Input } from './input';
+import { Tree } from './tree';
+import { Pagination } from './pagination';
+import { Table, TableColumn } from './table';
+import { Timeline } from './timeline';
+import { Search } from './search';
+import { Drawer } from './drawer';
+import { Switch } from './switch';
+import { Collapse, CollapseItem } from './collapse';
+import { Container } from './container';
+import { Dialog } from './dialog';
+import { Dropdown, DropdownItem } from './dropdown';
+
+const components = [
+ Button,
+ Radio,
+ RadioGroup,
+ Checkbox,
+ CheckboxGroup,
+ Select,
+ Icon,
+ Card,
+ Pagination,
+ Table,
+ TableColumn,
+ Tag,
+ Timeline,
+ Input,
+ Tabs,
+ TabPane,
+ Tree,
+ Search,
+ Drawer,
+ Switch,
+ Collapse,
+ CollapseItem,
+ Container,
+ Dropdown,
+ DropdownItem,
+ Dialog,
+];
+export default {
+ install(app: App): void {
+ components.forEach((component) => {
+ app.use(component as any);
+ });
+ },
+};
diff --git a/opendesign/input/OInput.vue b/opendesign/input/OInput.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c29c5008e728f3f1bf93cd24a132c4f3ac279e22
--- /dev/null
+++ b/opendesign/input/OInput.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/input/index.ts b/opendesign/input/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..dd41787e6411b793c7f66027debd46dfbca4f176
--- /dev/null
+++ b/opendesign/input/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Input from './OInput.vue';
+Input.install = function (app: App) {
+ app.component('OInput', Input);
+};
+
+export { Input };
diff --git a/opendesign/package.json b/opendesign/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..5af3bcac5080f4114a47404383e7b2bbac900180
--- /dev/null
+++ b/opendesign/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "opendesign",
+ "version": "0.0.1",
+ "description": "opendesign components",
+ "main": "index.ts",
+ "dependencies": {
+ "vue": "^3.2.33"
+ }
+}
diff --git a/opendesign/pagination/OPagination.vue b/opendesign/pagination/OPagination.vue
new file mode 100644
index 0000000000000000000000000000000000000000..f4b79221d4bc5c287fb92dbfa3dfa34b343bbc26
--- /dev/null
+++ b/opendesign/pagination/OPagination.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
diff --git a/opendesign/pagination/index.ts b/opendesign/pagination/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e90ec8c79f477d5476368dfdd28472d9ac9a6f40
--- /dev/null
+++ b/opendesign/pagination/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Pagination from './OPagination.vue';
+Pagination.install = function (app: App) {
+ app.component('OPagination', Pagination);
+};
+
+export { Pagination };
\ No newline at end of file
diff --git a/opendesign/radio/index.ts b/opendesign/radio/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..35f2f2c39d18d1d370c791ab5ce9055c3c017c93
--- /dev/null
+++ b/opendesign/radio/index.ts
@@ -0,0 +1,13 @@
+import type { App } from 'vue';
+import Radio from './src/radio';
+import RadioGroup from './src/radio-group';
+
+Radio.install = function (app: App) {
+ app.component(Radio.name, Radio);
+};
+
+RadioGroup.install = function (app: App) {
+ app.component(RadioGroup.name, RadioGroup);
+};
+
+export { Radio, RadioGroup };
diff --git a/opendesign/radio/src/radio-group-types.ts b/opendesign/radio/src/radio-group-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2085a688c9130a9a143ed6b24625343bf30ce240
--- /dev/null
+++ b/opendesign/radio/src/radio-group-types.ts
@@ -0,0 +1,26 @@
+import { ExtractDefaultPropTypes, InjectionKey, PropType, Ref } from 'vue';
+
+export const radioGroupProps = {
+ // 双向绑定值
+ modelValue: {
+ type: [String, Number, Boolean] as PropType,
+ default: null,
+ },
+ // 是否禁用
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+};
+
+export type RadioGroupProps = ExtractDefaultPropTypes;
+
+interface RadioGroupInjection {
+ modelValue: Ref;
+ disabled: Ref;
+ // eslint-disable-next-line no-unused-vars
+ onChange: (val: string | number | boolean) => void;
+}
+
+export const radioGroupKey: InjectionKey =
+ Symbol('ORadioGroup');
diff --git a/opendesign/radio/src/radio-group.scss b/opendesign/radio/src/radio-group.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e74b34fd7bee7e63a40f04727770f22bc6cf060e
--- /dev/null
+++ b/opendesign/radio/src/radio-group.scss
@@ -0,0 +1,7 @@
+.o-radio-group {
+ display: flex;
+ align-items: center;
+ .o-radio + .o-radio {
+ margin-left: 24px;
+ }
+}
diff --git a/opendesign/radio/src/radio-group.tsx b/opendesign/radio/src/radio-group.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..1dd0aa01dae6980a1b007733740f2f7ecdeff3ab
--- /dev/null
+++ b/opendesign/radio/src/radio-group.tsx
@@ -0,0 +1,28 @@
+import { defineComponent, provide, toRefs } from 'vue';
+import {
+ radioGroupKey,
+ radioGroupProps,
+ RadioGroupProps,
+} from './radio-group-types';
+import './radio-group.scss';
+
+export default defineComponent({
+ name: 'ORadioGroup',
+ props: radioGroupProps,
+ emits: ['update:modelValue', 'change'],
+ setup(props: RadioGroupProps, { emit, slots }) {
+ const { modelValue, disabled } = toRefs(props);
+
+ const onChange = (val: string | number | boolean) => {
+ emit('update:modelValue', val);
+ emit('change', val);
+ };
+
+ // 注入
+ provide(radioGroupKey, { modelValue, disabled, onChange });
+
+ return () => {
+ return {slots.default?.()}
;
+ };
+ },
+});
diff --git a/opendesign/radio/src/radio-types.ts b/opendesign/radio/src/radio-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..19920b69c053ac7e6a75110e68645fbca05ad49f
--- /dev/null
+++ b/opendesign/radio/src/radio-types.ts
@@ -0,0 +1,22 @@
+import { ExtractDefaultPropTypes, PropType } from 'vue';
+
+export const radioProps = {
+ // 双向绑定值
+ modelValue: {
+ type: [String, Number, Boolean] as PropType,
+ default: null,
+ },
+ // value
+ value: {
+ type: [String, Number, Boolean] as PropType,
+ required: true,
+ default: null,
+ },
+ // 是否禁用
+ disabled: {
+ type: Boolean,
+ default: false,
+ },
+};
+
+export type RadioProps = ExtractDefaultPropTypes;
diff --git a/opendesign/radio/src/radio.scss b/opendesign/radio/src/radio.scss
new file mode 100644
index 0000000000000000000000000000000000000000..d3eed8fd2c18e5e08d87b6624111778e75c78dc3
--- /dev/null
+++ b/opendesign/radio/src/radio.scss
@@ -0,0 +1,54 @@
+.o-radio {
+ display: inline-flex;
+ align-items: center;
+ position: relative;
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-line-height-text);
+ cursor: pointer;
+
+ input[type='radio'] {
+ position: absolute;
+ outline: none;
+ z-index: -1;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ opacity: 0;
+ }
+
+ &-icon {
+ position: relative;
+ display: inline-block;
+ border-radius: 50%;
+ width: 18px;
+ height: 18px;
+ background: #fff;
+ border: 1px solid #979797;
+
+ &::after {
+ content: '';
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ width: 12px;
+ height: 12px;
+ border-radius: 50%;
+ background-color: transparent;
+ transition: background-color 0.3s;
+ }
+ }
+
+ &-label {
+ margin-left: 8px;
+ }
+
+ &.o-radio-checked {
+ .o-radio-icon {
+ &::after {
+ background-color: var(--o-color-brand1);
+ }
+ }
+ }
+}
diff --git a/opendesign/radio/src/radio.tsx b/opendesign/radio/src/radio.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e07ce020023bdbfcde5e2d8dcac3668d5a62970b
--- /dev/null
+++ b/opendesign/radio/src/radio.tsx
@@ -0,0 +1,73 @@
+import { computed, defineComponent, inject } from 'vue';
+import { radioGroupKey } from './radio-group-types';
+import { radioProps, RadioProps } from './radio-types';
+import './radio.scss';
+
+export default defineComponent({
+ name: 'ORadio',
+ props: radioProps,
+ emits: ['update:modelValue', 'change'],
+ setup(props: RadioProps, { emit, slots }) {
+ const radioGroupInjection = inject(radioGroupKey, null);
+
+ // 是否禁用
+ const isDisabled = computed(
+ () => radioGroupInjection?.disabled.value || props.disabled
+ );
+
+ // 是否选中
+ const isChecked = computed(
+ () =>
+ props.value ===
+ (radioGroupInjection
+ ? radioGroupInjection.modelValue.value
+ : props.modelValue)
+ );
+
+ const onClick = (e: Event) => {
+ e.stopPropagation();
+ };
+
+ const onChange = () => {
+ if (isDisabled.value) {
+ return;
+ }
+
+ const val = props.value;
+ radioGroupInjection?.onChange(val);
+ emit('update:modelValue', val);
+ emit('change', val);
+ };
+
+ const getContent = () => {
+ if (slots.radio) {
+ return slots.radio({
+ checked: isChecked.value,
+ disabled: isDisabled.value,
+ });
+ } else {
+ return (
+ <>
+
+ {slots.default?.()}
+ >
+ );
+ }
+ };
+
+ return () => {
+ return (
+
+ );
+ };
+ },
+});
diff --git a/opendesign/radio/src/var.scss b/opendesign/radio/src/var.scss
new file mode 100644
index 0000000000000000000000000000000000000000..ad6c1046b63d1d3cb21daac846fbbd871beaeda2
--- /dev/null
+++ b/opendesign/radio/src/var.scss
@@ -0,0 +1,6 @@
+.o-radio {
+ --o-radio-font-size: var(--o-font-size-text);
+ --o-radio-line-height: var(--o-line-height-text);
+ --o-radio-icon-width: 18px;
+ --o-radio-icon-height: 18px;
+}
diff --git a/opendesign/search/OSearch.vue b/opendesign/search/OSearch.vue
new file mode 100644
index 0000000000000000000000000000000000000000..731ba446571802ab728816c5ba9240780ae01da3
--- /dev/null
+++ b/opendesign/search/OSearch.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/search/index.ts b/opendesign/search/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..119d1b73829ff42461c004d8be0511131a52d25c
--- /dev/null
+++ b/opendesign/search/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Search from './OSearch.vue';
+Search.install = function (app: App) {
+ app.component('OSearch', Search);
+};
+
+export { Search };
diff --git a/opendesign/select/OOption.vue b/opendesign/select/OOption.vue
new file mode 100644
index 0000000000000000000000000000000000000000..96d713b16b74cf2a70710a22bde165db4793965a
--- /dev/null
+++ b/opendesign/select/OOption.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
diff --git a/opendesign/select/OSelect.vue b/opendesign/select/OSelect.vue
new file mode 100644
index 0000000000000000000000000000000000000000..1a313ff707972f8cb037306a5a8ac7902cb36fce
--- /dev/null
+++ b/opendesign/select/OSelect.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/select/index.ts b/opendesign/select/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..55fc044d0cd9a92e169690cee892dcc2cf0501d5
--- /dev/null
+++ b/opendesign/select/index.ts
@@ -0,0 +1,11 @@
+import type { App } from 'vue';
+import Select from './OSelect.vue';
+// import Option from './OOption.vue';
+Select.install = function (app: App) {
+ app.component('OSelect', Select);
+};
+// Option.install = function (app: App) {
+// app.component('OOption', Option);
+// };
+
+export { Select };
diff --git a/opendesign/select/src/select-types.ts b/opendesign/select/src/select-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..307d3a420830bca3e15f031b479b05d741fd9f57
--- /dev/null
+++ b/opendesign/select/src/select-types.ts
@@ -0,0 +1,10 @@
+import { ExtractDefaultPropTypes, PropType } from 'vue';
+
+export const selectProps = {
+ // 双向绑定值
+ modelValue: {
+ type: [String, Number, Boolean] as PropType,
+ },
+};
+
+export type SelectProps = ExtractDefaultPropTypes;
diff --git a/opendesign/select/src/select.tsx b/opendesign/select/src/select.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..5cb2ef63445e4ab9d0b043965b45d64e54fb5054
--- /dev/null
+++ b/opendesign/select/src/select.tsx
@@ -0,0 +1,16 @@
+// import { defineComponent } from 'vue';
+// import { selectProps } from './select-types';
+
+// export default defineComponent({
+// name: 'OSelect',
+// props: selectProps,
+// setup() {
+// return () => {
+// return (
+//
+//
+//
+// );
+// };
+// },
+// });
diff --git a/opendesign/style/_animation.scss b/opendesign/style/_animation.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/opendesign/style/_color.scss b/opendesign/style/_color.scss
new file mode 100644
index 0000000000000000000000000000000000000000..2d7e2d3ffcafd505abee7ca3c7ce278ccadbadc4
--- /dev/null
+++ b/opendesign/style/_color.scss
@@ -0,0 +1,167 @@
+// 颜色
+:root {
+ /**
+ * 基础色盘
+ */
+
+ // 交通紫
+ --o-color-trafficpurple1: #2d0a60;
+ --o-color-trafficpurple2: #420f8e;
+ --o-color-trafficpurple3: #5813bc;
+ --o-color-trafficpurple4: #6e1be8;
+ --o-color-trafficpurple5: #7d32ea;
+ --o-color-trafficpurple6: #ba3ff7;
+ --o-color-trafficpurple7: #a358ff;
+ --o-color-trafficpurple8: #bd72ff;
+ --o-color-trafficpurple9: #d68bff;
+ --o-color-trafficpurple10: #e1abff;
+
+ // 中性色
+ --o-color-neutral1: #121212;
+ --o-color-neutral2: #151515;
+ --o-color-neutral3: #2d2d2d;
+ --o-color-neutral4: #3f3f3f;
+ --o-color-neutral5: #555555;
+ --o-color-neutral6: #707070;
+ --o-color-neutral7: #848484;
+ --o-color-neutral8: #999999;
+ --o-color-neutral9: #b2b2b2;
+ --o-color-neutral10: #cccccc;
+ --o-color-neutral11: #e5e5e5;
+
+ // 红色
+ --o-color-red1: #850d09;
+ --o-color-red2: #b4110c;
+ --o-color-red3: #e4160f;
+ --o-color-red4: #f13b35;
+ --o-color-red5: #f3524d;
+ --o-color-red6: #ff5f5a;
+ --o-color-red7: #ff7873;
+ --o-color-red8: #ff928d;
+ --o-color-red9: #ffaba6;
+ --o-color-red10: #fabab8;
+
+ // 黄色
+ --o-color-yellow1: #754c01;
+ --o-color-yellow2: #a86d01;
+ --o-color-yellow3: #dabe01;
+ --o-color-yellow4: #feaa11;
+ --o-color-yellow5: #feb32a;
+ --o-color-yellow6: #ffc037;
+ --o-color-yellow7: #ffd950;
+ --o-color-yellow8: #fff36a;
+ --o-color-yellow9: #ffff83;
+ --o-color-yellow10: #ffe1aa;
+
+ // 绿色
+ --o-color-green1: #1f370f;
+ --o-color-green2: #355f1a;
+ --o-color-green3: #4b8725;
+ --o-color-green4: #62af30;
+ --o-color-green5: #6dc335;
+ --o-color-green6: #7ad042;
+ --o-color-green7: #93e95b;
+ --o-color-green8: #adff75;
+ --o-color-green9: #c6ff8e;
+ --o-color-green10: #c5e7ae;
+
+ // 橙色
+ --o-color-orange1: #9b370e;
+ --o-color-orange2: #b54f00;
+ --o-color-orange3: #e86600;
+ --o-color-orange4: #ff801c;
+ --o-color-orange5: #ff8e36;
+ --o-color-orange6: #ff9b43;
+ --o-color-orange7: #ffb45c;
+ --o-color-orange8: #ffce76;
+ --o-color-orange9: #ffcf8f;
+ --o-color-orange10: #ffd2af;
+
+ // 灰蓝色
+ --o-color-greyblue1: #e5e8f0;
+ --o-color-greyblue2: #f7f8fa;
+ --o-color-greyblue3: #f5f6f8;
+
+ // 灰黑色
+ --o-color-greyblack1: #1e1e1e;
+ --o-color-greyblack2: #242424;
+ --o-color-greyblack3: #2e2e2e;
+ --o-color-greyblack4: #383838;
+
+ // 白色
+ --o-color-white: #ffffff;
+
+ // 黑色
+ --o-color-black: #000000;
+
+ // 透明
+ --o-color-transparent: transparent;
+
+ /**
+ * 状态颜色 && 功能颜色
+ */
+
+ // 成功色
+ --o-color-success1: var(--o-color-green5); // normal
+ --o-color-success2: var(--o-color-green7); // hover
+ --o-color-success3: var(--o-color-green10); // disabled
+
+ // 告警色
+ --o-color-warning1: var(--o-color-orange5); // normal
+ --o-color-warning2: var(--o-color-orange7); // hover
+ --o-color-warning3: var(--o-color-orange10); // disabled
+
+ // 错误色
+ --o-color-error1: var(--o-color-red5); // normal
+ --o-color-error2: var(--o-color-red7); // hover
+ --o-color-error3: var(--o-color-red10); // disabled
+
+ // 品牌色
+ --o-color-brand1: var(--o-color-trafficpurple5); // 常规、文字
+ --o-color-brand2: var(--o-color-trafficpurple8); // 悬浮
+ --o-color-brand3: var(--o-color-trafficpurple4); // 确认
+ --o-color-brand4: var(--o-color-trafficpurple6); // 特殊场景
+ --o-color-brand5: var(--o-color-trafficpurple10); // 一般禁用
+ --o-color-brand6: var(--o-color-trafficpurple10); // 文字禁用,暂和一般禁用保持一致
+
+ // 文字颜色
+ --o-color-text1: var(--o-color-black); // 强调/正文标题 黑色
+ --o-color-text2: var(--o-color-white); // 强调/正文标题 白色
+ --o-color-text3: var(--o-color-neutral4); // 次强调/正文标题
+ --o-color-text4: var(--o-color-neutral6); // 次要信息/正文
+ --o-color-text5: var(--o-color-neutral11); // 置灰信息
+ --o-color-text-secondary: var(--o-color-neutral5); // 次级文字颜色
+
+ // 背景色
+ --o-color-bg1: var(--o-color-greyblue3); // 整体背景色
+ --o-color-bg2: var(--o-color-white); // 一级容器背景色
+ --o-color-bg3: var(--o-color-greyblue2); // 二级容器背景色
+ --o-color-bg4: var(--o-color-greyblue1); // 三级容器背景色
+ --o-color-bg5: var(--o-color-white); // 弹出框、tooltip背景色
+ --o-color-bg6: rgba(0, 0, 0, 0.5); // 蒙层
+ --o-color-bg-secondary: var(--o-color-neutral11); // 次级颜色背景颜色
+
+ // 链接色
+ --o-color-link1: var(--o-color-trafficpurple5); // 常规
+ --o-color-link2: var(--o-color-trafficpurple8); // 悬浮
+ --o-color-link3: var(--o-color-trafficpurple4); // 点击
+ --o-color-link4: var(--o-color-trafficpurple6); // 特殊场景
+ --o-color-link5: var(--o-color-trafficpurple10); // 一般禁用
+ --o-color-link6: var(--o-color-trafficpurple10); // 文字禁用,暂和一般禁用保持一致
+
+ // 边框颜色
+ --o-color-border1: var(--o-color-neutral6);
+ --o-color-border2: var(--o-color-neutral11);
+ --o-color-border3: var(--o-color-trafficpurple5);
+
+ // 分割线颜色
+ --o-color-division1: var(--o-color-neutral11);
+
+ // 填充色,用于阴影容器背景
+ --o-color-fill1: var(--o-color-white); // SL1 一级投影容器背景,应用于默认状态的卡片、楼层、导航栏、组件里局部投影背景等
+ --o-color-fill2: var(--o-color-white); // SL2 二级投影容器背景,应用于卡片、组件里局部投影等
+ --o-color-fill2_hover: var(--o-color-white); // SL2-hover 升起投影容器背景,应用于悬停状态的卡片等,是SL2的激活态
+ --o-color-fill3: var(--o-color-white); // SL3 三级投影容器背景,应用于一级投影上的卡片、组件等
+ --o-color-fill4: var(--o-color-white); // SL4 覆盖阴影容器背景,应用于信息提示【tips、活动进入按钮等】等投影容器
+ --o-color-fill5: var(--o-color-white); // SL5 弹出阴影容器背景,应用于模态弹窗投影
+}
diff --git a/opendesign/style/_font.scss b/opendesign/style/_font.scss
new file mode 100644
index 0000000000000000000000000000000000000000..56116fef4f7959919bfd44ce074a6761428aaa17
--- /dev/null
+++ b/opendesign/style/_font.scss
@@ -0,0 +1,26 @@
+// 字体
+:root {
+ // 字体font-size
+ --o-font-size-h1: 64px;
+ --o-font-size-h2: 54px;
+ --o-font-size-h3: 36px;
+ --o-font-size-h4: 28px;
+ --o-font-size-h5: 24px;
+ --o-font-size-h6: 20px;
+ --o-font-size-h7: 18px;
+ --o-font-size-h8: 16px;
+ --o-font-size-text: 14px;
+ --o-font-size-tip: 12px;
+
+ // 字体line-height
+ --o-line-height-h1: 84px;
+ --o-line-height-h2: 76px;
+ --o-line-height-h3: 48px;
+ --o-line-height-h4: 36px;
+ --o-line-height-h5: 32px;
+ --o-line-height-h6: 28px;
+ --o-line-height-h7: 26px;
+ --o-line-height-h8: 24px;
+ --o-line-height-text: 22px;
+ --o-line-height-tip: 18px;
+}
diff --git a/opendesign/style/_shadow.scss b/opendesign/style/_shadow.scss
new file mode 100644
index 0000000000000000000000000000000000000000..78dcd8d96a0a483060378c3cdb1dd4e6b7e80178
--- /dev/null
+++ b/opendesign/style/_shadow.scss
@@ -0,0 +1,9 @@
+// 阴影,注:SL2有hover投影
+:root {
+ --o-shadow-l1: 0 1px 5px rgba(45, 47, 51, 0.1); // SL1 一级投影,应用于楼层、导航栏、组件里局部投影等,
+ --o-shadow-l2: 0 1px 5px rgba(45, 47, 51, 0.1); // SL2-normal 二级投影,应用于卡片、组件里局部投影等
+ --o-shadow-l2_hover: 0 6px 18px rgba(0, 47, 167, 0.14); // SL2-hover 升起投影,应用于悬停状态的卡片等,是SL2的激活态
+ --o-shadow-l3: 0 6px 18px rgba(45, 47, 51, 0.14); // SL3 三级投影,应用于一级投影上的卡片、组件等
+ --o-shadow-l4: 0 10px 32px rgba(45, 47, 51, 0.18); // SL4 覆盖阴影,应用于信息提示【tips、活动进入按钮等】等投影
+ --o-shadow-l5: 0 12px 42px rgba(45, 47, 51, 0.24); // SL5 弹出阴影,应用于模态弹窗投影
+}
diff --git a/opendesign/style/_spacing.scss b/opendesign/style/_spacing.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e3dcd5bfbe1370420420c90af1683fed7df3393f
--- /dev/null
+++ b/opendesign/style/_spacing.scss
@@ -0,0 +1,13 @@
+// 间距
+:root {
+ --o-spacing-h1: 64px;
+ --o-spacing-h2: 40px;
+ --o-spacing-h3: 32px;
+ --o-spacing-h4: 24px;
+ --o-spacing-h5: 16px;
+ --o-spacing-h6: 12px;
+ --o-spacing-h7: 10px;
+ --o-spacing-h8: 8px;
+ --o-spacing-h9: 6px;
+ --o-spacing-h10: 4px;
+}
diff --git a/opendesign/style/variable.scss b/opendesign/style/variable.scss
new file mode 100644
index 0000000000000000000000000000000000000000..c7242722c856dd379092fd4ea79825a664a01b7b
--- /dev/null
+++ b/opendesign/style/variable.scss
@@ -0,0 +1,4 @@
+@import './_color.scss';
+@import './_shadow.scss';
+@import './_font.scss';
+@import './_spacing.scss';
diff --git a/opendesign/switch/OSwitch.vue b/opendesign/switch/OSwitch.vue
new file mode 100644
index 0000000000000000000000000000000000000000..ee3fea99196e7d7be3225a32b5c73f3300d82eae
--- /dev/null
+++ b/opendesign/switch/OSwitch.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/opendesign/switch/index.ts b/opendesign/switch/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ae6cb44779dfc31495ed2a6a23b8401c850c0ba5
--- /dev/null
+++ b/opendesign/switch/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Switch from './OSwitch.vue';
+Switch.install = function (app: App) {
+ app.component('OSwitch', Switch);
+};
+
+export { Switch };
diff --git a/opendesign/table/OTable.vue b/opendesign/table/OTable.vue
new file mode 100644
index 0000000000000000000000000000000000000000..8978f0ab639cffa213e93f60c6ac9dee3706f123
--- /dev/null
+++ b/opendesign/table/OTable.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/table/OTableColumn.vue b/opendesign/table/OTableColumn.vue
new file mode 100644
index 0000000000000000000000000000000000000000..982cabee1cd304c63253fc7d8908819392987141
--- /dev/null
+++ b/opendesign/table/OTableColumn.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/opendesign/table/index.ts b/opendesign/table/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..839f04b1bd57afaf223481e118399e5550ac776b
--- /dev/null
+++ b/opendesign/table/index.ts
@@ -0,0 +1,10 @@
+import type { App } from 'vue';
+import Table from './OTable.vue';
+import TableColumn from './OTableColumn.vue';
+Table.install = function (app: App) {
+ app.component('OTable', Table);
+};
+TableColumn.install = function (app: App) {
+ app.component('OTableColumn', TableColumn);
+};
+export { Table, TableColumn };
diff --git a/opendesign/tabs/OTabPane.vue b/opendesign/tabs/OTabPane.vue
new file mode 100644
index 0000000000000000000000000000000000000000..074a678f34065aefb95d502397de207d15573f8c
--- /dev/null
+++ b/opendesign/tabs/OTabPane.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
diff --git a/opendesign/tabs/OTabs.vue b/opendesign/tabs/OTabs.vue
new file mode 100644
index 0000000000000000000000000000000000000000..512563e966a82be5291cac6f858b727dab6896c5
--- /dev/null
+++ b/opendesign/tabs/OTabs.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
diff --git a/opendesign/tabs/index.ts b/opendesign/tabs/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7de648bb126b2b9658563f34bd70e83ec1cee1b3
--- /dev/null
+++ b/opendesign/tabs/index.ts
@@ -0,0 +1,11 @@
+import type { App } from 'vue';
+import Tabs from './OTabs.vue';
+import TabPane from './OTabPane.vue';
+Tabs.install = function (app: App) {
+ app.component('OTabs', Tabs);
+};
+TabPane.install = function (app: App) {
+ app.component('OTabPane', TabPane);
+};
+
+export { Tabs, TabPane };
diff --git a/opendesign/tag/index.ts b/opendesign/tag/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e966d8fb2abb17c6023d1db8a44c72661ea8ee9f
--- /dev/null
+++ b/opendesign/tag/index.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue';
+import Tag from './src/tag';
+
+Tag.install = function (app: App) {
+ app.component(Tag.name, Tag);
+};
+
+export { Tag };
diff --git a/opendesign/tag/src/tag-types.ts b/opendesign/tag/src/tag-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..e2021f6f60945b4f1906039941d84fc8080ff07c
--- /dev/null
+++ b/opendesign/tag/src/tag-types.ts
@@ -0,0 +1,25 @@
+import { ExtractDefaultPropTypes, PropType } from 'vue';
+import { SizeType } from '../../_utils/common';
+
+type TagType = 'outline' | 'primary' | 'secondary' | 'text';
+
+export const tagProps = {
+ size: {
+ type: String as PropType,
+ default: 'medium',
+ },
+ type: {
+ type: String as PropType,
+ default: 'outline',
+ },
+ checked: {
+ type: Boolean,
+ default: false,
+ },
+ checkable: {
+ type: Boolean,
+ default: false,
+ },
+};
+
+export type TagProps = ExtractDefaultPropTypes;
diff --git a/opendesign/tag/src/tag.scss b/opendesign/tag/src/tag.scss
new file mode 100644
index 0000000000000000000000000000000000000000..546986dd9c6fe77be6fb1166dba3313b77fd0bd1
--- /dev/null
+++ b/opendesign/tag/src/tag.scss
@@ -0,0 +1,99 @@
+@import './var.scss';
+
+.o-tag {
+ padding: var(--o-tag-padding);
+ font-size: var(--o-tag-font-size);
+ line-height: var(--o-tag-line-height);
+ color: var(--o-tag-font-color);
+ border: var(--o-tag-border);
+ outline: none;
+ user-select: none;
+ cursor: default;
+ display: inline-block;
+
+ &:active {
+ @media screen and (min-width: 1100px) {
+ color: var(--o-tag-font-color_active);
+ border: var(--o-tag-font-color_active);
+ }
+ }
+
+ &.o-tag-type-primary {
+ color: var(--o-tag-font-color-primary);
+ border: var(--o-tag-border-primary);
+ &:hover {
+ @media screen and (min-width: 1100px) {
+ color: var(--o-color-brand2);
+ border: var(--o-tag-border-primary_hover);
+ }
+ }
+ &.o-tag-checked {
+ position: relative;
+ .checked-icon {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ width: 16px;
+ height: 16px;
+ &::after {
+ border: 8px solid transparent;
+ border-right: 8px solid var(--o-color-brand1);
+ border-bottom: 8px solid var(--o-color-brand1);
+ content: '';
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ bottom: -1px;
+ right: -1px;
+ display: block;
+ z-index: 1;
+ }
+ svg {
+ width: 9px;
+ height: 9px;
+ color: #fff;
+ display: block;
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ z-index: 2;
+ }
+ }
+ }
+ }
+ &.o-tag-checkable {
+ cursor: pointer;
+ }
+ &.o-tag-type-secondary {
+ color: var(--o-tag-font-color-secondary);
+ border: var(--o-tag-border-secondary);
+ line-height: var(--o-tag-small-line-height);
+ padding: var(--o-tag-secondary-padding);
+ background: var(--o-tag-bg-color-secondary);
+ }
+
+ &.o-tag-type-text {
+ color: var(--o-tag-font-color);
+ border: var(--o-tag-border-text);
+ background: none;
+ &:hover,
+ &:active {
+ @media screen and (min-width: 1100px) {
+ color: var(--o-tag-font-color_hover);
+ }
+ }
+ }
+ &.o-tag-size-small {
+ padding: var(--o-tag-small-padding);
+ font-size: var(--o-tag-small-font-size);
+ line-height: var(--o-tag-small-line-height);
+
+ &:hover,
+ &:active {
+ @media screen and (min-width: 1100px) {
+ color: var(--o-tag-font-color);
+ border: var(--o-tag-border);
+ }
+ }
+ }
+}
diff --git a/opendesign/tag/src/tag.tsx b/opendesign/tag/src/tag.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..6db151cea83381480c91733899186a40144ae0b8
--- /dev/null
+++ b/opendesign/tag/src/tag.tsx
@@ -0,0 +1,50 @@
+import { computed, defineComponent, toRefs } from 'vue';
+import { tagProps, TagProps } from './tag-types';
+import './tag.scss';
+
+export default defineComponent({
+ name: 'OTag',
+ props: tagProps,
+ emits: ['click'],
+ setup(props: TagProps, { emit, slots }) {
+ const { size, type, checked, checkable } = toRefs(props);
+
+ const classNames = computed(() => {
+ return {
+ 'o-tag': true,
+ [`o-tag-size-${size.value}`]: true,
+ [`o-tag-type-${type.value}`]: true,
+ 'o-tag-checked': checked.value,
+ 'o-tag-checkable': checkable.value,
+ };
+ });
+
+ const onClick = (e: MouseEvent) => {
+ emit('click', e);
+ };
+
+ return () => {
+ return (
+
+ {slots.default?.()}
+ {checked.value && type.value === 'primary' && (
+
+
+
+ )}
+
+ );
+ };
+ },
+});
diff --git a/opendesign/tag/src/var.scss b/opendesign/tag/src/var.scss
new file mode 100644
index 0000000000000000000000000000000000000000..0facd39668816325ecad9a94095041c16531f3fd
--- /dev/null
+++ b/opendesign/tag/src/var.scss
@@ -0,0 +1,49 @@
+.o-tag {
+ // 文字颜色
+ --o-tag-font-color: var(--o-color-text4);
+ --o-tag-font-color-primary: var(--o-color-brand1);
+ --o-tag-font-color-secondary: var(--o-color-text3);
+ // 文字颜色 hover态,注:只有类型为outline的按钮hover时有文字颜色变化
+ --o-tag-font-color_hover: var(--o-color-brand2);
+ // 文字颜色 avtive态,注:只有类型为outline的按钮active时有文字颜色变化
+ --o-tag-font-color_active: var(--o-color-brand3);
+
+ // 背景颜色
+ --o-tag-bg-color: var(--o-color-transparent);
+ --o-tag-bg-color-primary: var(--o-color-brand1);
+ --o-tag-bg-color-secondary: var(--o-color-secondary);
+ --o-tag-bg-color-text: var(--o-color-transparent);
+
+ // 背景颜色 hover态
+ --o-tag-bg-color_hover: var(--o-color-transparent);
+ --o-tag-bg-color-primary_hover: var(--o-color-brand2);
+
+ // 背景颜色 active态
+ --o-tag-bg-color_active: var(--o-color-transparent);
+ --o-tag-bg-color-primary_active: var(--o-color-brand3);
+
+ // border
+ --o-tag-border: 1px solid var(--o-color-border1);
+ --o-tag-border-primary: 1px solid var(--o-color-brand1);
+ --o-tag-border-secondary: 1px solid var(--o-color-transparent);
+ --o-tag-border-text: 1px solid var(--o-color-transparent);
+ // border hover态
+ --o-tag-border_hover: 1px solid var(--o-color-brand2);
+ --o-tag-border-primary_hover: 1px solid var(--o-color-brand2);
+
+ // font-size
+ --o-tag-font-size: var(--o-font-size-text);
+ --o-tag-small-font-size: var(--o-font-size-tip);
+
+ // line-height
+ --o-tag-line-height: var(--o-line-height-text);
+ --o-tag-small-line-height: var(--o-line-height-tip);
+
+ // padding
+ --o-tag-padding: 3px 12px;
+ --o-tag-small-padding: 0 8px;
+ --o-tag-secondary-padding: 2px 4px;
+
+ // 特殊背景
+ --o-tag-bg-color-secondary: linear-gradient(225deg, #feb32a 0%, #f6d365 100%);
+}
diff --git a/opendesign/timeline/index.ts b/opendesign/timeline/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..742ea80cb05308becec353ddc8f0c7b2620f0a68
--- /dev/null
+++ b/opendesign/timeline/index.ts
@@ -0,0 +1,8 @@
+import type { App } from 'vue';
+import Timeline from './src/timeline';
+
+Timeline.install = function (app: App) {
+ app.component(Timeline.name, Timeline);
+};
+
+export { Timeline };
diff --git a/opendesign/timeline/src/timeline-types.ts b/opendesign/timeline/src/timeline-types.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b400ff1b3d2fb9cb8e83fcbb4681e4d0faa6ed6
--- /dev/null
+++ b/opendesign/timeline/src/timeline-types.ts
@@ -0,0 +1,18 @@
+import { ExtractDefaultPropTypes } from 'vue';
+
+export const timelineProps = {
+ leftArrow: {
+ type: Boolean,
+ default: true,
+ },
+ rightArrow: {
+ type: Boolean,
+ default: true,
+ },
+ modelValue: {
+ type: String,
+ default: '',
+ },
+};
+
+export type TimelineProps = ExtractDefaultPropTypes;
diff --git a/opendesign/timeline/src/timeline.scss b/opendesign/timeline/src/timeline.scss
new file mode 100644
index 0000000000000000000000000000000000000000..f019985ed2f7e4d7b26b7940891fc44b67fab095
--- /dev/null
+++ b/opendesign/timeline/src/timeline.scss
@@ -0,0 +1,73 @@
+@import './var.scss';
+.o-timeline {
+ position: relative;
+
+ &-list {
+ display: flex;
+ justify-content: space-evenly;
+ position: relative;
+
+ &::after {
+ width: 100%;
+ height: 2px;
+ background-color: var(--o-timeline-background-color);
+ content: '';
+ display: block;
+ position: absolute;
+ top: 43px;
+ z-index: 2;
+ }
+ }
+
+ &-item {
+ position: relative;
+ z-index: 3;
+ list-style: none;
+ text-align: center;
+ cursor: pointer;
+ }
+
+ &-day {
+ font-size: var(--o-timeline-font-size);
+ color: var(--o-timeline-font-color);
+ line-height: var(--o-timeline-line-height);
+ margin-bottom: var(--o-timeline-spacing-word);
+ transition: var(--o-timeline-transition);
+ }
+ &-icon {
+ cursor: pointer;
+ width: var(--o-timeline-font-size-icon);
+ height: var(--o-timeline-font-size-icon);
+ color: var(--o-timeline-font-color);
+ display: inline-block;
+ background-color: var(--o-timeline-background-icon);
+ transition: var(--o-timeline-transition);
+ }
+ .active {
+ .o-timeline-day {
+ color: var(--o-timeline-font-color-active);
+ }
+ .o-timeline-icon {
+ color: var(--o-timeline-font-color-active);
+ }
+ }
+
+ &-left-arrow {
+ cursor: pointer;
+ position: absolute;
+ top: 28px;
+ left: -10px;
+ z-index: 4;
+ color: var(--o-timeline-background-color);
+ font-size: var(--o-timeline-font-size-icon);
+ }
+ &-right-arrow {
+ cursor: pointer;
+ position: absolute;
+ top: 28px;
+ right: -10px;
+ z-index: 4;
+ color: var(--o-timeline-background-color);
+ font-size: var(--o-timeline-font-size-icon);
+ }
+}
diff --git a/opendesign/timeline/src/timeline.tsx b/opendesign/timeline/src/timeline.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..3ae8313e751faf3223bf506770d42b177e2d814a
--- /dev/null
+++ b/opendesign/timeline/src/timeline.tsx
@@ -0,0 +1,148 @@
+import { defineComponent, ref, Ref, toRefs, onMounted } from 'vue';
+import { timelineProps, TimelineProps } from './timeline-types';
+import IconLeft from '~icons/app/icon-chevron-left.svg';
+import IconRight from '~icons/app/icon-chevron-right';
+import IconChecked from '~icons/app/icon-checked.svg';
+import IconUnchecked from '~icons/app/icon-unchecked.svg';
+import './timeline.scss';
+
+export default defineComponent({
+ name: 'OTimeline',
+ props: timelineProps,
+ emits: ['update:modelValue'],
+ setup(props: TimelineProps, { emit }) {
+ const { leftArrow, rightArrow, modelValue } = toRefs(props);
+ // 六月
+ const SPLITEMONTH = 6;
+ // 时间线列表
+ const timeList: Ref = ref([]);
+ // 命中的tab
+ const activeTab = ref(5);
+ // 最左与最右阈值
+ const leftThreshold: string = '2020-10';
+ const rightThreshold: Ref = ref('');
+ // 时间线列表赋值
+ const changeDate = (year: number, month: number): Array => {
+ const result: Array = [];
+ if (month >= SPLITEMONTH) {
+ for (let i = 0; i < 6; i++) {
+ result.push(
+ year +
+ '-' +
+ (month - (6 - i - 1) >= 10
+ ? month - (6 - i - 1)
+ : '0' + (month - (6 - i - 1)))
+ );
+ }
+ } else {
+ // last year
+ for (let i = 1; i <= 6 - month; i++) {
+ result.push(
+ year -
+ 1 +
+ '-' +
+ (6 + i + month >= 10 ? 6 + i + month : '0' + (6 + i + month))
+ );
+ }
+ // this year
+ for (let i = 1; i < month + 1; i++) {
+ result.push(year + '-0' + i);
+ }
+ }
+ return result;
+ };
+ // 初始化时间线列表赋值
+ const initDate = () => {
+ const modelDate = !isNaN(new Date(modelValue.value).getTime())
+ ? new Date(modelValue.value)
+ : new Date();
+ const modelYear = modelDate.getFullYear();
+ const _modelYear =
+ modelDate.getFullYear() === 2020 ? 2021 : modelDate.getFullYear();
+ const modelMonth =
+ (modelYear === 2021 && modelDate.getMonth() + 1 < 3) ||
+ modelYear === 2020
+ ? 3
+ : modelDate.getMonth() + 1;
+ const year = new Date().getFullYear();
+ const month = new Date().getMonth() + 1;
+ rightThreshold.value = year + '-' + (month >= 10 ? month : '0' + month);
+ timeList.value = changeDate(_modelYear, modelMonth);
+ emit('update:modelValue', timeList.value[activeTab.value]);
+ };
+ // 点击时间线tab
+ const useClickTab = (index: number): void => {
+ activeTab.value = index;
+ emit('update:modelValue', timeList.value[activeTab.value]);
+ };
+ // 点击左侧按钮
+ const useClickLeft = () => {
+ const date = new Date(timeList.value[4]);
+ const year = date.getFullYear();
+ const month = date.getMonth() + 1;
+ timeList.value = changeDate(year, month);
+ emit('update:modelValue', timeList.value[activeTab.value]);
+ };
+ // 点击右侧按钮
+ const useClickRight = () => {
+ const date = new Date(timeList.value[5]);
+ const year = date.getFullYear();
+ const month = date.getMonth() + 2;
+ timeList.value =
+ month <= 12 ? changeDate(year, month) : changeDate(year + 1, 1);
+ emit('update:modelValue', timeList.value[activeTab.value]);
+ };
+
+ onMounted(() => {
+ initDate();
+ });
+
+ return () => {
+ return (
+
+ {leftArrow &&
+ leftArrow.value &&
+ timeList.value[0] !== leftThreshold ? (
+
useClickLeft()}
+ class="o-timeline-left-arrow"
+ >
+ ) : (
+ ''
+ )}
+
+ {timeList &&
+ timeList.value.map((item, index) => {
+ return (
+ - useClickTab(index)}
+ >
+
{item}
+ {index === activeTab.value ? (
+
+ ) : (
+
+ )}
+
+ );
+ })}
+
+ {rightArrow &&
+ rightArrow.value &&
+ timeList.value[5] !== rightThreshold.value ? (
+
useClickRight()}
+ >
+ ) : (
+ ''
+ )}
+
+ );
+ };
+ },
+});
diff --git a/opendesign/timeline/src/var.scss b/opendesign/timeline/src/var.scss
new file mode 100644
index 0000000000000000000000000000000000000000..d75006df4825ce6892bb5aa8419ca235ab600340
--- /dev/null
+++ b/opendesign/timeline/src/var.scss
@@ -0,0 +1,22 @@
+.o-timeline {
+ // 背景颜色
+ --o-timeline-background-color: var(--o-color-neutral11);
+ --o-timeline-background-icon: var(--o-color-bg1);
+
+ // 文字颜色
+ --o-timeline-font-color-active: var(--o-color-brand1);
+ --o-timeline-font-color: var(--o-color-text4);
+
+ // font-size
+ --o-timeline-font-size: var(--o-font-size-h6);
+ --o-timeline-font-size-icon: var(--o-font-size-h5);
+
+ // line-height
+ --o-timeline-line-height: var(--o-line-height-h6);
+
+ // 动画
+ --o-timeline-transition: all 0.2s;
+
+ // 间距
+ --o-timeline-spacing-word: var(--o-spacing-h10);
+}
diff --git a/opendesign/tree/OTree.vue b/opendesign/tree/OTree.vue
new file mode 100644
index 0000000000000000000000000000000000000000..31034f608442509deb1417f05732ae69bcc29abe
--- /dev/null
+++ b/opendesign/tree/OTree.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/opendesign/tree/index.ts b/opendesign/tree/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f1d3c7569f3b75656f38940f2e78e727d20750b7
--- /dev/null
+++ b/opendesign/tree/index.ts
@@ -0,0 +1,7 @@
+import type { App } from 'vue';
+import Tree from './OTree.vue';
+Tree.install = function (app: App) {
+ app.component('OTree', Tree);
+};
+
+export { Tree };
diff --git a/package.json b/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..00a702d301f050ba73893899d7b149d7946a4981
--- /dev/null
+++ b/package.json
@@ -0,0 +1,52 @@
+{
+ "name": "quick-issue",
+ "version": "0.0.1",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vue-tsc --noEmit && vite build",
+ "preview": "vite preview",
+ "lint": "eslint \"src/**/*.{js,ts,vue,jsx,tsx}\"",
+ "fix": "eslint --fix \"src/**/*.{js,ts,vue,jsx,tsx}\"",
+ "lint:components": "eslint \"opendesign/**/*.{js,ts,vue,jsx,tsx}\"",
+ "prepare": "husky install"
+ },
+ "dependencies": {
+ "@amap/amap-jsapi-loader": "^1.0.1",
+ "@kangc/v-md-editor": "^2.3.15",
+ "axios": "^1.4.0",
+ "crypto-js": "^4.1.1",
+ "element-plus": "^2.3.5",
+ "js-base64": "^3.7.5",
+ "lodash-es": "^4.17.21",
+ "opendesign": "link:opendesign",
+ "pinia": "^2.1.3",
+ "prismjs": "^1.29.0",
+ "vue": "^3.3.4",
+ "vue-i18n": "^9.2.2",
+ "vue-router": "^4.2.1",
+ "vue3-slide-verify": "^1.1.4"
+ },
+ "devDependencies": {
+ "@types/lodash-es": "^4.17.7",
+ "@types/node": "^18.16.14",
+ "@types/prismjs": "^1.26.0",
+ "@vitejs/plugin-vue": "^3.2.0",
+ "@vitejs/plugin-vue-jsx": "^2.1.1",
+ "@vue/eslint-config-prettier": "^7.1.0",
+ "@vue/eslint-config-typescript": "^11.0.3",
+ "eslint": "^8.41.0",
+ "eslint-plugin-vue": "^9.13.0",
+ "husky": "^8.0.3",
+ "lint-staged": "^13.2.2",
+ "prettier": "^2.8.8",
+ "sass": "^1.62.1",
+ "typescript": "^4.9.5",
+ "unplugin-auto-import": "^0.11.5",
+ "unplugin-element-plus": "^0.4.1",
+ "unplugin-icons": "^0.14.15",
+ "unplugin-vue-components": "^0.22.12",
+ "vite": "^3.2.6",
+ "vue-tsc": "^0.40.13"
+ }
+}
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bc3a32d9c5e25d16fd8f0733b4272ea47971c7c2
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,4880 @@
+lockfileVersion: 5.4
+
+specifiers:
+ '@amap/amap-jsapi-loader': ^1.0.1
+ '@kangc/v-md-editor': ^2.3.15
+ '@types/lodash-es': ^4.17.7
+ '@types/node': ^18.16.14
+ '@types/prismjs': ^1.26.0
+ '@vitejs/plugin-vue': ^3.2.0
+ '@vitejs/plugin-vue-jsx': ^2.1.1
+ '@vue/eslint-config-prettier': ^7.1.0
+ '@vue/eslint-config-typescript': ^11.0.3
+ axios: ^1.4.0
+ crypto-js: ^4.1.1
+ element-plus: ^2.3.5
+ eslint: ^8.41.0
+ eslint-plugin-vue: ^9.13.0
+ husky: ^8.0.3
+ js-base64: ^3.7.5
+ lint-staged: ^13.2.2
+ lodash-es: ^4.17.21
+ opendesign: link:opendesign
+ pinia: ^2.1.3
+ prettier: ^2.8.8
+ prismjs: ^1.29.0
+ sass: ^1.62.1
+ typescript: ^4.9.5
+ unplugin-auto-import: ^0.11.5
+ unplugin-element-plus: ^0.4.1
+ unplugin-icons: ^0.14.15
+ unplugin-vue-components: ^0.22.12
+ vite: ^3.2.6
+ vue: ^3.3.4
+ vue-i18n: ^9.2.2
+ vue-router: ^4.2.1
+ vue-tsc: ^0.40.13
+ vue3-slide-verify: ^1.1.4
+
+dependencies:
+ '@amap/amap-jsapi-loader': 1.0.1
+ '@kangc/v-md-editor': 2.3.15_vue@3.3.4
+ axios: 1.4.0
+ crypto-js: 4.1.1
+ element-plus: 2.3.5_vue@3.3.4
+ js-base64: 3.7.5
+ lodash-es: 4.17.21
+ opendesign: link:opendesign
+ pinia: 2.1.3_typescript@4.9.5+vue@3.3.4
+ prismjs: 1.29.0
+ vue: 3.3.4
+ vue-i18n: 9.2.2_vue@3.3.4
+ vue-router: 4.2.1_vue@3.3.4
+ vue3-slide-verify: 1.1.4
+
+devDependencies:
+ '@types/lodash-es': 4.17.7
+ '@types/node': 18.16.14
+ '@types/prismjs': 1.26.0
+ '@vitejs/plugin-vue': 3.2.0_vite@3.2.6+vue@3.3.4
+ '@vitejs/plugin-vue-jsx': 2.1.1_vite@3.2.6+vue@3.3.4
+ '@vue/eslint-config-prettier': 7.1.0_qokqbt3mojjgfarfkyl2cug5vu
+ '@vue/eslint-config-typescript': 11.0.3_bobqty5xbmhlsbxniqz7dnethy
+ eslint: 8.41.0
+ eslint-plugin-vue: 9.13.0_eslint@8.41.0
+ husky: 8.0.3
+ lint-staged: 13.2.2
+ prettier: 2.8.8
+ sass: 1.62.1
+ typescript: 4.9.5
+ unplugin-auto-import: 0.11.5
+ unplugin-element-plus: 0.4.1_vite@3.2.6
+ unplugin-icons: 0.14.15
+ unplugin-vue-components: 0.22.12_vue@3.3.4
+ vite: 3.2.6_3cl3pib2kx7jaftbqhg3ux7t34
+ vue-tsc: 0.40.13_typescript@4.9.5
+
+packages:
+
+ /@amap/amap-jsapi-loader/1.0.1:
+ resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==}
+ dev: false
+
+ /@ampproject/remapping/2.2.1:
+ resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.18
+ dev: true
+
+ /@antfu/install-pkg/0.1.1:
+ resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
+ dependencies:
+ execa: 5.1.1
+ find-up: 5.0.0
+ dev: true
+
+ /@antfu/utils/0.7.2:
+ resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==}
+ dev: true
+
+ /@babel/code-frame/7.21.4:
+ resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.18.6
+ dev: true
+
+ /@babel/compat-data/7.21.7:
+ resolution: {integrity: sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/core/7.21.8:
+ resolution: {integrity: sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@babel/code-frame': 7.21.4
+ '@babel/generator': 7.21.5
+ '@babel/helper-compilation-targets': 7.21.5_@babel+core@7.21.8
+ '@babel/helper-module-transforms': 7.21.5
+ '@babel/helpers': 7.21.5
+ '@babel/parser': 7.21.8
+ '@babel/template': 7.20.7
+ '@babel/traverse': 7.21.5
+ '@babel/types': 7.21.5
+ convert-source-map: 1.9.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/generator/7.21.5:
+ resolution: {integrity: sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.18
+ jsesc: 2.5.2
+ dev: true
+
+ /@babel/helper-annotate-as-pure/7.18.6:
+ resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-compilation-targets/7.21.5_@babel+core@7.21.8:
+ resolution: {integrity: sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/compat-data': 7.21.7
+ '@babel/core': 7.21.8
+ '@babel/helper-validator-option': 7.21.0
+ browserslist: 4.21.5
+ lru-cache: 5.1.1
+ semver: 6.3.0
+ dev: true
+
+ /@babel/helper-create-class-features-plugin/7.21.8_@babel+core@7.21.8:
+ resolution: {integrity: sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.21.8
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-environment-visitor': 7.21.5
+ '@babel/helper-function-name': 7.21.0
+ '@babel/helper-member-expression-to-functions': 7.21.5
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/helper-replace-supers': 7.21.5
+ '@babel/helper-skip-transparent-expression-wrappers': 7.20.0
+ '@babel/helper-split-export-declaration': 7.18.6
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-environment-visitor/7.21.5:
+ resolution: {integrity: sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-function-name/7.21.0:
+ resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.20.7
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-hoist-variables/7.18.6:
+ resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-member-expression-to-functions/7.21.5:
+ resolution: {integrity: sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-module-imports/7.21.4:
+ resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-module-transforms/7.21.5:
+ resolution: {integrity: sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.21.5
+ '@babel/helper-module-imports': 7.21.4
+ '@babel/helper-simple-access': 7.21.5
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/helper-validator-identifier': 7.19.1
+ '@babel/template': 7.20.7
+ '@babel/traverse': 7.21.5
+ '@babel/types': 7.21.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-optimise-call-expression/7.18.6:
+ resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-plugin-utils/7.21.5:
+ resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-replace-supers/7.21.5:
+ resolution: {integrity: sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-environment-visitor': 7.21.5
+ '@babel/helper-member-expression-to-functions': 7.21.5
+ '@babel/helper-optimise-call-expression': 7.18.6
+ '@babel/template': 7.20.7
+ '@babel/traverse': 7.21.5
+ '@babel/types': 7.21.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/helper-simple-access/7.21.5:
+ resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-skip-transparent-expression-wrappers/7.20.0:
+ resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-split-export-declaration/7.18.6:
+ resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/helper-string-parser/7.21.5:
+ resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-validator-identifier/7.19.1:
+ resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
+ engines: {node: '>=6.9.0'}
+
+ /@babel/helper-validator-option/7.21.0:
+ resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helpers/7.21.5:
+ resolution: {integrity: sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.20.7
+ '@babel/traverse': 7.21.5
+ '@babel/types': 7.21.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/highlight/7.18.6:
+ resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.19.1
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser/7.21.8:
+ resolution: {integrity: sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.21.5
+
+ /@babel/plugin-syntax-jsx/7.21.4_@babel+core@7.21.8:
+ resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.21.8
+ '@babel/helper-plugin-utils': 7.21.5
+ dev: true
+
+ /@babel/plugin-syntax-typescript/7.21.4_@babel+core@7.21.8:
+ resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.21.8
+ '@babel/helper-plugin-utils': 7.21.5
+ dev: true
+
+ /@babel/plugin-transform-typescript/7.21.3_@babel+core@7.21.8:
+ resolution: {integrity: sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.21.8
+ '@babel/helper-annotate-as-pure': 7.18.6
+ '@babel/helper-create-class-features-plugin': 7.21.8_@babel+core@7.21.8
+ '@babel/helper-plugin-utils': 7.21.5
+ '@babel/plugin-syntax-typescript': 7.21.4_@babel+core@7.21.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/runtime/7.21.5:
+ resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.13.11
+ dev: false
+
+ /@babel/template/7.20.7:
+ resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.21.4
+ '@babel/parser': 7.21.8
+ '@babel/types': 7.21.5
+ dev: true
+
+ /@babel/traverse/7.21.5:
+ resolution: {integrity: sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.21.4
+ '@babel/generator': 7.21.5
+ '@babel/helper-environment-visitor': 7.21.5
+ '@babel/helper-function-name': 7.21.0
+ '@babel/helper-hoist-variables': 7.18.6
+ '@babel/helper-split-export-declaration': 7.18.6
+ '@babel/parser': 7.21.8
+ '@babel/types': 7.21.5
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/types/7.21.5:
+ resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.21.5
+ '@babel/helper-validator-identifier': 7.19.1
+ to-fast-properties: 2.0.0
+
+ /@braintree/sanitize-url/3.1.0:
+ resolution: {integrity: sha512-GcIY79elgB+azP74j8vqkiXz8xLFfIzbQJdlwOPisgbKT00tviJQuEghOXSMVxJ00HoYJbGswr4kcllUc4xCcg==}
+ deprecated: Potential XSS vulnerability patched in v6.0.0.
+ dev: false
+
+ /@ctrl/tinycolor/3.6.0:
+ resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@element-plus/icons-vue/2.1.0_vue@3.3.4:
+ resolution: {integrity: sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ vue: 3.3.4
+ dev: false
+
+ /@esbuild/android-arm/0.15.18:
+ resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@esbuild/linux-loong64/0.15.18:
+ resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@eslint-community/eslint-utils/4.4.0_eslint@8.41.0:
+ resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
+ dependencies:
+ eslint: 8.41.0
+ eslint-visitor-keys: 3.4.1
+ dev: true
+
+ /@eslint-community/regexpp/4.5.1:
+ resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==}
+ engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ dev: true
+
+ /@eslint/eslintrc/2.0.3:
+ resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.3.4
+ espree: 9.5.2
+ globals: 13.20.0
+ ignore: 5.2.4
+ import-fresh: 3.3.0
+ js-yaml: 4.1.0
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@eslint/js/8.41.0:
+ resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
+ /@floating-ui/core/1.2.6:
+ resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==}
+ dev: false
+
+ /@floating-ui/dom/1.2.8:
+ resolution: {integrity: sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==}
+ dependencies:
+ '@floating-ui/core': 1.2.6
+ dev: false
+
+ /@humanwhocodes/config-array/0.11.8:
+ resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==}
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@humanwhocodes/object-schema': 1.2.1
+ debug: 4.3.4
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@humanwhocodes/module-importer/1.0.1:
+ resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
+ engines: {node: '>=12.22'}
+ dev: true
+
+ /@humanwhocodes/object-schema/1.2.1:
+ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ dev: true
+
+ /@iconify/types/2.0.0:
+ resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
+ dev: true
+
+ /@iconify/utils/2.1.5:
+ resolution: {integrity: sha512-6MvDI+I6QMvXn5rK9KQGdpEE4mmLTcuQdLZEiX5N+uZB+vc4Yw9K1OtnOgkl8mp4d9X0UrILREyZgF1NUwUt+Q==}
+ dependencies:
+ '@antfu/install-pkg': 0.1.1
+ '@antfu/utils': 0.7.2
+ '@iconify/types': 2.0.0
+ debug: 4.3.4
+ kolorist: 1.8.0
+ local-pkg: 0.4.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@intlify/core-base/9.2.2:
+ resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@intlify/devtools-if': 9.2.2
+ '@intlify/message-compiler': 9.2.2
+ '@intlify/shared': 9.2.2
+ '@intlify/vue-devtools': 9.2.2
+ dev: false
+
+ /@intlify/devtools-if/9.2.2:
+ resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@intlify/shared': 9.2.2
+ dev: false
+
+ /@intlify/message-compiler/9.2.2:
+ resolution: {integrity: sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@intlify/shared': 9.2.2
+ source-map: 0.6.1
+ dev: false
+
+ /@intlify/shared/9.2.2:
+ resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==}
+ engines: {node: '>= 14'}
+ dev: false
+
+ /@intlify/vue-devtools/9.2.2:
+ resolution: {integrity: sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==}
+ engines: {node: '>= 14'}
+ dependencies:
+ '@intlify/core-base': 9.2.2
+ '@intlify/shared': 9.2.2
+ dev: false
+
+ /@jridgewell/gen-mapping/0.3.3:
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.18
+ dev: true
+
+ /@jridgewell/resolve-uri/3.1.0:
+ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/set-array/1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec/1.4.14:
+ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+ dev: true
+
+ /@jridgewell/sourcemap-codec/1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+
+ /@jridgewell/trace-mapping/0.3.18:
+ resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+ dev: true
+
+ /@kangc/v-md-editor/2.3.15_vue@3.3.4:
+ resolution: {integrity: sha512-tPsBJd4YwJSZK3+mbeBu9Iol9Zi3BboNr1QbDfsxVQ/4hlMgEpMT+vj3/e5FNwgBx50RIphU0j9qNLK+dgFmqA==}
+ peerDependencies:
+ '@vue/compiler-sfc': ^3.0.0
+ vue: ^3.0.0
+ dependencies:
+ '@babel/runtime': 7.21.5
+ '@vuepress/markdown': 1.9.9
+ codemirror: 5.65.13
+ copy-to-clipboard: 3.3.3
+ highlight.js: 10.7.3
+ insert-text-at-cursor: 0.3.0
+ katex: 0.13.24
+ markdown-it: 12.3.2
+ markdown-it-attrs: 4.1.6_markdown-it@12.3.2
+ markdown-it-container: 3.0.0
+ mermaid: 8.14.0
+ prismjs: 1.29.0
+ resize-observer-polyfill: 1.5.1
+ vant: 3.6.11_vue@3.3.4
+ vue: 3.3.4
+ xss: 1.0.14
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@mrmlnc/readdir-enhanced/2.2.1:
+ resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==}
+ engines: {node: '>=4'}
+ dependencies:
+ call-me-maybe: 1.0.2
+ glob-to-regexp: 0.3.0
+ dev: false
+
+ /@nodelib/fs.scandir/2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat/1.1.3:
+ resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /@nodelib/fs.stat/2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk/1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.15.0
+ dev: true
+
+ /@rollup/pluginutils/4.2.1:
+ resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==}
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /@rollup/pluginutils/5.0.2:
+ resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+ dependencies:
+ '@types/estree': 1.0.1
+ estree-walker: 2.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /@sxzz/popperjs-es/2.11.7:
+ resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
+ dev: false
+
+ /@types/estree/1.0.1:
+ resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
+ dev: true
+
+ /@types/glob/7.2.0:
+ resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 18.16.14
+ dev: false
+
+ /@types/json-schema/7.0.11:
+ resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
+ dev: true
+
+ /@types/lodash-es/4.17.7:
+ resolution: {integrity: sha512-z0ptr6UI10VlU6l5MYhGwS4mC8DZyYer2mCoyysZtSF7p26zOX8UpbrV0YpNYLGS8K4PUFIyEr62IMFFjveSiQ==}
+ dependencies:
+ '@types/lodash': 4.14.194
+
+ /@types/lodash/4.14.194:
+ resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==}
+
+ /@types/minimatch/5.1.2:
+ resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+ dev: false
+
+ /@types/node/18.16.14:
+ resolution: {integrity: sha512-+ImzUB3mw2c5ISJUq0punjDilUQ5GnUim0ZRvchHIWJmOC0G+p0kzhXBqj6cDjK0QdPFwzrHWgrJp3RPvCG5qg==}
+
+ /@types/prismjs/1.26.0:
+ resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==}
+ dev: true
+
+ /@types/semver/7.5.0:
+ resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
+ dev: true
+
+ /@types/web-bluetooth/0.0.16:
+ resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
+ dev: false
+
+ /@typescript-eslint/eslint-plugin/5.59.6_4qbuxpmdupj46lq2zjlghng6yy:
+ resolution: {integrity: sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^5.0.0
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@eslint-community/regexpp': 4.5.1
+ '@typescript-eslint/parser': 5.59.6_5ujgynla27k2qkzlnkldjwsutm
+ '@typescript-eslint/scope-manager': 5.59.6
+ '@typescript-eslint/type-utils': 5.59.6_5ujgynla27k2qkzlnkldjwsutm
+ '@typescript-eslint/utils': 5.59.6_5ujgynla27k2qkzlnkldjwsutm
+ debug: 4.3.4
+ eslint: 8.41.0
+ grapheme-splitter: 1.0.4
+ ignore: 5.2.4
+ natural-compare-lite: 1.4.0
+ semver: 7.5.1
+ tsutils: 3.21.0_typescript@4.9.5
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/parser/5.59.6_5ujgynla27k2qkzlnkldjwsutm:
+ resolution: {integrity: sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 5.59.6
+ '@typescript-eslint/types': 5.59.6
+ '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.9.5
+ debug: 4.3.4
+ eslint: 8.41.0
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/scope-manager/5.59.6:
+ resolution: {integrity: sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.59.6
+ '@typescript-eslint/visitor-keys': 5.59.6
+ dev: true
+
+ /@typescript-eslint/type-utils/5.59.6_5ujgynla27k2qkzlnkldjwsutm:
+ resolution: {integrity: sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.9.5
+ '@typescript-eslint/utils': 5.59.6_5ujgynla27k2qkzlnkldjwsutm
+ debug: 4.3.4
+ eslint: 8.41.0
+ tsutils: 3.21.0_typescript@4.9.5
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/types/5.59.6:
+ resolution: {integrity: sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
+ /@typescript-eslint/typescript-estree/5.59.6_typescript@4.9.5:
+ resolution: {integrity: sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 5.59.6
+ '@typescript-eslint/visitor-keys': 5.59.6
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.5.1
+ tsutils: 3.21.0_typescript@4.9.5
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/utils/5.59.6_5ujgynla27k2qkzlnkldjwsutm:
+ resolution: {integrity: sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0_eslint@8.41.0
+ '@types/json-schema': 7.0.11
+ '@types/semver': 7.5.0
+ '@typescript-eslint/scope-manager': 5.59.6
+ '@typescript-eslint/types': 5.59.6
+ '@typescript-eslint/typescript-estree': 5.59.6_typescript@4.9.5
+ eslint: 8.41.0
+ eslint-scope: 5.1.1
+ semver: 7.5.1
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@typescript-eslint/visitor-keys/5.59.6:
+ resolution: {integrity: sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ '@typescript-eslint/types': 5.59.6
+ eslint-visitor-keys: 3.4.1
+ dev: true
+
+ /@vant/icons/1.8.0:
+ resolution: {integrity: sha512-sKfEUo2/CkQFuERxvkuF6mGQZDKu3IQdj5rV9Fm0weJXtchDSSQ+zt8qPCNUEhh9Y8shy5PzxbvAfOOkCwlCXg==}
+ dev: false
+
+ /@vant/popperjs/1.3.0:
+ resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
+ dev: false
+
+ /@vant/use/1.5.1_vue@3.3.4:
+ resolution: {integrity: sha512-Zxd7lDz/LliVYEQi3PR9a8CQa/kGCVzF0u9hqDMaTlgXlbG0wHMFPllrcG0ThR6bfs8xrYVuSFM9pJn6HSoUGQ==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ vue: 3.3.4
+ dev: false
+
+ /@vitejs/plugin-vue-jsx/2.1.1_vite@3.2.6+vue@3.3.4:
+ resolution: {integrity: sha512-JgDhxstQlwnHBvZ1BSnU5mbmyQ14/t5JhREc6YH5kWyu2QdAAOsLF6xgHoIWarj8tddaiwFrNzLbWJPudpXKYA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^3.0.0
+ vue: ^3.0.0
+ dependencies:
+ '@babel/core': 7.21.8
+ '@babel/plugin-transform-typescript': 7.21.3_@babel+core@7.21.8
+ '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.21.8
+ vite: 3.2.6_3cl3pib2kx7jaftbqhg3ux7t34
+ vue: 3.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vitejs/plugin-vue/3.2.0_vite@3.2.6+vue@3.3.4:
+ resolution: {integrity: sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^3.0.0
+ vue: ^3.2.25
+ dependencies:
+ vite: 3.2.6_3cl3pib2kx7jaftbqhg3ux7t34
+ vue: 3.3.4
+ dev: true
+
+ /@volar/code-gen/0.40.13:
+ resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==}
+ dependencies:
+ '@volar/source-map': 0.40.13
+ dev: true
+
+ /@volar/source-map/0.40.13:
+ resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==}
+ dependencies:
+ '@vue/reactivity': 3.2.38
+ dev: true
+
+ /@volar/typescript-faster/0.40.13:
+ resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==}
+ dependencies:
+ semver: 7.5.1
+ dev: true
+
+ /@volar/vue-language-core/0.40.13:
+ resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==}
+ dependencies:
+ '@volar/code-gen': 0.40.13
+ '@volar/source-map': 0.40.13
+ '@vue/compiler-core': 3.3.4
+ '@vue/compiler-dom': 3.3.4
+ '@vue/compiler-sfc': 3.3.4
+ '@vue/reactivity': 3.3.4
+ '@vue/shared': 3.3.4
+ dev: true
+
+ /@volar/vue-typescript/0.40.13:
+ resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==}
+ dependencies:
+ '@volar/code-gen': 0.40.13
+ '@volar/typescript-faster': 0.40.13
+ '@volar/vue-language-core': 0.40.13
+ dev: true
+
+ /@vue/babel-helper-vue-transform-on/1.0.2:
+ resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==}
+ dev: true
+
+ /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.21.8:
+ resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==}
+ dependencies:
+ '@babel/helper-module-imports': 7.21.4
+ '@babel/plugin-syntax-jsx': 7.21.4_@babel+core@7.21.8
+ '@babel/template': 7.20.7
+ '@babel/traverse': 7.21.5
+ '@babel/types': 7.21.5
+ '@vue/babel-helper-vue-transform-on': 1.0.2
+ camelcase: 6.3.0
+ html-tags: 3.3.1
+ svg-tags: 1.0.0
+ transitivePeerDependencies:
+ - '@babel/core'
+ - supports-color
+ dev: true
+
+ /@vue/compiler-core/3.3.4:
+ resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
+ dependencies:
+ '@babel/parser': 7.21.8
+ '@vue/shared': 3.3.4
+ estree-walker: 2.0.2
+ source-map-js: 1.0.2
+
+ /@vue/compiler-dom/3.3.4:
+ resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
+ dependencies:
+ '@vue/compiler-core': 3.3.4
+ '@vue/shared': 3.3.4
+
+ /@vue/compiler-sfc/3.3.4:
+ resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
+ dependencies:
+ '@babel/parser': 7.21.8
+ '@vue/compiler-core': 3.3.4
+ '@vue/compiler-dom': 3.3.4
+ '@vue/compiler-ssr': 3.3.4
+ '@vue/reactivity-transform': 3.3.4
+ '@vue/shared': 3.3.4
+ estree-walker: 2.0.2
+ magic-string: 0.30.0
+ postcss: 8.4.23
+ source-map-js: 1.0.2
+
+ /@vue/compiler-ssr/3.3.4:
+ resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==}
+ dependencies:
+ '@vue/compiler-dom': 3.3.4
+ '@vue/shared': 3.3.4
+
+ /@vue/devtools-api/6.5.0:
+ resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==}
+ dev: false
+
+ /@vue/eslint-config-prettier/7.1.0_qokqbt3mojjgfarfkyl2cug5vu:
+ resolution: {integrity: sha512-Pv/lVr0bAzSIHLd9iz0KnvAr4GKyCEl+h52bc4e5yWuDVtLgFwycF7nrbWTAQAS+FU6q1geVd07lc6EWfJiWKQ==}
+ peerDependencies:
+ eslint: '>= 7.28.0'
+ prettier: '>= 2.0.0'
+ dependencies:
+ eslint: 8.41.0
+ eslint-config-prettier: 8.8.0_eslint@8.41.0
+ eslint-plugin-prettier: 4.2.1_xcqkel4mpum3npntysob2xmn54
+ prettier: 2.8.8
+ dev: true
+
+ /@vue/eslint-config-typescript/11.0.3_bobqty5xbmhlsbxniqz7dnethy:
+ resolution: {integrity: sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
+ eslint-plugin-vue: ^9.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 5.59.6_4qbuxpmdupj46lq2zjlghng6yy
+ '@typescript-eslint/parser': 5.59.6_5ujgynla27k2qkzlnkldjwsutm
+ eslint: 8.41.0
+ eslint-plugin-vue: 9.13.0_eslint@8.41.0
+ typescript: 4.9.5
+ vue-eslint-parser: 9.3.0_eslint@8.41.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vue/reactivity-transform/3.3.4:
+ resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==}
+ dependencies:
+ '@babel/parser': 7.21.8
+ '@vue/compiler-core': 3.3.4
+ '@vue/shared': 3.3.4
+ estree-walker: 2.0.2
+ magic-string: 0.30.0
+
+ /@vue/reactivity/3.2.38:
+ resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==}
+ dependencies:
+ '@vue/shared': 3.2.38
+ dev: true
+
+ /@vue/reactivity/3.3.4:
+ resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
+ dependencies:
+ '@vue/shared': 3.3.4
+
+ /@vue/runtime-core/3.3.4:
+ resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==}
+ dependencies:
+ '@vue/reactivity': 3.3.4
+ '@vue/shared': 3.3.4
+
+ /@vue/runtime-dom/3.3.4:
+ resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==}
+ dependencies:
+ '@vue/runtime-core': 3.3.4
+ '@vue/shared': 3.3.4
+ csstype: 3.1.2
+
+ /@vue/server-renderer/3.3.4_vue@3.3.4:
+ resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==}
+ peerDependencies:
+ vue: 3.3.4
+ dependencies:
+ '@vue/compiler-ssr': 3.3.4
+ '@vue/shared': 3.3.4
+ vue: 3.3.4
+
+ /@vue/shared/3.2.38:
+ resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==}
+ dev: true
+
+ /@vue/shared/3.3.4:
+ resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
+
+ /@vuepress/markdown/1.9.9:
+ resolution: {integrity: sha512-JzFdBdGe5aoiKSaEgF+h3JLDXNVfWPI5DJWXrIt7rhhkMJesF6HowIznPLdXqukzHfXHcPvo9oQ4o6eT0YmVGA==}
+ dependencies:
+ '@vuepress/shared-utils': 1.9.9
+ markdown-it: 8.4.2
+ markdown-it-anchor: 5.3.0_markdown-it@8.4.2
+ markdown-it-chain: 1.3.0_markdown-it@8.4.2
+ markdown-it-emoji: 1.4.0
+ markdown-it-table-of-contents: 0.4.4
+ prismjs: 1.29.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@vuepress/shared-utils/1.9.9:
+ resolution: {integrity: sha512-qhk/7QF5LgMEXhEB1hlqreGFgkz4p2pmaBBNFxnAnYmSwmyO+u/oFOpZLI16QRx9Wg6ekR2ENmByQLxV7y4lJg==}
+ dependencies:
+ chalk: 2.4.2
+ escape-html: 1.0.3
+ fs-extra: 7.0.1
+ globby: 9.2.0
+ gray-matter: 4.0.3
+ hash-sum: 1.0.2
+ semver: 6.3.0
+ toml: 3.0.0
+ upath: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /@vueuse/core/9.13.0_vue@3.3.4:
+ resolution: {integrity: sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==}
+ dependencies:
+ '@types/web-bluetooth': 0.0.16
+ '@vueuse/metadata': 9.13.0
+ '@vueuse/shared': 9.13.0_vue@3.3.4
+ vue-demi: 0.14.5_vue@3.3.4
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /@vueuse/metadata/9.13.0:
+ resolution: {integrity: sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==}
+ dev: false
+
+ /@vueuse/shared/9.13.0_vue@3.3.4:
+ resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
+ dependencies:
+ vue-demi: 0.14.5_vue@3.3.4
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+ dev: false
+
+ /acorn-jsx/5.3.2_acorn@8.8.2:
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 8.8.2
+ dev: true
+
+ /acorn/8.8.2:
+ resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /aggregate-error/3.1.0:
+ resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
+ engines: {node: '>=8'}
+ dependencies:
+ clean-stack: 2.2.0
+ indent-string: 4.0.0
+ dev: true
+
+ /ajv/6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ /ansi-escapes/4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+ dev: true
+
+ /ansi-regex/5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ansi-regex/6.0.1:
+ resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /ansi-styles/3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+
+ /ansi-styles/4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /ansi-styles/6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /anymatch/3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+ dev: true
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: false
+
+ /argparse/2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+
+ /arr-diff/4.0.0:
+ resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /arr-flatten/1.1.0:
+ resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /arr-union/3.1.0:
+ resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /array-union/1.0.2:
+ resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-uniq: 1.0.3
+ dev: false
+
+ /array-union/2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /array-uniq/1.0.3:
+ resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /array-unique/0.3.2:
+ resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /assign-symbols/1.0.0:
+ resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /astral-regex/2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /async-validator/4.2.5:
+ resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
+ dev: false
+
+ /asynckit/0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+ dev: false
+
+ /atob/2.1.2:
+ resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+ engines: {node: '>= 4.5.0'}
+ hasBin: true
+ dev: false
+
+ /axios/1.4.0:
+ resolution: {integrity: sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==}
+ dependencies:
+ follow-redirects: 1.15.2
+ form-data: 4.0.0
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+ dev: false
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ /base/0.11.2:
+ resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ cache-base: 1.0.1
+ class-utils: 0.3.6
+ component-emitter: 1.3.0
+ define-property: 1.0.0
+ isobject: 3.0.1
+ mixin-deep: 1.3.2
+ pascalcase: 0.1.1
+ dev: false
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /boolbase/1.0.0:
+ resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
+ dev: true
+
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+
+ /brace-expansion/2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+ dependencies:
+ balanced-match: 1.0.2
+ dev: true
+
+ /braces/2.3.2:
+ resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-flatten: 1.1.0
+ array-unique: 0.3.2
+ extend-shallow: 2.0.1
+ fill-range: 4.0.0
+ isobject: 3.0.1
+ repeat-element: 1.1.4
+ snapdragon: 0.8.2
+ snapdragon-node: 2.1.1
+ split-string: 3.1.0
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /braces/3.0.2:
+ resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /browserslist/4.21.5:
+ resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001488
+ electron-to-chromium: 1.4.402
+ node-releases: 2.0.11
+ update-browserslist-db: 1.0.11_browserslist@4.21.5
+ dev: true
+
+ /cache-base/1.0.1:
+ resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ collection-visit: 1.0.0
+ component-emitter: 1.3.0
+ get-value: 2.0.6
+ has-value: 1.0.0
+ isobject: 3.0.1
+ set-value: 2.0.1
+ to-object-path: 0.3.0
+ union-value: 1.0.1
+ unset-value: 1.0.0
+ dev: false
+
+ /call-me-maybe/1.0.2:
+ resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
+ dev: false
+
+ /callsites/3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase/6.3.0:
+ resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /caniuse-lite/1.0.30001488:
+ resolution: {integrity: sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ==}
+ dev: true
+
+ /chalk/2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+
+ /chalk/4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chalk/5.2.0:
+ resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==}
+ engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
+ dev: true
+
+ /chokidar/3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.2
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /class-utils/0.3.6:
+ resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ define-property: 0.2.5
+ isobject: 3.0.1
+ static-extend: 0.1.2
+ dev: false
+
+ /clean-stack/2.2.0:
+ resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cli-cursor/3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: 3.1.0
+ dev: true
+
+ /cli-truncate/2.1.0:
+ resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==}
+ engines: {node: '>=8'}
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.3
+ dev: true
+
+ /cli-truncate/3.1.0:
+ resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ slice-ansi: 5.0.0
+ string-width: 5.1.2
+ dev: true
+
+ /codemirror/5.65.13:
+ resolution: {integrity: sha512-SVWEzKXmbHmTQQWaz03Shrh4nybG0wXx2MEu3FO4ezbPW8IbnZEd5iGHGEffSUaitKYa3i+pHpBsSvw8sPHtzg==}
+ dev: false
+
+ /collection-visit/1.0.0:
+ resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-visit: 1.0.0
+ object-visit: 1.0.1
+ dev: false
+
+ /color-convert/1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+
+ /color-convert/2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name/1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /colorette/2.0.20:
+ resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
+ dev: true
+
+ /combined-stream/1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: false
+
+ /commander/10.0.1:
+ resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==}
+ engines: {node: '>=14'}
+ dev: true
+
+ /commander/2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ dev: false
+
+ /commander/7.2.0:
+ resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
+ engines: {node: '>= 10'}
+ dev: false
+
+ /commander/8.3.0:
+ resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==}
+ engines: {node: '>= 12'}
+ dev: false
+
+ /component-emitter/1.3.0:
+ resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==}
+ dev: false
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
+
+ /convert-source-map/1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+ dev: true
+
+ /copy-descriptor/0.1.1:
+ resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /copy-to-clipboard/3.3.3:
+ resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==}
+ dependencies:
+ toggle-selection: 1.0.6
+ dev: false
+
+ /cross-spawn/7.0.3:
+ resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /crypto-js/4.1.1:
+ resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==}
+ dev: false
+
+ /cssesc/3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /cssfilter/0.0.10:
+ resolution: {integrity: sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==}
+ dev: false
+
+ /csstype/3.1.2:
+ resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+
+ /d3-array/1.2.4:
+ resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==}
+ dev: false
+
+ /d3-array/3.2.3:
+ resolution: {integrity: sha512-JRHwbQQ84XuAESWhvIPaUV4/1UYTBOLiOPGWqgFDHZS1D5QN9c57FbH3QpEnQMYiOXNzKUQyGTZf+EVO7RT5TQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ internmap: 2.0.3
+ dev: false
+
+ /d3-axis/1.0.12:
+ resolution: {integrity: sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==}
+ dev: false
+
+ /d3-axis/3.0.0:
+ resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-brush/1.1.6:
+ resolution: {integrity: sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==}
+ dependencies:
+ d3-dispatch: 1.0.6
+ d3-drag: 1.2.5
+ d3-interpolate: 1.4.0
+ d3-selection: 1.4.2
+ d3-transition: 1.3.2
+ dev: false
+
+ /d3-brush/3.0.0:
+ resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1_d3-selection@3.0.0
+ dev: false
+
+ /d3-chord/1.0.6:
+ resolution: {integrity: sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==}
+ dependencies:
+ d3-array: 1.2.4
+ d3-path: 1.0.9
+ dev: false
+
+ /d3-chord/3.0.1:
+ resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-path: 3.1.0
+ dev: false
+
+ /d3-collection/1.0.7:
+ resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==}
+ dev: false
+
+ /d3-color/1.4.1:
+ resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==}
+ dev: false
+
+ /d3-color/3.1.0:
+ resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-contour/1.3.2:
+ resolution: {integrity: sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==}
+ dependencies:
+ d3-array: 1.2.4
+ dev: false
+
+ /d3-contour/4.0.2:
+ resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.2.3
+ dev: false
+
+ /d3-delaunay/6.0.4:
+ resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==}
+ engines: {node: '>=12'}
+ dependencies:
+ delaunator: 5.0.0
+ dev: false
+
+ /d3-dispatch/1.0.6:
+ resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==}
+ dev: false
+
+ /d3-dispatch/3.0.1:
+ resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-drag/1.2.5:
+ resolution: {integrity: sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==}
+ dependencies:
+ d3-dispatch: 1.0.6
+ d3-selection: 1.4.2
+ dev: false
+
+ /d3-drag/3.0.0:
+ resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-selection: 3.0.0
+ dev: false
+
+ /d3-dsv/1.2.0:
+ resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==}
+ hasBin: true
+ dependencies:
+ commander: 2.20.3
+ iconv-lite: 0.4.24
+ rw: 1.3.3
+ dev: false
+
+ /d3-dsv/3.0.1:
+ resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+ dependencies:
+ commander: 7.2.0
+ iconv-lite: 0.6.3
+ rw: 1.3.3
+ dev: false
+
+ /d3-ease/1.0.7:
+ resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==}
+ dev: false
+
+ /d3-ease/3.0.1:
+ resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-fetch/1.2.0:
+ resolution: {integrity: sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==}
+ dependencies:
+ d3-dsv: 1.2.0
+ dev: false
+
+ /d3-fetch/3.0.1:
+ resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dsv: 3.0.1
+ dev: false
+
+ /d3-force/1.2.1:
+ resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==}
+ dependencies:
+ d3-collection: 1.0.7
+ d3-dispatch: 1.0.6
+ d3-quadtree: 1.0.7
+ d3-timer: 1.0.10
+ dev: false
+
+ /d3-force/3.0.0:
+ resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-timer: 3.0.1
+ dev: false
+
+ /d3-format/1.4.5:
+ resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==}
+ dev: false
+
+ /d3-format/3.1.0:
+ resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-geo/1.12.1:
+ resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==}
+ dependencies:
+ d3-array: 1.2.4
+ dev: false
+
+ /d3-geo/3.1.0:
+ resolution: {integrity: sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.2.3
+ dev: false
+
+ /d3-hierarchy/1.1.9:
+ resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==}
+ dev: false
+
+ /d3-hierarchy/3.1.2:
+ resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-interpolate/1.4.0:
+ resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==}
+ dependencies:
+ d3-color: 1.4.1
+ dev: false
+
+ /d3-interpolate/3.0.1:
+ resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-color: 3.1.0
+ dev: false
+
+ /d3-path/1.0.9:
+ resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==}
+ dev: false
+
+ /d3-path/3.1.0:
+ resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-polygon/1.0.6:
+ resolution: {integrity: sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==}
+ dev: false
+
+ /d3-polygon/3.0.1:
+ resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-quadtree/1.0.7:
+ resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==}
+ dev: false
+
+ /d3-quadtree/3.0.1:
+ resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-random/1.1.2:
+ resolution: {integrity: sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==}
+ dev: false
+
+ /d3-random/3.0.1:
+ resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-scale-chromatic/1.5.0:
+ resolution: {integrity: sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==}
+ dependencies:
+ d3-color: 1.4.1
+ d3-interpolate: 1.4.0
+ dev: false
+
+ /d3-scale-chromatic/3.0.0:
+ resolution: {integrity: sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-color: 3.1.0
+ d3-interpolate: 3.0.1
+ dev: false
+
+ /d3-scale/2.2.2:
+ resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==}
+ dependencies:
+ d3-array: 1.2.4
+ d3-collection: 1.0.7
+ d3-format: 1.4.5
+ d3-interpolate: 1.4.0
+ d3-time: 1.1.0
+ d3-time-format: 2.3.0
+ dev: false
+
+ /d3-scale/4.0.2:
+ resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.2.3
+ d3-format: 3.1.0
+ d3-interpolate: 3.0.1
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+ dev: false
+
+ /d3-selection/1.4.2:
+ resolution: {integrity: sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==}
+ dev: false
+
+ /d3-selection/3.0.0:
+ resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-shape/1.3.7:
+ resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==}
+ dependencies:
+ d3-path: 1.0.9
+ dev: false
+
+ /d3-shape/3.2.0:
+ resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-path: 3.1.0
+ dev: false
+
+ /d3-time-format/2.3.0:
+ resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==}
+ dependencies:
+ d3-time: 1.1.0
+ dev: false
+
+ /d3-time-format/4.1.0:
+ resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-time: 3.1.0
+ dev: false
+
+ /d3-time/1.1.0:
+ resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==}
+ dev: false
+
+ /d3-time/3.1.0:
+ resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.2.3
+ dev: false
+
+ /d3-timer/1.0.10:
+ resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==}
+ dev: false
+
+ /d3-timer/3.0.1:
+ resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /d3-transition/1.3.2:
+ resolution: {integrity: sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==}
+ dependencies:
+ d3-color: 1.4.1
+ d3-dispatch: 1.0.6
+ d3-ease: 1.0.7
+ d3-interpolate: 1.4.0
+ d3-selection: 1.4.2
+ d3-timer: 1.0.10
+ dev: false
+
+ /d3-transition/3.0.1_d3-selection@3.0.0:
+ resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ d3-selection: 2 - 3
+ dependencies:
+ d3-color: 3.1.0
+ d3-dispatch: 3.0.1
+ d3-ease: 3.0.1
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-timer: 3.0.1
+ dev: false
+
+ /d3-voronoi/1.1.4:
+ resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==}
+ dev: false
+
+ /d3-zoom/1.8.3:
+ resolution: {integrity: sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==}
+ dependencies:
+ d3-dispatch: 1.0.6
+ d3-drag: 1.2.5
+ d3-interpolate: 1.4.0
+ d3-selection: 1.4.2
+ d3-transition: 1.3.2
+ dev: false
+
+ /d3-zoom/3.0.0:
+ resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-interpolate: 3.0.1
+ d3-selection: 3.0.0
+ d3-transition: 3.0.1_d3-selection@3.0.0
+ dev: false
+
+ /d3/5.16.0:
+ resolution: {integrity: sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==}
+ dependencies:
+ d3-array: 1.2.4
+ d3-axis: 1.0.12
+ d3-brush: 1.1.6
+ d3-chord: 1.0.6
+ d3-collection: 1.0.7
+ d3-color: 1.4.1
+ d3-contour: 1.3.2
+ d3-dispatch: 1.0.6
+ d3-drag: 1.2.5
+ d3-dsv: 1.2.0
+ d3-ease: 1.0.7
+ d3-fetch: 1.2.0
+ d3-force: 1.2.1
+ d3-format: 1.4.5
+ d3-geo: 1.12.1
+ d3-hierarchy: 1.1.9
+ d3-interpolate: 1.4.0
+ d3-path: 1.0.9
+ d3-polygon: 1.0.6
+ d3-quadtree: 1.0.7
+ d3-random: 1.1.2
+ d3-scale: 2.2.2
+ d3-scale-chromatic: 1.5.0
+ d3-selection: 1.4.2
+ d3-shape: 1.3.7
+ d3-time: 1.1.0
+ d3-time-format: 2.3.0
+ d3-timer: 1.0.10
+ d3-transition: 1.3.2
+ d3-voronoi: 1.1.4
+ d3-zoom: 1.8.3
+ dev: false
+
+ /d3/7.8.4:
+ resolution: {integrity: sha512-q2WHStdhiBtD8DMmhDPyJmXUxr6VWRngKyiJ5EfXMxPw+tqT6BhNjhJZ4w3BHsNm3QoVfZLY8Orq/qPFczwKRA==}
+ engines: {node: '>=12'}
+ dependencies:
+ d3-array: 3.2.3
+ d3-axis: 3.0.0
+ d3-brush: 3.0.0
+ d3-chord: 3.0.1
+ d3-color: 3.1.0
+ d3-contour: 4.0.2
+ d3-delaunay: 6.0.4
+ d3-dispatch: 3.0.1
+ d3-drag: 3.0.0
+ d3-dsv: 3.0.1
+ d3-ease: 3.0.1
+ d3-fetch: 3.0.1
+ d3-force: 3.0.0
+ d3-format: 3.1.0
+ d3-geo: 3.1.0
+ d3-hierarchy: 3.1.2
+ d3-interpolate: 3.0.1
+ d3-path: 3.1.0
+ d3-polygon: 3.0.1
+ d3-quadtree: 3.0.1
+ d3-random: 3.0.1
+ d3-scale: 4.0.2
+ d3-scale-chromatic: 3.0.0
+ d3-selection: 3.0.0
+ d3-shape: 3.2.0
+ d3-time: 3.1.0
+ d3-time-format: 4.1.0
+ d3-timer: 3.0.1
+ d3-transition: 3.0.1_d3-selection@3.0.0
+ d3-zoom: 3.0.0
+ dev: false
+
+ /dagre-d3/0.6.4:
+ resolution: {integrity: sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==}
+ dependencies:
+ d3: 5.16.0
+ dagre: 0.8.5
+ graphlib: 2.1.8
+ lodash: 4.17.21
+ dev: false
+
+ /dagre/0.8.5:
+ resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==}
+ dependencies:
+ graphlib: 2.1.8
+ lodash: 4.17.21
+ dev: false
+
+ /dayjs/1.11.7:
+ resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==}
+ dev: false
+
+ /debug/2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+ dev: false
+
+ /debug/4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /decode-uri-component/0.2.2:
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
+ dev: false
+
+ /deep-is/0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ dev: true
+
+ /deepmerge/1.5.2:
+ resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /define-property/0.2.5:
+ resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 0.1.6
+ dev: false
+
+ /define-property/1.0.0:
+ resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.2
+ dev: false
+
+ /define-property/2.0.2:
+ resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.2
+ isobject: 3.0.1
+ dev: false
+
+ /delaunator/5.0.0:
+ resolution: {integrity: sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==}
+ dependencies:
+ robust-predicates: 3.0.1
+ dev: false
+
+ /delayed-stream/1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+ dev: false
+
+ /dir-glob/2.2.2:
+ resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==}
+ engines: {node: '>=4'}
+ dependencies:
+ path-type: 3.0.0
+ dev: false
+
+ /dir-glob/3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: true
+
+ /doctrine/3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: true
+
+ /dompurify/2.3.5:
+ resolution: {integrity: sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==}
+ dev: false
+
+ /eastasianwidth/0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ dev: true
+
+ /electron-to-chromium/1.4.402:
+ resolution: {integrity: sha512-gWYvJSkohOiBE6ecVYXkrDgNaUjo47QEKK0kQzmWyhkH+yoYiG44bwuicTGNSIQRG3WDMsWVZJLRnJnLNkbWvA==}
+ dev: true
+
+ /element-plus/2.3.5_vue@3.3.4:
+ resolution: {integrity: sha512-g27DHm2C5/tPwte9H6Juu+JOdzT9z1ALHTIvia6MwnBdCrI4kd77o6KcYdodU15/tYiPBoCEmobhl/7GUDb+1Q==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@ctrl/tinycolor': 3.6.0
+ '@element-plus/icons-vue': 2.1.0_vue@3.3.4
+ '@floating-ui/dom': 1.2.8
+ '@popperjs/core': /@sxzz/popperjs-es/2.11.7
+ '@types/lodash': 4.14.194
+ '@types/lodash-es': 4.17.7
+ '@vueuse/core': 9.13.0_vue@3.3.4
+ async-validator: 4.2.5
+ dayjs: 1.11.7
+ escape-html: 1.0.3
+ lodash: 4.17.21
+ lodash-es: 4.17.21
+ lodash-unified: 1.0.3_tknf7errc3xdqocd3ryzzla7vq
+ memoize-one: 6.0.0
+ normalize-wheel-es: 1.2.0
+ vue: 3.3.4
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ dev: false
+
+ /emoji-regex/8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /emoji-regex/9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ dev: true
+
+ /entities/1.1.2:
+ resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==}
+ dev: false
+
+ /entities/2.1.0:
+ resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==}
+ dev: false
+
+ /es-module-lexer/0.10.5:
+ resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==}
+ dev: true
+
+ /esbuild-android-64/0.15.18:
+ resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-android-arm64/0.15.18:
+ resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-64/0.15.18:
+ resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-darwin-arm64/0.15.18:
+ resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-64/0.15.18:
+ resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-freebsd-arm64/0.15.18:
+ resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-32/0.15.18:
+ resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-64/0.15.18:
+ resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm/0.15.18:
+ resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-arm64/0.15.18:
+ resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-mips64le/0.15.18:
+ resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-ppc64le/0.15.18:
+ resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-riscv64/0.15.18:
+ resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-linux-s390x/0.15.18:
+ resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-netbsd-64/0.15.18:
+ resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-openbsd-64/0.15.18:
+ resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-sunos-64/0.15.18:
+ resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-32/0.15.18:
+ resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-64/0.15.18:
+ resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild-windows-arm64/0.15.18:
+ resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /esbuild/0.15.18:
+ resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.15.18
+ '@esbuild/linux-loong64': 0.15.18
+ esbuild-android-64: 0.15.18
+ esbuild-android-arm64: 0.15.18
+ esbuild-darwin-64: 0.15.18
+ esbuild-darwin-arm64: 0.15.18
+ esbuild-freebsd-64: 0.15.18
+ esbuild-freebsd-arm64: 0.15.18
+ esbuild-linux-32: 0.15.18
+ esbuild-linux-64: 0.15.18
+ esbuild-linux-arm: 0.15.18
+ esbuild-linux-arm64: 0.15.18
+ esbuild-linux-mips64le: 0.15.18
+ esbuild-linux-ppc64le: 0.15.18
+ esbuild-linux-riscv64: 0.15.18
+ esbuild-linux-s390x: 0.15.18
+ esbuild-netbsd-64: 0.15.18
+ esbuild-openbsd-64: 0.15.18
+ esbuild-sunos-64: 0.15.18
+ esbuild-windows-32: 0.15.18
+ esbuild-windows-64: 0.15.18
+ esbuild-windows-arm64: 0.15.18
+ dev: true
+
+ /escalade/3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-html/1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ dev: false
+
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ /escape-string-regexp/4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /escape-string-regexp/5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /eslint-config-prettier/8.8.0_eslint@8.41.0:
+ resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ eslint: 8.41.0
+ dev: true
+
+ /eslint-plugin-prettier/4.2.1_xcqkel4mpum3npntysob2xmn54:
+ resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ eslint: '>=7.28.0'
+ eslint-config-prettier: '*'
+ prettier: '>=2.0.0'
+ peerDependenciesMeta:
+ eslint-config-prettier:
+ optional: true
+ dependencies:
+ eslint: 8.41.0
+ eslint-config-prettier: 8.8.0_eslint@8.41.0
+ prettier: 2.8.8
+ prettier-linter-helpers: 1.0.0
+ dev: true
+
+ /eslint-plugin-vue/9.13.0_eslint@8.41.0:
+ resolution: {integrity: sha512-aBz9A8WB4wmpnVv0pYUt86cmH9EkcwWzgEwecBxMoRNhQjTL5i4sqadnwShv/hOdr8Hbl8XANGV7dtX9UQIAyA==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0_eslint@8.41.0
+ eslint: 8.41.0
+ natural-compare: 1.4.0
+ nth-check: 2.1.1
+ postcss-selector-parser: 6.0.13
+ semver: 7.5.1
+ vue-eslint-parser: 9.3.0_eslint@8.41.0
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-scope/5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+ dev: true
+
+ /eslint-scope/7.2.0:
+ resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 5.3.0
+ dev: true
+
+ /eslint-visitor-keys/3.4.1:
+ resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
+
+ /eslint/8.41.0:
+ resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0_eslint@8.41.0
+ '@eslint-community/regexpp': 4.5.1
+ '@eslint/eslintrc': 2.0.3
+ '@eslint/js': 8.41.0
+ '@humanwhocodes/config-array': 0.11.8
+ '@humanwhocodes/module-importer': 1.0.1
+ '@nodelib/fs.walk': 1.2.8
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.3
+ debug: 4.3.4
+ doctrine: 3.0.0
+ escape-string-regexp: 4.0.0
+ eslint-scope: 7.2.0
+ eslint-visitor-keys: 3.4.1
+ espree: 9.5.2
+ esquery: 1.5.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ find-up: 5.0.0
+ glob-parent: 6.0.2
+ globals: 13.20.0
+ graphemer: 1.4.0
+ ignore: 5.2.4
+ import-fresh: 3.3.0
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ is-path-inside: 3.0.3
+ js-yaml: 4.1.0
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.1
+ strip-ansi: 6.0.1
+ strip-json-comments: 3.1.1
+ text-table: 0.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /espree/9.5.2:
+ resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ acorn: 8.8.2
+ acorn-jsx: 5.3.2_acorn@8.8.2
+ eslint-visitor-keys: 3.4.1
+ dev: true
+
+ /esprima/4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: false
+
+ /esquery/1.5.0:
+ resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /esrecurse/4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /estraverse/4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estraverse/5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ /esutils/2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /execa/5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 2.1.0
+ is-stream: 2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ strip-final-newline: 2.0.0
+ dev: true
+
+ /execa/7.1.1:
+ resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==}
+ engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: 4.3.1
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.1.0
+ onetime: 6.0.0
+ signal-exit: 3.0.7
+ strip-final-newline: 3.0.0
+ dev: true
+
+ /expand-brackets/2.1.4:
+ resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ debug: 2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ posix-character-classes: 0.1.1
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /extend-shallow/2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: false
+
+ /extend-shallow/3.0.2:
+ resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ assign-symbols: 1.0.0
+ is-extendable: 1.0.1
+ dev: false
+
+ /extglob/2.0.4:
+ resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-unique: 0.3.2
+ define-property: 1.0.0
+ expand-brackets: 2.1.4
+ extend-shallow: 2.0.1
+ fragment-cache: 0.2.1
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
+
+ /fast-diff/1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+ dev: true
+
+ /fast-glob/2.2.7:
+ resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ '@mrmlnc/readdir-enhanced': 2.2.1
+ '@nodelib/fs.stat': 1.1.3
+ glob-parent: 3.1.0
+ is-glob: 4.0.3
+ merge2: 1.4.1
+ micromatch: 3.1.10
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /fast-glob/3.2.12:
+ resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.5
+ dev: true
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fast-levenshtein/2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ dev: true
+
+ /fastq/1.15.0:
+ resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ /file-entry-cache/6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.0.4
+ dev: true
+
+ /fill-range/4.0.0:
+ resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ to-regex-range: 2.1.1
+ dev: false
+
+ /fill-range/7.0.1:
+ resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /find-up/5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
+ dependencies:
+ locate-path: 6.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /flat-cache/3.0.4:
+ resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.2.7
+ rimraf: 3.0.2
+ dev: true
+
+ /flatted/3.2.7:
+ resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
+ dev: true
+
+ /follow-redirects/1.15.2:
+ resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+ dev: false
+
+ /for-in/1.0.2:
+ resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /form-data/4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: false
+
+ /fragment-cache/0.2.1:
+ resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-cache: 0.2.2
+ dev: false
+
+ /fs-extra/7.0.1:
+ resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: false
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
+ dev: true
+
+ /gensync/1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /get-stream/6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /get-value/2.0.6:
+ resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /glob-parent/3.1.0:
+ resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
+ dependencies:
+ is-glob: 3.1.0
+ path-dirname: 1.0.2
+ dev: false
+
+ /glob-parent/5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob-parent/6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob-to-regexp/0.3.0:
+ resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==}
+ dev: false
+
+ /glob/7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+
+ /globals/11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /globals/13.20.0:
+ resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+ dev: true
+
+ /globby/11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.2.12
+ ignore: 5.2.4
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ /globby/9.2.0:
+ resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@types/glob': 7.2.0
+ array-union: 1.0.2
+ dir-glob: 2.2.2
+ fast-glob: 2.2.7
+ glob: 7.2.3
+ ignore: 4.0.6
+ pify: 4.0.1
+ slash: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /graceful-fs/4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+ dev: false
+
+ /grapheme-splitter/1.0.4:
+ resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
+ dev: true
+
+ /graphemer/1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ dev: true
+
+ /graphlib/2.1.8:
+ resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==}
+ dependencies:
+ lodash: 4.17.21
+ dev: false
+
+ /gray-matter/4.0.3:
+ resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
+ engines: {node: '>=6.0'}
+ dependencies:
+ js-yaml: 3.14.1
+ kind-of: 6.0.3
+ section-matter: 1.0.0
+ strip-bom-string: 1.0.0
+ dev: false
+
+ /has-flag/3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+
+ /has-flag/4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has-value/0.3.1:
+ resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 0.1.4
+ isobject: 2.1.0
+ dev: false
+
+ /has-value/1.0.0:
+ resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 1.0.0
+ isobject: 3.0.1
+ dev: false
+
+ /has-values/0.1.4:
+ resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /has-values/1.0.0:
+ resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ kind-of: 4.0.0
+ dev: false
+
+ /has/1.0.3:
+ resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: true
+
+ /hash-sum/1.0.2:
+ resolution: {integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==}
+ dev: false
+
+ /highlight.js/10.7.3:
+ resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==}
+ dev: false
+
+ /html-tags/3.3.1:
+ resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /human-signals/2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+ dev: true
+
+ /human-signals/4.3.1:
+ resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
+ engines: {node: '>=14.18.0'}
+ dev: true
+
+ /husky/8.0.3:
+ resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: true
+
+ /iconv-lite/0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: false
+
+ /iconv-lite/0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: false
+
+ /ignore/4.0.6:
+ resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
+ engines: {node: '>= 4'}
+ dev: false
+
+ /ignore/5.2.4:
+ resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /immutable/4.3.0:
+ resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
+ dev: true
+
+ /import-fresh/3.3.0:
+ resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: true
+
+ /imurmurhash/0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+ dev: true
+
+ /indent-string/4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /inflight/1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+
+ /insert-text-at-cursor/0.3.0:
+ resolution: {integrity: sha512-/nPtyeX9xPUvxZf+r0518B7uqNKlP+LqNJqSiXFEaa2T71rWIwTVXGH7hB9xO/EVdwa5/pWlFCPwShOW81XIxQ==}
+ dev: false
+
+ /internmap/2.0.3:
+ resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
+ engines: {node: '>=12'}
+ dev: false
+
+ /is-accessor-descriptor/0.1.6:
+ resolution: {integrity: sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /is-accessor-descriptor/1.0.0:
+ resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: false
+
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-buffer/1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+ dev: false
+
+ /is-core-module/2.12.1:
+ resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ /is-data-descriptor/0.1.4:
+ resolution: {integrity: sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /is-data-descriptor/1.0.0:
+ resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: false
+
+ /is-descriptor/0.1.6:
+ resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-accessor-descriptor: 0.1.6
+ is-data-descriptor: 0.1.4
+ kind-of: 5.1.0
+ dev: false
+
+ /is-descriptor/1.0.2:
+ resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-accessor-descriptor: 1.0.0
+ is-data-descriptor: 1.0.0
+ kind-of: 6.0.3
+ dev: false
+
+ /is-extendable/0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /is-extendable/1.0.1:
+ resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-plain-object: 2.0.4
+ dev: false
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ /is-fullwidth-code-point/3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-fullwidth-code-point/4.0.0:
+ resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /is-glob/3.1.0:
+ resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: false
+
+ /is-glob/4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+
+ /is-number/3.0.0:
+ resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-path-inside/3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-plain-object/2.0.4:
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: false
+
+ /is-stream/2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-stream/3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
+
+ /is-windows/1.0.2:
+ resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /isarray/1.0.0:
+ resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=}
+ dev: false
+
+ /isexe/2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: true
+
+ /isobject/2.1.0:
+ resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isarray: 1.0.0
+ dev: false
+
+ /isobject/3.0.1:
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /javascript-stringify/1.6.0:
+ resolution: {integrity: sha512-fnjC0up+0SjEJtgmmG+teeel68kutkvzfctO/KxE3qJlbunkJYAshgH3boU++gSBHP8z5/r0ts0qRIrHf0RTQQ==}
+ dev: false
+
+ /js-base64/3.7.5:
+ resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==}
+ dev: false
+
+ /js-tokens/4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /js-yaml/3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: false
+
+ /js-yaml/4.1.0:
+ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ dev: true
+
+ /jsesc/2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /json-schema-traverse/0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: true
+
+ /json-stable-stringify-without-jsonify/1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ dev: true
+
+ /json5/2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
+ /jsonc-parser/3.2.0:
+ resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
+ dev: true
+
+ /jsonfile/4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: false
+
+ /katex/0.13.24:
+ resolution: {integrity: sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==}
+ hasBin: true
+ dependencies:
+ commander: 8.3.0
+ dev: false
+
+ /khroma/1.4.1:
+ resolution: {integrity: sha512-+GmxKvmiRuCcUYDgR7g5Ngo0JEDeOsGdNONdU2zsiBQaK4z19Y2NvXqfEDE0ZiIrg45GTZyAnPLVsLZZACYm3Q==}
+ dev: false
+
+ /kind-of/3.2.2:
+ resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: false
+
+ /kind-of/4.0.0:
+ resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: false
+
+ /kind-of/5.1.0:
+ resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /kind-of/6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /kolorist/1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
+ dev: true
+
+ /levn/0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: true
+
+ /lilconfig/2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /linkify-it/2.2.0:
+ resolution: {integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==}
+ dependencies:
+ uc.micro: 1.0.6
+ dev: false
+
+ /linkify-it/3.0.3:
+ resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==}
+ dependencies:
+ uc.micro: 1.0.6
+ dev: false
+
+ /lint-staged/13.2.2:
+ resolution: {integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ hasBin: true
+ dependencies:
+ chalk: 5.2.0
+ cli-truncate: 3.1.0
+ commander: 10.0.1
+ debug: 4.3.4
+ execa: 7.1.1
+ lilconfig: 2.1.0
+ listr2: 5.0.8
+ micromatch: 4.0.5
+ normalize-path: 3.0.0
+ object-inspect: 1.12.3
+ pidtree: 0.6.0
+ string-argv: 0.3.2
+ yaml: 2.2.2
+ transitivePeerDependencies:
+ - enquirer
+ - supports-color
+ dev: true
+
+ /listr2/5.0.8:
+ resolution: {integrity: sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==}
+ engines: {node: ^14.13.1 || >=16.0.0}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ peerDependenciesMeta:
+ enquirer:
+ optional: true
+ dependencies:
+ cli-truncate: 2.1.0
+ colorette: 2.0.20
+ log-update: 4.0.0
+ p-map: 4.0.0
+ rfdc: 1.3.0
+ rxjs: 7.8.1
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
+ /local-pkg/0.4.3:
+ resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
+ engines: {node: '>=14'}
+ dev: true
+
+ /locate-path/6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-locate: 5.0.0
+ dev: true
+
+ /lodash-es/4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+ dev: false
+
+ /lodash-unified/1.0.3_tknf7errc3xdqocd3ryzzla7vq:
+ resolution: {integrity: sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==}
+ peerDependencies:
+ '@types/lodash-es': '*'
+ lodash: '*'
+ lodash-es: '*'
+ dependencies:
+ '@types/lodash-es': 4.17.7
+ lodash: 4.17.21
+ lodash-es: 4.17.21
+ dev: false
+
+ /lodash.merge/4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ /log-update/4.0.0:
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /lru-cache/5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+ dev: true
+
+ /lru-cache/6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /magic-string/0.26.7:
+ resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==}
+ engines: {node: '>=12'}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
+ /magic-string/0.27.0:
+ resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /magic-string/0.30.0:
+ resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ /map-cache/0.2.2:
+ resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /map-visit/1.0.0:
+ resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ object-visit: 1.0.1
+ dev: false
+
+ /markdown-it-anchor/5.3.0_markdown-it@8.4.2:
+ resolution: {integrity: sha512-/V1MnLL/rgJ3jkMWo84UR+K+jF1cxNG1a+KwqeXqTIJ+jtA8aWSHuigx8lTzauiIjBDbwF3NcWQMotd0Dm39jA==}
+ peerDependencies:
+ markdown-it: '*'
+ dependencies:
+ markdown-it: 8.4.2
+ dev: false
+
+ /markdown-it-attrs/4.1.6_markdown-it@12.3.2:
+ resolution: {integrity: sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==}
+ engines: {node: '>=6'}
+ peerDependencies:
+ markdown-it: '>= 9.0.0'
+ dependencies:
+ markdown-it: 12.3.2
+ dev: false
+
+ /markdown-it-chain/1.3.0_markdown-it@8.4.2:
+ resolution: {integrity: sha512-XClV8I1TKy8L2qsT9iX3qiV+50ZtcInGXI80CA+DP62sMs7hXlyV/RM3hfwy5O3Ad0sJm9xIwQELgANfESo8mQ==}
+ engines: {node: '>=6.9'}
+ peerDependencies:
+ markdown-it: '>=5.0.0'
+ dependencies:
+ markdown-it: 8.4.2
+ webpack-chain: 4.12.1
+ dev: false
+
+ /markdown-it-container/3.0.0:
+ resolution: {integrity: sha512-y6oKTq4BB9OQuY/KLfk/O3ysFhB3IMYoIWhGJEidXt1NQFocFK2sA2t0NYZAMyMShAGL6x5OPIbrmXPIqaN9rw==}
+ dev: false
+
+ /markdown-it-emoji/1.4.0:
+ resolution: {integrity: sha512-QCz3Hkd+r5gDYtS2xsFXmBYrgw6KuWcJZLCEkdfAuwzZbShCmCfta+hwAMq4NX/4xPzkSHduMKgMkkPUJxSXNg==}
+ dev: false
+
+ /markdown-it-table-of-contents/0.4.4:
+ resolution: {integrity: sha512-TAIHTHPwa9+ltKvKPWulm/beozQU41Ab+FIefRaQV1NRnpzwcV9QOe6wXQS5WLivm5Q/nlo0rl6laGkMDZE7Gw==}
+ engines: {node: '>6.4.0'}
+ dev: false
+
+ /markdown-it/12.3.2:
+ resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==}
+ hasBin: true
+ dependencies:
+ argparse: 2.0.1
+ entities: 2.1.0
+ linkify-it: 3.0.3
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
+ dev: false
+
+ /markdown-it/8.4.2:
+ resolution: {integrity: sha512-GcRz3AWTqSUphY3vsUqQSFMbgR38a4Lh3GWlHRh/7MRwz8mcu9n2IO7HOh+bXHrR9kOPDl5RNCaEsrneb+xhHQ==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ entities: 1.1.2
+ linkify-it: 2.2.0
+ mdurl: 1.0.1
+ uc.micro: 1.0.6
+ dev: false
+
+ /mdurl/1.0.1:
+ resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==}
+ dev: false
+
+ /memoize-one/6.0.0:
+ resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+ dev: false
+
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ /mermaid/8.14.0:
+ resolution: {integrity: sha512-ITSHjwVaby1Li738sxhF48sLTxcNyUAoWfoqyztL1f7J6JOLpHOuQPNLBb6lxGPUA0u7xP9IRULgvod0dKu35A==}
+ dependencies:
+ '@braintree/sanitize-url': 3.1.0
+ d3: 7.8.4
+ dagre: 0.8.5
+ dagre-d3: 0.6.4
+ dompurify: 2.3.5
+ graphlib: 2.1.8
+ khroma: 1.4.1
+ moment-mini: 2.29.4
+ stylis: 4.2.0
+ dev: false
+
+ /micromatch/3.1.10:
+ resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ braces: 2.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ extglob: 2.0.4
+ fragment-cache: 0.2.1
+ kind-of: 6.0.3
+ nanomatch: 1.2.13
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /micromatch/4.0.5:
+ resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: 2.3.1
+ dev: true
+
+ /mime-db/1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+ dev: false
+
+ /mime-types/2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+ dev: false
+
+ /mimic-fn/2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /mimic-fn/4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+
+ /minimatch/5.1.6:
+ resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
+ engines: {node: '>=10'}
+ dependencies:
+ brace-expansion: 2.0.1
+ dev: true
+
+ /mixin-deep/1.3.2:
+ resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-in: 1.0.2
+ is-extendable: 1.0.1
+ dev: false
+
+ /mlly/1.2.1:
+ resolution: {integrity: sha512-1aMEByaWgBPEbWV2BOPEMySRrzl7rIHXmQxam4DM8jVjalTQDjpN2ZKOLUrwyhfZQO7IXHml2StcHMhooDeEEQ==}
+ dependencies:
+ acorn: 8.8.2
+ pathe: 1.1.0
+ pkg-types: 1.0.3
+ ufo: 1.1.2
+ dev: true
+
+ /moment-mini/2.29.4:
+ resolution: {integrity: sha512-uhXpYwHFeiTbY9KSgPPRoo1nt8OxNVdMVoTBYHfSEKeRkIkwGpO+gERmhuhBtzfaeOyTkykSrm2+noJBgqt3Hg==}
+ dev: false
+
+ /ms/2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+ dev: false
+
+ /ms/2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: true
+
+ /nanoid/3.3.6:
+ resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ /nanomatch/1.2.13:
+ resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ fragment-cache: 0.2.1
+ is-windows: 1.0.2
+ kind-of: 6.0.3
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /natural-compare-lite/1.4.0:
+ resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+ dev: true
+
+ /natural-compare/1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ dev: true
+
+ /node-releases/2.0.11:
+ resolution: {integrity: sha512-+M0PwXeU80kRohZ3aT4J/OnR+l9/KD2nVLNNoRgFtnf+umQVFdGBAO2N8+nCnEi0xlh/Wk3zOGC+vNNx+uM79Q==}
+ dev: true
+
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-wheel-es/1.2.0:
+ resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==}
+ dev: false
+
+ /npm-run-path/4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+ dev: true
+
+ /npm-run-path/5.1.0:
+ resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ path-key: 4.0.0
+ dev: true
+
+ /nth-check/2.1.1:
+ resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+ dependencies:
+ boolbase: 1.0.0
+ dev: true
+
+ /object-copy/0.1.0:
+ resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ copy-descriptor: 0.1.1
+ define-property: 0.2.5
+ kind-of: 3.2.2
+ dev: false
+
+ /object-inspect/1.12.3:
+ resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
+ dev: true
+
+ /object-visit/1.0.1:
+ resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: false
+
+ /object.pick/1.3.0:
+ resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: false
+
+ /once/1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+
+ /onetime/5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
+ /onetime/6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ mimic-fn: 4.0.0
+ dev: true
+
+ /optionator/0.9.1:
+ resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.3
+ dev: true
+
+ /p-limit/3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ yocto-queue: 0.1.0
+ dev: true
+
+ /p-locate/5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
+ dependencies:
+ p-limit: 3.1.0
+ dev: true
+
+ /p-map/4.0.0:
+ resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ aggregate-error: 3.1.0
+ dev: true
+
+ /parent-module/1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+ dev: true
+
+ /pascalcase/0.1.1:
+ resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /path-dirname/1.0.2:
+ resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
+ dev: false
+
+ /path-exists/4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+
+ /path-key/3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-key/4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /path-parse/1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /path-type/3.0.0:
+ resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
+ engines: {node: '>=4'}
+ dependencies:
+ pify: 3.0.0
+ dev: false
+
+ /path-type/4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /pathe/1.1.0:
+ resolution: {integrity: sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==}
+ dev: true
+
+ /picocolors/1.0.0:
+ resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+
+ /picomatch/2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /pidtree/0.6.0:
+ resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+ dev: true
+
+ /pify/3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /pify/4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /pinia/2.1.3_typescript@4.9.5+vue@3.3.4:
+ resolution: {integrity: sha512-XNA/z/ye4P5rU1pieVmh0g/hSuDO98/a5UC8oSP0DNdvt6YtetJNHTrXwpwsQuflkGT34qKxAEcp7lSxXNjf/A==}
+ peerDependencies:
+ '@vue/composition-api': ^1.4.0
+ typescript: '>=4.4.4'
+ vue: ^2.6.14 || ^3.3.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ typescript:
+ optional: true
+ dependencies:
+ '@vue/devtools-api': 6.5.0
+ typescript: 4.9.5
+ vue: 3.3.4
+ vue-demi: 0.14.5_vue@3.3.4
+ dev: false
+
+ /pkg-types/1.0.3:
+ resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
+ dependencies:
+ jsonc-parser: 3.2.0
+ mlly: 1.2.1
+ pathe: 1.1.0
+ dev: true
+
+ /posix-character-classes/0.1.1:
+ resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /postcss-selector-parser/6.0.13:
+ resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /postcss/8.4.23:
+ resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.6
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+
+ /prelude-ls/1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /prettier-linter-helpers/1.0.0:
+ resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ fast-diff: 1.3.0
+ dev: true
+
+ /prettier/2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dev: true
+
+ /prismjs/1.29.0:
+ resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /proxy-from-env/1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+ dev: false
+
+ /punycode/2.3.0:
+ resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /readdirp/3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: 2.3.1
+ dev: true
+
+ /regenerator-runtime/0.13.11:
+ resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==}
+ dev: false
+
+ /regex-not/1.0.2:
+ resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ safe-regex: 1.1.0
+ dev: false
+
+ /repeat-element/1.1.4:
+ resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /repeat-string/1.6.1:
+ resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+ engines: {node: '>=0.10'}
+ dev: false
+
+ /resize-observer-polyfill/1.5.1:
+ resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
+ dev: false
+
+ /resolve-from/4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resolve-url/0.2.1:
+ resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
+ deprecated: https://github.com/lydell/resolve-url#deprecated
+ dev: false
+
+ /resolve/1.22.2:
+ resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.12.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /restore-cursor/3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ dev: true
+
+ /ret/0.1.15:
+ resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
+ engines: {node: '>=0.12'}
+ dev: false
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rfdc/1.3.0:
+ resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==}
+ dev: true
+
+ /rimraf/3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: true
+
+ /robust-predicates/3.0.1:
+ resolution: {integrity: sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==}
+ dev: false
+
+ /rollup/2.79.1:
+ resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /rw/1.3.3:
+ resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==}
+ dev: false
+
+ /rxjs/7.8.1:
+ resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
+ dependencies:
+ tslib: 2.5.2
+ dev: true
+
+ /safe-regex/1.1.0:
+ resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
+ dependencies:
+ ret: 0.1.15
+ dev: false
+
+ /safer-buffer/2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: false
+
+ /sass/1.62.1:
+ resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.5.3
+ immutable: 4.3.0
+ source-map-js: 1.0.2
+ dev: true
+
+ /scule/1.0.0:
+ resolution: {integrity: sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==}
+ dev: true
+
+ /section-matter/1.0.0:
+ resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
+ engines: {node: '>=4'}
+ dependencies:
+ extend-shallow: 2.0.1
+ kind-of: 6.0.3
+ dev: false
+
+ /semver/6.3.0:
+ resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==}
+ hasBin: true
+
+ /semver/7.5.1:
+ resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /set-value/2.0.1:
+ resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-extendable: 0.1.1
+ is-plain-object: 2.0.4
+ split-string: 3.1.0
+ dev: false
+
+ /shebang-command/2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: true
+
+ /shebang-regex/3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /signal-exit/3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
+
+ /slash/2.0.0:
+ resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
+ engines: {node: '>=6'}
+ dev: false
+
+ /slash/3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /slice-ansi/3.0.0:
+ resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi/4.0.0:
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi/5.0.0:
+ resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-styles: 6.2.1
+ is-fullwidth-code-point: 4.0.0
+ dev: true
+
+ /snapdragon-node/2.1.1:
+ resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 1.0.0
+ isobject: 3.0.1
+ snapdragon-util: 3.0.1
+ dev: false
+
+ /snapdragon-util/3.0.1:
+ resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /snapdragon/0.8.2:
+ resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ base: 0.11.2
+ debug: 2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ map-cache: 0.2.2
+ source-map: 0.5.7
+ source-map-resolve: 0.5.3
+ use: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: false
+
+ /source-map-js/1.0.2:
+ resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+ engines: {node: '>=0.10.0'}
+
+ /source-map-resolve/0.5.3:
+ resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
+ deprecated: See https://github.com/lydell/source-map-resolve#deprecated
+ dependencies:
+ atob: 2.1.2
+ decode-uri-component: 0.2.2
+ resolve-url: 0.2.1
+ source-map-url: 0.4.1
+ urix: 0.1.0
+ dev: false
+
+ /source-map-url/0.4.1:
+ resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+ deprecated: See https://github.com/lydell/source-map-url#deprecated
+ dev: false
+
+ /source-map/0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ deprecated: Please use @jridgewell/sourcemap-codec instead
+ dev: true
+
+ /split-string/3.1.0:
+ resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ dev: false
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ dev: false
+
+ /static-extend/0.1.2:
+ resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 0.2.5
+ object-copy: 0.1.0
+ dev: false
+
+ /string-argv/0.3.2:
+ resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
+ /string-width/4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: true
+
+ /string-width/5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.0.1
+ dev: true
+
+ /strip-ansi/6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: true
+
+ /strip-ansi/7.0.1:
+ resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==}
+ engines: {node: '>=12'}
+ dependencies:
+ ansi-regex: 6.0.1
+ dev: true
+
+ /strip-bom-string/1.0.0:
+ resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /strip-final-newline/2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /strip-final-newline/3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /strip-json-comments/3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /strip-literal/1.0.1:
+ resolution: {integrity: sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==}
+ dependencies:
+ acorn: 8.8.2
+ dev: true
+
+ /stylis/4.2.0:
+ resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
+ dev: false
+
+ /supports-color/5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+
+ /supports-color/7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag/1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /svg-tags/1.0.0:
+ resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
+ dev: true
+
+ /text-table/0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ dev: true
+
+ /through/2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ dev: true
+
+ /to-fast-properties/2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+
+ /to-object-path/0.3.0:
+ resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: false
+
+ /to-regex-range/2.1.1:
+ resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ dev: false
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /to-regex/3.0.2:
+ resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ regex-not: 1.0.2
+ safe-regex: 1.1.0
+ dev: false
+
+ /toggle-selection/1.0.6:
+ resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==}
+ dev: false
+
+ /toml/3.0.0:
+ resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==}
+ dev: false
+
+ /tslib/1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: true
+
+ /tslib/2.5.2:
+ resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==}
+ dev: true
+
+ /tsutils/3.21.0_typescript@4.9.5:
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.9.5
+ dev: true
+
+ /type-check/0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: true
+
+ /type-fest/0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest/0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /typescript/4.9.5:
+ resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+
+ /uc.micro/1.0.6:
+ resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==}
+ dev: false
+
+ /ufo/1.1.2:
+ resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==}
+ dev: true
+
+ /unimport/1.3.0:
+ resolution: {integrity: sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==}
+ dependencies:
+ '@rollup/pluginutils': 5.0.2
+ escape-string-regexp: 5.0.0
+ fast-glob: 3.2.12
+ local-pkg: 0.4.3
+ magic-string: 0.27.0
+ mlly: 1.2.1
+ pathe: 1.1.0
+ pkg-types: 1.0.3
+ scule: 1.0.0
+ strip-literal: 1.0.1
+ unplugin: 1.3.1
+ transitivePeerDependencies:
+ - rollup
+ dev: true
+
+ /union-value/1.0.1:
+ resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ get-value: 2.0.6
+ is-extendable: 0.1.1
+ set-value: 2.0.1
+ dev: false
+
+ /universalify/0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: false
+
+ /unplugin-auto-import/0.11.5:
+ resolution: {integrity: sha512-nvbL2AQwLRR8wbHpJ6L1EBVNmjN045RSedTa4NtsGRkSQFXkI1iKHs4dTqJwcKZsnFrZOAKtLPiN1/oQTObLZw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@vueuse/core': '*'
+ peerDependenciesMeta:
+ '@vueuse/core':
+ optional: true
+ dependencies:
+ '@antfu/utils': 0.7.2
+ '@rollup/pluginutils': 5.0.2
+ local-pkg: 0.4.3
+ magic-string: 0.26.7
+ unimport: 1.3.0
+ unplugin: 1.3.1
+ transitivePeerDependencies:
+ - rollup
+ dev: true
+
+ /unplugin-element-plus/0.4.1_vite@3.2.6:
+ resolution: {integrity: sha512-x8L35sppkbtnAf+aSPXNsLPjCUrM0mWKgujqMIgrHiDQaGbpMlNnbN2kjP5CMclykNOw8fUCreEhtxPyzg8tmw==}
+ engines: {node: '>=14.19.0'}
+ dependencies:
+ '@rollup/pluginutils': 4.2.1
+ es-module-lexer: 0.10.5
+ magic-string: 0.26.7
+ unplugin: 0.7.2_vite@3.2.6
+ transitivePeerDependencies:
+ - esbuild
+ - rollup
+ - vite
+ - webpack
+ dev: true
+
+ /unplugin-icons/0.14.15:
+ resolution: {integrity: sha512-J6YBA+fUzVM2IZPXCK3Pnk36jYVwQ6lkjRgOnZaXNIxpMDsmwDqrE1AGJ0zUbfuEoOa90OBGc0OPfN1r+qlSIQ==}
+ peerDependencies:
+ '@svgr/core': '>=5.5.0'
+ '@vue/compiler-sfc': ^3.0.2
+ vue-template-compiler: ^2.6.12
+ vue-template-es2015-compiler: ^1.9.0
+ peerDependenciesMeta:
+ '@svgr/core':
+ optional: true
+ '@vue/compiler-sfc':
+ optional: true
+ vue-template-compiler:
+ optional: true
+ vue-template-es2015-compiler:
+ optional: true
+ dependencies:
+ '@antfu/install-pkg': 0.1.1
+ '@antfu/utils': 0.7.2
+ '@iconify/utils': 2.1.5
+ debug: 4.3.4
+ kolorist: 1.8.0
+ local-pkg: 0.4.3
+ unplugin: 1.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /unplugin-vue-components/0.22.12_vue@3.3.4:
+ resolution: {integrity: sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@babel/parser': ^7.15.8
+ vue: 2 || 3
+ peerDependenciesMeta:
+ '@babel/parser':
+ optional: true
+ dependencies:
+ '@antfu/utils': 0.7.2
+ '@rollup/pluginutils': 5.0.2
+ chokidar: 3.5.3
+ debug: 4.3.4
+ fast-glob: 3.2.12
+ local-pkg: 0.4.3
+ magic-string: 0.27.0
+ minimatch: 5.1.6
+ resolve: 1.22.2
+ unplugin: 1.3.1
+ vue: 3.3.4
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+ dev: true
+
+ /unplugin/0.7.2_vite@3.2.6:
+ resolution: {integrity: sha512-m7thX4jP8l5sETpLdUASoDOGOcHaOVtgNyrYlToyQUvILUtEzEnngRBrHnAX3IKqooJVmXpoa/CwQ/QqzvGaHQ==}
+ peerDependencies:
+ esbuild: '>=0.13'
+ rollup: ^2.50.0
+ vite: ^2.3.0 || ^3.0.0-0
+ webpack: 4 || 5
+ peerDependenciesMeta:
+ esbuild:
+ optional: true
+ rollup:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+ dependencies:
+ acorn: 8.8.2
+ chokidar: 3.5.3
+ vite: 3.2.6_3cl3pib2kx7jaftbqhg3ux7t34
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.4.6
+ dev: true
+
+ /unplugin/1.3.1:
+ resolution: {integrity: sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==}
+ dependencies:
+ acorn: 8.8.2
+ chokidar: 3.5.3
+ webpack-sources: 3.2.3
+ webpack-virtual-modules: 0.5.0
+ dev: true
+
+ /unset-value/1.0.0:
+ resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ has-value: 0.3.1
+ isobject: 3.0.1
+ dev: false
+
+ /upath/1.2.0:
+ resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
+ engines: {node: '>=4'}
+ dev: false
+
+ /update-browserslist-db/1.0.11_browserslist@4.21.5:
+ resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.21.5
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: true
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.3.0
+ dev: true
+
+ /urix/0.1.0:
+ resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
+ deprecated: Please see https://github.com/lydell/urix#deprecated
+ dev: false
+
+ /use/3.1.1:
+ resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ /util-deprecate/1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ dev: true
+
+ /vant/3.6.11_vue@3.3.4:
+ resolution: {integrity: sha512-ueEu4rOePQUoeP6mjuVHogmg3t05yejrYkFCG/NMWY2haOscvQTFGDVuUazmNdjgizqL1D9rH6xV0qy2aRWF9Q==}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ '@vant/icons': 1.8.0
+ '@vant/popperjs': 1.3.0
+ '@vant/use': 1.5.1_vue@3.3.4
+ vue: 3.3.4
+ dev: false
+
+ /vite/3.2.6_3cl3pib2kx7jaftbqhg3ux7t34:
+ resolution: {integrity: sha512-nTXTxYVvaQNLoW5BQ8PNNQ3lPia57gzsQU/Khv+JvzKPku8kNZL6NMUR/qwXhMG6E+g1idqEPanomJ+VZgixEg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ '@types/node': 18.16.14
+ esbuild: 0.15.18
+ postcss: 8.4.23
+ resolve: 1.22.2
+ rollup: 2.79.1
+ sass: 1.62.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /vue-demi/0.14.5_vue@3.3.4:
+ resolution: {integrity: sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ vue: 3.3.4
+ dev: false
+
+ /vue-eslint-parser/9.3.0_eslint@8.41.0:
+ resolution: {integrity: sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ debug: 4.3.4
+ eslint: 8.41.0
+ eslint-scope: 7.2.0
+ eslint-visitor-keys: 3.4.1
+ espree: 9.5.2
+ esquery: 1.5.0
+ lodash: 4.17.21
+ semver: 7.5.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /vue-i18n/9.2.2_vue@3.3.4:
+ resolution: {integrity: sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ '@intlify/core-base': 9.2.2
+ '@intlify/shared': 9.2.2
+ '@intlify/vue-devtools': 9.2.2
+ '@vue/devtools-api': 6.5.0
+ vue: 3.3.4
+ dev: false
+
+ /vue-router/4.2.1_vue@3.3.4:
+ resolution: {integrity: sha512-nW28EeifEp8Abc5AfmAShy5ZKGsGzjcnZ3L1yc2DYUo+MqbBClrRP9yda3dIekM4I50/KnEwo1wkBLf7kHH5Cw==}
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@vue/devtools-api': 6.5.0
+ vue: 3.3.4
+ dev: false
+
+ /vue-tsc/0.40.13_typescript@4.9.5:
+ resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==}
+ hasBin: true
+ peerDependencies:
+ typescript: '*'
+ dependencies:
+ '@volar/vue-language-core': 0.40.13
+ '@volar/vue-typescript': 0.40.13
+ typescript: 4.9.5
+ dev: true
+
+ /vue/3.3.4:
+ resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
+ dependencies:
+ '@vue/compiler-dom': 3.3.4
+ '@vue/compiler-sfc': 3.3.4
+ '@vue/runtime-dom': 3.3.4
+ '@vue/server-renderer': 3.3.4_vue@3.3.4
+ '@vue/shared': 3.3.4
+
+ /vue3-slide-verify/1.1.4:
+ resolution: {integrity: sha512-er2d9TSPsF5CcmoxBfP6eSkc4IHROwXu6Ytghkwf52apXpXy2ZtW3tOgHnmFWb3GHESKxZ9bsFXqSX+fJ6hjrg==}
+ dependencies:
+ vue: 3.3.4
+ dev: false
+
+ /webpack-chain/4.12.1:
+ resolution: {integrity: sha512-BCfKo2YkDe2ByqkEWe1Rw+zko4LsyS75LVr29C6xIrxAg9JHJ4pl8kaIZ396SUSNp6b4815dRZPSTAS8LlURRQ==}
+ dependencies:
+ deepmerge: 1.5.2
+ javascript-stringify: 1.6.0
+ dev: false
+
+ /webpack-sources/3.2.3:
+ resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
+ engines: {node: '>=10.13.0'}
+ dev: true
+
+ /webpack-virtual-modules/0.4.6:
+ resolution: {integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==}
+ dev: true
+
+ /webpack-virtual-modules/0.5.0:
+ resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==}
+ dev: true
+
+ /which/2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /word-wrap/1.2.3:
+ resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /wrap-ansi/6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /wrap-ansi/7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /wrappy/1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+
+ /xml-name-validator/4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /xss/1.0.14:
+ resolution: {integrity: sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==}
+ engines: {node: '>= 0.10.0'}
+ hasBin: true
+ dependencies:
+ commander: 2.20.3
+ cssfilter: 0.0.10
+ dev: false
+
+ /yallist/3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: true
+
+ /yallist/4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: true
+
+ /yaml/2.2.2:
+ resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==}
+ engines: {node: '>= 14'}
+ dev: true
+
+ /yocto-queue/0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: true
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..aec5a877df4c405962ad807c17925983684b129b
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000000000000000000000000000000000000..de591316beaf0c44037a994442b454d81f4eb527
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/api/api-login.ts b/src/api/api-login.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ce6537e84b45388ee3f911b69c97a46687a7c83e
--- /dev/null
+++ b/src/api/api-login.ts
@@ -0,0 +1,68 @@
+/**
+ * @file 登录接口配置文件
+ * */
+
+import { request } from '@/shared/axios';
+import type { AxiosResponse } from '@/shared/axios';
+import { getUserAuth } from '@/shared/login';
+import { ElMessage } from 'element-plus';
+
+/**
+ * 获取授权的相关回调链接
+ */
+
+const params = {
+ community: 'opengauss',
+ client_id: '90aa315f895544359209920da32ff75a',
+};
+export function queryPermission() {
+ const url = '/api-omapi/oneid/personal/center/user';
+ const { token } = getUserAuth();
+
+ return request
+ .get(url, {
+ params,
+ global: true,
+ $doException: true,
+ headers: {
+ token,
+ },
+ })
+ .then((res: AxiosResponse) => res.data)
+ .catch((err) => {
+ const message = err?.response?.data?.message || '';
+ if (message && message !== 'token expires') {
+ ElMessage({
+ type: 'error',
+ message: err.message,
+ });
+ }
+ });
+}
+
+/**
+ * 获取idtoken用于退出
+ */
+
+export function queryIDToken() {
+ const url = '/api-omapi/oneid/logout';
+ const { token } = getUserAuth();
+ return request
+ .get(url, {
+ params,
+ $doException: true,
+ headers: {
+ token,
+ },
+ })
+ .then((res: AxiosResponse) => res.data)
+ .catch((err) => {
+ const message = err?.response?.data?.message || '';
+ if (message && message !== 'token expires') {
+ ElMessage({
+ type: 'error',
+ message: err.message,
+ });
+ }
+ });
+}
diff --git a/src/api/api-quick-issue.ts b/src/api/api-quick-issue.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1971e2bcec0bd8c706565c96d8448ad404eda3c1
--- /dev/null
+++ b/src/api/api-quick-issue.ts
@@ -0,0 +1,187 @@
+import { request } from '@/shared/axios';
+import type { AxiosResponse } from '@/shared/axios';
+import { IssueQueryData } from '@/shared/@types/type-quick-issue';
+import { getAuthorization } from '@/shared/utils';
+
+function getHeaderConfig() {
+ const headersConfig = {
+ headers: {
+ authorization: getAuthorization(),
+ },
+ };
+ return headersConfig;
+}
+/**
+ * 获取issue 数据
+ * @name getRepoIssue
+ * @return {Array}
+ */
+export function getRepoIssue(params: IssueQueryData) {
+ const url = '/api-issues/issues/';
+ params = JSON.parse(JSON.stringify(params));
+ if (
+ Array.isArray(params.label) &&
+ Array.isArray(params.issue_state) &&
+ Array.isArray(params.exclusion) &&
+ Array.isArray(params.milestone)
+ ) {
+ params.exclusion = params.exclusion.join(',');
+ params.label = params.label.join(',');
+ params.issue_state = params.issue_state.join(',');
+ params.milestone = params.milestone.join(',');
+ }
+ return request
+ .get(url, { params })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+/**
+ * 获取筛选条件
+ * @name getRepoIssue
+ * @return {Array}
+ */
+export function getIssueSelectOption(type: string, params: object | null) {
+ type === 'exLabels' ? (type = 'labels') : '';
+ const url = `/api-issues/issues/${type}`;
+ return request
+ .get(url, { params })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+
+/**
+ * 上传 issue 图片
+ * @name uploadIssueImage
+ * @return {String}
+ */
+export function uploadIssueImage(params: object) {
+ const url = '/api-issues/image/';
+ return request
+ .post(url, params, {
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ authorization: getAuthorization(),
+ },
+ })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+
+/**
+ * issue 提交邮箱验证
+ * @name getRepoIssue
+ * @return {String}
+ */
+export function verifySubmitterEmail(params: object) {
+ const url = '/api-issues/verify/';
+
+ return request
+ .post(url, params, getHeaderConfig())
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+/**
+ * sig仓库查找
+ * @name getRepoIssue
+ * @return {String}
+ */
+export function getReposData(params: object) {
+ const url = `/api-issues/repos/`;
+ return request
+ .get(url, { params })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+/**
+ * 创建issue
+ * @name getRepoIssue
+ * @return {String}
+ */
+export function createIssue(params: object) {
+ const url = `/api-issues/new-issue/`;
+ return request
+ .post(url, params, getHeaderConfig())
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+
+/**
+ * 上传 文件
+ * @name uploadFile
+ * @return {String}
+ */
+export function uploadIssueFile(params: object) {
+ const url = '/api-issues/attachment/';
+ return request
+ .post(url, params, {
+ headers: {
+ 'Content-Type': 'multipart/form-data',
+ authorization: getAuthorization(),
+ },
+ })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+/**
+ * 获取pull 数据
+ * @name getLabelColors
+ * @return {Array}
+ */
+export function getLabelColors() {
+ const url = '/api-issues/colors';
+ return request
+ .get(url)
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+/**
+ * 获取pull 数据
+ * @name getRepoPull
+ * @return {Array}
+ */
+export function getRepoPull(params: any) {
+ const url = '/api-issues/pulls';
+ params = JSON.parse(JSON.stringify(params));
+ if (typeof params.label === 'object' && typeof params.state === 'object') {
+ params.label = params.label.join(',');
+ params.state = params.state.join(',');
+ params.exclusion = params.exclusion.join(',');
+ }
+ return request
+ .get(url, { params })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
+/**
+ * 获取筛选条件
+ * @name getPrSelectOption
+ * @return {Array}
+ */
+export function getPrSelectOption(type: string, params: object | null) {
+ type === 'exLabels' ? (type = 'labels') : '';
+ const url = `/api-issues/pulls/${type}`;
+ return request
+ .get(url, { params })
+ .then((res: AxiosResponse) => res?.data)
+ .catch((e: any) => {
+ console.error(e);
+ });
+}
diff --git a/src/api/api-sig.ts b/src/api/api-sig.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c2d7ef77935a6f6d1de755909885d798b8344b54
--- /dev/null
+++ b/src/api/api-sig.ts
@@ -0,0 +1,71 @@
+import { request } from '@/shared/axios';
+import type { AxiosResponse } from '@/shared/axios';
+import { FeatureInfo, GroupInfo } from '@/shared/@types/type-sig';
+/**
+ * 获取sig landscape
+ * @returns {Promise}
+ */
+export function getSigLandscape(lang: string): Promise {
+ const url = '/api-dsapi/query/sig/scoreAll?community=opengauss';
+ return request.get(url).then((res: AxiosResponse) => {
+ const data = res.data?.data;
+
+ const info: GroupInfo[] = [];
+ for (let i = 0, len = data.length; i < len; i++) {
+ const item = data[i];
+ lang === 'zh'
+ ? ''
+ : ((item.group = item.en_group), (item.feature = item.en_feature));
+ if (item.group === '' && item.feature === '') {
+ continue;
+ }
+
+ if (
+ !info.find((group: GroupInfo) => {
+ return group.groupName === item.group;
+ })
+ ) {
+ info.push({
+ groupName: item.group,
+ features: [],
+ });
+ }
+
+ const groupInfo: GroupInfo | undefined = info.find((group: GroupInfo) => {
+ return group.groupName === item.group;
+ });
+
+ if (
+ !groupInfo?.features.find((feature: any) => {
+ return feature.featureName === item.feature;
+ })
+ ) {
+ groupInfo?.features.push({
+ featureName: item.feature,
+ sigs: [],
+ });
+ }
+
+ const featureInfo: FeatureInfo | undefined = groupInfo?.features.find(
+ (feature: FeatureInfo) => {
+ return feature.featureName === item.feature;
+ }
+ );
+ featureInfo?.sigs.push(item.sig_names);
+ }
+ info.sort((b: GroupInfo, a: GroupInfo) => {
+ return a.features.length - b.features.length;
+ });
+ info.forEach((group: GroupInfo) => {
+ group.features.sort((b: FeatureInfo, a: FeatureInfo) => {
+ return a.sigs.length - b.sigs.length;
+ });
+ group.features.forEach((feature: FeatureInfo) => {
+ feature.sigs.sort((b: string, a: string) => {
+ return b.toLowerCase().localeCompare(a);
+ });
+ });
+ });
+ return info;
+ });
+}
diff --git a/src/assets/category/quick-issue/quick-bg.jpg b/src/assets/category/quick-issue/quick-bg.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ce2a0fd5fc4f2360b104dc0ecebc91690b940a0e
Binary files /dev/null and b/src/assets/category/quick-issue/quick-bg.jpg differ
diff --git a/src/assets/category/verify/img1.jpg b/src/assets/category/verify/img1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..ce43f174e54e20549c4cda2dfde0ed579fc21a7d
Binary files /dev/null and b/src/assets/category/verify/img1.jpg differ
diff --git a/src/assets/category/verify/img2.jpg b/src/assets/category/verify/img2.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..1a3bd6d5b142c0dd951b59773bf84a29c800bd3e
Binary files /dev/null and b/src/assets/category/verify/img2.jpg differ
diff --git a/src/assets/category/verify/img3.jpg b/src/assets/category/verify/img3.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..165d36f3e61db2d563f10d93eb64f13cce06f90a
Binary files /dev/null and b/src/assets/category/verify/img3.jpg differ
diff --git a/src/assets/category/verify/img4.jpg b/src/assets/category/verify/img4.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2046128c3fb02224eeed15b1066b119e40134144
Binary files /dev/null and b/src/assets/category/verify/img4.jpg differ
diff --git a/src/assets/category/verify/img5.jpg b/src/assets/category/verify/img5.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..fb4b61502c326b8c0832a618c4847290cc11d7de
Binary files /dev/null and b/src/assets/category/verify/img5.jpg differ
diff --git a/src/assets/category/verify/img6.jpg b/src/assets/category/verify/img6.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c13bb90e7369abf2d0c9c812bb4b2039cac04d9a
Binary files /dev/null and b/src/assets/category/verify/img6.jpg differ
diff --git a/src/assets/footer-logo1.png b/src/assets/footer-logo1.png
new file mode 100644
index 0000000000000000000000000000000000000000..80f97536b255acb11f11412c2ee3b3a836e21a43
Binary files /dev/null and b/src/assets/footer-logo1.png differ
diff --git a/src/assets/footer/bilibili.png b/src/assets/footer/bilibili.png
new file mode 100644
index 0000000000000000000000000000000000000000..11bb133e1f8e6e1471571edd053ea63828fca302
Binary files /dev/null and b/src/assets/footer/bilibili.png differ
diff --git a/src/assets/footer/csdn.png b/src/assets/footer/csdn.png
new file mode 100644
index 0000000000000000000000000000000000000000..0fe4ceec8e87570defebc1357a8f72aabac4ea6a
Binary files /dev/null and b/src/assets/footer/csdn.png differ
diff --git a/src/assets/footer/cto.png b/src/assets/footer/cto.png
new file mode 100644
index 0000000000000000000000000000000000000000..6a8e658d5f8274080fee699f29fa0d961ab5ced6
Binary files /dev/null and b/src/assets/footer/cto.png differ
diff --git a/src/assets/footer/footer-bg-mo.png b/src/assets/footer/footer-bg-mo.png
new file mode 100644
index 0000000000000000000000000000000000000000..6e527ca485015a15ad0fb0f497ef9f43053092d8
Binary files /dev/null and b/src/assets/footer/footer-bg-mo.png differ
diff --git a/src/assets/footer/footer-bg.png b/src/assets/footer/footer-bg.png
new file mode 100644
index 0000000000000000000000000000000000000000..7d1337c78284795708a7108be3999001a2adc279
Binary files /dev/null and b/src/assets/footer/footer-bg.png differ
diff --git a/src/assets/footer/footer-logo.svg b/src/assets/footer/footer-logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..3729c7f38941deb5e76e4022a1ae1cb972ec3ac6
--- /dev/null
+++ b/src/assets/footer/footer-logo.svg
@@ -0,0 +1,34 @@
+
+
\ No newline at end of file
diff --git a/src/assets/footer/infoq.png b/src/assets/footer/infoq.png
new file mode 100644
index 0000000000000000000000000000000000000000..935607e636aad30d952614befe1adb34c6c33e14
Binary files /dev/null and b/src/assets/footer/infoq.png differ
diff --git a/src/assets/footer/modb.png b/src/assets/footer/modb.png
new file mode 100644
index 0000000000000000000000000000000000000000..19b18c7e09fd1b67a682b0e41798f5fe13d3c886
Binary files /dev/null and b/src/assets/footer/modb.png differ
diff --git a/src/assets/footer/oschina.png b/src/assets/footer/oschina.png
new file mode 100644
index 0000000000000000000000000000000000000000..93d459c054b3f33f88a4d2d0ff9978c3dbc96196
Binary files /dev/null and b/src/assets/footer/oschina.png differ
diff --git a/src/assets/footer/wechat.png b/src/assets/footer/wechat.png
new file mode 100644
index 0000000000000000000000000000000000000000..675383a4666ef3d350cceca9e8014efd6d4a3ecc
Binary files /dev/null and b/src/assets/footer/wechat.png differ
diff --git a/src/assets/footer/zhihu.png b/src/assets/footer/zhihu.png
new file mode 100644
index 0000000000000000000000000000000000000000..dad400f9ce825dc89a62d75859150ebe52c59138
Binary files /dev/null and b/src/assets/footer/zhihu.png differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..eb7b8af86025b8f27fa3b2539300b24a0487895f
Binary files /dev/null and b/src/assets/logo.png differ
diff --git a/src/assets/logo.svg b/src/assets/logo.svg
new file mode 100644
index 0000000000000000000000000000000000000000..291baca7d896b6d9ed122e9574f880cc9da48463
--- /dev/null
+++ b/src/assets/logo.svg
@@ -0,0 +1,29 @@
+
+
\ No newline at end of file
diff --git a/src/assets/logo_dark.png b/src/assets/logo_dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..76d8bbf67d605e448c61450bd4db86daf539737a
Binary files /dev/null and b/src/assets/logo_dark.png differ
diff --git a/src/assets/logo_dark.svg b/src/assets/logo_dark.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c13a22f49ac9c40c2d2fba85bc7614daad9dfbe2
--- /dev/null
+++ b/src/assets/logo_dark.svg
@@ -0,0 +1,29 @@
+
+
\ No newline at end of file
diff --git a/src/assets/opengauss-logo.png b/src/assets/opengauss-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..5cef065c38db8854e3c78c3f1009355943401c9d
Binary files /dev/null and b/src/assets/opengauss-logo.png differ
diff --git a/src/assets/qrcode.png b/src/assets/qrcode.png
new file mode 100644
index 0000000000000000000000000000000000000000..ea524b978506fb77676aee485d468f2af3abd51a
Binary files /dev/null and b/src/assets/qrcode.png differ
diff --git a/src/assets/quickissue-logo.png b/src/assets/quickissue-logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..0da6e43d0b6e3458338008b681783ea4fad596c0
Binary files /dev/null and b/src/assets/quickissue-logo.png differ
diff --git a/src/assets/svg-icons/icon-add.svg b/src/assets/svg-icons/icon-add.svg
new file mode 100644
index 0000000000000000000000000000000000000000..de17cbdc97bf23a2ccd38cdb0ae87a9b1c767f6d
--- /dev/null
+++ b/src/assets/svg-icons/icon-add.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-arrow-left.svg b/src/assets/svg-icons/icon-arrow-left.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e0392c33c67fa4cfb48c2fabd07a183b9c751b82
--- /dev/null
+++ b/src/assets/svg-icons/icon-arrow-left.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-arrow-right.svg b/src/assets/svg-icons/icon-arrow-right.svg
new file mode 100644
index 0000000000000000000000000000000000000000..fe354712fa0b695bcec903346b4b22c1a0597e7d
--- /dev/null
+++ b/src/assets/svg-icons/icon-arrow-right.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-arrow-traingle-down.svg b/src/assets/svg-icons/icon-arrow-traingle-down.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c47b18d3daab5bd50578996e942bd3c3a848ead5
--- /dev/null
+++ b/src/assets/svg-icons/icon-arrow-traingle-down.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-arrow-traingle-left.svg b/src/assets/svg-icons/icon-arrow-traingle-left.svg
new file mode 100644
index 0000000000000000000000000000000000000000..27b72d68c910365f00aaa9a1ff97c877163e1f8a
--- /dev/null
+++ b/src/assets/svg-icons/icon-arrow-traingle-left.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-arrow-traingle-right.svg b/src/assets/svg-icons/icon-arrow-traingle-right.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b13302ad7a91fb736b2c6249a296445263103033
--- /dev/null
+++ b/src/assets/svg-icons/icon-arrow-traingle-right.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-arrow-traingle-up.svg b/src/assets/svg-icons/icon-arrow-traingle-up.svg
new file mode 100644
index 0000000000000000000000000000000000000000..3eb80e7ad5be628156f64f4dae1b170c1ebef2c7
--- /dev/null
+++ b/src/assets/svg-icons/icon-arrow-traingle-up.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/src/assets/svg-icons/icon-browse.svg b/src/assets/svg-icons/icon-browse.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0d2f29bb551b6bc099a572feee3c47e2a964a73b
--- /dev/null
+++ b/src/assets/svg-icons/icon-browse.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-calendar.svg b/src/assets/svg-icons/icon-calendar.svg
new file mode 100644
index 0000000000000000000000000000000000000000..fcc7b24701568aa76cee47f8045476be08655a99
--- /dev/null
+++ b/src/assets/svg-icons/icon-calendar.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-cancel-solid.svg b/src/assets/svg-icons/icon-cancel-solid.svg
new file mode 100644
index 0000000000000000000000000000000000000000..43f8b5dfbf721fe892323368b78a9553dd4f6b32
--- /dev/null
+++ b/src/assets/svg-icons/icon-cancel-solid.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-cancel.svg b/src/assets/svg-icons/icon-cancel.svg
new file mode 100644
index 0000000000000000000000000000000000000000..d739028ec0ed16920265d40e2973213e79a2ee37
--- /dev/null
+++ b/src/assets/svg-icons/icon-cancel.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-checked.svg b/src/assets/svg-icons/icon-checked.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1ed90de5901b8b5b231d6aac0345ca93b6032781
--- /dev/null
+++ b/src/assets/svg-icons/icon-checked.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/assets/svg-icons/icon-chevron-down.svg b/src/assets/svg-icons/icon-chevron-down.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f7ab44679c94dc6d46fae0d3944ed60ea3292384
--- /dev/null
+++ b/src/assets/svg-icons/icon-chevron-down.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icons/icon-chevron-left.svg b/src/assets/svg-icons/icon-chevron-left.svg
new file mode 100644
index 0000000000000000000000000000000000000000..52bee9e625bf4877fca2baa1040c22bc0a8de792
--- /dev/null
+++ b/src/assets/svg-icons/icon-chevron-left.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-chevron-right.svg b/src/assets/svg-icons/icon-chevron-right.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b2ddf739080111e1adea1e197ebc8bb677561ae1
--- /dev/null
+++ b/src/assets/svg-icons/icon-chevron-right.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-chevron-up.svg b/src/assets/svg-icons/icon-chevron-up.svg
new file mode 100644
index 0000000000000000000000000000000000000000..29bd404e011e6742092abf06e7c9ed4553c1d88a
--- /dev/null
+++ b/src/assets/svg-icons/icon-chevron-up.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-comment.svg b/src/assets/svg-icons/icon-comment.svg
new file mode 100644
index 0000000000000000000000000000000000000000..bcfad8936e59da9d3f5e5092753fb1b9d393bd5b
--- /dev/null
+++ b/src/assets/svg-icons/icon-comment.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-copy.svg b/src/assets/svg-icons/icon-copy.svg
new file mode 100644
index 0000000000000000000000000000000000000000..b04681aea05166828b515b73d143e8ada073ea78
--- /dev/null
+++ b/src/assets/svg-icons/icon-copy.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-delete.svg b/src/assets/svg-icons/icon-delete.svg
new file mode 100644
index 0000000000000000000000000000000000000000..40827cd99252d65b4fabb76dac3d903ba4096f28
--- /dev/null
+++ b/src/assets/svg-icons/icon-delete.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-dividers.svg b/src/assets/svg-icons/icon-dividers.svg
new file mode 100644
index 0000000000000000000000000000000000000000..2509bf149701da458ac9bf8a28772a3602734087
--- /dev/null
+++ b/src/assets/svg-icons/icon-dividers.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-doc.svg b/src/assets/svg-icons/icon-doc.svg
new file mode 100644
index 0000000000000000000000000000000000000000..44b0f8077fb0a13a8b148150cb30659c5f7d44df
--- /dev/null
+++ b/src/assets/svg-icons/icon-doc.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-done-outline.svg b/src/assets/svg-icons/icon-done-outline.svg
new file mode 100644
index 0000000000000000000000000000000000000000..22d49d60e97a539b8dde8004b9e335bfc95caa0a
--- /dev/null
+++ b/src/assets/svg-icons/icon-done-outline.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-done-solid.svg b/src/assets/svg-icons/icon-done-solid.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e17ccdb885cd7fe376a899d10a231118483bb7d3
--- /dev/null
+++ b/src/assets/svg-icons/icon-done-solid.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-done.svg b/src/assets/svg-icons/icon-done.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e295ef2ed58c49e901e3621414a6ef6b1f43c0e3
--- /dev/null
+++ b/src/assets/svg-icons/icon-done.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-download.svg b/src/assets/svg-icons/icon-download.svg
new file mode 100644
index 0000000000000000000000000000000000000000..fc5d0ab85ec1ab679da23f72f8467edda9c37618
--- /dev/null
+++ b/src/assets/svg-icons/icon-download.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-ellipsis.svg b/src/assets/svg-icons/icon-ellipsis.svg
new file mode 100644
index 0000000000000000000000000000000000000000..a55a52f95f44de9d9ee7b77e0cede26cf5b92cc3
--- /dev/null
+++ b/src/assets/svg-icons/icon-ellipsis.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/assets/svg-icons/icon-filter.svg b/src/assets/svg-icons/icon-filter.svg
new file mode 100644
index 0000000000000000000000000000000000000000..e5ce5f489df32d6fcc848ffe2d324f2ced8a8cc2
--- /dev/null
+++ b/src/assets/svg-icons/icon-filter.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-gitee.svg b/src/assets/svg-icons/icon-gitee.svg
new file mode 100644
index 0000000000000000000000000000000000000000..fb85c6404d25763cbdd51161c192acc4f6f504c0
--- /dev/null
+++ b/src/assets/svg-icons/icon-gitee.svg
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icons/icon-home.svg b/src/assets/svg-icons/icon-home.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7da985cf194139603e3923b3da34580d197a5fdc
--- /dev/null
+++ b/src/assets/svg-icons/icon-home.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-link.svg b/src/assets/svg-icons/icon-link.svg
new file mode 100644
index 0000000000000000000000000000000000000000..3414d33f1d0d240af2831409175c8da9cbe847eb
--- /dev/null
+++ b/src/assets/svg-icons/icon-link.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-live-streaming.svg b/src/assets/svg-icons/icon-live-streaming.svg
new file mode 100644
index 0000000000000000000000000000000000000000..8212eddb77ca8451ec8ff8138d1091f529017184
--- /dev/null
+++ b/src/assets/svg-icons/icon-live-streaming.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-login.svg b/src/assets/svg-icons/icon-login.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4a61fba22a3e946c1d90ab75ac29906ef1f737e1
--- /dev/null
+++ b/src/assets/svg-icons/icon-login.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icons/icon-mail.svg b/src/assets/svg-icons/icon-mail.svg
new file mode 100644
index 0000000000000000000000000000000000000000..7d799b7d4c631216ca49d46e4eb156ff967aa797
--- /dev/null
+++ b/src/assets/svg-icons/icon-mail.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icons/icon-map-pin.svg b/src/assets/svg-icons/icon-map-pin.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1b38890c84e2d79381a4128a17c20fb4ab1909ce
--- /dev/null
+++ b/src/assets/svg-icons/icon-map-pin.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-menu.svg b/src/assets/svg-icons/icon-menu.svg
new file mode 100644
index 0000000000000000000000000000000000000000..312f46bad88450784f69023d49fd581e835f4a15
--- /dev/null
+++ b/src/assets/svg-icons/icon-menu.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-moon-outline.svg b/src/assets/svg-icons/icon-moon-outline.svg
new file mode 100644
index 0000000000000000000000000000000000000000..2252db7a18fe189d6fa46057acfd6ab1fd6b6377
--- /dev/null
+++ b/src/assets/svg-icons/icon-moon-outline.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-moon-solid.svg b/src/assets/svg-icons/icon-moon-solid.svg
new file mode 100644
index 0000000000000000000000000000000000000000..290fb5f388a464e35c84116c9f5e1c59ecff4d2a
--- /dev/null
+++ b/src/assets/svg-icons/icon-moon-solid.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-more.svg b/src/assets/svg-icons/icon-more.svg
new file mode 100644
index 0000000000000000000000000000000000000000..c5b5317faa1f5d9a9071b145c3a2f48e98e891c4
--- /dev/null
+++ b/src/assets/svg-icons/icon-more.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-pulldown.svg b/src/assets/svg-icons/icon-pulldown.svg
new file mode 100644
index 0000000000000000000000000000000000000000..10685a6f586b117f6934c4c5b2b5e95fb7224f9c
--- /dev/null
+++ b/src/assets/svg-icons/icon-pulldown.svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/src/assets/svg-icons/icon-refresh.svg b/src/assets/svg-icons/icon-refresh.svg
new file mode 100644
index 0000000000000000000000000000000000000000..2acdac4c4bfb0d5071107068f8376257f1691d7a
--- /dev/null
+++ b/src/assets/svg-icons/icon-refresh.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-required-fields.svg b/src/assets/svg-icons/icon-required-fields.svg
new file mode 100644
index 0000000000000000000000000000000000000000..af1ab576e46ca26740bf72707f90280ed808dc80
--- /dev/null
+++ b/src/assets/svg-icons/icon-required-fields.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-search.svg b/src/assets/svg-icons/icon-search.svg
new file mode 100644
index 0000000000000000000000000000000000000000..846548ace11935cdba25d0444c7dcf40c44ec565
--- /dev/null
+++ b/src/assets/svg-icons/icon-search.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-setting.svg b/src/assets/svg-icons/icon-setting.svg
new file mode 100644
index 0000000000000000000000000000000000000000..787c08346b212bfbc2c812ffedd8fa920c46a418
--- /dev/null
+++ b/src/assets/svg-icons/icon-setting.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/src/assets/svg-icons/icon-star-outlined.svg b/src/assets/svg-icons/icon-star-outlined.svg
new file mode 100644
index 0000000000000000000000000000000000000000..edcc7c2fef7601dcc4803ed29630171fbbbb1d1b
--- /dev/null
+++ b/src/assets/svg-icons/icon-star-outlined.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-star-solid.svg b/src/assets/svg-icons/icon-star-solid.svg
new file mode 100644
index 0000000000000000000000000000000000000000..aedbbb1b64ebbacacd6aa3995ca3b9a7a3876d05
--- /dev/null
+++ b/src/assets/svg-icons/icon-star-solid.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-sun-outline.svg b/src/assets/svg-icons/icon-sun-outline.svg
new file mode 100644
index 0000000000000000000000000000000000000000..eb55e9797f66427d52291c243b2e4011725f1167
--- /dev/null
+++ b/src/assets/svg-icons/icon-sun-outline.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-sun-solid.svg b/src/assets/svg-icons/icon-sun-solid.svg
new file mode 100644
index 0000000000000000000000000000000000000000..478413aaf74f2acf09b9c8546b94749e5f24d36a
--- /dev/null
+++ b/src/assets/svg-icons/icon-sun-solid.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-tag.svg b/src/assets/svg-icons/icon-tag.svg
new file mode 100644
index 0000000000000000000000000000000000000000..98b1a28227df5563a47733c026b9190481450f1d
--- /dev/null
+++ b/src/assets/svg-icons/icon-tag.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-time.svg b/src/assets/svg-icons/icon-time.svg
new file mode 100644
index 0000000000000000000000000000000000000000..314459da80eaf79aefc03aceeedc9779f550e590
--- /dev/null
+++ b/src/assets/svg-icons/icon-time.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-tips.svg b/src/assets/svg-icons/icon-tips.svg
new file mode 100644
index 0000000000000000000000000000000000000000..353019407e50a7ff8e342b499dcc98abce0bcbcf
--- /dev/null
+++ b/src/assets/svg-icons/icon-tips.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-toggle-off.svg b/src/assets/svg-icons/icon-toggle-off.svg
new file mode 100644
index 0000000000000000000000000000000000000000..0649a7e4dd595b8d7fa349c234b67b2fb6db8922
--- /dev/null
+++ b/src/assets/svg-icons/icon-toggle-off.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-toggle-on.svg b/src/assets/svg-icons/icon-toggle-on.svg
new file mode 100644
index 0000000000000000000000000000000000000000..4c26e9e81beb50b380df8699035d563a414a41d7
--- /dev/null
+++ b/src/assets/svg-icons/icon-toggle-on.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-unchecked.svg b/src/assets/svg-icons/icon-unchecked.svg
new file mode 100644
index 0000000000000000000000000000000000000000..1c36619f7297fe06546f4b9c6b4d8fb3c0ffb114
--- /dev/null
+++ b/src/assets/svg-icons/icon-unchecked.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-user.svg b/src/assets/svg-icons/icon-user.svg
new file mode 100644
index 0000000000000000000000000000000000000000..302067cbb58eff28803c32d2e4d27fb25531b1d7
--- /dev/null
+++ b/src/assets/svg-icons/icon-user.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/svg-icons/icon-video.svg b/src/assets/svg-icons/icon-video.svg
new file mode 100644
index 0000000000000000000000000000000000000000..f9cd5ecc73fa987734770178d5fb2f4abfce59b5
--- /dev/null
+++ b/src/assets/svg-icons/icon-video.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/components/AppContent.vue b/src/components/AppContent.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c6390b5e2bb9b183d8789c357926ec152fb77d83
--- /dev/null
+++ b/src/components/AppContent.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
diff --git a/src/components/AppEditor.vue b/src/components/AppEditor.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c5553011b9d94ea469dc14e2441a85219fae21e2
--- /dev/null
+++ b/src/components/AppEditor.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
diff --git a/src/components/AppFooter.vue b/src/components/AppFooter.vue
new file mode 100644
index 0000000000000000000000000000000000000000..cc7f4bcf77c17d82311edfa54366eb6f6b3b3c01
--- /dev/null
+++ b/src/components/AppFooter.vue
@@ -0,0 +1,463 @@
+
+
+
+
+
+
+
diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue
new file mode 100644
index 0000000000000000000000000000000000000000..3ac3c975c0308d5393f324df2587cd529595b17b
--- /dev/null
+++ b/src/components/AppHeader.vue
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
diff --git a/src/components/AppIssue.vue b/src/components/AppIssue.vue
new file mode 100644
index 0000000000000000000000000000000000000000..df471111794e26e9758e9443485a891801b46411
--- /dev/null
+++ b/src/components/AppIssue.vue
@@ -0,0 +1,1506 @@
+
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.ID') }}
+
+
+
+ {{ scope.row.number }}
+
+
+
+
+
+ {{
+ queryData.repo || t('quickIssue.REPO_NAME')
+ }}
+
+ handleCommand(val, 'repo')"
+ @visible-change="(val: boolean) => changeVisible(val, 'repos')"
+ >
+
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+ {{ scope.row.repo }}
+
+
+
+
+
+ {{ t('quickIssue.TITLE') }}
+
+
+
+ {{
+ scope.row.title
+ }}
+
+
+
+
+
+ {{
+ queryData.issue_type || t('quickIssue.TYPE')
+ }}
+ handleCommand(val, 'issue_type')"
+ >
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+ {{ item.name }}
+
+
+
+
+
+ {{ scope.row.issue_type }}
+
+
+
+
+
+ {{
+ queryData.issue_state.join(', ') || t('quickIssue.STATE')
+ }}
+ handleCommand(val, 'issue_state')"
+ >
+
+
+
+
+
+ {{ t('quickIssue.SELECT_ALL') }}
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+ {{ scope.row.issue_state }}
+
+
+
+
+
+ {{
+ queryData.milestone.join(', ') || t('quickIssue.MILESTONE')
+ }}
+ changeVisible(val, 'milestones')"
+ @command="(val: string) => handleCommand(val, 'milestone')"
+ >
+
+
+
+
+
+ {{ t('quickIssue.CANCEL') }}
+
+
+
+
+ {{ item }}
+
+
+ No Data
+
+
+
+
+
+ {{ scope.row.milestone }}
+
+
+
+
+
+ {{
+ queryData.author.replaceAll(',', ',\n') ||
+ t('quickIssue.SUBMITTER')
+ }}
+
+ handleCommand(val, 'author')"
+ @visible-change="(val: boolean) => changeVisible(val, 'authors')"
+ >
+
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+
+ {{ scope.row.reporter }}
+
+
+ {{ scope.row.author }}
+
+
+
+
+
+
+ {{
+ queryData.assignee.replaceAll(',', ',\n') ||
+ t('quickIssue.ASSIGNER')
+ }}
+
+ handleCommand(val, 'assignee')"
+ @visible-change="(val: boolean) => changeVisible(val, 'assignees')"
+ >
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+
+ {{ scope.row.assignee }}
+
+
+
+
+
+
+ {{
+ queryData.priority || t('quickIssue.PRIORITY')
+ }}
+ handleCommand(val, 'priority')"
+ >
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+ {{ item.value }}
+
+
+
+
+
+
+ {{ scope.row.priority }}
+
+
+
+
+
+
+
+ {{
+ queryData.label.join(',')
+ }}
+ {{ queryData.exclusion.join(',') }}
+
+
{{ t('quickIssue.LABEL') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+ {{
+ queryData.branch || t('quickIssue.BRANCH')
+ }}
+
+ handleCommand(val, 'branch')"
+ @visible-change="(val: boolean) => changeVisible(val, 'branches')"
+ >
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+ {{ scope.row.branch }}
+
+
+
+
+
+ {{ t('quickIssue.CREATED_AT') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.created_at?.split(' ')[0] }}
+ {{ scope.row.created_at?.split(' ')[1] }}
+
+
+
+
+
+ {{ t('quickIssue.UPDATE_AT') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.updated_at?.split(' ')[0] }}
+ {{ scope.row.updated_at?.split(' ')[1] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item[1].value }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.LABEL') }}
+
+ {{ t('quickIssue.SELECT_LABEL') }}
+ changeVisible(val, 'labels')"
+ >
+
+
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.LABER_TIP') }}
+
+ {{ t('quickIssue.EXCLUDE') }}
+ changeVisible(val, 'exLabels')"
+ >
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.LABER_TIP1') }}
+
+
+
+
+
diff --git a/src/components/AppPull.vue b/src/components/AppPull.vue
new file mode 100644
index 0000000000000000000000000000000000000000..7dd536354d6bd7c79863913724ba2c900d021448
--- /dev/null
+++ b/src/components/AppPull.vue
@@ -0,0 +1,1272 @@
+
+
+
+
+
+
+
+
+ {{
+ queryData.sig || 'SIG'
+ }}
+
+ handleCommand(val, 'sig')"
+ @visible-change="(val:boolean) => visibleChange(val, 'sigs')"
+ >
+
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+ {{ scope.row.sig }}
+
+
+
+
+
+ {{
+ queryData.repo || t('quickIssue.REPO_NAME')
+ }}
+ handleCommand(val, 'repo')"
+ @visible-change="(val:boolean) => visibleChange(val, 'repos')"
+ >
+
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+ {{ scope.row.repo }}
+
+
+
+
+
+ {{ t('quickIssue.TITLE') }}
+
+
+
+ {{ scope.row.title }}
+
+
+
+
+
+ {{
+ queryData.ref || t('quickIssue.BRANCH')
+ }}
+
+ handleCommand(val, 'ref')"
+ @visible-change="(val:boolean) => visibleChange(val, 'refs')"
+ >
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+ {{ scope.row.ref }}
+
+
+
+
+
+
+
+
+ {{ stateChange(item)
+ }},
+
+
+
+ {{ t('quickIssue.STATE') }}
+
+
+ handleCommand(val, 'state')"
+ >
+
+
+
+
+
+
+
+ {{ item.TEXT }}
+
+
+
+
+
+
+
+
+ {{ stateChange(scope.row.state) }}
+
+
+
+
+
+ {{
+ queryData.author || t('quickIssue.SUBMITTER')
+ }}
+
+ handleCommand(val, 'author')"
+ @visible-change="(val:boolean) => visibleChange(val, 'authors')"
+ >
+
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+
+ {{ scope.row.author }}
+
+
+
+
+
+
+ {{
+ queryData.assignee || t('quickIssue.ASSIGNER')
+ }}
+
+ handleCommand(val, 'assignee')"
+ @visible-change="(val:boolean) => visibleChange(val, 'assignees')"
+ >
+
+
+
+
+
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+ No Data
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+ {{
+ queryData.label.join(',')
+ }}
+ {{ queryData.exclusion.join(',') }}
+
+
{{ t('quickIssue.LABEL') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+ {{ t('quickIssue.CREATED_AT') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.created_at?.split(' ')[0] }}
+ {{ scope.row.created_at?.split(' ')[1] }}
+
+
+
+
+
+ {{ t('quickIssue.UPDATE_AT') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.updated_at?.split(' ')[0] }}
+ {{ scope.row.updated_at?.split(' ')[1] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item[1].value }}
+
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.LABEL') }}
+
+ {{ t('quickIssue.SELECT_LABEL') }}
+ visibleChange(val, 'labels')"
+ >
+
+
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.LABER_TIP') }}
+
+ {{ t('quickIssue.EXCLUDE') }}
+ visibleChange(val, 'exLabels')"
+ >
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.LABER_TIP1') }}
+
+
+
+
+
diff --git a/src/components/AppSlideVerify.vue b/src/components/AppSlideVerify.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c9c1c27bf4f7e3b1fdb6a7ec88674b22bed6b599
--- /dev/null
+++ b/src/components/AppSlideVerify.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
diff --git a/src/components/DocAnchor.vue b/src/components/DocAnchor.vue
new file mode 100644
index 0000000000000000000000000000000000000000..7df8643019c470bbd8282354ca28b7be3337717c
--- /dev/null
+++ b/src/components/DocAnchor.vue
@@ -0,0 +1,138 @@
+
+
+
+
+
+
diff --git a/src/components/HeaderNav.vue b/src/components/HeaderNav.vue
new file mode 100644
index 0000000000000000000000000000000000000000..0e24d637655983f58b1e32a958590ab040a37609
--- /dev/null
+++ b/src/components/HeaderNav.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
diff --git a/src/components/ONav.vue b/src/components/ONav.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d772188ec5e6432811f694d22e21242ad5d81a02
--- /dev/null
+++ b/src/components/ONav.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
diff --git a/src/components/SigLandscapeFeature.vue b/src/components/SigLandscapeFeature.vue
new file mode 100644
index 0000000000000000000000000000000000000000..aea18eeb82b068e5c25728aa3a93ee4ae0040bc4
--- /dev/null
+++ b/src/components/SigLandscapeFeature.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
{{ feature.featureName }}
+
+
+
+
+
+
diff --git a/src/components/hooks/useClickOutside.ts b/src/components/hooks/useClickOutside.ts
new file mode 100644
index 0000000000000000000000000000000000000000..19defd0b6141d40b55ba61f8b0b070ba491370a7
--- /dev/null
+++ b/src/components/hooks/useClickOutside.ts
@@ -0,0 +1,20 @@
+import { ref, onMounted, onUnmounted, Ref } from 'vue';
+const useClickOutside = (elementRef: Ref) => {
+ const isClickOutside = ref(false);
+ const onClick = (e: MouseEvent) => {
+ if (elementRef.value) {
+ isClickOutside.value = !elementRef.value.contains(
+ e.target as HTMLElement
+ );
+ }
+ };
+ onMounted(() => {
+ window.addEventListener('click', onClick);
+ });
+ onUnmounted(() => {
+ window.removeEventListener('click', onClick);
+ });
+ return isClickOutside;
+};
+
+export default useClickOutside;
diff --git a/src/data/quick-issue/quick-issue.ts b/src/data/quick-issue/quick-issue.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d0d1ed0857438715174a13c993da7e591a8ff71d
--- /dev/null
+++ b/src/data/quick-issue/quick-issue.ts
@@ -0,0 +1,54 @@
+export default {
+ PRIORITY: [
+ {
+ id: 0,
+ value: '不指定',
+ },
+ {
+ id: 1,
+ value: '不重要',
+ },
+ {
+ id: 2,
+ value: '次要',
+ },
+ {
+ id: 3,
+ value: '主要',
+ },
+ {
+ id: 4,
+ value: '严重',
+ },
+ ],
+ ISSUE_STATE: [
+ '待办的',
+ '进行中',
+ '已完成',
+ '已拒绝',
+ '已确认',
+ '设计中',
+ '开发中',
+ '已验证',
+ '修复中',
+ '已取消',
+ '已挂起',
+ '新建',
+ '已接纳',
+ ],
+ SOLT_TIME: ['提交时间', '更新时间'],
+ PR_STATE: [
+ {
+ VALUE: 'open',
+ TEXT: '开启的',
+ },
+ {
+ VALUE: 'closed',
+ TEXT: '关闭的',
+ },
+ {
+ VALUE: 'merged',
+ TEXT: '合入的',
+ },
+ ],
+};
diff --git a/src/i18n/common/common-en.ts b/src/i18n/common/common-en.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f10006c2b9bb8babd9589ad17485c3c4b7826a8f
--- /dev/null
+++ b/src/i18n/common/common-en.ts
@@ -0,0 +1,250 @@
+import {
+ GITEE_LINK,
+ DATA_LINK,
+ STATUS_LINK,
+ GIYHUB_LINK,
+} from '@/shared/url-config';
+export default {
+ require_field: `必填`,
+ COMMON_CONFIG: {
+ DOWNLOAD: `Download`,
+ ISO: `Software Packages`,
+ SUPPORTTOOLS: `Support Tools`,
+ DOCS: `Documentation`,
+ MOOC: `Mooc`,
+ KNOWLEDGE: `Knowledge`,
+ ADVANCED: `Advanced`,
+ COMMUNITY: `Community`,
+ CONTRIBUTION: `Contribution`,
+ ONLINECOMMUNICATION: `Communication`,
+ MEMBER: `Organization`,
+ USERPRACTICE: `User Practice`,
+ STATISTICS: `Statistics`,
+ NEWS: `News`,
+ BLOG: `Blog`,
+ VIDEO: `Videos`,
+ EVENTS: `Events`,
+ CERTIFICATION: `Certification`,
+ SECURITY: `Vulnerability Report`,
+ ADVISORIES: `Security Advisories`,
+ CVE: `CVE`,
+ TAG: `Tag filter`,
+ BROWSE: `Browse`,
+ TIMES: `times`,
+ TIME: `Time`,
+ AUTHOR: `Author`,
+ TAGS: `Tags`,
+ ALL: `All`,
+ PREV: `Previous:`,
+ NEXT: `Next:`,
+ STRATEGY: `Post Your Blog`,
+ },
+ NAV_ROUTER_CONFIG: [
+ {
+ NAME: `Download`,
+ ID: `download`,
+ CHILDREN: [
+ {
+ NAME: `Software Packages`,
+ ID: `iso`,
+ PATH: `/download/`,
+ },
+ {
+ NAME: `Support Tools`,
+ ID: `supporttools`,
+ PATH: `/supporttools/`,
+ },
+ ],
+ CLASS: [`download`, `supporttools`],
+ },
+ {
+ NAME: `Learning`,
+ ID: `learning`,
+ CHILDREN: [
+ {
+ NAME: `Documentation`,
+ PATH: ``,
+ ID: `docs`,
+ IS_OPEN_WINDOW: 1,
+ },
+ ],
+ CLASS: [`learning`],
+ },
+ {
+ NAME: `Community`,
+ ID: `community`,
+ CHILDREN: [
+ {
+ NAME: `Contribution`,
+ ID: `contribution`,
+ PATH: `/contribution/`,
+ },
+ {
+ NAME: `Communication`,
+ ID: `onlineCommunication`,
+ PATH: `/community/onlineCommunication/`,
+ },
+ {
+ NAME: `Organization`,
+ ID: `member`,
+ PATH: `/member/`,
+ },
+ {
+ NAME: `User Practice`,
+ ID: `userPractice`,
+ PATH: `/userPractice/`,
+ },
+ {
+ NAME: `Statistics`,
+ ID: `statistics`,
+ PATH: `${DATA_LINK}zh/overview`,
+ IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ ],
+ CLASS: [`contribution`, `member`, `community`, `onlineCommunication`],
+ },
+ {
+ NAME: `Connect`,
+ ID: `connect`,
+ CHILDREN: [
+ {
+ NAME: `News`,
+ ID: `News`,
+ PATH: `/news/`,
+ },
+ {
+ NAME: `Blog`,
+ ID: `blog`,
+ PATH: `/blogs/`,
+ },
+ {
+ NAME: `Events`,
+ ID: `events`,
+ PATH: `/events/`,
+ },
+ {
+ NAME: `Videos`,
+ ID: `video`,
+ PATH: `/video/`,
+ },
+ ],
+ CLASS: [`news`, `blog`, `video`, `events`],
+ },
+ {
+ NAME: `Certification`,
+ ID: `Certification`,
+ CHILDREN: [
+ {
+ NAME: `Distribution Certification`,
+ ID: `certification`,
+ PATH: `/certification/`,
+ },
+ {
+ NAME: `oGSP Certification`,
+ ID: `ogsp`,
+ PATH: `/ogsp/`,
+ },
+ ],
+ CLASS: [`certification`, `ogsp`],
+ },
+ {
+ NAME: `Security`,
+ ID: `discovery`,
+ CHILDREN: [
+ {
+ NAME: `Vulnerability Report`,
+ ID: `security`,
+ PATH: `/security/`,
+ },
+ {
+ NAME: `Security Advisories`,
+ ID: `advisories`,
+ PATH: `/security-advisories/`,
+ },
+ {
+ NAME: `CVE`,
+ ID: `cve`,
+ PATH: `/cve/`,
+ },
+ ],
+ CLASS: [`security`, `advisories`, `cve`],
+ },
+ {
+ NAME: `Code`,
+ ID: `code`,
+ CHILDREN: [
+ {
+ NAME: `Gitee`,
+ PATH: `${GITEE_LINK}opengauss`,
+ IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ {
+ NAME: `Github`,
+ PATH: `${GIYHUB_LINK}opengauss-mirror`,
+ IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ ],
+ CLASS: [`code`],
+ },
+ ],
+ LANG: `English`,
+ LANG_LIST: [`中文`, `English`],
+ USER_CENTER: `User Center`,
+ LOGOUT: `Logout`,
+ GITTE: `Source code`,
+ CODE: `CODE`,
+ FOOTER: {
+ COPY_RIGHT: `Copyright © openGauss 2023. All rights reserved.`,
+ RIGHT_LIST: [
+ {
+ NAME: `Trademark`,
+ URL: `/en/brand/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `Privacy Policy`,
+ URL: `/en/privacyPolicy/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `Legal Notice`,
+ URL: `/en/legal/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `About Us`,
+ URL: `/en/aboutUs/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `Service Status`,
+ URL: STATUS_LINK,
+ TARGET: `_blank`,
+ },
+ ],
+ QR_CODE: `WeChat Subscription`,
+ },
+ BUILDING: {
+ BUILDING: `Building`,
+ BUILDINGMES: `Coming soon…`,
+ },
+ SEARCH: {
+ BROWSEHISTORY: `History`,
+ CLEAN: `Clean up`,
+ TOPSEARCH: `Top search`,
+ CHANGE: `Change`,
+ PLEACHOLDER: `Please enter the content`,
+ },
+ PREV: `Prev`,
+ NEXT: `Next`,
+ ALL: `All`,
+ TYPE: `Type`,
+ VIEW_MORE: `View More`,
+ COOKIE: {
+ TEXT: [
+ `This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies.`,
+ `Read our privacy policy.`,
+ ],
+ PATH: `/en/privacyPolicy/`,
+ },
+};
diff --git a/src/i18n/common/common-zh.ts b/src/i18n/common/common-zh.ts
new file mode 100644
index 0000000000000000000000000000000000000000..800a81fd5f29055550aed42c94e481445aa46bc2
--- /dev/null
+++ b/src/i18n/common/common-zh.ts
@@ -0,0 +1,284 @@
+import {
+ GITEE_LINK,
+ DATA_LINK,
+ GIYHUB_LINK,
+ STATUS_LINK,
+} from '@/shared/url-config';
+export default {
+ REQUIRE_FIELD: `必填`,
+ COMMON_CONFIG: {
+ DOWNLOAD: `下载`,
+ ISO: `软件包`,
+ SUPPORTTOOLS: `支持工具`,
+ DOCS: `文档`,
+ MOOC: `慕课`,
+ KNOWLEDGE: `知识图谱`,
+ ADVANCED: `学习进阶`,
+ COMMUNITY: `社区`,
+ CONTRIBUTION: `社区贡献`,
+ ONLINECOMMUNICATION: `线上交流`,
+ MEMBER: `社区组织`,
+ USERPRACTICE: `用户实践`,
+ STATISTICS: `贡献看板`,
+ NEWS: `新闻`,
+ BLOG: `博客`,
+ VIDEO: `视频`,
+ EVENTS: `活动`,
+ SUMMIT: `峰会`,
+ CERTIFICATION: `发行版认证`,
+ TRAINING: `培训认证`,
+ SECURITY: `漏洞管理`,
+ ADVISORIES: `安全公告`,
+ CVE: `CVE`,
+ TAG: `Tag筛选`,
+ BROWSE: `浏览`,
+ TIMES: `次`,
+ TIME: `时间`,
+ AUTHOR: `作者`,
+ TAGS: `标签`,
+ ALL: `全部`,
+ PREV: `上一篇:`,
+ NEXT: `下一篇:`,
+ STRATEGY: `欢迎投稿`,
+ },
+ NAV_ROUTER_CONFIG: [
+ {
+ NAME: `下载`,
+ ID: `download`,
+ CHILDREN: [
+ {
+ NAME: `软件包`,
+ ID: `iso`,
+ PATH: `/download/`,
+ },
+ {
+ NAME: `支持工具`,
+ ID: `supporttools`,
+ PATH: `/supporttools/`,
+ },
+ ],
+ CLASS: [`download`, `supporttools`],
+ },
+ {
+ NAME: `学习`,
+ ID: `learning`,
+ CHILDREN: [
+ {
+ NAME: `文档`,
+ PATH: ``,
+ ID: `docs`,
+ IS_OPEN_WINDOW: 1,
+ },
+ {
+ NAME: `知识图谱`,
+ ID: `knowledge`,
+ PATH: `/knowledge/`,
+ },
+ {
+ NAME: `学习进阶`,
+ ID: `advanced`,
+ PATH: `/advanced/`,
+ },
+ ],
+ CLASS: [`learning`, `knowledge`, `advanced`],
+ },
+ {
+ NAME: `社区`,
+ ID: `community`,
+ CHILDREN: [
+ {
+ NAME: `社区贡献`,
+ ID: `contribution`,
+ PATH: `/contribution/`,
+ },
+ {
+ NAME: `线上交流`,
+ ID: `onlineCommunication`,
+ PATH: `/community/onlineCommunication/`,
+ },
+ {
+ NAME: `社区组织`,
+ ID: `member`,
+ PATH: `/member/`,
+ },
+ {
+ NAME: `用户实践`,
+ ID: `userPractice`,
+ PATH: `/userPractice/`,
+ },
+ {
+ NAME: `贡献看板`,
+ ID: `statistics`,
+ PATH: `${DATA_LINK}zh/overview`,
+ IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ ],
+ CLASS: [
+ `contribution`,
+ `member`,
+ `userPractice`,
+ `community`,
+ `onlineCommunication`,
+ ],
+ },
+ {
+ NAME: `互动`,
+ ID: `connect`,
+ CHILDREN: [
+ {
+ NAME: `新闻`,
+ ID: `news`,
+ PATH: `/news/`,
+ },
+ {
+ NAME: `博客`,
+ ID: `blog`,
+ PATH: `/blogs/`,
+ },
+ {
+ NAME: `活动`,
+ ID: `events`,
+ PATH: `/events/`,
+ },
+ {
+ NAME: `视频`,
+ ID: `video`,
+ PATH: `/video/`,
+ },
+ {
+ NAME: `峰会`,
+ ID: `summit`,
+ PATH: `/summit/devday2023/`,
+ // IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ ],
+ CLASS: [`news`, `blog`, `video`, `events`, `summit`],
+ },
+ {
+ NAME: `认证`,
+ ID: `Certification`,
+ CHILDREN: [
+ {
+ NAME: `发行版认证`,
+ ID: `certification`,
+ PATH: `/certification/`,
+ },
+ {
+ NAME: `兼容性列表`,
+ ID: `compatibility`,
+ PATH: `/compatibility/`,
+ },
+ {
+ NAME: `服务商认证`,
+ ID: `ogsp`,
+ PATH: `/ogsp/`,
+ },
+ {
+ NAME: `培训认证`,
+ ID: `training`,
+ PATH: `/training/`,
+ },
+ ],
+ CLASS: [`certification`, `training`, `ogsp`],
+ },
+ {
+ NAME: `安全`,
+ ID: `discovery`,
+ CHILDREN: [
+ {
+ NAME: `漏洞管理`,
+ ID: `security`,
+ PATH: `/security/`,
+ },
+ {
+ NAME: `安全公告`,
+ ID: `advisories`,
+ PATH: `/security-advisories/`,
+ },
+ {
+ NAME: `CVE`,
+ ID: `cve`,
+ PATH: `/cve/`,
+ },
+ ],
+ CLASS: [`security`, `advisories`, `cve`],
+ },
+ {
+ NAME: `代码`,
+ ID: `code`,
+ CHILDREN: [
+ {
+ NAME: `Gitee`,
+ PATH: `${GITEE_LINK}opengauss`,
+ IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ {
+ NAME: `Github`,
+ PATH: `${GIYHUB_LINK}opengauss-mirror`,
+ IS_OPEN_MINISITE_WINDOW: 1,
+ },
+ ],
+ CLASS: [`code`],
+ },
+ ],
+ LANG: `中文`,
+ LANG_LIST: [`中文`, `English`],
+ USER_CENTER: `个人中心`,
+ LOGOUT: `退出登录`,
+ GITTE: `源码`,
+ CODE: `代码`,
+ FOOTER: {
+ COPY_RIGHT: `版权所有 © openGauss 2023 保留一切权利`,
+ RIGHT_LIST: [
+ {
+ NAME: `品牌`,
+ URL: `/zh/brand/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `隐私政策`,
+ URL: `/zh/privacyPolicy/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `法律声明`,
+ URL: `/zh/legal/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `关于我们`,
+ URL: `/zh/aboutUs/`,
+ TARGET: `_self`,
+ },
+ {
+ NAME: `服务状态`,
+ URL: STATUS_LINK,
+ TARGET: `_blank`,
+ },
+ ],
+ QR_CODE: `扫码关注公众号`,
+ },
+ BUILDING: {
+ BUILDING: `建设中`,
+ BUILDINGMES: `敬请期待...`,
+ },
+ SEARCH: {
+ BROWSEHISTORY: `历史记录`,
+ CLEAN: `清除`,
+ TOPSEARCH: `热门搜索`,
+ CHANGE: `换一批`,
+ PLEACHOLDER: `请输入内容`,
+ },
+ PREV: `上一页`,
+ NEXT: `下一页`,
+ ALL: `全部`,
+ TYPE: `类型`,
+ VIEW_MORE: `查看更多`,
+ COOKIE: {
+ TEXT: [
+ `本站点使用Cookies,继续浏览表示您同意我们使用Cookies。`,
+ `Cookies和隐私政策。`,
+ ],
+ PATH: `/zh/privacyPolicy/`,
+ },
+};
diff --git a/src/i18n/common/index.ts b/src/i18n/common/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5e71d72c1d9ad7ef20febc50832f46fe39e82f91
--- /dev/null
+++ b/src/i18n/common/index.ts
@@ -0,0 +1,7 @@
+import zh from './common-zh';
+import en from './common-en';
+
+export default {
+ zh,
+ en,
+};
diff --git a/src/i18n/index.ts b/src/i18n/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..66abe785143a074daa35b2c7ddd8d79cf51bc68b
--- /dev/null
+++ b/src/i18n/index.ts
@@ -0,0 +1,25 @@
+import { createI18n } from 'vue-i18n';
+
+import common from './common';
+import quickIssue from './quick-issue';
+
+const messages = {
+ zh: {
+ common: common.zh,
+ quickIssue: quickIssue.zh,
+ },
+ en: {
+ common: common.en,
+ quickIssue: quickIssue.en,
+ },
+};
+
+const i18n = createI18n({
+ globalInjection: true,
+ locale: 'zh',
+ legacy: false,
+ messages,
+ global: true,
+});
+
+export default i18n;
diff --git a/src/i18n/quick-issue/index.ts b/src/i18n/quick-issue/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..467c263250c2f3317c22904ac873a0e632c08054
--- /dev/null
+++ b/src/i18n/quick-issue/index.ts
@@ -0,0 +1,7 @@
+import zh from './quick-issue-zh';
+import en from './quick-issue-en';
+
+export default {
+ zh,
+ en,
+};
diff --git a/src/i18n/quick-issue/quick-issue-en.ts b/src/i18n/quick-issue/quick-issue-en.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c0cb44a501381a094c327b61a1cc67a33706b203
--- /dev/null
+++ b/src/i18n/quick-issue/quick-issue-en.ts
@@ -0,0 +1,67 @@
+export default {
+ LANG: 'English',
+ ISSUE_TITLE: 'New Issue',
+ PLACEHOLDER: 'Issue ID, Repository or Title',
+ PLACEHOLDER_PR: 'SIG, Repository or Title',
+ SEARCH_PLACEHOLDER: 'Search',
+ SUBMIT_ISSUE: 'Submit Issue',
+ ID: 'ID',
+ GITTE_USER: 'Create Issue on Gitee',
+ NOT_GITEE_USER: "I don't have a Gitee account",
+ SELECT: 'Select',
+ INPUT: 'Enter',
+ STATE: 'Status',
+ FILE: 'Attachment',
+ EMAIL: 'Email',
+ CODE: 'Verification Code',
+ REPO_NAME: 'Repository',
+ TITLE: 'Title',
+ DESCRIPTIVE: 'Description',
+ TYPE: 'Type',
+ PRIORITY: 'Priority',
+ SUBMITTER: 'Creator',
+ MILESTONE: 'Milestone',
+ ASSIGNER: 'Assignees',
+ LABEL: 'Labels',
+ SELECT_LABEL: 'Include Labels',
+ BRANCH: 'Branch',
+ CREATED_AT: 'Submitted At',
+ UPDATE_AT: 'Updated At',
+ ALL: 'All',
+ MY_ASSIGNMENTS: 'My Assignments',
+ MY_SUBMISSIONS: 'My Submissions',
+ CANCEL: 'Cancel',
+ CREATE: 'New Issue',
+ CANCEL1: 'Cancel',
+ CONTINUE: 'New and Continue',
+ PRIVACY: 'Privacy Statement',
+ SELECT_ALL: 'Select All',
+ EXCLUDE: 'Exclude Labels',
+ LABER_TIP: 'PRs containing all included labels will be displayed',
+ LABER_TIP1: 'PRs containing any of the excluded labels will be hidden',
+ PRIVACY_TEXT:
+ 'By filling and submitting the content, I fully understand and agree to the terms of the openGauss ',
+ SELECT_SIG: 'Select SIG',
+ SEND_CODE: 'Send Verification Code',
+ MANDATORY: 'Mandatory',
+ MANDATORY1: 'Mandatory',
+ EMAIL_ADRESS: 'Enter an email address',
+ TITLE_LIMIT: 'Title cannot exceed 100 characters',
+ RIGHT_EMAIL_ADRESS: 'Enter a valid email address',
+ VER_CODE: 'Enter the verification code',
+ VER_CODE1: 'Enter the 6-digit verification code',
+ EMPTY_REPO:
+ 'This SIG does not have a repository. The issue will be submitted to opengauss/community',
+ RESEND: 'Resend Verification Code',
+ RESEND1: 'Resend Verification Code in {0}',
+ SUCCESS_CREATED: 'Issue created successfully',
+ SUCCESS_SEND_MAIL: 'Sent verification email successfully',
+ SIZE_LIMIT: 'Attachment size cannot exceed 10 MB',
+ SUCCESS_UPLOAD: 'Attachment uploaded successfully',
+ SUCCESS_UPLOAD1:
+ 'The issue is created but the attachment fails to be uploaded',
+ SWIPE_RIGHT: 'Swipe right to complete the verification.',
+ SWIPER: 'Slide for verification',
+ VERIFY_FAIL: 'Verification failed.',
+ VERIFY_SUCCESS: 'Verification succeeds in',
+};
diff --git a/src/i18n/quick-issue/quick-issue-zh.ts b/src/i18n/quick-issue/quick-issue-zh.ts
new file mode 100644
index 0000000000000000000000000000000000000000..133bcdd336ff2dc82c226f76b2ddc1be4497fd2d
--- /dev/null
+++ b/src/i18n/quick-issue/quick-issue-zh.ts
@@ -0,0 +1,66 @@
+export default {
+ LANG: '中文',
+ ISSUE_TITLE: '新建需求',
+ PLACEHOLDER: 'issue ID、仓库、标题',
+ PLACEHOLDER_PR: 'SIG、仓库、标题',
+ SEARCH_PLACEHOLDER: '请输入关键字',
+ SUBMIT_ISSUE: '提交 Issue',
+ ID: 'ID',
+ GITTE_USER: '前往Gitee创建Issue',
+ NOT_GITEE_USER: '我不是Gitee用户',
+ SELECT: '请选择',
+ INPUT: '请填写',
+ STATE: '状态',
+ FILE: '附件',
+ EMAIL: '邮箱',
+ CODE: '验证码',
+ REPO_NAME: '仓库',
+ TITLE: '标题',
+ DESCRIPTIVE: '描述',
+ TYPE: '类型',
+ PRIORITY: '优先级',
+ SUBMITTER: '提交人',
+ ASSIGNER: '指派给',
+ LABEL: '标签',
+ SELECT_LABEL: '选择标签',
+ BRANCH: '分支',
+ RELATION_BRANCH: '关联分支',
+ MILESTONE: '里程碑',
+ CREATED_AT: '提交时间',
+ UPDATE_AT: '更新时间',
+ ALL: '全部',
+ MY_ASSIGNMENTS: '待处理的',
+ MY_SUBMISSIONS: '我提交的',
+ CANCEL: '取消选项',
+ CREATE: '新建',
+ CANCEL1: '取消',
+ CONTINUE: '新建并继续',
+ PRIVACY: '隐私声明',
+ SELECT_ALL: '选择全部',
+ EXCLUDE: '排除标签',
+ LABER_TIP: '同时包括所有“选中标签”的PR将会被筛选出来',
+ LABER_TIP1: '包含“排除标签”的PR不会被筛选出来',
+ PRIVACY_TEXT:
+ '您理解并同意,您填写并提交的内容,即视为您已充分阅读并同意openGauss的',
+ SELECT_SIG: '选择SIG组',
+ SEND_CODE: '发送验证码',
+ MANDATORY: '必选项',
+ MANDATORY1: '必填项',
+ TITLE_LIMIT: '标题长度不超过100字符',
+ EMAIL_ADRESS: '请填写邮箱',
+ RIGHT_EMAIL_ADRESS: '请输入正确格式邮箱',
+ VER_CODE: '请填写验证码',
+ VER_CODE1: '请填写6位数字验证码',
+ EMPTY_REPO: '此SIG下无仓库。默认提交至 opengauss/community 仓库',
+ RESEND: '重新发送验证码',
+ RESEND1: '{0}后重新发送',
+ SUCCESS_CREATED: '创建issue成功',
+ SUCCESS_SEND_MAIL: '成功发送验证邮件',
+ SIZE_LIMIT: '附件不得超过10MB,请重新选择文件。',
+ SUCCESS_UPLOAD: '附件上传成功',
+ SUCCESS_UPLOAD1: 'Issue 创建成功,附件上传失败!',
+ SWIPE_RIGHT: '向右滑动完成验证',
+ SWIPER: '请拖动滑块完成人机校验',
+ VERIFY_FAIL: '验证失败',
+ VERIFY_SUCCESS: '验证成功',
+};
diff --git a/src/main.ts b/src/main.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0a58b0ad2d4dd85629b3e87a7c37a65629b0ba19
--- /dev/null
+++ b/src/main.ts
@@ -0,0 +1,31 @@
+import { createApp } from 'vue';
+import { createPinia } from 'pinia';
+import { router } from './routers';
+import i18n from './i18n';
+import '@/shared/allow_sensor/sensorsdata.min.js';
+import '@/shared/allow_sensor/sensors.js';
+import '@/shared/styles/index.scss';
+
+// import '@/shared/styles/element-plus/index.scss';
+
+import VueMarkdownEditor from '@kangc/v-md-editor';
+import '@kangc/v-md-editor/lib/style/base-editor.css';
+import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
+import Prism from 'prismjs';
+
+import App from './App.vue';
+import OpenDesign from 'opendesign';
+
+VueMarkdownEditor.use(vuepressTheme, {
+ Prism,
+});
+
+const app = createApp(App);
+
+app.use(i18n);
+app.use(createPinia());
+app.use(OpenDesign);
+app.use(router);
+app.use(VueMarkdownEditor);
+
+app.mount('#app');
diff --git a/src/routers/index.ts b/src/routers/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..259bf334d41ad6a5288b133cffb94671b49b65d9
--- /dev/null
+++ b/src/routers/index.ts
@@ -0,0 +1,42 @@
+import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
+import { useLangStore } from '@/stores';
+
+export const routes: RouteRecordRaw[] = [
+ { path: '/', redirect: '/zh/issues' },
+ { path: '/zh/', redirect: '/zh/issues' },
+ { path: '/en/', redirect: '/en/issues' },
+ {
+ path: '/zh/issues',
+ name: 'issues',
+ alias: '/en/issues',
+ component: () => import('@/views/TheQuickIssue.vue'),
+ },
+ {
+ path: '/zh/pulls',
+ name: 'pulls',
+ alias: '/en/pulls',
+ component: () => import('@/views/pull-request/PullRequest.vue'),
+ },
+ {
+ path: '/zh/new-issues',
+ name: 'new-issues',
+ alias: '/en/new-issues',
+ component: () => import('@/views/submit-issue/SubmitIssue.vue'),
+ },
+];
+
+export const router = createRouter({
+ history: createWebHistory(),
+ routes,
+ scrollBehavior() {
+ return { top: 0 };
+ },
+});
+
+router.beforeEach((to) => {
+ // 设置语言
+ const langStore = useLangStore();
+ const lang = to.fullPath.includes('en') ? 'en' : 'zh';
+ // localStorage.setItem('lang', lang);
+ langStore.lang = lang;
+});
diff --git a/src/shared/@types/type-quick-issue.ts b/src/shared/@types/type-quick-issue.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2eb93e9b1e0c5a8a179062cdc2d0830e40682eaa
--- /dev/null
+++ b/src/shared/@types/type-quick-issue.ts
@@ -0,0 +1,35 @@
+export interface IssueQueryData {
+ page: number;
+ per_page: number;
+ search: string;
+ issue_type: string;
+ priority: string;
+ direction: string;
+ create: string;
+ author: string;
+ exclusion: Array | string;
+ assignee: string;
+ label: Array | string;
+ branch: string;
+ repo: string;
+ issue_state: Array | string;
+ milestone: Array | string;
+}
+
+export interface OptionList {
+ page: number;
+ keyword: string;
+ data: any[];
+ total?: number;
+}
+export interface IssueData {
+ title: string;
+ issue_type_id: string | number | undefined;
+ sig: string;
+ project_id: number;
+ repo: string;
+ email: string;
+ code: string;
+ description: string;
+ privacy: Array;
+}
diff --git a/src/shared/@types/type-sig.ts b/src/shared/@types/type-sig.ts
new file mode 100644
index 0000000000000000000000000000000000000000..aa20a9a2086223e532baa79e106d7ac7256400b0
--- /dev/null
+++ b/src/shared/@types/type-sig.ts
@@ -0,0 +1,9 @@
+export interface FeatureInfo {
+ featureName: string;
+ sigs: string[];
+}
+
+export interface GroupInfo {
+ groupName: string;
+ features: FeatureInfo[];
+}
diff --git a/src/shared/allow_sensor/sensors.js b/src/shared/allow_sensor/sensors.js
new file mode 100644
index 0000000000000000000000000000000000000000..0c7f6f6d076ba642047b21ef6847aacac644aefb
--- /dev/null
+++ b/src/shared/allow_sensor/sensors.js
@@ -0,0 +1,567 @@
+const root = typeof self !== 'undefined' ? self : this;
+const _window = root || {};
+// 变量库
+const VariableLibrary = {
+ navigator: typeof root.navigator !== 'undefined' ? root.navigator : {},
+ // 信息map
+ infoMap: {
+ engine: ['WebKit', 'Trident', 'Gecko', 'Presto'],
+ browser: [
+ 'Safari',
+ 'Chrome',
+ 'Edge',
+ 'IE',
+ 'Firefox',
+ 'Firefox Focus',
+ 'Chromium',
+ 'Opera',
+ 'Vivaldi',
+ 'Yandex',
+ 'Arora',
+ 'Lunascape',
+ 'QupZilla',
+ 'Coc Coc',
+ 'Kindle',
+ 'Iceweasel',
+ 'Konqueror',
+ 'Iceape',
+ 'SeaMonkey',
+ 'Epiphany',
+ '360',
+ '360SE',
+ '360EE',
+ 'UC',
+ 'QQBrowser',
+ 'QQ',
+ 'Baidu',
+ 'Maxthon',
+ 'Sogou',
+ 'LBBROWSER',
+ '2345Explorer',
+ 'TheWorld',
+ 'XiaoMi',
+ 'Quark',
+ 'Qiyu',
+ 'Wechat',
+ 'WechatWork',
+ 'Taobao',
+ 'Alipay',
+ 'Weibo',
+ 'Douban',
+ 'Suning',
+ 'iQiYi',
+ ],
+ os: [
+ 'Windows',
+ 'Linux',
+ 'Mac OS',
+ 'Android',
+ 'Ubuntu',
+ 'FreeBSD',
+ 'Debian',
+ 'iOS',
+ 'Windows Phone',
+ 'BlackBerry',
+ 'MeeGo',
+ 'Symbian',
+ 'Chrome OS',
+ 'WebOS',
+ ],
+ },
+};
+// 方法库
+var MethodLibrary = (function () {
+ return {
+ // 获取匹配库
+ getMatchMap: function (u) {
+ return {
+ // 内核
+ Trident: u.indexOf('Trident') > -1 || u.indexOf('NET CLR') > -1,
+ Presto: u.indexOf('Presto') > -1,
+ WebKit: u.indexOf('AppleWebKit') > -1,
+ Gecko: u.indexOf('Gecko/') > -1,
+ // 浏览器
+ Safari: u.indexOf('Safari') > -1,
+ Chrome: u.indexOf('Chrome') > -1 || u.indexOf('CriOS') > -1,
+ IE: u.indexOf('MSIE') > -1 || u.indexOf('Trident') > -1,
+ Edge: u.indexOf('Edge') > -1,
+ Firefox: u.indexOf('Firefox') > -1 || u.indexOf('FxiOS') > -1,
+ 'Firefox Focus': u.indexOf('Focus') > -1,
+ Chromium: u.indexOf('Chromium') > -1,
+ Opera: u.indexOf('Opera') > -1 || u.indexOf('OPR') > -1,
+ Vivaldi: u.indexOf('Vivaldi') > -1,
+ Yandex: u.indexOf('YaBrowser') > -1,
+ Arora: u.indexOf('Arora') > -1,
+ Lunascape: u.indexOf('Lunascape') > -1,
+ QupZilla: u.indexOf('QupZilla') > -1,
+ 'Coc Coc': u.indexOf('coc_coc_browser') > -1,
+ Kindle: u.indexOf('Kindle') > -1 || u.indexOf('Silk/') > -1,
+ Iceweasel: u.indexOf('Iceweasel') > -1,
+ Konqueror: u.indexOf('Konqueror') > -1,
+ Iceape: u.indexOf('Iceape') > -1,
+ SeaMonkey: u.indexOf('SeaMonkey') > -1,
+ Epiphany: u.indexOf('Epiphany') > -1,
+ 360: u.indexOf('QihooBrowser') > -1 || u.indexOf('QHBrowser') > -1,
+ '360EE': u.indexOf('360EE') > -1,
+ '360SE': u.indexOf('360SE') > -1,
+ UC: u.indexOf('UC') > -1 || u.indexOf(' UBrowser') > -1,
+ QQBrowser: u.indexOf('QQBrowser') > -1,
+ QQ: u.indexOf('QQ/') > -1,
+ Baidu: u.indexOf('Baidu') > -1 || u.indexOf('BIDUBrowser') > -1,
+ Maxthon: u.indexOf('Maxthon') > -1,
+ Sogou: u.indexOf('MetaSr') > -1 || u.indexOf('Sogou') > -1,
+ LBBROWSER: u.indexOf('LBBROWSER') > -1 || u.indexOf('LieBaoFast') > -1,
+ '2345Explorer': u.indexOf('2345Explorer') > -1,
+ TheWorld: u.indexOf('TheWorld') > -1,
+ XiaoMi: u.indexOf('MiuiBrowser') > -1,
+ Quark: u.indexOf('Quark') > -1,
+ Qiyu: u.indexOf('Qiyu') > -1,
+ Wechat: u.indexOf('MicroMessenger') > -1,
+ WechatWork: u.indexOf('wxwork/') > -1,
+ Taobao: u.indexOf('AliApp(TB') > -1,
+ Alipay: u.indexOf('AliApp(AP') > -1,
+ Weibo: u.indexOf('Weibo') > -1,
+ Douban: u.indexOf('com.douban.frodo') > -1,
+ Suning: u.indexOf('SNEBUY-APP') > -1,
+ iQiYi: u.indexOf('IqiyiApp') > -1,
+ // 系统或平台
+ Windows: u.indexOf('Windows') > -1,
+ Linux: u.indexOf('Linux') > -1 || u.indexOf('X11') > -1,
+ 'Mac OS': u.indexOf('Macintosh') > -1,
+ Android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,
+ Ubuntu: u.indexOf('Ubuntu') > -1,
+ FreeBSD: u.indexOf('FreeBSD') > -1,
+ Debian: u.indexOf('Debian') > -1,
+ 'Windows Phone':
+ u.indexOf('IEMobile') > -1 || u.indexOf('Windows Phone') > -1,
+ BlackBerry: u.indexOf('BlackBerry') > -1 || u.indexOf('RIM') > -1,
+ MeeGo: u.indexOf('MeeGo') > -1,
+ Symbian: u.indexOf('Symbian') > -1,
+ iOS: u.indexOf('like Mac OS X') > -1,
+ 'Chrome OS': u.indexOf('CrOS') > -1,
+ WebOS: u.indexOf('hpwOS') > -1,
+ // 设备
+ Mobile:
+ u.indexOf('Mobi') > -1 ||
+ u.indexOf('iPh') > -1 ||
+ u.indexOf('480') > -1,
+ Tablet: u.indexOf('Tablet') > -1 || u.indexOf('Nexus 7') > -1,
+ iPad: u.indexOf('iPad') > -1,
+ };
+ },
+ // 在信息map和匹配库中进行匹配
+ matchInfoMap: function (_this) {
+ const u = VariableLibrary.navigator.userAgent || {};
+ const match = MethodLibrary.getMatchMap(u);
+ for (const s in VariableLibrary.infoMap) {
+ for (let i = 0; i < VariableLibrary.infoMap[s].length; i++) {
+ const value = VariableLibrary.infoMap[s][i];
+ if (match[value]) {
+ _this[s] = value;
+ }
+ }
+ }
+ },
+ // 获取当前操作系统
+ getOS: function () {
+ const _this = this;
+ MethodLibrary.matchInfoMap(_this);
+ return _this.os;
+ },
+ // 获取操作系统版本
+ getOSVersion: function () {
+ const _this = this;
+ const u = VariableLibrary.navigator.userAgent || {};
+ _this.osVersion = '';
+ // 系统版本信息
+ const osVersion = {
+ Windows: function () {
+ const v = u.replace(/^.*Windows NT ([\d.]+);.*$/, '$1');
+ const oldWindowsVersionMap = {
+ 6.4: '10',
+ 6.3: '8.1',
+ 6.2: '8',
+ 6.1: '7',
+ '6.0': 'Vista',
+ 5.2: 'XP',
+ 5.1: 'XP',
+ '5.0': '2000',
+ };
+ return oldWindowsVersionMap[v] || v;
+ },
+ Android: function () {
+ return u.replace(/^.*Android ([\d.]+);.*$/, '$1');
+ },
+ iOS: function () {
+ return u.replace(/^.*OS ([\d_]+) like.*$/, '$1').replace(/_/g, '.');
+ },
+ Debian: function () {
+ return u.replace(/^.*Debian\/([\d.]+).*$/, '$1');
+ },
+ 'Windows Phone': function () {
+ return u.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/, '$2');
+ },
+ 'Mac OS': function () {
+ return u.replace(/^.*Mac OS X ([\d_]+).*$/, '$1').replace(/_/g, '.');
+ },
+ WebOS: function () {
+ return u.replace(/^.*hpwOS\/([\d.]+);.*$/, '$1');
+ },
+ };
+ if (osVersion[_this.os]) {
+ _this.osVersion = osVersion[_this.os]();
+ if (_this.osVersion == u) {
+ _this.osVersion = '';
+ }
+ }
+ return _this.osVersion;
+ },
+ // 浏览器信息
+ getBrowserInfo: function () {
+ const _this = this;
+ MethodLibrary.matchInfoMap(_this);
+
+ const u = VariableLibrary.navigator.userAgent || {};
+
+ const _mime = function (option, value) {
+ const mimeTypes = VariableLibrary.navigator.mimeTypes;
+ for (const key in mimeTypes) {
+ if (mimeTypes[key][option] == value) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ const match = MethodLibrary.getMatchMap(u);
+
+ let is360 = false;
+ if (_window.chrome) {
+ const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
+ if (chrome_version > 36 && _window.showModalDialog) {
+ is360 = true;
+ } else if (chrome_version > 45) {
+ is360 = _mime('type', 'application/vnd.chromium.remoting-viewer');
+ }
+ }
+ if (match['Baidu'] && match['Opera']) {
+ match['Baidu'] = false;
+ }
+ if (match['Mobile']) {
+ match['Mobile'] = !(u.indexOf('iPad') > -1);
+ }
+ if (is360) {
+ if (_mime('type', 'application/gameplugin')) {
+ match['360SE'] = true;
+ } else if (
+ VariableLibrary.navigator &&
+ typeof VariableLibrary.navigator['connection']['saveData'] ===
+ 'undefined'
+ ) {
+ match['360SE'] = true;
+ } else {
+ match['360EE'] = true;
+ }
+ }
+ if (match['IE'] || match['Edge']) {
+ const navigator_top = window.screenTop - window.screenY;
+ switch (navigator_top) {
+ case 71: // 无收藏栏,贴边
+ break;
+ case 74: // 无收藏栏,非贴边
+ break;
+ case 99: // 有收藏栏,贴边
+ break;
+ case 102: // 有收藏栏,非贴边
+ match['360EE'] = true;
+ break;
+ case 75: // 无收藏栏,贴边
+ break;
+ case 105: // 有收藏栏,贴边
+ break;
+ case 104: // 有收藏栏,非贴边
+ match['360SE'] = true;
+ break;
+ default:
+ break;
+ }
+ }
+
+ const browerVersionMap = {
+ Safari: function () {
+ return u.replace(/^.*Version\/([\d.]+).*$/, '$1');
+ },
+ Chrome: function () {
+ return u
+ .replace(/^.*Chrome\/([\d.]+).*$/, '$1')
+ .replace(/^.*CriOS\/([\d.]+).*$/, '$1');
+ },
+ IE: function () {
+ return u
+ .replace(/^.*MSIE ([\d.]+).*$/, '$1')
+ .replace(/^.*rv:([\d.]+).*$/, '$1');
+ },
+ Edge: function () {
+ return u.replace(/^.*Edge\/([\d.]+).*$/, '$1');
+ },
+ Firefox: function () {
+ return u
+ .replace(/^.*Firefox\/([\d.]+).*$/, '$1')
+ .replace(/^.*FxiOS\/([\d.]+).*$/, '$1');
+ },
+ 'Firefox Focus': function () {
+ return u.replace(/^.*Focus\/([\d.]+).*$/, '$1');
+ },
+ Chromium: function () {
+ return u.replace(/^.*Chromium\/([\d.]+).*$/, '$1');
+ },
+ Opera: function () {
+ return u
+ .replace(/^.*Opera\/([\d.]+).*$/, '$1')
+ .replace(/^.*OPR\/([\d.]+).*$/, '$1');
+ },
+ Vivaldi: function () {
+ return u.replace(/^.*Vivaldi\/([\d.]+).*$/, '$1');
+ },
+ Yandex: function () {
+ return u.replace(/^.*YaBrowser\/([\d.]+).*$/, '$1');
+ },
+ Arora: function () {
+ return u.replace(/^.*Arora\/([\d.]+).*$/, '$1');
+ },
+ Lunascape: function () {
+ return u.replace(/^.*Lunascape[\\/\s]([\d.]+).*$/, '$1');
+ },
+ QupZilla: function () {
+ return u.replace(/^.*QupZilla[\\/\s]([\d.]+).*$/, '$1');
+ },
+ 'Coc Coc': function () {
+ return u.replace(/^.*coc_coc_browser\/([\d.]+).*$/, '$1');
+ },
+ Kindle: function () {
+ return u.replace(/^.*Version\/([\d.]+).*$/, '$1');
+ },
+ Iceweasel: function () {
+ return u.replace(/^.*Iceweasel\/([\d.]+).*$/, '$1');
+ },
+ Konqueror: function () {
+ return u.replace(/^.*Konqueror\/([\d.]+).*$/, '$1');
+ },
+ Iceape: function () {
+ return u.replace(/^.*Iceape\/([\d.]+).*$/, '$1');
+ },
+ SeaMonkey: function () {
+ return u.replace(/^.*SeaMonkey\/([\d.]+).*$/, '$1');
+ },
+ Epiphany: function () {
+ return u.replace(/^.*Epiphany\/([\d.]+).*$/, '$1');
+ },
+ 360: function () {
+ return u.replace(/^.*QihooBrowser\/([\d.]+).*$/, '$1');
+ },
+ '360SE': function () {
+ const hash = {
+ 63: '10.0',
+ 55: '9.1',
+ 45: '8.1',
+ 42: '8.0',
+ 31: '7.0',
+ 21: '6.3',
+ };
+ const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
+ return hash[chrome_version] || '';
+ },
+ '360EE': function () {
+ const hash = {
+ 69: '11.0',
+ 63: '9.5',
+ 55: '9.0',
+ 50: '8.7',
+ 30: '7.5',
+ };
+ const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
+ return hash[chrome_version] || '';
+ },
+ Maxthon: function () {
+ return u.replace(/^.*Maxthon\/([\d.]+).*$/, '$1');
+ },
+ QQBrowser: function () {
+ return u.replace(/^.*QQBrowser\/([\d.]+).*$/, '$1');
+ },
+ QQ: function () {
+ return u.replace(/^.*QQ\/([\d.]+).*$/, '$1');
+ },
+ Baidu: function () {
+ return u.replace(/^.*BIDUBrowser[\s\\/]([\d.]+).*$/, '$1');
+ },
+ UC: function () {
+ return u.replace(/^.*UC?Browser\/([\d.]+).*$/, '$1');
+ },
+ Sogou: function () {
+ return u
+ .replace(/^.*SE ([\d.X]+).*$/, '$1')
+ .replace(/^.*SogouMobileBrowser\/([\d.]+).*$/, '$1');
+ },
+ LBBROWSER: function () {
+ let version = '';
+ if (u.indexOf('LieBaoFast') > -1) {
+ version = u.replace(/^.*LieBaoFast\/([\d.]+).*$/, '$1');
+ }
+ const hash = {
+ 57: '6.5',
+ 49: '6.0',
+ 46: '5.9',
+ 42: '5.3',
+ 39: '5.2',
+ 34: '5.0',
+ 29: '4.5',
+ 21: '4.0',
+ };
+ const chrome_version = u.replace(/^.*Chrome\/([\d]+).*$/, '$1');
+ return version || hash[chrome_version] || '';
+ },
+ '2345Explorer': function () {
+ return u.replace(/^.*2345Explorer\/([\d.]+).*$/, '$1');
+ },
+ TheWorld: function () {
+ return u.replace(/^.*TheWorld ([\d.]+).*$/, '$1');
+ },
+ XiaoMi: function () {
+ return u.replace(/^.*MiuiBrowser\/([\d.]+).*$/, '$1');
+ },
+ Quark: function () {
+ return u.replace(/^.*Quark\/([\d.]+).*$/, '$1');
+ },
+ Qiyu: function () {
+ return u.replace(/^.*Qiyu\/([\d.]+).*$/, '$1');
+ },
+ Wechat: function () {
+ return u.replace(/^.*MicroMessenger\/([\d.]+).*$/, '$1');
+ },
+ WechatWork: function () {
+ return u.replace(/^.*wxwork\/([\d.]+).*$/, '$1');
+ },
+ Taobao: function () {
+ return u.replace(/^.*AliApp\(TB\/([\d.]+).*$/, '$1');
+ },
+ Alipay: function () {
+ return u.replace(/^.*AliApp\(AP\/([\d.]+).*$/, '$1');
+ },
+ Weibo: function () {
+ return u.replace(/^.*weibo__([\d.]+).*$/, '$1');
+ },
+ Douban: function () {
+ return u.replace(/^.*com.douban.frodo\/([\d.]+).*$/, '$1');
+ },
+ Suning: function () {
+ return u.replace(/^.*SNEBUY-APP([\d.]+).*$/, '$1');
+ },
+ iQiYi: function () {
+ return u.replace(/^.*IqiyiVersion\/([\d.]+).*$/, '$1');
+ },
+ };
+ _this.browserVersion = '';
+ if (browerVersionMap[_this.browser]) {
+ _this.browserVersion = browerVersionMap[_this.browser]();
+ if (_this.browserVersion == u) {
+ _this.browserVersion = '';
+ }
+ }
+ if (_this.browser == 'Chrome' && u.match(/\S+Browser/)) {
+ _this.browser = u.match(/\S+Browser/)[0];
+ _this.version = u.replace(/^.*Browser\/([\d.]+).*$/, '$1');
+ }
+
+ return {
+ browser: _this.browser,
+ browserVersion: _this.browserVersion,
+ };
+ },
+ };
+})();
+const info = {
+ OS: MethodLibrary.getOS(), // 操作系统
+ OSVersion: MethodLibrary.getOSVersion(), // 操作系统版本
+ browserInfo: MethodLibrary.getBrowserInfo(), // 浏览器信息
+};
+const xhr = new XMLHttpRequest();
+xhr.responseType = 'json';
+xhr.open('get', '/ip-api/', true);
+xhr.onload = function (e) {
+ if (xhr.status === 200) {
+ window['returnCitySN'] = xhr.response;
+ } else {
+ window['returnCitySN'] = {
+ query: '',
+ city: '',
+ };
+ }
+};
+xhr.onerror = () => {
+ window['returnCitySN'] = {
+ query: '',
+ city: '',
+ };
+};
+xhr.send();
+
+let sensors = window['sensorsDataAnalytic201505'];
+function initSensor() {
+ window['sensorsCustomBuriedData'] = {
+ language: location.pathname.split('/')[1] || 'en',
+ ip: (window['returnCitySN'] && window['returnCitySN'].query) || '',
+ city: (window['returnCitySN'] && window['returnCitySN'].city) || '',
+ os: info.OS,
+ osVersion: info.OSVersion,
+ browser: info.browserInfo.browser,
+ browserVersion: info.browserInfo.browserVersion,
+ };
+
+ window['setSensorsCustomBuriedData'] = (key, value) => {
+ window['sensorsCustomBuriedData'][key] = value;
+ };
+ sensors.init({
+ server_url: 'https://dsapi.osinfra.cn/query/track?community=openGauss',
+ use_client_time: true,
+ // 调试时开启
+ show_log: false,
+ send_type: 'image',
+ is_track_single_page: function () {
+ return window['sensorsCustomBuriedData'];
+ },
+ heatmap: {
+ //是否开启点击图,default 表示开启,自动采集 $WebClick 事件,可以设置 'not_collect' 表示关闭。
+ clickmap: 'default',
+ custom_property: function () {
+ return window['sensorsCustomBuriedData'];
+ },
+ //是否开启触达图,not_collect 表示关闭,不会自动采集 $WebStay 事件,可以设置 'default' 表示开启。
+ scroll_notice_map: 'not_collect',
+ },
+ });
+ sensors.quick('isReady', function () {
+ sensors.getPresetProperties();
+ });
+
+ // 给category增加两个值
+ // sensors.appendProfile({catrgory: ['test_start_time', 'test_end_time']});
+ // sensors.appendProfile({catrgory: 'test_exist_time'});
+ sensors.quick('autoTrack', window['sensorsCustomBuriedData']); //用于采集 $pageview 事件。\
+}
+function startSensor(num) {
+ if (!num) {
+ // 重试最大次数
+ return;
+ }
+ if (sensors) {
+ initSensor();
+ } else {
+ setTimeout(() => {
+ // 若是一开始没有值,则重试
+ sensors = window['sensorsDataAnalytic201505'];
+ num--;
+ startSensor(num);
+ }, 500);
+ }
+}
+startSensor(20);
diff --git a/src/shared/allow_sensor/sensorsdata.min.js b/src/shared/allow_sensor/sensorsdata.min.js
new file mode 100644
index 0000000000000000000000000000000000000000..bf888c8f2433ea7cb2d9254f6b45ba0a67927324
--- /dev/null
+++ b/src/shared/allow_sensor/sensorsdata.min.js
@@ -0,0 +1,5 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():t()}(this,function(){function e(e){if(!e)return!1;var t=Object.prototype.toString.call(e);return"[object Function]"==t||"[object AsyncFunction]"==t}function t(){return Date.now&&e(Date.now)?Date.now():(new Date).getTime()}function r(e){return null!=e&&"[object Object]"==Object.prototype.toString.call(e)}function i(){if("function"==typeof Uint32Array){var e="";if("undefined"!=typeof crypto?e=crypto:"undefined"!=typeof msCrypto&&(e=msCrypto),r(e)&&e.getRandomValues){var t=new Uint32Array(1),i=e.getRandomValues(t)[0],n=Math.pow(2,32);return i/n}}return _r(1e19)/1e19}function n(e){var t=null;try{t=JSON.parse(e)}catch(r){}return t}function a(e,t){this.lockGetPrefix=e||"lock-get-prefix",this.lockSetPrefix=t||"lock-set-prefix"}function s(e){return"function"==typeof e||!(!e||"object"!=typeof e)&&s(e.listener)}function l(){this._events={}}function c(e){var t=e;try{t=decodeURIComponent(e)}catch(r){t=e}return t}function u(e){e=e||"";for(var t={},r=e.substring(1),i=r.split("&"),n=0;n Invalid URL");var r=e.split("#"),i=r[0],n=r.slice(1).join("#");t=this._regex.exec(i);for(var a in this._fields)"undefined"!=typeof t[this._fields[a]]&&(this._values[a]=t[this._fields[a]]);this._values.Hostname=this._values.Host.replace(/:\d+$/,""),this._values.Origin=this._values.Protocol+"://"+this._values.Hostname,this._values.Fragment=n},new t(e)}function f(e){var t={},r=function(){var e;try{return e=new URL("http://modernizr.com/"),"http://modernizr.com/"===e.href}catch(t){return!1}};if("function"==typeof window.URL&&r())t=new URL(e),t.searchParams||(t.searchParams=function(){var e=u(t.search);return{get:function(t){return e[t]}}}());else{p(e)||(e=String(e)),e=d(e);var i=/^https?:\/\/.+/;if(i.test(e)===!1)return void pr.log("Invalid URL");var n=_(e);t.hash=n._values.Fragment,t.host=n._values.Host?n._values.Host+(n._values.Port?":"+n._values.Port:""):"",t.href=n._values.URL,t.password=n._values.Password,t.pathname=n._values.Path,t.port=n._values.Port,t.search=n._values.QueryString?"?"+n._values.QueryString:"",t.username=n._values.Username,t.hostname=n._values.Hostname,t.protocol=n._values.Protocol?n._values.Protocol+":":"",t.origin=n._values.Origin?n._values.Origin+(n._values.Port?":"+n._values.Port:""):"",t.searchParams=function(){var e=u("?"+n._values.QueryString);return{get:function(t){return e[t]}}}()}return t}function g(e){return!(!e||1!==e.nodeType)}function h(e){return void 0===e}function v(t){return Array.isArray&&e(v)?Array.isArray(t):"[object Array]"===Object.prototype.toString.call(t)}function y(e){return new gr(e)}function w(e,t,r,i){function n(e){return e&&(e.preventDefault=n.preventDefault,e.stopPropagation=n.stopPropagation,e._getPath=n._getPath),e}function a(e,t,r,i){var a=function(a){if(a=a||n(window.event)){a.target=a.srcElement;var s,o,l=!0;return"function"==typeof r&&(s=r(a)),o=t.call(e,a),"beforeunload"!==i?(!1!==s&&!1!==o||(l=!1),l):void 0}};return a}n._getPath=function(){var e=this;return this.path||this.composedPath&&this.composedPath()||y(e.target).getParents()},n.preventDefault=function(){this.returnValue=!1},n.stopPropagation=function(){this.cancelBubble=!0};var s=function(e,t,r){if(void 0===i&&"click"===t&&(i=!0),e&&e.addEventListener)e.addEventListener(t,function(e){e._getPath=n._getPath,r.call(this,e)},i);else{var s="on"+t,o=e[s];e[s]=a(e,r,o,t)}};s.apply(null,arguments)}function S(e){var t="pushState"in window.history?"popstate":"hashchange";w(window,t,e)}function b(e){if(e)return"undefined"!=typeof window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest?new XMLHttpRequest:"undefined"!=typeof XDomainRequest?new XDomainRequest:null;if("undefined"!=typeof window.XMLHttpRequest)return new XMLHttpRequest;if(window.ActiveXObject)try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(t){try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(t){pr.log(t)}}}function k(e,t,r){if(null==e)return!1;if(mr&&e.forEach===mr)e.forEach(t,r);else if(v(e))for(var i=0,n=e.length;i=200&&n.status<300||304==n.status?e.success(t(n.responseText)):e.error(t(n.responseText),n.status),n.onreadystatechange=null,n.onload=null)}catch(r){n.onreadystatechange=null,n.onload=null}},n.open(e.type,e.url,!0);try{e.credentials&&(n.withCredentials=!0),r(e.header)&&k(e.header,function(e,t){n.setRequestHeader&&n.setRequestHeader(t,e)}),e.data&&(e.cors||n.setRequestHeader&&n.setRequestHeader("X-Requested-With","XMLHttpRequest"),"application/json"===e.contentType?n.setRequestHeader&&n.setRequestHeader("Content-type","application/json; charset=UTF-8"):n.setRequestHeader&&n.setRequestHeader("Content-type","application/x-www-form-urlencoded"))}catch(l){pr.log(l)}n.send(e.data||null)}function j(e,t){var r=[];return null==e?r:Array.prototype.map&&e.map===Array.prototype.map?e.map(t):(k(e,function(e,i,n){r.push(t(e,i,n))}),r)}function N(e){var t=[];try{t=j(atob(e).split(""),function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})}catch(r){t=[]}try{return decodeURIComponent(t.join(""))}catch(r){return t.join("")}}function O(e){var t="";try{t=btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,function(e,t){return String.fromCharCode("0x"+t)}))}catch(r){t=e}return t}function C(e,t){t=t||window;var r=!1,i=!0,n=t.document,a=n.documentElement,s=n.addEventListener,o=s?"addEventListener":"attachEvent",l=s?"removeEventListener":"detachEvent",c=s?"":"on",u=function(i){"readystatechange"==i.type&&"complete"!=n.readyState||(("load"==i.type?t:n)[l](c+i.type,u,!1),!r&&(r=!0)&&e.call(t,i.type||i))},p=function(){try{a.doScroll("left")}catch(e){return void setTimeout(p,50)}u("poll")};if("complete"==n.readyState)e.call(t,"lazy");else{if(!s&&a.doScroll){try{i=!t.frameElement}catch(d){pr.log(d)}i&&p()}n[o](c+"DOMContentLoaded",u,!1),n[o](c+"readystatechange",u,!1),t[o](c+"load",u,!1)}}function $(e){return k(Array.prototype.slice.call(arguments,1),function(t){for(var r in t)void 0!==t[r]&&void 0===e[r]&&(e[r]=t[r])}),e}function A(e){var t=e;try{t=decodeURI(e)}catch(r){t=e}return t}function T(e){var t="t6KJCZa5pDdQ9khoEM3Tj70fbP2eLSyc4BrsYugARqFIw1mzlGNVXOHiWvxUn8",r=t.length-1,i={},n=0;for(n=0;n=2&&!/^(\d+\.)+\d+$/.test(i))for(var a="."+n.splice(n.length-1,1);n.length>0;)if(a="."+n.splice(n.length-1,1)+a,document.cookie=t+"=true; path=/; domain="+a,document.cookie.indexOf(t+"=true")!==-1){var s=new Date;return s.setTime(s.getTime()-1e3),document.cookie=t+"=true; expires="+s.toGMTString()+"; path=/; SameSite=Lax; domain="+a,a}return""}function B(e){function t(e,t){e=d(e);var r;if("body"===e)return document.getElementsByTagName("body")[0];if(0===e.indexOf("#"))e=e.slice(1),r=document.getElementById(e);else if(e.indexOf(":nth-of-type")>-1){var i=e.split(":nth-of-type");if(!i[0]||!i[1])return null;var n=i[0],a=i[1].match(/\(([0-9]+)\)/);if(!a||!a[1])return null;var s=Number(a[1]);if(!(g(t)&&t.children&&t.children.length>0))return null;for(var o=t.children,l=0;l0)return null}return r?r:null}function r(e){var n,a=i.shift();if(!a)return e;try{n=t(a,e)}catch(s){pr.log(s)}return n&&g(n)?r(n):null}if(!p(e))return null;var i=e.split(">"),n=null;return n=r(),n&&g(n)?n:null}function R(e,t){var r="",i="";return e.textContent?r=d(e.textContent):e.innerText&&(r=d(e.innerText)),r&&(r=r.replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255)),i=r||"","input"!==t&&"INPUT"!==t||(i=e.value||""),i}function K(e,t){t&&"string"==typeof t||(t="hostname\u89e3\u6790\u5f02\u5e38");var r=null;try{r=f(e).hostname}catch(i){pr.log("getHostname\u4f20\u5165\u7684url\u53c2\u6570\u4e0d\u5408\u6cd5\uff01")}return r||t}function M(){try{var e=navigator.appVersion.match(/OS (\d+)[._](\d+)[._]?(\d+)?/);return e&&e[1]?Number.parseInt(e[1],10):""}catch(t){return""}}function W(e,t){t=t.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]"),e=c(e);var r="[\\?&]"+t+"=([^]*)",i=new RegExp(r),n=i.exec(e);return null===n||n&&"string"!=typeof n[1]&&n[1].length?"":c(n[1])}function V(e){var t={},r=e.split("?"),i=r[1]||"";return i&&(t=u("?"+i)),t}function q(){return"undefined"!=typeof window.matchMedia||"undefined"!=typeof window.msMatchMedia}function F(){var e=screen.msOrientation||screen.mozOrientation||(screen.orientation||{}).type,t="\u672a\u53d6\u5230\u503c";if(e)t=e.indexOf("landscape")>-1?"landscape":"portrait";else if(q()){var r=window.matchMedia||window.msMatchMedia;r("(orientation: landscape)").matches?t="landscape":r("(orientation: portrait)").matches&&(t="portrait")}return t}function z(){var e,t={},r=navigator.userAgent.toLowerCase();return(e=r.match(/opera.([\d.]+)/))?t.opera=Number(e[1].split(".")[0]):(e=r.match(/msie ([\d.]+)/))?t.ie=Number(e[1].split(".")[0]):(e=r.match(/edge.([\d.]+)/))?t.edge=Number(e[1].split(".")[0]):(e=r.match(/firefox\/([\d.]+)/))?t.firefox=Number(e[1].split(".")[0]):(e=r.match(/chrome\/([\d.]+)/))?t.chrome=Number(e[1].split(".")[0]):(e=r.match(/version\/([\d.]+).*safari/))?t.safari=Number(e[1].match(/^\d*.\d*/)):(e=r.match(/trident\/([\d.]+)/))&&(t.ie=11),t}function X(e){return p(e)?(e=d(e),A(e)):A(location.href)}function Z(e){return p(e)?(e=d(e),A(e)):A(location.pathname)}function Y(e,t){return e.hasAttribute?e.hasAttribute(t):e.attributes?!(!e.attributes[t]||!e.attributes[t].specified):void 0}function G(e,t){if("string"==typeof t)return Y(e,t);if(v(t)){for(var r=!1,i=0;i0)for(var a=e.split(""),s=0;st)for(n=r+n;l=i*n+o,lt;)n=n/2+o;n=i*n+o}return n}function te(e,t){var r=e.indexOf;if(r)return r.call(e,t);for(var i=0;i41||t.firefox>30||t.opera>25||t.safari>12)&&(e=!0):(t.chrome>41||t.firefox>30||t.opera>25||t.safari>11.3)&&(e=!0)}else(t.chrome>38||t.edge>13||t.firefox>30||t.opera>25||t.safari>11)&&(e=!0);return e}function pe(){return"undefined"!=typeof window.XMLHttpRequest&&("withCredentials"in new XMLHttpRequest||"undefined"!=typeof XDomainRequest)}function de(t){if(!r(t)||!p(t.callbackName))return pr.log("JSONP \u8bf7\u6c42\u7f3a\u5c11 callbackName"),!1;t.success=e(t.success)?t.success:function(){},t.error=e(t.error)?t.error:function(){},t.data=t.data||"";var i=document.createElement("script"),n=document.getElementsByTagName("head")[0],a=null,s=!1;if(n.appendChild(i),ce(t.timeout)&&(a=setTimeout(function(){return!s&&(t.error("timeout"),window[t.callbackName]=function(){pr.log("call jsonp error")},a=null,n.removeChild(i),void(s=!0))},t.timeout)),window[t.callbackName]=function(){clearTimeout(a),a=null,t.success.apply(null,arguments),window[t.callbackName]=function(){pr.log("call jsonp error")},n.removeChild(i)},t.url.indexOf("?")>-1?t.url+="&callbackName="+t.callbackName:t.url+="?callbackName="+t.callbackName,r(t.data)){var o=[];k(t.data,function(e,t){o.push(t+"="+e)}),t.data=o.join("&"),t.url+="&"+t.data}i.onerror=function(e){return!s&&(window[t.callbackName]=function(){pr.log("call jsonp error")},clearTimeout(a),a=null,n.removeChild(i),t.error(e),void(s=!0))},i.src=t.url}function _e(t){var r={visibleHandler:e(t.visible)?t.visible:function(){},hiddenHandler:e(t.hidden)?t.hidden:function(){},visibilityChange:null,hidden:null,isSupport:function(){return"undefined"!=typeof document[this.hidden]},init:function(){"undefined"!=typeof document.hidden?(this.hidden="hidden",this.visibilityChange="visibilitychange"):"undefined"!=typeof document.mozHidden?(this.hidden="mozHidden",this.visibilityChange="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(this.hidden="msHidden",this.visibilityChange="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(this.hidden="webkitHidden",this.visibilityChange="webkitvisibilitychange"),this.listen()},listen:function(){if(this.isSupport()){var e=this;w(document,this.visibilityChange,function(){document[e.hidden]?e.hiddenHandler():e.visibleHandler()},1)}else w(window,"focus",this.visibleHandler),w(window,"blur",this.hiddenHandler)}};r.init()}function fe(e){e=P({success:function(){},error:function(){},appendCall:function(e){document.getElementsByTagName("head")[0].appendChild(e)}},e);var t=null;"css"===e.type&&(t=document.createElement("link"),t.rel="stylesheet",t.href=e.url),"js"===e.type&&(t=document.createElement("script"),t.async="async",t.setAttribute("charset","UTF-8"),t.src=e.url,t.type="text/javascript"),t.onload=t.onreadystatechange=function(){this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(e.success(),t.onload=t.onreadystatechange=null)},t.onerror=function(){e.error(),t.onerror=null},e.appendCall(t)}function ge(e){if("string"!=typeof e)return"";for(var t=/^\s*javascript/i;t.test(e);)e=e.replace(t,"");return e}function he(e,t){e=String(e),t="number"==typeof t?t:13;for(var r=126,i=e.split(""),n=0,a=i.length;nr?(o&&(clearTimeout(o),o=null),l=u,s=e.apply(n,a),o||(n=a=null)):o||i.trailing===!1||(o=setTimeout(c,p)),s}}function be(e){var t=[];return null==e?t:(k(e,function(e){t[t.length]=e}),t)}function ke(e){return e?e.toArray?e.toArray():v(e)||ie(e)?Array.prototype.slice.call(e):be(e):[]}function Pe(e){for(var t,r=[],i={},n=0;ncr.para.datasend_timeout&&(cr.para.datasend_timeout=cr.para.callback_timeout),cr.para.heatmap&&cr.para.heatmap.collect_tags&&r(cr.para.heatmap.collect_tags)&&k(cr.para.heatmap.collect_tags,function(e,t){"div"!==t&&e&&cr.heatmap.otherTags.push(t)}),cr.para.heatmap&&"default"===cr.para.heatmap.clickmap&&cr.heatmap.initUnlimitedTags()}function Qe(e){var t={};for(var r in e)t[r]=e[r];cr.store._state.identities=t,cr.store.save()}function et(){cr._t=cr._t||1*new Date,cr.lib_version=xr,cr.is_first_visitor=!1,cr.source_channel_standard=Tr}function tt(){if(br.isSupport())try{sessionStorage.setItem("sensorsdata_jssdk_debug","true")}catch(e){cr.log("enableLocalLog error: "+e.message)}}function rt(){br.isSupport()&&sessionStorage.removeItem("sensorsdata_jssdk_debug")}function it(){var e=Array.prototype.slice.call(arguments),t=e[0],r=e.slice(1);return"string"==typeof t&&Xr[t]?Xr[t].apply(Xr,r):void("function"==typeof t?t.apply(cr,r):cr.log("quick\u65b9\u6cd5\u4e2d\u6ca1\u6709\u8fd9\u4e2a\u529f\u80fd"+e[0]))}function nt(t,i){return p(t)?r(window.SensorsDataWebJSSDKPlugin)&&r(window.SensorsDataWebJSSDKPlugin[t])&&e(window.SensorsDataWebJSSDKPlugin[t].init)?(window.SensorsDataWebJSSDKPlugin[t].init(cr,i),window.SensorsDataWebJSSDKPlugin[t]):r(cr.modules)&&r(cr.modules[t])&&e(cr.modules[t].init)?(cr.modules[t].init(cr,i),cr.modules[t]):void cr.log(t+"\u6ca1\u6709\u83b7\u53d6\u5230,\u8bf7\u67e5\u9605\u6587\u6863\uff0c\u8c03\u6574"+t+"\u7684\u5f15\u5165\u987a\u5e8f\uff01"):(cr.log("use\u63d2\u4ef6\u540d\u79f0\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\uff01"),!1)}function at(e,t,r){qr.check({event:e,properties:t})&&qr.send({type:"track",event:e,properties:t},r)}function st(e,t){return!!qr.check({bindKey:e,bindValue:t})&&(cr.store._state.identities[e]=t,cr.store.save(),void qr.send({type:"track_id_bind",event:"$BindID",properties:{}}))}function ot(e,t){if(!qr.check({unbindKey:e,bindValue:t}))return!1;if(r(cr.store._state.identities)&&cr.store._state.identities.hasOwnProperty(e)&&cr.store._state.identities[e]===t){var i=cr.store.getUnionId().login_id;i&&e+"+"+t===i&&(cr.store._state.distinct_id=cr.store._state.first_id,cr.store._state.first_id="",cr.store.set("history_login_id",{name:"",value:""})),"$identity_cookie_id"!==e&&(delete cr.store._state.identities[e],cr.store.save())}var n={};n[e]=t,qr.send({identities:n,type:"track_id_unbind",event:"$UnbindID",properties:{}})}function lt(e,t,r){function i(e,t,r){function i(e){function i(){a||(a=!0,location.href=n.href)}e.stopPropagation(),e.preventDefault();var a=!1;setTimeout(i,1e3),cr.track(t,r,i)}e=e||{};var n=null;return e.ele&&(n=e.ele),e.event&&(n=e.target?e.target:e.event.target),r=r||{},!(!n||"object"!=typeof n)&&(!n.href||/^javascript/.test(n.href)||n.target||n.download||n.onclick?(cr.track(t,r),!1):(e.event&&i(e.event),void(e.ele&&qe(e.ele,"click",function(e){i(e)}))))}"object"==typeof e&&e.tagName?i({ele:e},t,r):"object"==typeof e&&e.target&&e.event&&i(e,t,r)}function ct(e,t,r){return r=r||{},
+!(!e||"object"!=typeof e)&&(!(!e.href||/^javascript/.test(e.href)||e.target)&&void qe(e,"click",function(i){function n(){a||(a=!0,location.href=e.href)}i.preventDefault();var a=!1;setTimeout(n,1e3),cr.track(t,r,n)}))}function ut(e,t,r){qr.check({item_type:e,item_id:t,properties:r})&&qr.sendItem({type:"item_set",item_type:e,item_id:t,properties:r||{}})}function pt(e,t){qr.check({item_type:e,item_id:t})&&qr.sendItem({type:"item_delete",item_type:e,item_id:t})}function dt(e,t){qr.check({propertiesMust:e})&&qr.send({type:"profile_set",properties:e},t)}function _t(e,t){qr.check({propertiesMust:e})&&qr.send({type:"profile_set_once",properties:e},t)}function ft(e,t){qr.check({propertiesMust:e})&&(k(e,function(t,r){p(t)?e[r]=[t]:v(t)?e[r]=t:(delete e[r],cr.log("appendProfile\u5c5e\u6027\u7684\u503c\u5fc5\u987b\u662f\u5b57\u7b26\u4e32\u6216\u8005\u6570\u7ec4"))}),ae(e)||qr.send({type:"profile_append",properties:e},t))}function gt(e,t){function r(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&!/-*\d+/.test(String(e[t])))return!1;return!0}var i=e;p(e)&&(e={},e[i]=1),qr.check({propertiesMust:e})&&(r(e)?qr.send({type:"profile_increment",properties:e},t):cr.log("profile_increment\u7684\u503c\u53ea\u80fd\u662f\u6570\u5b57"))}function ht(e){qr.send({type:"profile_delete"},e),Rr.set("distinct_id",fr()),Rr.set("first_id","")}function mt(e,t){var r=e,i={};p(e)&&(e=[],e.push(r)),v(e)?(k(e,function(e){p(e)?i[e]=!0:cr.log("profile_unset\u7ed9\u7684\u6570\u7ec4\u91cc\u9762\u7684\u503c\u5fc5\u987b\u65f6string,\u5df2\u7ecf\u8fc7\u6ee4\u6389",e)}),qr.send({type:"profile_unset",properties:i},t)):cr.log("profile_unset\u7684\u53c2\u6570\u662f\u6570\u7ec4")}function vt(e,t){function r(e){cr.store._state.identities.$identity_anonymous_id=e,cr.store.save()}"number"==typeof e&&(e=String(e));var i=Rr.getFirstId();if("undefined"==typeof e){var n=fr();i?Rr.set("first_id",n):Rr.set("distinct_id",n),r(n)}else qr.check({distinct_id:e})&&(t===!0?i?Rr.set("first_id",e):Rr.set("distinct_id",e):i?Rr.change("first_id",e):Rr.change("distinct_id",e),r(e))}function yt(e,t,r,i){var n=Rr.getFirstId()||Rr.getDistinctId();Rr.set("distinct_id",e),qr.send({original_id:n,distinct_id:cr.store.getDistinctId(),type:"track_signup",event:t,properties:r},i)}function wt(e,t,r,i){"number"==typeof e&&(e=String(e)),qr.check({distinct_id:e,event:t,properties:r})&&yt(e,t,r,i)}function St(e){qr.check({properties:e})?P(Jr.currentProps,e):cr.log("register\u8f93\u5165\u7684\u53c2\u6570\u6709\u8bef")}function bt(e){Rr.clearAllProps(e)}function kt(e){var t;if(v(e)&&e.length>0)for(t=0;t-1?e.config.send_type:cr.para.send_type,"beacon"===r&&ue()===!1&&(r="image"),"ajax"===r&&pe()===!1&&(r="image"),r}function Jt(e){var t=Et(e);switch(t){case"image":return new ti(e);case"ajax":return new ri(e);case"beacon":return new ii(e);default:return new ti(e)}}function Ht(e){var t=Jt(e),r=t.start;return t.start=function(){var e=this;r.apply(this,arguments),setTimeout(function(){e.isEnd(!0)},cr.para.callback_timeout)},t.end=function(){this.callback&&this.callback();var e=this;setTimeout(function(){e.lastClear&&e.lastClear()},cr.para.datasend_timeout-cr.para.callback_timeout)},t.isEnd=function(){this.received||(this.received=!0,this.end())},t}function Ut(){this.sendTimeStamp=0,this.timer=null,this.serverUrl="",this.hasTabStorage=!1}function Bt(t){var r=location.href,i=window.history.pushState,n=window.history.replaceState;e(window.history.pushState)&&(window.history.pushState=function(){i.apply(window.history,arguments),t(r),r=location.href}),e(window.history.replaceState)&&(window.history.replaceState=function(){n.apply(window.history,arguments),t(r),r=location.href});var a;a=window.document.documentMode?"hashchange":i?"popstate":"hashchange",w(window,a,function(){t(r),r=location.href})}function Rt(e){var t=null,r=new RegExp(e+"=([^]+)");try{var i=JSON.parse(window.name);k(i,function(r,i){e===i&&(t=decodeURIComponent(r))})}catch(n){t=null}if(null===t){var a=location.href.match(r);a&&a[0]&&a[1]&&(t=c(a[1]))}return t}function Kt(e){function t(){var e=[];i.touch_app_bridge||e.push(cr.debug.defineMode("1")),r(cr.para.app_js_bridge)||(e.push(cr.debug.defineMode("2")),i.verify_success=!1),r(cr.para.heatmap)&&"default"==cr.para.heatmap.clickmap||e.push(cr.debug.defineMode("3")),"fail"===i.verify_success&&e.push(cr.debug.defineMode("4"));var t={callType:"app_alert",data:e};SensorsData_App_Visual_Bridge&&SensorsData_App_Visual_Bridge.sensorsdata_visualized_alert_info?SensorsData_App_Visual_Bridge.sensorsdata_visualized_alert_info(JSON.stringify(t)):window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.sensorsdataNativeTracker&&window.webkit.messageHandlers.sensorsdataNativeTracker.postMessage&&window.webkit.messageHandlers.sensorsdataNativeTracker.postMessage(JSON.stringify(t))}var i=cr.bridge.bridge_info;if(r(window.SensorsData_App_Visual_Bridge)&&window.SensorsData_App_Visual_Bridge.sensorsdata_visualized_mode&&(window.SensorsData_App_Visual_Bridge.sensorsdata_visualized_mode===!0||window.SensorsData_App_Visual_Bridge.sensorsdata_visualized_mode()))if(r(cr.para.heatmap)&&"default"==cr.para.heatmap.clickmap)if(r(cr.para.app_js_bridge)&&"success"===i.verify_success)if(e)sa_jssdk_app_define_mode(cr,e);else{var n=location.protocol,a=["http:","https:"];n=te(a,n)>-1?n:"https:",fe({success:function(){setTimeout(function(){"undefined"!=typeof sa_jssdk_app_define_mode&&sa_jssdk_app_define_mode(cr,e)},0)},error:function(){},type:"js",url:n+"//static.sensorsdata.cn/sdk/"+cr.lib_version+"/vapph5define.min.js"})}else t();else t()}function Mt(){cr.para.is_track_single_page&&hi.on("switch",function(e){var t=function(t){t=t||{},e!==location.href&&(Jr.pageProp.referrer=X(e),cr.quick("autoTrack",P({$url:X(),$referrer:X(e)},t)))};if("boolean"==typeof cr.para.is_track_single_page)t();else if("function"==typeof cr.para.is_track_single_page){var i=cr.para.is_track_single_page();r(i)?t(i):i===!0&&t()}})}function Wt(){cr._q&&v(cr._q)&&cr._q.length>0&&k(cr._q,function(e){cr[e[0]].apply(cr,Array.prototype.slice.call(e[1]))}),r(cr.para.heatmap)&&(zr.initHeatmap(),zr.initScrollmap())}function Vt(){cr.readyState.setState(3),new cr.JSBridge({type:"visualized",app_call_js:function(){Kt("undefined"!=typeof sa_jssdk_app_define_mode?!0:!1)}}),Kt(!1),cr.bridge.app_js_bridge_v1(),Jr.initPage(),Mt(),!cr.para.app_js_bridge&&cr.para.batch_send&&dr.isSupport()&&cr.batchSend.batchInterval(),cr.store.init(),cr.vtrackBase.init(),cr.readyState.setState(4),Wt()}function qt(){vi.isSeachHasKeyword()?vi.hasKeywordHandle():window.parent!==self&&yi.isSearchHasKeyword()?yi.verifyVtrackMode():vi.isStorageHasKeyword()?vi.storageHasKeywordHandle():window.parent!==self&&yi.isStorageHasKeyword()?yi.verifyVtrackMode():(Vt(),yi.notifyUser())}function Ft(){k(wi,function(e){var t=cr[e];cr[e]=function(){if(cr.readyState.state<3)return v(cr._q)||(cr._q=[]),cr._q.push([e,arguments]),!1;{if(cr.readyState.getState())return t.apply(cr,arguments);try{console.error("\u8bf7\u5148\u521d\u59cb\u5316\u795e\u7b56JS SDK")}catch(r){cr.log(r)}}}})}function zt(e){this.cancel=function(){e=!0},this.getCanceled=function(){return e||!1}}function Xt(e,t,r){var i=null;try{i=JSON.parse(JSON.stringify(e))}catch(n){De(n)}this.getOriginalData=function(){return i},this.getPosition=function(){return t},this.cancelationToken=new zt,this.sensors=r}function Zt(e){if(!r(e))throw"error: Stage constructor requires arguments.";this.processDef=e,this.registeredInterceptors={}}function Yt(e){e&&e.dataStage&&ki.registerStageImplementation(e.dataStage)}function Gt(e){e.kit=ei,e.saEvent=qr,this.dataStage=Vr}function Qt(t){return r(t)?(k(t,function(r,i){if(v(r)){var n=[];k(r,function(e){p(e)?n.push(e):De("\u60a8\u7684\u6570\u636e-",i,r,"\u7684\u6570\u7ec4\u91cc\u7684\u503c\u5fc5\u987b\u662f\u5b57\u7b26\u4e32,\u5df2\u7ecf\u5c06\u5176\u5220\u9664")}),t[i]=n}p(r)||ce(r)||x(r)||ne(r)||v(r)||e(r)||"$option"===i||(De("\u60a8\u7684\u6570\u636e-",i,r,"-\u683c\u5f0f\u4e0d\u6ee1\u8db3\u8981\u6c42\uff0c\u6211\u4eec\u5df2\u7ecf\u5c06\u5176\u5220\u9664"),delete t[i])}),t):t}function er(e,t){return ce(t)&&e.length>t?(De("\u5b57\u7b26\u4e32\u957f\u5ea6\u8d85\u8fc7\u9650\u5236\uff0c\u5df2\u7ecf\u505a\u622a\u53d6--"+e),e.slice(0,t)):e}function tr(e){var t=["distinct_id","user_id","id","date","datetime","event","events","first_id","original_id","device_id","properties","second_id","time","users"];r(e)&&k(t,function(t,r){t in e&&(r<3?(delete e[t],De("\u60a8\u7684\u5c5e\u6027- "+t+"\u662f\u4fdd\u7559\u5b57\u6bb5\uff0c\u6211\u4eec\u5df2\u7ecf\u5c06\u5176\u5220\u9664")):De("\u60a8\u7684\u5c5e\u6027- "+t+"\u662f\u4fdd\u7559\u5b57\u6bb5\uff0c\u8bf7\u907f\u514d\u5176\u4f5c\u4e3a\u5c5e\u6027\u540d"))})}function rr(e){var t=["$element_selector","$element_path"],i=["sensorsdata_app_visual_properties"];r(e)&&k(e,function(n,a){if(r(n))rr(e[a]);else if(p(n)){if(te(i,a)>-1)return;e[a]=er(n,te(t,a)>-1?1024:Nr.max_string_length)}})}function ir(e){"undefined"!=typeof e.properties.$project&&(e.project=e.properties.$project,delete e.properties.$project),"undefined"!=typeof e.properties.$token&&(e.token=e.properties.$token,delete e.properties.$token)}function nr(e){if("item_type"in e){var t=e.item_type,r=function(t){return t||delete e.item_type,!0};Xe({item_type:t},r)}if("item_id"in e){var i=e.item_id,n=function(t,r,i){return t||"string"!==i||delete e.item_id,!0};Xe({item_id:i},n)}}function ar(e){k(e,function(t,r){var i=function(t,i,n){return t||"keyLength"===n||delete e[r],!0};Xe({propertyKey:r},i)})}function sr(e){var t=e.properties;r(t)?(Qt(t),tr(t),ir(e),ar(t),rr(t)):"properties"in e&&(e.properties={}),ve(e),nr(e)}function or(){this.dataStage=Pi}function lr(e){e&&(pr.setup(De),cr._=P(jr,Qr),cr.ee=mi,cr.sendState=ni,cr.events=new cr._.EventEmitterSa,cr.batchSend=oi,cr.bridge=li,cr.JSBridge=ci,cr.store=Rr,cr.vtrackBase=ui,cr.unlimitedDiv=pi,cr.customProp=di,cr.vtrackcollect=_i,cr.vapph5collect=gi,cr.heatmap=zr,cr.detectMode=qt,cr.registerFeature=Yt,Yt(new Gt(cr)),Yt(new or(cr)));var t=e?Yr:Si;for(var r in t)cr[r]=t[r]}var cr={};(function(){function e(i,n){function a(e,t){try{e()}catch(r){t&&t()}}function s(e){if(null!=s[e])return s[e];var t;if("bug-string-char-index"==e)t="a"!="a"[0];else if("json"==e)t=s("json-stringify")&&s("date-serialization")&&s("json-parse");else if("date-serialization"==e){if(t=s("json-stringify")&&w){var r=n.stringify;a(function(){t='"-271821-04-20T00:00:00.000Z"'==r(new p((-864e13)))&&'"+275760-09-13T00:00:00.000Z"'==r(new p(864e13))&&'"-000001-01-01T00:00:00.000Z"'==r(new p((-621987552e5)))&&'"1969-12-31T23:59:59.999Z"'==r(new p((-1)))})}}else{var i,o='{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';if("json-stringify"==e){var r=n.stringify,u="function"==typeof r;u&&((i=function(){return 1}).toJSON=i,a(function(){u="0"===r(0)&&"0"===r(new l)&&'""'==r(new c)&&r(v)===h&&r(h)===h&&r()===h&&"1"===r(i)&&"[1]"==r([i])&&"[null]"==r([h])&&"null"==r(null)&&"[null,null,null]"==r([h,v,null])&&r({a:[i,!0,!1,null,"\0\b\n\f\r\t"]})==o&&"1"===r(null,i)&&"[\n 1,\n 2\n]"==r([1,2],null,1)},function(){u=!1})),t=u}if("json-parse"==e){var d,_=n.parse;"function"==typeof _&&a(function(){0!==_("0")||_(!1)||(i=_(o),d=5==i.a.length&&1===i.a[0],d&&(a(function(){d=!_('"\t"')}),d&&a(function(){d=1!==_("01")}),d&&a(function(){d=1!==_("1.")})))},function(){d=!1}),t=d}}return s[e]=!!t}function o(e){return T(this)}i||(i=r.Object()),n||(n=r.Object());var l=i.Number||r.Number,c=i.String||r.String,u=i.Object||r.Object,p=i.Date||r.Date,d=i.SyntaxError||r.SyntaxError,_=i.TypeError||r.TypeError,f=i.Math||r.Math,g=i.JSON||r.JSON;if("object"==typeof g&&g)return n.stringify=g.stringify,n.parse=g.parse,n.runInContext=e,n;var h,m=u.prototype,v=m.toString,y=m.hasOwnProperty,w=new p((-0xc782b5b800cec));if(a(function(){w=w.getUTCFullYear()==-109252&&0===w.getUTCMonth()&&1===w.getUTCDate()&&10==w.getUTCHours()&&37==w.getUTCMinutes()&&6==w.getUTCSeconds()&&708==w.getUTCMilliseconds()}),s["bug-string-char-index"]=s["date-serialization"]=s.json=s["json-stringify"]=s["json-parse"]=null,!s("json")){var S="[object Function]",b="[object Date]",k="[object Number]",P="[object String]",D="[object Array]",j="[object Boolean]",N=s("bug-string-char-index"),O=function(e,r){var i,n,a,s=0;(i=function(){this.valueOf=0}).prototype.valueOf=0,n=new i;for(a in n)y.call(n,a)&&s++;return i=n=null,s?O=function(e,t){var r,i,n=v.call(e)==S;for(r in e)n&&"prototype"==r||!y.call(e,r)||(i="constructor"===r)||t(r);(i||y.call(e,r="constructor"))&&t(r)}:(n=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"],O=function(e,r){var i,a,s=v.call(e)==S,o=!s&&"function"!=typeof e.constructor&&t[typeof e.hasOwnProperty]&&e.hasOwnProperty||y;for(i in e)s&&"prototype"==i||!o.call(e,i)||r(i);for(a=n.length;i=n[--a];)o.call(e,i)&&r(i)}),O(e,r)};if(!s("json-stringify")&&!s("date-serialization")){var C={92:"\\\\",34:'\\"',8:"\\b",12:"\\f",10:"\\n",13:"\\r",9:"\\t"},$="000000",A=function(e,t){return($+(t||0)).slice(-e)},T=function(e){var t,r,i,n,a,s,o,l,c;if(w)t=function(e){r=e.getUTCFullYear(),i=e.getUTCMonth(),n=e.getUTCDate(),s=e.getUTCHours(),o=e.getUTCMinutes(),l=e.getUTCSeconds(),c=e.getUTCMilliseconds()};else{var u=f.floor,p=[0,31,59,90,120,151,181,212,243,273,304,334],d=function(e,t){return p[t]+365*(e-1970)+u((e-1969+(t=+(t>1)))/4)-u((e-1901+t)/100)+u((e-1601+t)/400)};t=function(e){for(n=u(e/864e5),r=u(n/365.2425)+1970-1;d(r+1,0)<=n;r++);for(i=u((n-d(r,0))/30.42);d(r,i+1)<=n;i++);n=1+n-d(r,i),a=(e%864e5+864e5)%864e5,s=u(a/36e5)%24,o=u(a/6e4)%60,l=u(a/1e3)%60,c=a%1e3}}return(T=function(e){return e>-1/0&&e<1/0?(t(e),e=(r<=0||r>=1e4?(r<0?"-":"+")+A(6,r<0?-r:r):A(4,r))+"-"+A(2,i+1)+"-"+A(2,n)+"T"+A(2,s)+":"+A(2,o)+":"+A(2,l)+"."+A(3,c)+"Z",r=i=n=s=o=l=c=null):e=null,e})(e)};if(s("json-stringify")&&!s("date-serialization")){var x=n.stringify;n.stringify=function(e,t,r){var i=p.prototype.toJSON;p.prototype.toJSON=o;var n=x(e,t,r);return p.prototype.toJSON=i,n}}else{var L="\\u00",I=function(e){var t=e.charCodeAt(0),r=C[t];return r?r:L+A(2,t.toString(16))},E=/[\x00-\x1f\x22\x5c]/g,J=function(e){return E.lastIndex=0,'"'+(E.test(e)?e.replace(E,I):e)+'"'},H=function(e,t,r,i,n,s,o){var l,c,u,d,f,g,m,y,w;if(a(function(){l=t[e]}),"object"==typeof l&&l&&(l.getUTCFullYear&&v.call(l)==b&&l.toJSON===p.prototype.toJSON?l=T(l):"function"==typeof l.toJSON&&(l=l.toJSON(e))),r&&(l=r.call(t,e,l)),l==h)return l===h?l:"null";switch(c=typeof l,"object"==c&&(u=v.call(l)),u||c){case"boolean":case j:return""+l;case"number":case k:return l>-1/0&&l<1/0?""+l:"null";case"string":case P:return J(""+l)}if("object"==typeof l){for(m=o.length;m--;)if(o[m]===l)throw _();if(o.push(l),d=[],y=s,s+=n,u==D){for(g=0,m=l.length;g0)for(i>10&&(i=10),n="";n.length=48&&n<=57||n>=97&&n<=102||n>=65&&n<=70||M();e+=R("0x"+a.slice(t,U));break;default:M()}else{if(34==n)break;for(n=a.charCodeAt(U),t=U;n>=32&&92!=n&&34!=n;)n=a.charCodeAt(++U);e+=a.slice(t,U)}if(34==a.charCodeAt(U))return U++,e;M();default:if(t=U,45==n&&(i=!0,n=a.charCodeAt(++U)),n>=48&&n<=57){for(48==n&&(n=a.charCodeAt(U+1),n>=48&&n<=57)&&M(),i=!1;U=48&&n<=57);U++);if(46==a.charCodeAt(U)){for(r=++U;r57));r++);r==U&&M(),U=r}if(n=a.charCodeAt(U),101==n||69==n){for(n=a.charCodeAt(++U),43!=n&&45!=n||U++,r=U;r57));r++);r==U&&M(),U=r}return+a.slice(t,U)}i&&M();var o=a.slice(U,U+4);if("true"==o)return U+=4,!0;if("fals"==o&&101==a.charCodeAt(U+4))return U+=5,!1;if("null"==o)return U+=4,null;M()}return"$"},V=function(e){var t,r;if("$"==e&&M(),"string"==typeof e){if("@"==(N?e.charAt(0):e[0]))return e.slice(1);if("["==e){for(t=[];e=W(),"]"!=e;)r?","==e?(e=W(),"]"==e&&M()):M():r=!0,","==e&&M(),t.push(V(e));return t}if("{"==e){for(t={};e=W(),"}"!=e;)r?","==e?(e=W(),"}"==e&&M()):M():r=!0,","!=e&&"string"==typeof e&&"@"==(N?e.charAt(0):e[0])&&":"==W()||M(),t[e.slice(1)]=V(W());return t}M()}return e},q=function(e,t,r){var i=F(e,t,r);i===h?delete e[t]:e[t]=i},F=function(e,t,r){var i,n=e[t];if("object"==typeof n&&n)if(v.call(n)==D)for(i=n.length;i--;)q(v,O,n,i,r);else O(n,function(e){q(n,e,r)});return r.call(e,t,n)};n.parse=function(e,t){var r,i;return U=0,B=""+e,r=V(W()),"$"!=W()&&M(),U=B=null,t&&v.call(t)==S?F((i={},i[""]=r,i),"",t):r}}}return n.runInContext=e,n}var t={"function":!0,object:!0},r=t[typeof window]&&window||this,i=r.JSON,n=r.JSON3,a=!1,s=e(r,r.JSON3={noConflict:function(){return a||(a=!0,r.JSON=i,r.JSON3=n,i=n=null),s}});r.JSON={parse:s.parse,stringify:s.stringify}}).call(window),function(e,t){t(e)}(window,function(e){if(e.atob)try{e.atob(" ")}catch(t){e.atob=function(e){var t=function(t){return e(String(t).replace(/[\t\n\f\r ]+/g,""))};return t.original=e,t}(e.atob)}else{var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",i=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;e.btoa=function(e){e=String(e);for(var t,i,n,a,s="",o=0,l=e.length%3;o255||(n=e.charCodeAt(o++))>255||(a=e.charCodeAt(o++))>255)return"";t=i<<16|n<<8|a,s+=r.charAt(t>>18&63)+r.charAt(t>>12&63)+r.charAt(t>>6&63)+r.charAt(63&t)}return l?s.slice(0,l-3)+"===".substring(l):s},e.atob=function(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!i.test(e))return"";e+="==".slice(2-(3&e.length));for(var t,n,a,s="",o=0;o>16&255):64===a?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return s}}}),function(){String.prototype.replaceAll||(String.prototype.replaceAll=function(e,t){return"[object regexp]"===Object.prototype.toString.call(e).toLowerCase()?this.replace(e,t):this.replace(new RegExp(e,"g"),t)})}();var ur,pr={setup:function(e){ur=e},log:function(){(ur||console&&console.log||function(){}).apply(null,arguments)}},dr={get:function(e){return window.localStorage.getItem(e)},parse:function(e){var t;try{t=JSON.parse(dr.get(e))||null}catch(r){pr.log(r)}return t},set:function(e,t){try{window.localStorage.setItem(e,t)}catch(r){pr.log(r)}},remove:function(e){window.localStorage.removeItem(e)},isSupport:function(){var e=!0;try{var t="__local_store_support__",r="testIsSupportStorage";dr.set(t,r),dr.get(t)!==r&&(e=!1),dr.remove(t)}catch(i){e=!1}return e}},_r=function(){function e(){return r=(9301*r+49297)%233280,r/233280}var t=new Date,r=t.getTime();return function(t){return Math.ceil(e()*t)}}();a.prototype.get=function(e,r,a,s){if(!e)throw new Error("key is must");r=r||1e4,a=a||1e3,s=s||function(){};var o=this.lockGetPrefix+e,l=dr.get(o),c=String(i());return l&&(l=n(l)||{randomNum:0,expireTime:0},l.expireTime>t())?s(null):(dr.set(o,JSON.stringify({randomNum:c,expireTime:t()+r})),void setTimeout(function(){l=n(dr.get(o))||{randomNum:0,expireTime:0},l&&l.randomNum===c?(s(dr.get(e)),dr.remove(e),dr.remove(o)):s(null)},a))},a.prototype.set=function(e,r,a,s,o){if(!e||!r)throw new Error("key and val is must");a=a||1e4,s=s||1e3,o=o||function(){};var l=this.lockSetPrefix+e,c=dr.get(l),u=String(i());return c&&(c=n(c)||{randomNum:0,expireTime:0},c.expireTime>t())?o({status:"fail",reason:"This key is locked"}):(dr.set(l,JSON.stringify({randomNum:u,expireTime:t()+a})),void setTimeout(function(){c=n(dr.get(l))||{randomNum:0,expireTime:0},c.randomNum===u?dr.set(e,r)&&o({status:"success"}):o({status:"fail",reason:"This key is locked"})},s))},l.prototype.on=function(e,t){if(!e||!t)return!1;if(!s(t))throw new Error("listener must be a function");this._events[e]=this._events[e]||[];var r="object"==typeof t;return this._events[e].push(r?t:{listener:t,once:!1}),this},l.prototype.prepend=function(e,t){if(!e||!t)return!1;if(!s(t))throw new Error("listener must be a function");this._events[e]=this._events[e]||[];var r="object"==typeof t;return this._events[e].unshift(r?t:{listener:t,once:!1}),this},l.prototype.prependOnce=function(e,t){return this.prepend(e,{listener:t,once:!0})},l.prototype.once=function(e,t){return this.on(e,{listener:t,once:!0})},l.prototype.off=function(e,t){var r=this._events[e];if(!r)return!1;if("number"==typeof t)r.splice(t,1);else if("function"==typeof t)for(var i=0,n=r.length;i=4&&(a=e(a,n),n=[]);return n.length>0&&(a=e(a,n)),a.toString(16)};return function(){var n=String(screen.height*screen.width);n=n&&/\d{5,}/.test(n)?n.toString(16):String(31242*i()).replace(".","").slice(0,8);var a=e()+"-"+t()+"-"+r()+"-"+n+"-"+e();return a?a:(String(i())+String(i())+String(i())).slice(2,15)}}(),gr=function(e){this.ele=e},hr=function(e,t){for(var r=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&r.push(e);return r};gr.prototype={addClass:function(e){var t=" "+this.ele.className+" ";return t.indexOf(" "+e+" ")===-1&&(this.ele.className=this.ele.className+(""===this.ele.className?"":" ")+e),this},removeClass:function(e){var t=" "+this.ele.className+" ";return t.indexOf(" "+e+" ")!==-1&&(this.ele.className=t.replace(" "+e+" "," ").slice(1,-1)),this},hasClass:function(e){var t=" "+this.ele.className+" ";return t.indexOf(" "+e+" ")!==-1},attr:function(e,t){return"string"==typeof e&&h(t)?this.ele.getAttribute(e):("string"==typeof e&&(t=String(t),this.ele.setAttribute(e,t)),this)},offset:function(){var e=this.ele.getBoundingClientRect();if(e.width||e.height){var t=this.ele.ownerDocument,r=t.documentElement;return{top:e.top+window.pageYOffset-r.clientTop,left:e.left+window.pageXOffset-r.clientLeft}}return{top:0,left:0}},getSize:function(){if(!window.getComputedStyle)return{width:this.ele.offsetWidth,height:this.ele.offsetHeight};try{var e=this.ele.getBoundingClientRect();return{width:e.width,height:e.height}}catch(t){return{width:0,height:0}}},getStyle:function(e){return this.ele.currentStyle?this.ele.currentStyle[e]:this.ele.ownerDocument.defaultView.getComputedStyle(this.ele,null).getPropertyValue(e)},wrap:function(e){var t=document.createElement(e);return this.ele.parentNode.insertBefore(t,this.ele),t.appendChild(this.ele),y(t)},getCssStyle:function(e){var t=this.ele.style.getPropertyValue(e);if(t)return t;var r=null;if("function"==typeof window.getMatchedCSSRules&&(r=window.getMatchedCSSRules(this.ele)),!r||!v(r))return null;for(var i=r.length-1;i>=0;i--){var n=r[i];if(t=n.style.getPropertyValue(e))return t}},sibling:function(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e},next:function(){return this.sibling(this.ele,"nextSibling")},prev:function(){return this.sibling(this.ele,"previousSibling")},siblings:function(){return hr((this.ele.parentNode||{}).firstChild,this.ele)},children:function(){return hr(this.ele.firstChild)},parent:function(){var e=this.ele.parentNode;return e=e&&11!==e.nodeType?e:null,y(e)},previousElementSibling:function(){var e=this.ele;if("previousElementSibling"in document.documentElement)return y(e.previousElementSibling);for(;e=e.previousSibling;)if(1===e.nodeType)return y(e);return y(null)},getSameTypeSiblings:function(){for(var e=this.ele,t=e.parentNode,r=e.tagName.toLowerCase(),i=[],n=0;n0&&(e=e.concat(Nr.source_channel),e=Pe(e)),k(e,function(e){t=W(location.href,e),t.length&&(r[e]=t)}),r},campaignParamsStandard:function(e,t){e=e||"",t=t||"";var r=Jr.campaignParams(),i={},n={};return k(r,function(r,a,s){(" "+Tr+" ").indexOf(" "+a+" ")!==-1?i[e+a]=s[a]:n[t+a]=s[a]}),{$utms:i,otherUtms:n}},properties:function(){var e=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0,t=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0,r={$timezone_offset:(new Date).getTimezoneOffset(),$screen_height:Number(screen.height)||0,$screen_width:Number(screen.width)||0,$viewport_height:e,$viewport_width:t,$lib:"js",$lib_version:xr};return r},currentProps:{},register:function(e){P(Jr.currentProps,e)}},Hr={get:function(e){return wr.get(e)},set:function(e,t,r,i){var n="";if(i="undefined"==typeof i?Nr.cross_subdomain:i){var a=Te(location.href);"url\u89e3\u6790\u5931\u8d25"===a&&(a=""),n=a?"; domain="+a:""}return wr.set(e,t,r,i,Nr.set_cookie_samesite,Nr.is_secure_cookie,n)},remove:function(e,t){return t="undefined"==typeof t?Nr.cross_subdomain:t,wr.remove(e,t)},isSupport:function(e,t){return e=e||"sajssdk_2015_cookie_access_test",t=t||"1",wr.isSupport(e,t)}};Hr.getNewUser=ze;var Ur={data:{},get:function(e){var t=this.data[e];return void 0===t?null:void 0!==t._expirationTimestamp_?(new Date).getTime()>t._expirationTimestamp_?null:t.value:t},set:function(e,t,r){if(r){var i,n=new Date;i="s"===String(r).slice(-1)?n.getTime()+1e3*Number(String(r).slice(0,-1)):n.getTime()+24*r*60*60*1e3,t={value:t,_expirationTimestamp_:i}}this.data[e]=t},getNewUserFlagMemoryKey:function(e){return"sajssdk_2015_"+Nr.sdk_id+e}},Br={checkIsAddSign:function(e){"track"===e.type&&(ze()?e.properties.$is_first_day=!0:e.properties.$is_first_day=!1)},is_first_visit_time:!1,is_page_first_visited:!1,checkIsFirstTime:function(e){"track"===e.type&&"$pageview"===e.event&&(this.is_first_visit_time?(e.properties.$is_first_time=!0,this.is_first_visit_time=!1):e.properties.$is_first_time=!1)},setDeviceId:function(e){var t=null,r=Hr.get("sensorsdata2015jssdkcross"+cr.para.sdk_id);r=Ne(r);var i={};null!=r&&le(r)&&(i=JSON.parse(r),i.$device_id&&(t=i.$device_id)),t=t||e,cr.para.cross_subdomain===!0?cr.store.set("$device_id",t):(i.$device_id=t,i=JSON.stringify(i),cr.para.encrypt_cookie&&(i=Oe(i)),Hr.set("sensorsdata2015jssdkcross"+cr.para.sdk_id,i,null,!0)),cr.para.is_track_device_id&&(Jr.currentProps.$device_id=t)},storeInitCheck:function(){if(cr.is_first_visitor){var e=new Date,t={h:23-e.getHours(),m:59-e.getMinutes(),s:59-e.getSeconds()};Hr.isSupport()?Hr.set(Fe("new_user"),"1",3600*t.h+60*t.m+t.s+"s"):Ur.set(Ur.getNewUserFlagMemoryKey("new_user"),"1",3600*t.h+60*t.m+t.s+"s"),this.is_first_visit_time=!0,this.is_page_first_visited=!0}else ze()||(this.checkIsAddSign=function(e){"track"===e.type&&(e.properties.$is_first_day=!1)}),this.checkIsFirstTime=function(e){"track"===e.type&&"$pageview"===e.event&&(e.properties.$is_first_time=!1)}},checkIsFirstLatest:function(){var e=Jr.pageProp.url_domain,t={};""===e&&(e="url\u89e3\u6790\u5931\u8d25");var i=Be(document.referrer,!0);if(cr.para.preset_properties.search_keyword_baidu?Je(document.referrer)&&(!Le()||r(i)&&i.active?cr.store._state&&cr.store._state.props&&(cr.store._state.props.$search_keyword_id&&delete cr.store._state.props.$search_keyword_id,cr.store._state.props.$search_keyword_id_type&&delete cr.store._state.props.$search_keyword_id_type,cr.store._state.props.$search_keyword_id_hash&&delete cr.store._state.props.$search_keyword_id_hash):(t.$search_keyword_id=Er.id(),t.$search_keyword_id_type=Er.type(),t.$search_keyword_id_hash=ee(t.$search_keyword_id))):cr.store._state&&cr.store._state.props&&(cr.store._state.props.$search_keyword_id&&delete cr.store._state.props.$search_keyword_id,cr.store._state.props.$search_keyword_id_type&&delete cr.store._state.props.$search_keyword_id_type,cr.store._state.props.$search_keyword_id_hash&&delete cr.store._state.props.$search_keyword_id_hash),cr.store.save(),k(cr.para.preset_properties,function(i,n){if(n.indexOf("latest_")===-1)return!1;if(n=n.slice(7),i){if("wx_ad_click_id"===n&&"not_collect"===i)return!1;if("utm"!==n&&"url\u89e3\u6790\u5931\u8d25"===e)"wx_ad_click_id"===n?(t._latest_wx_ad_click_id="url\u7684domain\u89e3\u6790\u5931\u8d25",t._latest_wx_ad_hash_key="url\u7684domain\u89e3\u6790\u5931\u8d25",t._latest_wx_ad_callbacks="url\u7684domain\u89e3\u6790\u5931\u8d25"):t["$latest_"+n]="url\u7684domain\u89e3\u6790\u5931\u8d25";else if(Je(document.referrer))switch(n){case"traffic_source_type":t.$latest_traffic_source_type=Ke();break;case"referrer":t.$latest_referrer=Jr.pageProp.referrer;break;case"search_keyword":Be()?t.$latest_search_keyword=Be():r(cr.store._state)&&r(cr.store._state.props)&&cr.store._state.props.$latest_search_keyword&&delete cr.store._state.props.$latest_search_keyword;break;case"landing_page":t.$latest_landing_page=X();break;case"wx_ad_click_id":var a=Re(location.href);t._latest_wx_ad_click_id=a.click_id,t._latest_wx_ad_hash_key=a.hash_key,t._latest_wx_ad_callbacks=a.callbacks}}else if("utm"===n&&cr.store._state&&cr.store._state.props)for(var s in cr.store._state.props)(0===s.indexOf("$latest_utm")||0===s.indexOf("_latest_")&&s.indexOf("_latest_wx_ad_")<0)&&delete cr.store._state.props[s];else if(cr.store._state&&cr.store._state.props&&"$latest_"+n in cr.store._state.props)delete cr.store._state.props["$latest_"+n];else if("wx_ad_click_id"==n&&cr.store._state&&cr.store._state.props&&i===!1){var o=["_latest_wx_ad_click_id","_latest_wx_ad_hash_key","_latest_wx_ad_callbacks"];k(o,function(e){e in cr.store._state.props&&delete cr.store._state.props[e]})}}),cr.register(t),cr.para.preset_properties.latest_utm){var n=Jr.campaignParamsStandard("$latest_","_latest_"),a=n.$utms,s=n.otherUtms;ae(a)||cr.register(a),ae(s)||cr.register(s)}}},Rr={requests:[],_sessionState:{},_state:{distinct_id:"",first_id:"",props:{},identities:{}},getProps:function(){return this._state.props||{}},getSessionProps:function(){return this._sessionState},getOriginDistinctId:function(){return this._state._distinct_id||this._state.distinct_id},getOriginUnionId:function(e){var t={};e=e||this._state;var r=e._first_id||e.first_id,i=e._distinct_id||e.distinct_id;return r&&i?(t.login_id=i,t.anonymous_id=r):t.anonymous_id=i,t},getDistinctId:function(){var e=this.getUnionId();return e.login_id||e.anonymous_id},getUnionId:function(e){var t=this.getOriginUnionId(e);return t.login_id&&this._state.history_login_id&&this._state.history_login_id.name&&this._state.history_login_id.name!==cr.IDENTITY_KEY.LOGIN&&(t.login_id=this._state.history_login_id.name+"+"+t.login_id),t},getFirstId:function(){return this._state._first_id||this._state.first_id},initSessionState:function(){var e=Hr.get("sensorsdata2015session");e=Ne(e);var t=null;null!==e&&"object"==typeof(t=n(e))&&(this._sessionState=t||{})},setOnce:function(e,t){e in this._state||this.set(e,t)},set:function(e,t){this._state=this._state||{};var r=this._state.distinct_id;this._state[e]=t,"first_id"===e?delete this._state._first_id:"distinct_id"===e&&delete this._state._distinct_id,this.save(),"distinct_id"===e&&r&&cr.events.tempAdd("changeDistinctId",t)},change:function(e,t){this._state["_"+e]=t},setSessionProps:function(e){var t=this._sessionState;P(t,e),this.sessionSave(t)},setSessionPropsOnce:function(e){var t=this._sessionState;$(t,e),this.sessionSave(t)},setProps:function(e,t){var r={};r=t?e:P(this._state.props||{},e);for(var i in r)"string"==typeof r[i]&&(r[i]=r[i].slice(0,cr.para.max_referrer_string_length));this.set("props",r)},setPropsOnce:function(e){var t=this._state.props||{};$(t,e),this.set("props",t)},clearAllProps:function(e){this._sessionState={};var t;if(v(e)&&e.length>0)for(t=0;tNr.max_id_length)},keyLength:function(e){return!(!p(e)||e.length>Nr.max_key_length)},stringLength:function(e){return!(!p(e)||e.length>Nr.max_string_length)},voidZero:function(e){return void 0!==e},reservedLoginId:function(e){return!(te(this.loginIDReservedNames,e)>-1)},reservedUnbind:function(e){return!(te(this.unbindReservedNames,e)>-1)},reservedBind:function(e){var t=Rr._state.history_login_id;return(!t||!t.name||t.name!==e)&&!(te(this.bindReservedNames,e)>-1)}},Wr={distinct_id:{rules:["string","emptyString","idLength"],onComplete:function(t,r,i){return!t&&("emptyString"===i&&(r="Id"),e(Kr[i])&&Kr[i](r),"idLength"===i)||t}},event:{rules:["string","emptyString","keyLength","regexTest"],onComplete:function(t,r,i){return t||("emptyString"===i&&(r="eventName"),e(Kr[i])&&Kr[i](r)),!0}},propertyKey:{rules:["string","emptyString","keyLength","regexTest"],onComplete:function(t,r,i){return t||("emptyString"===i&&(r="Property key"),e(Kr[i])&&Kr[i](r)),!0}},propertyValue:{rules:["voidZero"],onComplete:function(t,r,i){return t||(r="Property Value",e(Kr[i])&&Kr[i](r)),!0}},properties:function(t){return r(t)?k(t,function(t,r){Xe({propertyKey:r});var i=function(t,i,n){return t||(i=r+"'s Value",e(Kr[n])&&Kr[n](i)),!0};Xe({propertyValue:t},i)}):Mr.voidZero(t)&&De("properties\u53ef\u4ee5\u6ca1\u6709\uff0c\u4f46\u6709\u7684\u8bdd\u5fc5\u987b\u662f\u5bf9\u8c61"),!0},propertiesMust:function(e){return void 0!==e&&r(e)&&!ae(e)?this.properties.call(this,e):De("properties\u5fc5\u987b\u662f\u5bf9\u8c61"),!0},item_type:{rules:["string","emptyString","keyLength","regexTest"],onComplete:function(t,r,i){return t||("emptyString"===i&&(r="item_type"),e(Kr[i])&&Kr[i](r)),!0}},item_id:{rules:["string","emptyString","stringLength"],onComplete:function(t,r,i){return t||("emptyString"===i&&(r="item_id"),e(Kr[i])&&Kr[i](r)),!0}},loginIdKey:{rules:["string","emptyString","keyLength","regexTest","reservedLoginId"],onComplete:function(t,r,i){return!t&&("emptyString"===i&&(r="login_id_key"),e(Kr[i])&&Kr[i](r),"keyLength"===i)||t}},bindKey:{rules:["string","emptyString","keyLength","regexTest","reservedBind"],onComplete:function(t,r,i){return!t&&("emptyString"===i&&(r="Key"),e(Kr[i])&&Kr[i](r),"keyLength"===i)||t}},unbindKey:{rules:["string","emptyString","keyLength","regexTest","reservedUnbind"],onComplete:function(t,r,i){return!t&&("emptyString"===i&&(r="Key"),e(Kr[i])&&Kr[i](r),"keyLength"===i)||t}},bindValue:{rules:["string","emptyString","idLength"],onComplete:function(t,r,i){return!t&&("emptyString"===i&&(r="Value"),e(Kr[i])&&Kr[i](r),"idLength"===i)||t}},check:function(t,r,i){var n=this[t];if(e(n))return n.call(this,r);if(!n)return!1;for(var a=0;a-1)return i;if("area"===n&&"map"===a.tagName.toLowerCase()&&y(a).prev().tagName&&"img"===y(a).prev().tagName.toLowerCase())return y(a).prev();if("div"===n&&cr.para.heatmap.collect_tags.div&&r.isDivLevelValid(i)){var o=cr.para.heatmap&&cr.para.heatmap.collect_tags&&cr.para.heatmap.collect_tags.div&&cr.para.heatmap.collect_tags.div.max_level||1;if(o>1||r.isCollectableDiv(i))return i}if(r.isStyleTag(n)&&cr.para.heatmap.collect_tags.div){var l=r.getCollectableParent(i);if(l&&r.isDivLevelValid(l))return l}var c=r.hasElement({event:t&&t.originalEvent||t,element:e},function(e){return r.isUnlimitedTag(e)});return c||null},getDivLevels:function(e,t){var r=zr.getElementPath(e,!0,t),i=r.split(" > "),n=0;return k(i,function(e){"div"===e&&n++}),n},isDivLevelValid:function(e){for(var t=cr.para.heatmap&&cr.para.heatmap.collect_tags&&cr.para.heatmap.collect_tags.div&&cr.para.heatmap.collect_tags.div.max_level||1,r=e.getElementsByTagName("div"),i=r.length-1;i>=0;i--)if(zr.getDivLevels(r[i],e)>t)return!1;return!0},getElementPath:function(e,t,r){for(var i=[];e.parentNode;){if(e.id&&!t&&/^[A-Za-z][-A-Za-z0-9_:.]*$/.test(e.id)){i.unshift(e.tagName.toLowerCase()+"#"+e.id);break}if(r&&e===r){i.unshift(e.tagName.toLowerCase());break}if(e===document.body){i.unshift("body");break}i.unshift(e.tagName.toLowerCase()),e=e.parentNode}return i.join(" > ")},getClosestLi:function(e){var t=function(e,t){for(;e&&e!==document&&1===e.nodeType;e=e.parentNode)if(e.tagName.toLowerCase()===t)return e;return null};return t(e,"li")},getElementPosition:function(e,t,r){function i(e){var t=e.parentNode;if(!t)return"";var r=y(e).getSameTypeSiblings(),i=r.length;if(1===i)return 0;for(var n=0,a=e;y(a).previousElementSibling().ele;a=y(a).previousElementSibling().ele,n++);return n}var n=cr.heatmap.getClosestLi(e);if(!n)return null;var a=e.tagName.toLowerCase(),s=n.getElementsByTagName(a),o=s.length,l=[];if(o>1){for(var c=0;c1)return te(l,e)}return i(n)},setNotice:function(e){cr.is_heatmap_render_mode=!0,cr.para.heatmap||(cr.errorMsg="\u60a8SDK\u6ca1\u6709\u914d\u7f6e\u5f00\u542f\u70b9\u51fb\u56fe\uff0c\u53ef\u80fd\u6ca1\u6709\u6570\u636e\uff01"),e&&"http:"===e.slice(0,5)&&"https:"===location.protocol&&(cr.errorMsg="\u60a8\u7684\u5f53\u524d\u9875\u9762\u662fhttps\u7684\u5730\u5740\uff0c\u795e\u7b56\u5206\u6790\u73af\u5883\u4e5f\u5fc5\u987b\u662fhttps\uff01"),cr.para.heatmap_url||(cr.para.heatmap_url=location.protocol+"//static.sensorsdata.cn/sdk/"+cr.lib_version+"/heatmap.min.js")},getDomIndex:function(e){if(!e.parentNode)return-1;for(var t=0,r=e.tagName,i=e.parentNode.children,n=0;n "):this.getDomSelector(e.parentNode,t,r)):(t.unshift("body"),t.join(" > "))},na:function(){var e=document.documentElement.scrollLeft||window.pageXOffset;return parseInt(isNaN(e)?0:e,10)},i:function(){var e=0;try{e=o.documentElement&&o.documentElement.scrollTop||m.pageYOffset,e=isNaN(e)?0:e}catch(t){e=0}return parseInt(e,10)},getBrowserWidth:function(){var e=window.innerWidth||document.body.clientWidth;return isNaN(e)?0:parseInt(e,10)},getBrowserHeight:function(){var e=window.innerHeight||document.body.clientHeight;return isNaN(e)?0:parseInt(e,10)},getScrollWidth:function(){var e=parseInt(document.body.scrollWidth,10);return isNaN(e)?0:e},getEleDetail:function(e){var t=this.getDomSelector(e),r=xe({target:e});r.$element_selector=t?t:"",r.$element_path=cr.heatmap.getElementPath(e,cr.para.heatmap&&"not_use_id"===cr.para.heatmap.element_selector);var i=cr.heatmap.getElementPosition(e,r.$element_path,cr.para.heatmap&&"not_use_id"===cr.para.heatmap.element_selector);return ce(i)&&(r.$element_position=i),r},getPointerEventProp:function(e,t){function r(){var e=document.body.scrollLeft||document.documentElement.scrollLeft||0,t=document.body.scrollTop||document.documentElement.scrollTop||0;return{scrollLeft:e,scrollTop:t}}function i(e){if(document.documentElement.getBoundingClientRect){var t=e.getBoundingClientRect();return{targetEleX:t.left+r().scrollLeft||0,targetEleY:t.top+r().scrollTop||0}}}function n(e){return Number(Number(e).toFixed(3))}function a(e){var a=e.pageX||e.clientX+r().scrollLeft||e.offsetX+i(t).targetEleX||0,s=e.pageY||e.clientY+r().scrollTop||e.offsetY+i(t).targetEleY||0;return{$page_x:n(a),$page_y:n(s)}}return e?a(e):{}},start:function(t,i,n,a,s){var o=r(a)?a:{},l=e(s)?s:e(a)?a:void 0;if(cr.para.heatmap&&cr.para.heatmap.collect_element&&!cr.para.heatmap.collect_element(i))return!1;var c=this.getEleDetail(i);if(cr.para.heatmap&&cr.para.heatmap.custom_property){var u=cr.para.heatmap.custom_property(i);r(u)&&(c=P(c,u))}c=P(c,this.getPointerEventProp(t,i),o),"a"===n&&cr.para.heatmap&&cr.para.heatmap.isTrackLink===!0?cr.trackLink({event:t,target:i},"$WebClick",c):cr.track("$WebClick",c,l)},hasElement:function(e,t){var r;if(e.event){var i=e.event;r=i.path||i._getPath&&i._getPath()}else e.element&&(r=y(e.element).getParents());if(r&&v(r)&&r.length>0)for(var n=0;n-1)&&(!t||cr.para.heatmap&&cr.para.heatmap.collect_tags&&cr.para.heatmap.collect_tags.div?!!(r(cr.para.heatmap)&&r(cr.para.heatmap.collect_tags)&&r(cr.para.heatmap.collect_tags.div)&&v(cr.para.heatmap.collect_tags.div.ignore_tags)&&te(cr.para.heatmap.collect_tags.div.ignore_tags,e)>-1):te(n,e)>-1)},isCollectableDiv:function(e,t){try{if(0===e.children.length)return!0;for(var r=0;r1||this.isStyleTag(i,t)))return!1;if(!this.isCollectableDiv(e.children[r],t))return!1}return!0}catch(a){cr.log(a)}return!1},getCollectableParent:function(e,t){try{var r=e.parentNode,i=r?r.tagName.toLowerCase():"";if("body"===i)return!1;var n=cr.para&&cr.para.heatmap&&cr.para.heatmap.collect_tags&&cr.para.heatmap.collect_tags.div&&cr.para.heatmap.collect_tags.div.max_level;if(i&&"div"===i&&(n>1||this.isCollectableDiv(r,t)))return r;if(r&&this.isStyleTag(i,t))return this.getCollectableParent(r,t)}catch(a){cr.log(a)}return!1},listenUrlChange:function(e){e(),cr.ee.spa.on("switch",function(){e()})},initScrollmap:function(){if(!r(cr.para.heatmap)||"default"!==cr.para.heatmap.scroll_notice_map)return!1;var t=!0;cr.para.scrollmap&&e(cr.para.scrollmap.collect_url)&&this.listenUrlChange(function(){t=!!cr.para.scrollmap.collect_url()});var i=function(e){var t={};return t.timeout=e.timeout||1e3,t.func=e.func,t.hasInit=!1,t.inter=null,t.main=function(e,t){this.func(e,t),this.inter=null},t.go=function(e){var r={};this.inter||(r.$viewport_position=document.documentElement&&document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop||0,r.$viewport_position=Math.round(r.$viewport_position)||0,e?t.main(r,!0):this.inter=setTimeout(function(){t.main(r)},this.timeout))},t},n=i({timeout:1e3,func:function(e,t){var r=document.documentElement&&document.documentElement.scrollTop||window.pageYOffset||document.body.scrollTop||0,i=new Date,n=i-this.current_time;(n>cr.para.heatmap.scroll_delay_time&&r-e.$viewport_position!==0||t)&&(e.$url=X(),e.$title=document.title,e.$url_path=Z(),e.event_duration=Math.min(cr.para.heatmap.scroll_event_duration,parseInt(n)/1e3),e.event_duration=e.event_duration<0?0:e.event_duration,cr.track("$WebStay",e)),this.current_time=i}});n.current_time=new Date,qe(window,"scroll",function(){return!!t&&void n.go()}),qe(window,"unload",function(){return!!t&&void n.go("notime")})},initHeatmap:function(){var t=this,i=!0;return!(!r(cr.para.heatmap)||"default"!==cr.para.heatmap.clickmap)&&(e(cr.para.heatmap.collect_url)&&this.listenUrlChange(function(){i=!!cr.para.heatmap.collect_url()}),"all"===cr.para.heatmap.collect_elements?cr.para.heatmap.collect_elements="all":cr.para.heatmap.collect_elements="interact",void("all"===cr.para.heatmap.collect_elements?qe(document,"click",function(e){if(!i)return!1;var r=e||window.event;if(!r)return!1;var n=r.target||r.srcElement;if("object"!=typeof n)return!1;if("string"!=typeof n.tagName)return!1;var a=n.tagName.toLowerCase();if("body"===a||"html"===a)return!1;if(!n||!n.parentNode||!n.parentNode.children)return!1;var s=n.parentNode.tagName.toLowerCase();"a"===s||"button"===s?t.start(r,n.parentNode,s):t.start(r,n,a)}):qe(document,"click",function(e){if(!i)return!1;var n=e||window.event;if(!n)return!1;var a=n.target||n.srcElement,s=cr.heatmap.getTargetElement(a,e);s?t.start(n,s,s.tagName.toLowerCase()):g(a)&&"div"===a.tagName.toLowerCase()&&r(cr.para.heatmap)&&cr.para.heatmap.get_vtrack_config&&cr.unlimitedDiv.events.length>0&&cr.unlimitedDiv.isTargetEle(a)&&t.start(n,a,a.tagName.toLowerCase(),{$lib_method:"vtrack"})})))}},Xr={setOnlineState:function(e){if(e===!0&&r(cr.para.jsapp)&&"function"==typeof cr.para.jsapp.getData){cr.para.jsapp.isOnline=!0;var t=cr.para.jsapp.getData();v(t)&&t.length>0&&k(t,function(e){le(e)&&cr.sendState.realtimeSend(JSON.parse(e))})}else cr.para.jsapp.isOnline=!1},autoTrackIsUsed:!1,isReady:function(e){e()},getUtm:function(){return Jr.campaignParams()},getStayTime:function(){return(new Date-cr._t)/1e3},setProfileLocal:function(e){if(!dr.isSupport())return cr.setProfile(e),!1;if(!r(e)||ae(e))return!1;var t=cr.store.readObjectVal("sensorsdata_2015_jssdk_profile"),i=!1;if(r(t)&&!ae(t)){for(var n in e)!(n in t&&t[n]!==e[n])&&n in t||(t[n]=e[n],i=!0);i&&(cr.store.saveObjectVal("sensorsdata_2015_jssdk_profile",t),cr.setProfile(e))}else cr.store.saveObjectVal("sensorsdata_2015_jssdk_profile",e),cr.setProfile(e)},setInitReferrer:function(){var e=He();cr.setOnceProfile({_init_referrer:e,_init_referrer_host:Jr.pageProp.referrer_host})},setSessionReferrer:function(){var e=He();cr.store.setSessionPropsOnce({_session_referrer:e,_session_referrer_host:Jr.pageProp.referrer_host})},setDefaultAttr:function(){Jr.register({_current_url:location.href,_referrer:He(),_referring_host:Jr.pageProp.referrer_host})},trackHeatMap:function(e,t,r){if("object"==typeof e&&e.tagName){var i=e.tagName.toLowerCase(),n=e.parentNode.tagName.toLowerCase(),a=cr.para.heatmap&&cr.para.heatmap.track_attr?cr.para.heatmap.track_attr:["data-sensors-click"];"button"===i||"a"===i||"a"===n||"button"===n||"input"===i||"textarea"===i||G(e,a)||zr.start(null,e,i,t,r)}},trackAllHeatMap:function(e,t,r){if("object"==typeof e&&e.tagName){var i=e.tagName.toLowerCase();zr.start(null,e,i,t,r)}},autoTrackSinglePage:function(e,t){function i(){var e=Jr.campaignParams(),t={};return k(e,function(e,r,i){(" "+cr.source_channel_standard+" ").indexOf(" "+r+" ")!==-1?t["$"+r]=i[r]:t[r]=i[r]}),t}function n(e,t){cr.track("$pageview",P({$referrer:a,$url:X(),$url_path:Z(),$title:document.title},e,i()),t),a=X()}var a;a=this.autoTrackIsUsed?Jr.pageProp.url:Jr.pageProp.referrer,e=r(e)?e:{};var s=!e.not_set_profile;if(e.not_set_profile&&delete e.not_set_profile,n(e,t),this.autoTrackSinglePage=n,cr.is_first_visitor&&s){var o={};cr.para.preset_properties.search_keyword_baidu&&Je(document.referrer)&&Le()&&(o.$search_keyword_id=Er.id(),o.$search_keyword_id_type=Er.type(),o.$search_keyword_id_hash=ee(o.$search_keyword_id)),cr.setOnceProfile(P({$first_visit_time:new Date,$first_referrer:He(),$first_browser_language:p(navigator.language)?navigator.language.toLowerCase():"\u53d6\u503c\u5f02\u5e38",$first_browser_charset:"string"==typeof document.charset?document.charset.toUpperCase():"\u53d6\u503c\u5f02\u5e38",$first_traffic_source_type:Ke(),$first_search_keyword:Be()},i(),o)),cr.is_first_visitor=!1}},autoTrackWithoutProfile:function(e,t){e=r(e)?e:{},this.autoTrack(P(e,{not_set_profile:!0}),t)},autoTrack:function(e,t){e=r(e)?e:{};var i=Jr.campaignParams(),n={};k(i,function(e,t,r){(" "+cr.source_channel_standard+" ").indexOf(" "+t+" ")!==-1?n["$"+t]=r[t]:n[t]=r[t]});var a=!e.not_set_profile;e.not_set_profile&&delete e.not_set_profile;var s=location.href;if(cr.para.is_single_page&&S(function(){var r=He(s,!0);cr.track("$pageview",P({$referrer:r,$url:X(),$url_path:Z(),$title:document.title},n,e),t),s=X()}),cr.track("$pageview",P({$referrer:He(null,!0),$url:X(),$url_path:Z(),$title:document.title},n,e),t),cr.is_first_visitor&&a){var o={};cr.para.preset_properties.search_keyword_baidu&&Je(document.referrer)&&Le()&&(o.$search_keyword_id=Er.id(),o.$search_keyword_id_type=Er.type(),o.$search_keyword_id_hash=ee(o.$search_keyword_id)),cr.setOnceProfile(P({$first_visit_time:new Date,$first_referrer:He(null,!0),$first_browser_language:p(navigator.language)?navigator.language.toLowerCase():"\u53d6\u503c\u5f02\u5e38",$first_browser_charset:"string"==typeof document.charset?document.charset.toUpperCase():"\u53d6\u503c\u5f02\u5e38",$first_traffic_source_type:Ke(),$first_search_keyword:Be()},n,o)),cr.is_first_visitor=!1}this.autoTrackIsUsed=!0},getAnonymousID:function(){return ae(cr.store._state)?"\u8bf7\u5148\u521d\u59cb\u5316SDK":cr.store._state._first_id||cr.store._state.first_id||cr.store._state._distinct_id||cr.store._state.distinct_id},setPlugin:function(t){return!!r(t)&&void k(t,function(t,i){e(t)&&(r(window.SensorsDataWebJSSDKPlugin)&&window.SensorsDataWebJSSDKPlugin[i]?t(window.SensorsDataWebJSSDKPlugin[i]):cr.log(i+"\u6ca1\u6709\u83b7\u53d6\u5230,\u8bf7\u67e5\u9605\u6587\u6863\uff0c\u8c03\u6574"+i+"\u7684\u5f15\u5165\u987a\u5e8f\uff01"))})},useModulePlugin:function(){cr.use.apply(cr,arguments)},useAppPlugin:function(){this.setPlugin.apply(this,arguments)}},Zr={state:0,historyState:[],stateType:{1:"1-init\u672a\u5f00\u59cb",2:"2-init\u5f00\u59cb",3:"3-store\u5b8c\u6210"},getState:function(){return this.historyState.join("\n")},setState:function(e){String(e)in this.stateType&&(this.state=e),this.historyState.push(this.stateType[e])}},Yr={__proto__:null,addReferrerHost:Ze,addPropsHook:Ye,initPara:Ge,setInitVar:et,enableLocalLog:tt,disableLocalLog:rt,quick:it,use:nt,
+track:at,bind:st,unbind:ot,trackLink:lt,trackLinks:ct,setItem:ut,deleteItem:pt,setProfile:dt,setOnceProfile:_t,appendProfile:ft,incrementProfile:gt,deleteProfile:ht,unsetProfile:mt,identify:vt,trackSignup:wt,registerPage:St,clearAllRegister:bt,clearPageRegister:kt,register:Pt,registerOnce:Dt,registerSession:jt,registerSessionOnce:Nt,login:Ct,loginWithKey:$t,logout:At,getPresetProperties:Tt,iOSWebClickPolyfill:xt,readyState:Zr,para_default:Or,log:De,debug:Ar,IDENTITY_KEY:Ir},Gr=function(){this._events=[],this.pendingEvents=[]};Gr.prototype={emit:function(e){var t=[].slice.call(arguments,1);k(this._events,function(r){r.type===e&&r.callback.apply(r.context,t)}),this.pendingEvents.push({type:e,data:t}),this.pendingEvents.length>20?this.pendingEvents.shift():null},on:function(e,t,r,i){"function"==typeof t&&(this._events.push({type:e,callback:t,context:r||this}),i=i!==!1,this.pendingEvents.length>0&&i&&k(this.pendingEvents,function(i){i.type===e&&t.apply(r,i.data)}))},tempAdd:function(e,t){if(t&&e)return this.emit(e,t)},isReady:function(){}};var Qr={__proto__:null,parseSuperProperties:Ce,searchConfigData:$e,strip_empty_properties:Ae,getCurrentDomain:Te,getEleInfo:xe,isBaiduTraffic:Le,getReferrerEqid:Ie,getReferrerEqidType:Ee,getBaiduKeyword:Er,isReferralTraffic:Je,getReferrer:He,getKeywordFromReferrer:Be,getWxAdIdFromUrl:Re,getReferSearchEngine:Ue,getSourceFromReferrer:Ke,info:Jr,ajax:Ve,getElementContent:We,cookie:Hr,addEvent:qe,EventEmitterSa:Gr,encrypt:Oe,decryptIfNeeded:Ne},ei={};ei.buildData=function(e){var t={identities:{},distinct_id:cr.store.getDistinctId(),lib:{$lib:"js",$lib_method:"code",$lib_version:String(cr.lib_version)},properties:{}};return r(e)&&r(e.identities)&&!ae(e.identities)?P(t.identities,e.identities):P(t.identities,Rr._state.identities),r(e)&&r(e.properties)&&!ae(e.properties)&&(e.properties.$lib_detail&&(t.lib.$lib_detail=e.properties.$lib_detail,delete e.properties.$lib_detail),e.properties.$lib_method&&(t.lib.$lib_method=e.properties.$lib_method,delete e.properties.$lib_method)),P(t,cr.store.getUnionId(),e),Vr.stage.process("addCustomProps",t),r(e.properties)&&!ae(e.properties)&&P(t.properties,e.properties),e.type&&"profile"===e.type.slice(0,7)||(t.properties=P({},Jr.properties(),Rr.getProps(),Rr.getSessionProps(),Jr.currentProps,t.properties),cr.para.preset_properties.latest_referrer&&!p(t.properties.$latest_referrer)&&(t.properties.$latest_referrer="\u53d6\u503c\u5f02\u5e38"),cr.para.preset_properties.latest_search_keyword&&!p(t.properties.$latest_search_keyword)&&(cr.para.preset_properties.search_keyword_baidu&&p(t.properties.$search_keyword_id)&&ce(t.properties.$search_keyword_id_hash)&&p(t.properties.$search_keyword_id_type)||(t.properties.$latest_search_keyword="\u53d6\u503c\u5f02\u5e38")),cr.para.preset_properties.latest_traffic_source_type&&!p(t.properties.$latest_traffic_source_type)&&(t.properties.$latest_traffic_source_type="\u53d6\u503c\u5f02\u5e38"),cr.para.preset_properties.latest_landing_page&&!p(t.properties.$latest_landing_page)&&(t.properties.$latest_landing_page="\u53d6\u503c\u5f02\u5e38"),"not_collect"===cr.para.preset_properties.latest_wx_ad_click_id?(delete t.properties._latest_wx_ad_click_id,delete t.properties._latest_wx_ad_hash_key,delete t.properties._latest_wx_ad_callbacks):cr.para.preset_properties.latest_wx_ad_click_id&&!p(t.properties._latest_wx_ad_click_id)&&(t.properties._latest_wx_ad_click_id="\u53d6\u503c\u5f02\u5e38",t.properties._latest_wx_ad_hash_key="\u53d6\u503c\u5f02\u5e38",t.properties._latest_wx_ad_callbacks="\u53d6\u503c\u5f02\u5e38"),p(t.properties._latest_wx_ad_click_id)&&(t.properties.$url=X())),t.properties.$time&&x(t.properties.$time)?(t.time=1*t.properties.$time,delete t.properties.$time):t.time=1*new Date,cr.vtrackBase.addCustomProps(t),Ce(t),Br.checkIsAddSign(t),Br.checkIsFirstTime(t),cr.addReferrerHost(t),cr.addPropsHook(t),Vr.stage.process("formatData",t),t},ei.sendData=function(e,t){var r=$e(e.properties);cr.para.debug_mode===!0?(cr.log(e),cr.saEvent.debugPath(JSON.stringify(e),t)):cr.sendState.getSendCall(e,r,t)},ei.encodeTrackData=function(e){var t=O(e),r="crc="+Q(t);return"data="+encodeURIComponent(t)+"&ext="+encodeURIComponent(r)};var ti=function(e){this.callback=e.callback,this.img=document.createElement("img"),this.img.width=1,this.img.height=1,cr.para.img_use_crossorigin&&(this.img.crossOrigin="anonymous"),this.data=e.data,this.server_url=Lt(e.server_url,e.data)};ti.prototype.start=function(){var e=this;cr.para.ignore_oom&&(this.img.onload=function(){this.onload=null,this.onerror=null,this.onabort=null,e.isEnd()},this.img.onerror=function(){this.onload=null,this.onerror=null,this.onabort=null,e.isEnd()},this.img.onabort=function(){this.onload=null,this.onerror=null,this.onabort=null,e.isEnd()}),this.img.src=this.server_url},ti.prototype.lastClear=function(){var e=z();void 0!==e.ie?this.img.src="about:blank":this.img.src=""};var ri=function(e){this.callback=e.callback,this.server_url=e.server_url,this.data=It(e.data)};ri.prototype.start=function(){var e=this;Ve({url:this.server_url,type:"POST",data:this.data,credentials:!1,timeout:cr.para.datasend_timeout,cors:!0,success:function(){e.isEnd()},error:function(){e.isEnd()}})};var ii=function(e){this.callback=e.callback,this.server_url=e.server_url,this.data=It(e.data)};ii.prototype.start=function(){var e=this;"object"==typeof navigator&&"function"==typeof navigator.sendBeacon&&navigator.sendBeacon(this.server_url,this.data),setTimeout(function(){e.isEnd()},40)};var ni={};ni.getSendCall=function(e,t,r){if(cr.is_heatmap_render_mode)return!1;if(cr.readyState.state<3)return cr.log("\u521d\u59cb\u5316\u6ca1\u6709\u5b8c\u6210"),!1;e._track_id=Number(String(i()).slice(2,5)+String(i()).slice(2,4)+String((new Date).getTime()).slice(-4)),e._flush_time=(new Date).getTime();var n=e;e=JSON.stringify(e);var a={data:n,config:t,callback:r};return cr.events.tempAdd("send",n),!cr.para.app_js_bridge&&cr.para.batch_send&&dr.isSupport()&&localStorage.length<100?(cr.log(n),cr.batchSend.add(a.data),!1):("item_set"===n.type||"item_delete"===n.type?this.prepareServerUrl(a):cr.bridge.dataSend(a,this,r),void cr.log(n))},ni.prepareServerUrl=function(e){if("object"==typeof e.config&&e.config.server_url)this.sendCall(e,e.config.server_url,e.callback);else if(v(cr.para.server_url)&&cr.para.server_url.length)for(var t=0;t-1&&r.splice(a,1),dr.remove(e[i])}dr.set(this.tabKey,JSON.stringify(this.generateTabStorageVal(r)))}},add:function(e){var r=ai+String(i()),a=dr.get(this.tabKey);null===a?(this.tabKey=si+String(i()),a=this.generateTabStorageVal()):a=n(a)||this.generateTabStorageVal(),a.data.push(r),a.expireTime=t()+2*cr.para.batch_send.send_interval,dr.set(this.tabKey,JSON.stringify(a)),cr.store.saveObjectVal(r,e),"track_signup"!==e.type&&"$pageview"!==e.event||this.sendImmediately()},generateTabStorage:function(){this.tabKey=si+String(i()),dr.set(this.tabKey,JSON.stringify(this.generateTabStorageVal()))},generateTabStorageVal:function(e){return e=e||[],{data:e,expireTime:t()+2*cr.para.batch_send.send_interval,serverUrl:this.serverUrl}},sendImmediately:function(){this.send()},recycle:function(){for(var e={},r=1e4,i="sajssdk-lock-get-",s=0;sc.expireTime&&this.serverUrl===c.serverUrl){var p=new a(i);p.get(o,r,1e3,function(e){if(e){null===dr.get(l.tabKey)&&l.generateTabStorage();var t=n(e)||l.generateTabStorageVal();dr.set(l.tabKey,JSON.stringify(l.generateTabStorageVal((n(dr.get(l.tabKey))||this.generateTabStorageVal()).data.concat(t.data))))}})}}else if(0===o.indexOf(i)){var d=n(dr.get(o))||{expireTime:0};t()-d.expireTime>r&&dr.remove(o)}}for(var _=0;_0)for(var n=0;n"),r=d(t.pop());if("div"!==r.slice(0,3))return!1}return!0},ui.configIsMatchNew=function(e,t){if(p(e.$element_selector)&&p(t.element_selector)){if("element_selector"===t.element_field&&"equal"===t["function"])return e.$element_selector===t.element_selector;if("element_selector"===t.element_field&&"contain"===t["function"])return e.$element_selector.indexOf(t.element_selector)>-1}if(p(e.$element_path)&&p(t.element_path)){if("element_path"===t.element_field&&"equal"===t["function"])return e.$element_path===t.element_path;if("element_path"===t.element_field&&"contain"===t["function"])return e.$element_path.indexOf(t.element_path)>-1}return!1},ui.configIsMatch=function(e,t){return(!t.limit_element_content||t.element_content===e.$element_content)&&((!t.limit_element_position||t.element_position===String(e.$element_position))&&(t.element_field&&t["function"]?ui.configIsMatchNew(e,t):ui.configIsMatchOldVersion(e,t)))},ui.configIsMatchOldVersion=function(e,t){if(!t.element_path)return!1;if(void 0!==e.$element_position){if(t.element_path!==e.$element_path)return!1}else if(cr.vtrackBase.isDiv({element_path:t.element_path})){if(e.$element_path.indexOf(t.element_path)<0)return!1}else if(t.element_path!==e.$element_path)return!1;return!0},ui.filterConfig=function(e,t,i){var n=[];if(!i){var a=ui.initUrl();if(!a)return[];i=a.page_url}return"$WebClick"===e.event&&k(t,function(t){r(t)&&("webclick"===t.event_type||"appclick"===t.event_type)&&r(t.event)&&t.event.url_host===i.host&&t.event.url_path===i.pathname&&ui.configIsMatch(e.properties,t.event)&&n.push(t)}),n},ui.getPropElInLi=function(e,t){if(!(e&&g(e)&&p(t)))return null;if("li"!==e.tagName.toLowerCase())return null;var r,i=cr.heatmap.getDomSelector(e);if(i){r=i+t;var n=B(r);return n?n:null}return cr.log("----custom---\u83b7\u53d6\u540c\u7ea7\u5c5e\u6027\u5143\u7d20\u5931\u8d25\uff0cselector\u4fe1\u606f\u5f02\u5e38",i,t),null},ui.getProp=function(e,t){if(!r(e))return!1;if(!(p(e.name)&&e.name.length>0))return cr.log("----vcustom----\u5c5e\u6027\u540d\u4e0d\u5408\u6cd5,\u5c5e\u6027\u629b\u5f03",e.name),!1;var i,n,a={};if("content"===e.method){var s;if(p(e.element_selector)&&e.element_selector.length>0)s=B(e.element_selector);else{if(!t||!p(e.list_selector))return cr.log("----vcustom----\u5c5e\u6027\u914d\u7f6e\u5f02\u5e38\uff0c\u5c5e\u6027\u629b\u5f03",e.name),!1;var o=B(t.properties.$element_selector);if(!o)return cr.log("----vcustom----\u70b9\u51fb\u5143\u7d20\u83b7\u53d6\u5f02\u5e38\uff0c\u5c5e\u6027\u629b\u5f03",e.name),!1;var l=cr.heatmap.getClosestLi(o);s=ui.getPropElInLi(l,e.list_selector)}if(!s||!g(s))return cr.log("----vcustom----\u5c5e\u6027\u5143\u7d20\u83b7\u53d6\u5931\u8d25\uff0c\u5c5e\u6027\u629b\u5f03",e.name),!1;if("input"===s.tagName.toLowerCase())i=s.value||"";else if("select"===s.tagName.toLowerCase()){var c=s.selectedIndex;ce(c)&&g(s[c])&&(i=We(s[c],"select"))}else i=We(s,s.tagName.toLowerCase());if(e.regular){try{n=new RegExp(e.regular).exec(i)}catch(u){return cr.log("----vcustom----\u6b63\u5219\u5904\u7406\u5931\u8d25\uff0c\u5c5e\u6027\u629b\u5f03",e.name),!1}if(null===n)return cr.log("----vcustom----\u5c5e\u6027\u89c4\u5219\u5904\u7406\uff0c\u672a\u5339\u914d\u5230\u7ed3\u679c,\u5c5e\u6027\u629b\u5f03",e.name),!1;if(!v(n)||!p(n[0]))return cr.log("----vcustom----\u6b63\u5219\u5904\u7406\u5f02\u5e38\uff0c\u5c5e\u6027\u629b\u5f03",e.name,n),!1;i=n[0]}if("STRING"===e.type)a[e.name]=i;else if("NUMBER"===e.type){if(i.length<1)return cr.log("----vcustom----\u672a\u83b7\u53d6\u5230\u6570\u5b57\u5185\u5bb9\uff0c\u5c5e\u6027\u629b\u5f03",e.name,i),!1;if(isNaN(Number(i)))return cr.log("----vcustom----\u6570\u5b57\u7c7b\u578b\u5c5e\u6027\u8f6c\u6362\u5931\u8d25\uff0c\u5c5e\u6027\u629b\u5f03",e.name,i),!1;a[e.name]=Number(i)}return a}return cr.log("----vcustom----\u5c5e\u6027\u4e0d\u652f\u6301\u6b64\u83b7\u53d6\u65b9\u5f0f",e.name,e.method),!1},ui.getAssignConfigs=function(e,t){var i=ui.initUrl();if(!i||!i.page_url)return[];if(!r(t))return[];var n=[];return t.events=t.events||t.eventList,v(t.events)&&t.events.length>0?(k(t.events,function(t){r(t)&&r(t.event)&&t.event.url_host===i.page_url.host&&t.event.url_path===i.page_url.pathname&&e(t)&&n.push(t)}),n):[]},ui.addCustomProps=function(e){if("success"===cr.bridge.bridge_info.verify_success){var t=cr.vapph5collect.customProp.geth5Props(JSON.parse(JSON.stringify(e)));r(t)&&!ae(t)&&(e.properties=P(e.properties,t))}var i=cr.vtrackcollect.customProp.getVtrackProps(JSON.parse(JSON.stringify(e)));return r(i)&&!ae(i)&&(e.properties=P(e.properties,i)),e},ui.init=function(){cr.vtrackcollect.init(),"success"===cr.bridge.bridge_info.verify_success&&cr.vapph5collect.init()};var pi={events:[],init:function(e){this.filterWebClickEvents(e)},filterWebClickEvents:function(e){this.events=cr.vtrackcollect.getAssignConfigs(function(e){return!(!r(e)||e.event.unlimited_div!==!0||"webclick"!==e.event_type)},e)},isTargetEle:function(e){var t=cr.heatmap.getEleDetail(e);if(!r(t)||!p(t.$element_path))return!1;for(var i=0;i0)},e),this.events.length?this.configSwitch=!0:this.configSwitch=!1},getVtrackProps:function(e){var t={};return this.collectAble()?("$WebClick"===e.event&&(t=this.clickCustomPropMaker(e,this.events)),t):{}},clickCustomPropMaker:function(e,t,i){var n=this;i=i||this.filterConfig(e,t,cr.vtrackcollect.url_info.page_url);var a={};return i.length?(k(i,function(t){v(t.properties)&&t.properties.length>0&&k(t.properties,function(t){var i=n.getProp(t,e);r(i)&&P(a,i)})}),a):{}},getProp:ui.getProp,getPropElInLi:ui.getPropElInLi,filterConfig:ui.filterConfig},_i={unlimitedDiv:pi,config:{},storageEnable:!0,storage_name:"webjssdkvtrackcollect",para:{session_time:18e5,timeout:5e3,update_interval:18e5},url_info:{},timer:null,update_time:null,customProp:di,initUrl:function(){var e=ui.initUrl();if(e){var t;try{t=new _(cr.para.server_url),t._values.Path="/config/visualized/Web.conf",e.api_url=t.getUrl()}catch(r){return cr.log("----vtrackcollect---API\u5730\u5740\u89e3\u6790\u5f02\u5e38",r),!1}this.url_info=e}return e},init:function(){if(!r(cr.para.heatmap)||!cr.para.heatmap.get_vtrack_config)return!1;if(dr.isSupport()||(this.storageEnable=!1),!this.initUrl())return cr.log("----vtrackcustom----\u521d\u59cb\u5316\u5931\u8d25\uff0curl\u4fe1\u606f\u89e3\u6790\u5931\u8d25"),!1;if(this.storageEnable){var e=cr.store.readObjectVal(this.storage_name);if(r(e)&&r(e.data))if(this.serverUrlIsSame(e.serverUrl)){this.config=e.data,this.update_time=e.updateTime,this.updateConfig(e.data);var t=(new Date).getTime(),i=t-this.update_time;if(ce(i)&&i>0&&i0&&r0&&k(a.properties,function(i){if(r(i))if(i.h5===!1)v(t.sensorsdata_app_visual_properties)||(t.sensorsdata_app_visual_properties=[]),t.sensorsdata_app_visual_properties.push(i);else{var a=n.getProp(i,e);r(a)&&(t=P(t,a))}}),p(a.event_name)&&i.push(a.event_name))}),r(window.SensorsData_App_Visual_Bridge)&&window.SensorsData_App_Visual_Bridge.sensorsdata_visualized_mode&&(window.SensorsData_App_Visual_Bridge.sensorsdata_visualized_mode===!0||window.SensorsData_App_Visual_Bridge.sensorsdata_visualized_mode())&&(t.sensorsdata_web_visual_eventName=i)}return t.sensorsdata_app_visual_properties&&(t.sensorsdata_app_visual_properties=O(JSON.stringify(t.sensorsdata_app_visual_properties))),t},initAppGetPropsBridge:function(){var t=this;return new cr.JSBridge({type:"getJSVisualProperties",app_call_js:function(i){var n={};try{i=JSON.parse(N(i))}catch(a){cr.log("getJSVisualProperties data parse error!")}if(r(i)){var s=i.sensorsdata_js_visual_properties,o=t.initUrl();o&&(o=o.page_url,v(s)&&s.length>0&&k(s,function(e){if(r(e)&&e.url_host===o.host&&e.url_path===o.pathname&&e.h5){var i=t.getProp(e);r(i)&&(n=P(n,i))}}))}var l=cr.bridge.bridge_info.platform;if("android"===l){var c={callType:"getJSVisualProperties",data:n};r(i)&&i.message_id&&(c.message_id=i.message_id),r(window.SensorsData_APP_New_H5_Bridge)&&e(SensorsData_APP_New_H5_Bridge.sensorsdata_js_call_app)?SensorsData_APP_New_H5_Bridge.sensorsdata_js_call_app(JSON.stringify(c)):r(window.SensorsData_APP_JS_Bridge)&&e(SensorsData_APP_JS_Bridge.sensorsdata_js_call_app)&&SensorsData_APP_JS_Bridge.sensorsdata_js_call_app(JSON.stringify(c))}return n}})}},gi={events:[],customProp:fi,getAssignConfigs:ui.getAssignConfigs,initUrl:ui.initUrl,init:function(){if(this.initUrl()){var e=this.getConfigFromApp();e&&this.updateConfigs(e),this.customProp.init(),this.initAppUpdateConfigBridge()}},initAppUpdateConfigBridge:function(){var e=this;return new cr.JSBridge({type:"updateH5VisualConfig",app_call_js:function(t){if(t){try{t=JSON.parse(N(t))}catch(r){return void cr.log("updateH5VisualConfig result parse error\uff01")}e.updateConfigs(t)}}})},getConfigFromApp:function(){var e=new cr.JSBridge({type:"sensorsdata_get_app_visual_config"}),t=e.getAppData();if(t)try{t=JSON.parse(N(t))}catch(r){t=null,cr.log("getAppVisualConfig result parse error\uff01")}return t},updateConfigs:function(e){this.events=this.filterConfigs(e),this.customProp.updateEvents(this.events)},filterConfigs:function(e){return this.getAssignConfigs(function(e){return!(!r(e)||e.h5===!1)},e)}},hi=new l,mi={};mi.spa=hi,mi.initSystemEvent=function(){Bt(function(e){hi.emit("switch",e)})};var vi={getOriginalUrl:function(){function e(e){var t=e.split("&"),r=["sa-request-id","sa-request-type","sa-request-url"],i=[];
+return k(t,function(e){r.indexOf(e.split("=")[0])<0&&i.push(e)}),i.join("&")}var t=location.protocol+"//"+location.host+location.pathname,r="",i="";if(location.search){var n=e(location.search.slice(1));n&&(r="?"+n)}if(location.hash&&(i=location.hash,location.hash.indexOf("?")>-1)){var a=location.hash.split("?"),s=e(a[1]);s&&(i=a[0]+"?"+s)}return decodeURI(t+r+i)},isSeachHasKeyword:function(){return null!==Rt("sa-request-id")&&("string"==typeof sessionStorage.getItem("sensors-visual-mode")&&sessionStorage.removeItem("sensors-visual-mode"),!0)},hasKeywordHandle:function(){var e=Rt("sa-request-id"),t=Rt("sa-request-type"),r=Rt("sa-request-url");zr.setNotice(r),br.isSupport()&&(null!==r&&sessionStorage.setItem("sensors_heatmap_url",r),sessionStorage.setItem("sensors_heatmap_id",e),null!==t?"1"===t||"2"===t||"3"===t?sessionStorage.setItem("sensors_heatmap_type",t):t=null:t=null!==sessionStorage.getItem("sensors_heatmap_type")?sessionStorage.getItem("sensors_heatmap_type"):null),this.isReady(e,t,this.getOriginalUrl())},isReady:function(e,t,r){cr.para.heatmap_url?fe({success:function(){setTimeout(function(){"undefined"!=typeof sa_jssdk_heatmap_render&&(sa_jssdk_heatmap_render(cr,e,t,r),"object"==typeof console&&"function"==typeof console.log&&(cr.heatmap_version&&cr.heatmap_version===cr.lib_version||console.log("heatmap.js\u4e0esensorsdata.js\u7248\u672c\u53f7\u4e0d\u4e00\u81f4\uff0c\u53ef\u80fd\u5b58\u5728\u98ce\u9669!")))},0)},error:function(){},type:"js",url:cr.para.heatmap_url}):cr.log("\u6ca1\u6709\u6307\u5b9aheatmap_url\u7684\u8def\u5f84")},isStorageHasKeyword:function(){return br.isSupport()&&"string"==typeof sessionStorage.getItem("sensors_heatmap_id")},storageHasKeywordHandle:function(){zr.setNotice(),vi.isReady(sessionStorage.getItem("sensors_heatmap_id"),sessionStorage.getItem("sensors_heatmap_type"),this.getOriginalUrl())}},yi={isStorageHasKeyword:function(){return br.isSupport()&&"string"==typeof sessionStorage.getItem("sensors-visual-mode")},isSearchHasKeyword:function(){return(Rt("sa-visual-mode")===!0||"true"===Rt("sa-visual-mode"))&&("string"==typeof sessionStorage.getItem("sensors_heatmap_id")&&sessionStorage.removeItem("sensors_heatmap_id"),!0)},loadVtrack:function(){fe({success:function(){},error:function(){},type:"js",url:cr.para.vtrack_url?cr.para.vtrack_url:location.protocol+"//static.sensorsdata.cn/sdk/"+cr.lib_version+"/vtrack.min.js"})},messageListener:function(e){function t(e){return se(e)?ge(e):(cr.log("\u53ef\u89c6\u5316\u6a21\u5f0f\u68c0\u6d4b URL \u5931\u8d25"),!1)}if("sa-fe"!==e.data.source)return!1;if("v-track-mode"===e.data.type){if(e.data.data&&e.data.data.isVtrack)if(br.isSupport()&&sessionStorage.setItem("sensors-visual-mode","true"),e.data.data.userURL&&location.href.match(/sa-visual-mode=true/)){var r=t(e.data.data.userURL);r&&(window.location.href=r)}else yi.loadVtrack();window.removeEventListener("message",yi.messageListener,!1)}},removeMessageHandle:function(){window.removeEventListener&&window.removeEventListener("message",yi.messageListener,!1)},verifyVtrackMode:function(){window.addEventListener&&window.addEventListener("message",yi.messageListener,!1),yi.postMessage()},postMessage:function(){window.parent&&window.parent.postMessage&&window.parent.postMessage({source:"sa-web-sdk",type:"v-is-vtrack",data:{sdkversion:"1.22.6"}},"*")},notifyUser:function(){var e=function(t){return"sa-fe"===t.data.source&&void("v-track-mode"===t.data.type&&(t.data.data&&t.data.data.isVtrack&&alert("\u5f53\u524d\u7248\u672c\u4e0d\u652f\u6301\uff0c\u8bf7\u5347\u7ea7\u90e8\u7f72\u795e\u7b56\u6570\u636e\u6cbb\u7406"),window.removeEventListener("message",e,!1)))};window.addEventListener&&window.addEventListener("message",e,!1),yi.postMessage()}},wi=["setItem","deleteItem","getAppStatus","track","quick","register","registerPage","registerOnce","trackSignup","setProfile","setOnceProfile","appendProfile","incrementProfile","deleteProfile","unsetProfile","identify","login","logout","trackLink","clearAllRegister","clearPageRegister"],Si={track:function(e,t,r){},quick:function(e,t,r,i){},register:function(e){},registerPage:function(e){},registerOnce:function(e){},clearAllRegister:function(e){},trackSignup:function(e,t,r,i){},setProfile:function(e,t){},setOnceProfile:function(e,t){},appendProfile:function(e,t){},incrementProfile:function(e,t){},deleteProfile:function(e){},unsetProfile:function(e,t){},identify:function(e,t){},login:function(e,t){},logout:function(e){},trackLink:function(e,t,r){},deleteItem:function(e,t){},setItem:function(e,t,r){},getAppStatus:function(e){},clearPageRegister:function(e){}};Zt.prototype.process=function(e,t){if(!(e&&e in this.processDef))return void De("process ["+e+"] is not supported");var r=this.registeredInterceptors[e];if(r&&v(r)&&r.length>0)for(var i={current:0,total:r.length},n=new Xt(t,i,cr),a=0;a=a.length:a.push(o);break;default:a.splice(s,0,o)}}}};var bi={addCustomProps:null,formatData:null},ki=new Zt(bi),Pi={init:function(){},interceptor:{formatData:{priority:0,entry:function(e){return sr(e),e}}}},Di=window.sensors_data_pre_config,ji=!!r(Di)&&Di.is_compliance_enabled;cr.init=function(e){return!(cr.readyState&&cr.readyState.state&&cr.readyState.state>=2)&&(ji&&lr(!0),cr.ee.initSystemEvent(),cr.setInitVar(),cr.readyState.setState(2),cr.initPara(e),cr.bridge.supportAppCallJs(),cr.detectMode(),void cr.iOSWebClickPolyfill())},ji?lr(!1):(lr(!0),Ft());var Ni=cr;try{cr.modules={},cr.modules.Amp=function(){"use strict";var e={sd:null,init:function(e){if(this.sd)return!1;if(this.sd=e,!this.sd||!this.sd._)return!1;var t=this.sd._.cookie.get("sensors_amp_id"),r=this.sd.store._state.distinct_id;if(t&&t.length>0){var i="amp-"===t.slice(0,4);if(t!==r){if(!i)return!1;this.sd.store._state.first_id?(this.sd.identify(t,!0),this.sd.saEvent.send({original_id:t,distinct_id:r,type:"track_signup",event:"$SignUp",properties:{}},null),this.setAmpId(r)):this.sd.identify(t,!0)}}else this.setAmpId(r);this.addListener()},addListener:function(){var e=this;this.sd.events.on("changeDistinctId",function(t){e.setAmpId(t)}),this.sd.events.isReady()},setAmpId:function(e){this.sd._.cookie.set("sensors_amp_id",e)}};return window.SensorsDataWebJSSDKPlugin&&"[object Object]"===Object.prototype.toString.call(window.SensorsDataWebJSSDKPlugin)?window.SensorsDataWebJSSDKPlugin.Amp=window.SensorsDataWebJSSDKPlugin.Amp||e:window.SensorsDataWebJSSDKPlugin={Amp:e},e}(),cr.modules.Channel=function(){"use strict";var e,t,r,i={event_list:[],latest_event_initial_time:null,max_save_time:2592e6,init:function(i){return!t&&(!!(t=i)&&(e=t._,r=t.store,!!e.localStorage.isSupport()&&(t.para.max_string_length=1024,this.eventList.init(),this.addLatestChannelUrl(),void this.addIsChannelCallbackEvent())))},addIsChannelCallbackEvent:function(){t.registerPage({$is_channel_callback_event:function(e){if(e.event&&"$WebClick"!==e.event&&"$pageview"!==e.event&&"$WebStay"!==e.event&&"$SignUp"!==e.event)return!i.eventList.hasEvent(e.event)&&(i.eventList.add(e.event),!0)}})},addLatestChannelUrl:function(){var r=this.getUrlDomain(),n=this.cookie.getChannel();if("url\u89e3\u6790\u5931\u8d25"===r)this.registerAndSave({_sa_channel_landing_url:"",_sa_channel_landing_url_error:"url\u7684domain\u89e3\u6790\u5931\u8d25"});else if(e.isReferralTraffic(document.referrer)){var a=e.getQueryParam(location.href,"sat_cf");e.isString(a)&&a.length>0?(this.registerAndSave({_sa_channel_landing_url:location.href}),i.channelLinkHandler()):this.registerAndSave({_sa_channel_landing_url:""})}else n?t.registerPage(n):t.registerPage({_sa_channel_landing_url:"",_sa_channel_landing_url_error:"\u53d6\u503c\u5f02\u5e38"})},registerAndSave:function(e){t.registerPage(e),this.cookie.saveChannel(e)},cookie:{getChannel:function(){var t=e.decryptIfNeeded(e.cookie.get("sensorsdata2015jssdkchannel"));return t=e.safeJSONParse(t),!(!e.isObject(t)||!t.prop)&&t.prop},saveChannel:function(r){var i={prop:r},n=JSON.stringify(i);t.para.encrypt_cookie&&(n=e.encrypt(n)),e.cookie.set("sensorsdata2015jssdkchannel",n)}},channelLinkHandler:function(){this.eventList.reset(),t.track("$ChannelLinkReaching")},getUrlDomain:function(){var t=e.info.pageProp.url_domain;return""===t&&(t="url\u89e3\u6790\u5931\u8d25"),t},eventList:{init:function(){var t=this.get(),r=(new Date).getTime();if(t&&e.isNumber(t.latest_event_initial_time)&&e.isArray(t.eventList)){var n=r-t.latest_event_initial_time;n>0&&n0&&(1===arguments.length&&o(arguments[0])?e=arguments[0]:arguments.length>=2&&o(arguments[1])&&(e=arguments[1])),!s())return this.log("\u4e0d\u652f\u6301\u5f53\u524d\u7cfb\u7edf\uff0c\u76ee\u524d\u53ea\u652f\u6301Android\u548ciOS"),!1;if(o(e)&&this.sd._.isNumber(e.timeout)&&e.timeout>=2500&&(this.timeout=e.timeout),!this.sd.para.server_url)return this.log("\u795e\u7b56JS SDK\u914d\u7f6e\u9879server_url\u672a\u6b63\u786e\u914d\u7f6e"),!1;var t=c(this.sd);this.apiURL=this.apiURL.replace("{origin}",t.origin).replace("{project}",t.project);var r=this.sd._.getQueryParam(window.location.href,"deeplink");if(!r)return this.log("\u5f53\u524d\u9875\u9762\u7f3a\u5c11deeplink\u53c2\u6570"),!1;r=window.decodeURIComponent(r);var i=l(r);return i?(this.key=i[2],this.apiURL=this.apiURL.replace("{key}",window.encodeURIComponent(i[2])),this.sd._.ajax({url:this.apiURL,type:"GET",cors:!0,credentials:!1,success:function(e){return e.errorMsg?(d.log("API\u62a5\u9519\uff1a"+e.errorMsg),!1):(d.data=e,d.log("API\u67e5\u8be2\u6210\u529f\uff0c\u6570\u636e\uff1a"+JSON.stringify(e,null," ")),void(this.data.app_key&&(this.data.android_info&&this.data.android_info.url_schemes&&(this.data.android_info.url_schemes+="://sensorsdata/sd/"+this.data.app_key+"/"+this.key),this.data.ios_info&&this.data.ios_info.url_schemes&&(this.data.ios_info.url_schemes+="://sensorsdata/sd/"+this.data.app_key+"/"+this.key))))}.bind(this),error:function(){d.log("API\u67e5\u8be2\u51fa\u9519")}}),void this.addListeners()):(this.log("\u5f53\u524d\u9875\u9762\u7684deeplink\u53c2\u6570\u65e0\u6548"),!1)},openDeepLink:function(){if(this.log("openDeeplink()"),!this.data)return this.log("\u6ca1\u6709Deep link\u6570\u636e!"),!1;if("iOS"===a){this.log("\u5f53\u524d\u7cfb\u7edf\u662fiOS");var e=this.sd&&this.sd._&&this.sd._.getIOSVersion()>=9&&this.data.ios_info.ios_wake_url?this.data.ios_info.ios_wake_url:this.data.ios_info.url_schemes;this.log("\u5524\u8d77APP\u7684\u5730\u5740\uff1a"+e),p(this,e,this.data.ios_info.download_url)}else this.log("\u5f53\u524d\u7cfb\u7edf\u662f android"),u(this,this.data.android_info.url_schemes,this.data.android_info.download_url)},log:function(e){this.sd&&this.sd.log(e)},addListeners:function(){var e=r().visibilityChange;e&&document.addEventListener(e,function(){clearTimeout(this.timer),this.log("visibilitychange, clear timeout:"+this.timer)}.bind(this),!1),window.addEventListener("pagehide",function(){this.log("page hide, clear timeout:"+this.timer),clearTimeout(this.timer)}.bind(this),!1)}};return o(window.SensorsDataWebJSSDKPlugin)?(window.SensorsDataWebJSSDKPlugin.Deeplink=window.SensorsDataWebJSSDKPlugin.Deeplink||d,window.SensorsDataWebJSSDKPlugin.deeplink=window.SensorsDataWebJSSDKPlugin.deeplink||d):window.SensorsDataWebJSSDKPlugin={Deeplink:d,deeplink:d},d}(),cr.modules.Pageleave=function(){"use strict";function e(){this.sd=null,this.start_time=+new Date,this.page_show_status=!0,this.page_hidden_status=!1,this._={},this.timer=null,this.current_page_url=document.referrer,this.url=location.href,this.option={},this.heartbeat_interval_time=5e3,this.heartbeat_interval_timer=null,this.page_id=null,this.storage_name="sawebjssdkpageleave"}var t=5e3;e.prototype.init=function(e,t){if(e){this.sd=e,this._=this.sd._;var r=this;if(t){this.option=t;var i=t.heartbeat_interval_time;i&&(this._.isNumber(i)||this._.isNumber(1*i))&&1*i>0&&(this.heartbeat_interval_time=1e3*i)}this.page_id=Number(String(this._.getRandom()).slice(2,5)+String(this._.getRandom()).slice(2,4)+String((new Date).getTime()).slice(-4)),r.addEventListener(),document.hidden===!0?this.page_show_status=!1:r.addHeartBeatInterval(),this.log("PageLeave\u521d\u59cb\u5316\u5b8c\u6bd5")}else this.log("\u795e\u7b56JS SDK\u672a\u6210\u529f\u5f15\u5165")},e.prototype.log=function(e){this.sd&&this.sd.log(e)},e.prototype.refreshPageEndTimer=function(){var e=this;this.timer&&(clearTimeout(this.timer),this.timer=null),this.timer=setTimeout(function(){e.page_hidden_status=!1},t)},e.prototype.hiddenStatusHandler=function(){clearTimeout(this.timer),this.timer=null,this.page_hidden_status=!1},e.prototype.pageStartHandler=function(){this.start_time=+new Date,!document.hidden==!0?this.page_show_status=!0:this.page_show_status=!1,this.url=location.href},e.prototype.pageEndHandler=function(){if(this.page_hidden_status!==!0){var e=this.getPageLeaveProperties();this.page_show_status===!1&&delete e.event_duration,this.page_show_status=!1,this.page_hidden_status=!0,this.isCollectUrl(this.url)&&this.sd.track("$WebPageLeave",e),this.refreshPageEndTimer(),this.delHeartBeatData()}},e.prototype.addEventListener=function(){this.addPageStartListener(),this.addPageSwitchListener(),this.addSinglePageListener(),this.addPageEndListener()},e.prototype.addPageStartListener=function(){var e=this;"onpageshow"in window&&this._.addEvent(window,"pageshow",function(){e.pageStartHandler(),e.hiddenStatusHandler()})},e.prototype.isCollectUrl=function(e){return"function"!=typeof this.option.isCollectUrl||("string"!=typeof e||""===e||this.option.isCollectUrl(e))},e.prototype.addSinglePageListener=function(){var e=this;this.sd.ee&&this.sd.ee.spa.prepend("switch",function(t){t!==location.href&&(e.url=t,e.pageEndHandler(),e.stopHeartBeatInterval(),e.current_page_url=e.url,e.pageStartHandler(),e.hiddenStatusHandler(),e.startHeartBeatInterval())})},e.prototype.addPageEndListener=function(){var e=this;this._.each(["pagehide","beforeunload","unload"],function(t){"on"+t in window&&e._.addEvent(window,t,function(){e.pageEndHandler(),e.stopHeartBeatInterval()})})},e.prototype.addPageSwitchListener=function(){var e=this;this._.listenPageState({visible:function(){e.pageStartHandler(),e.hiddenStatusHandler(),e.startHeartBeatInterval()},hidden:function(){e.url=location.href,e.pageEndHandler(),e.stopHeartBeatInterval()}})},e.prototype.addHeartBeatInterval=function(){this._.localStorage.isSupport()&&this.startHeartBeatInterval()},e.prototype.startHeartBeatInterval=function(){var e=this;this.heartbeat_interval_timer&&this.stopHeartBeatInterval();var t=!0;this.isCollectUrl(this.url)||(t=!1),this.heartbeat_interval_timer=setInterval(function(){t&&e.saveHeartBeatData()},this.heartbeat_interval_time),t&&this.saveHeartBeatData("is_first_heartbeat"),this.reissueHeartBeatData()},e.prototype.stopHeartBeatInterval=function(){clearInterval(this.heartbeat_interval_timer),this.heartbeat_interval_timer=null},e.prototype.saveHeartBeatData=function(e){var t=this.getPageLeaveProperties();t.$time=new Date,"is_first_heartbeat"===e&&(t.event_duration=3.14);var r=this.sd.kit.buildData({type:"track",event:"$WebPageLeave",properties:t});r.heartbeat_interval_time=this.heartbeat_interval_time,this.sd.store.saveObjectVal(this.storage_name+"-"+this.page_id,r)},e.prototype.delHeartBeatData=function(e){this._.localStorage.remove(e||this.storage_name+"-"+this.page_id)},e.prototype.reissueHeartBeatData=function(){for(var e=window.localStorage.length,t=e-1;t>=0;t--){var r=window.localStorage.key(t);if(r&&r!==this.storage_name+"-"+this.page_id&&0===r.indexOf(this.storage_name+"-")){var i=this.sd.store.readObjectVal(r);this._.isObject(i)&&1*new Date-i.time>i.heartbeat_interval_time+5e3&&(delete i.heartbeat_interval_time,this.sd.kit.sendData(i),this.delHeartBeatData(r))}}},e.prototype.getPageLeaveProperties=function(){var e=(+new Date-this.start_time)/1e3;(isNaN(e)||e<0)&&(e=0),e=Number(e.toFixed(3));var t=this._.getReferrer(this.current_page_url),r=document.documentElement&&document.documentElement.scrollTop||window.pageYOffset||document.body&&document.body.scrollTop||0;r=Math.round(r)||0;var i={$title:document.title,$url:this._.getURL(this.url),$url_path:this._.getURLPath(),$referrer_host:t?this._.getHostname(t):"",$referrer:t,$viewport_position:r};return 0!==e&&(i.event_duration=e),i=this._.extend(i,this.option.custom_props)};var r=new e;return window.SensorsDataWebJSSDKPlugin&&"[object Object]"===Object.prototype.toString.call(window.SensorsDataWebJSSDKPlugin)?window.SensorsDataWebJSSDKPlugin.PageLeave=window.SensorsDataWebJSSDKPlugin.PageLeave||r:window.SensorsDataWebJSSDKPlugin={PageLeave:r},r}(),cr.modules.Pageload=function(){"use strict";var e={init:function(e){function t(t,r){if(t.getEntries&&"function"==typeof t.getEntries){for(var i=t.getEntries(),n=null,a=0;a=0&&n<10737418240&&(r.$page_resource_size=Number((n/1024).toFixed(3)))}}function r(){var i=window.performance||window.webkitPerformance||window.msPerformance||window.mozPerformance,n=0,a={$url:e._.getURL(),$title:document.title,$url_path:e._.getURLPath(),$referrer:e._.getReferrer(null,!0)};if(i&&i.timing){var s=i.timing;0===s.fetchStart||0===s.domContentLoadedEventEnd?e.log("performance \u6570\u636e\u83b7\u53d6\u5f02\u5e38"):n=s.domContentLoadedEventEnd-s.fetchStart,t(i,a)}else e.log("\u6d4f\u89c8\u5668\u672a\u652f\u6301 performance API.");n>0&&(a.event_duration=Number((n/1e3).toFixed(3))),e.track("$WebPageLoad",a),window.removeEventListener?window.removeEventListener("load",r):window.detachEvent&&window.detachEvent("onload",r)}"complete"==document.readyState?r():window.addEventListener?window.addEventListener("load",r):window.attachEvent&&window.attachEvent("onload",r)}};return window.SensorsDataWebJSSDKPlugin&&"[object Object]"===Object.prototype.toString.call(window.SensorsDataWebJSSDKPlugin)?window.SensorsDataWebJSSDKPlugin.PageLoad=window.SensorsDataWebJSSDKPlugin.PageLoad||e:window.SensorsDataWebJSSDKPlugin={PageLoad:e},e}(),cr.modules.RegisterProperties=function(){"use strict";function e(e,t){if("track"!==e.type)return e;var r=t.sd,i=r._,n=r.saEvent.check,a=i.extend2Lev({properties:{}},e),s=t.currentProps,o=a.properties,l=a.event,c={};return i.each(s,function(e){if(i.isObject(e))e.events.indexOf(l)>-1&&n({properties:e.properties})&&(c=i.extend(c,e.properties));else if(i.isFunction(e)){var t=e({event:l,properties:o,data:a});i.isObject(t)&&!i.isEmptyObject(t)&&n({properties:t})&&(c=i.extend(c,t))}}),e.properties=i.extend(o,c),e}function t(t){var r=this;this.sd=t.sd,this.currentProps=t.customRegister,this.interceptor={addCustomProps:{priority:0,entry:function(t){return e(t,r),t}}}}function r(e){this.dataStage=new t(e)}function i(){this.sd=null,this.log=window.console&&window.console.log||function(){},this.customRegister=[]}t.prototype.init=function(){},i.prototype.init=function(e){e?(this.sd=e,this._=e._,this.log=e.log,e.registerFeature(new r(this))):this.log("\u795e\u7b56JS SDK\u672a\u6210\u529f\u5f15\u5165")},i.prototype.register=function(e){return this.sd?void(this._.isObject(e)&&this._.isArray(e.events)&&e.events.length>0&&this._.isObject(e.properties)&&!this._.isEmptyObject(e.properties)?this.customRegister.push(e):this.log("RegisterProperties: register \u53c2\u6570\u9519\u8bef")):void this.log("\u795e\u7b56JS SDK\u672a\u6210\u529f\u5f15\u5165")},i.prototype.hookRegister=function(e){return this.sd?void(this._.isFunction(e)?this.customRegister.push(e):this.log("RegisterProperties: hookRegister \u53c2\u6570\u9519\u8bef")):void this.log("\u795e\u7b56JS SDK\u672a\u6210\u529f\u5f15\u5165")};var n=new i;return n.__constructor__=i,window.SensorsDataWebJSSDKPlugin&&"[object Object]"===Object.prototype.toString.call(window.SensorsDataWebJSSDKPlugin)?window.SensorsDataWebJSSDKPlugin.RegisterProperties=window.SensorsDataWebJSSDKPlugin.RegisterProperties||n:window.SensorsDataWebJSSDKPlugin={RegisterProperties:n},n}(),cr.modules.RegisterPropertyPageHeight=function(){"use strict";function e(e){try{if("$pageview"!==e.event&&(!e.type||"profile"!==e.type.slice(0,7))){var n=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0,a=document.documentElement.scrollHeight||0,s={$page_height:Math.max(n,a)||0};e.properties=t._.extend(e.properties||{},s)}}catch(o){i("\u9875\u9762\u9ad8\u5ea6\u83b7\u53d6\u5f02\u5e38\u3002")}return r.call(t.kit,e)}var t,r,i=window.console&&window.console.log||function(){},n={init:function(n){return t=n,i=t&&t.log||i,n&&n.kit&&n.kit.buildData?(r=t.kit.buildData,t.kit.buildData=e,void i("RegisterPropertyPageHeight \u63d2\u4ef6\u521d\u59cb\u5316\u5b8c\u6210")):void i("RegisterPropertyPageHeight \u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25,\u5f53\u524d\u4e3bsdk\u4e0d\u652f\u6301 RegisterPropertyPageHeight \u63d2\u4ef6\uff0c\u8bf7\u5347\u7ea7\u4e3bsdk")}};return window.SensorsDataWebJSSDKPlugin&&"[object Object]"===Object.prototype.toString.call(window.SensorsDataWebJSSDKPlugin)?window.SensorsDataWebJSSDKPlugin.RegisterPropertyPageHeight=window.SensorsDataWebJSSDKPlugin.RegisterPropertyPageHeight||n:window.SensorsDataWebJSSDKPlugin={RegisterPropertyPageHeight:n},n}(),function(){"use strict";var e={};e.getPart=function(e){var t=!1,r=this.option.length;if(r)for(var i=0;i-1)return!0;return t},e.getPartHash=function(e){var t=this.option.length,r=!1;if(t)for(var i=0;i-1)return this.option[i].after_hash;return!!r},e.getCurrenId=function(){var e=this.store.getDistinctId()||"",t=this.store.getFirstId()||"";this._.urlSafeBase64&&this._.urlSafeBase64.encode?e=e?this._.urlSafeBase64.trim(this._.urlSafeBase64.encode(this._.base64Encode(e))):"":this._.rot13obfs&&(e=e?this._.rot13obfs(e):"");var r=t?"f"+e:"d"+e;return encodeURIComponent(r)},e.rewriteUrl=function(e,t){var r=/([^?#]+)(\?[^#]*)?(#.*)?/,i=r.exec(e),n="";if(i){var a,s=i[1]||"",o=i[2]||"",l=i[3]||"";if(this.getPartHash(e)){a=l.indexOf("_sasdk");var c=l.indexOf("?");n=c>-1?a>-1?s+o+"#"+l.substring(1,a)+"_sasdk="+this.getCurrenId():s+o+"#"+l.substring(1)+"&_sasdk="+this.getCurrenId():s+o+"#"+l.substring(1)+"?_sasdk="+this.getCurrenId()}else{a=o.indexOf("_sasdk");var u=/^\?(\w)+/.test(o);n=u?a>-1?s+"?"+o.substring(1,a)+"_sasdk="+this.getCurrenId()+l:s+"?"+o.substring(1)+"&_sasdk="+this.getCurrenId()+l:s+"?"+o.substring(1)+"_sasdk="+this.getCurrenId()+l}return t&&(t.href=n),n}},e.getUrlId=function(){var e=location.href.match(/_sasdk=([aufd][^\?\#\&\=]+)/);if(this._.isArray(e)&&e[1]){var t=decodeURIComponent(e[1]);return!t||"f"!==t.substring(0,1)&&"d"!==t.substring(0,1)||(this._.urlSafeBase64&&this._.urlSafeBase64.isUrlSafeBase64&&this._.urlSafeBase64.isUrlSafeBase64(t)?t=t.substring(0,1)+this._.base64Decode(this._.urlSafeBase64.decode(t.substring(1))):this._.rot13defs&&(t=t.substring(0,1)+this._.rot13defs(t.substring(1)))),t}return""},e.setRefferId=function(){var e=this.store.getDistinctId(),t=this.getUrlId();if(""===t)return!1;var r="a"===t.substring(0,1)||"d"===t.substring(0,1);return t=t.substring(1),t!==e&&(t&&r&&this.store.getFirstId()&&(this.sd.identify(t,!0),this.sd.saEvent.send({original_id:t,distinct_id:e,type:"track_signup",event:"$SignUp",properties:{}},null)),t&&r&&!this.store.getFirstId()&&this.sd.identify(t,!0),void(!t||r||this.store.getFirstId()||this.sd.login(t)))},e.addListen=function(){var e=this,t=function(t){var r,i,n=t.target,a=n.tagName.toLowerCase(),s=n.parentNode;if("a"===a&&n.href||s&&s.tagName&&"a"===s.tagName.toLowerCase()&&s.href){"a"===a&&n.href?(r=n.href,i=n):(r=s.href,i=s);var o=e._.URL(r),l=o.protocol;"http:"!==l&&"https:"!==l||e.getPart(r)&&e.rewriteUrl(r,i)}};e._.addEvent(document,"mousedown",t),window.PointerEvent&&"maxTouchPoints"in window.navigator&&window.navigator.maxTouchPoints>=0&&e._.addEvent(document,"pointerdown",t)},e.init=function(e,t){function r(t){for(var r=t.length,i=[],n=0;n0?(this.setRefferId(),this.addListen(),this.option=t.linker,void(this.option=r(this.option))):void e.log("\u8bf7\u914d\u7f6e\u6253\u901a\u57df\u540d\u53c2\u6570\uff01")},window.SensorsDataWebJSSDKPlugin&&"[object Object]"===Object.prototype.toString.call(window.SensorsDataWebJSSDKPlugin)?window.SensorsDataWebJSSDKPlugin.SiteLinker=window.SensorsDataWebJSSDKPlugin.SiteLinker||e:window.SensorsDataWebJSSDKPlugin={SiteLinker:e}}(),"string"==typeof window.sensorsDataAnalytic201505?(cr.para=window[sensorsDataAnalytic201505].para,cr._q=window[sensorsDataAnalytic201505]._q,window[sensorsDataAnalytic201505]=cr,window.sensorsDataAnalytic201505=cr,cr.init()):"undefined"==typeof window.sensorsDataAnalytic201505?window.sensorsDataAnalytic201505=cr:Ni=window.sensorsDataAnalytic201505}catch(Oi){if("object"==typeof console&&console.log)try{console.log(Oi)}catch(Ci){cr.log(Ci)}}var $i=Ni;return $i});
\ No newline at end of file
diff --git a/src/shared/axios/handleError.ts b/src/shared/axios/handleError.ts
new file mode 100644
index 0000000000000000000000000000000000000000..156fbb62385f0408f1ed600092d1250cfa3b05b0
--- /dev/null
+++ b/src/shared/axios/handleError.ts
@@ -0,0 +1,54 @@
+import type { AxiosError } from 'axios';
+
+export default (err: AxiosError) => {
+ const { response } = err;
+ if (response) {
+ if (!response.status) {
+ err.code = '';
+ err.message = '有response但没有response.status的情况';
+ }
+ err.code = String(response.status);
+ switch (response && response.status) {
+ case 200:
+ err.message = '错误响应也会有状态码为200的情况';
+ break;
+ case 400:
+ err.message = '请求错误(400)';
+ break;
+ case 401:
+ err.message = '未授权,请重新登录(401)';
+ break;
+ case 403:
+ err.message = '拒绝访问(403)';
+ break;
+ case 404:
+ err.message = '请求出错(404)';
+ break;
+ case 408:
+ err.message = '请求超时(408)';
+ break;
+ case 500:
+ err.message = '服务器错误(500)';
+ break;
+ case 501:
+ err.message = '服务未实现(501)';
+ break;
+ case 502:
+ err.message = '网络错误(502)';
+ break;
+ case 503:
+ err.message = '服务不可用(503)';
+ break;
+ case 504:
+ err.message = '网络超时(504)';
+ break;
+ case 505:
+ err.message = 'HTTP版本不受支持(505)';
+ break;
+ default:
+ err.message = `连接出错,状态码:(${response.status})!`;
+ }
+ }
+
+ return err;
+};
diff --git a/src/shared/axios/handleResponse.ts b/src/shared/axios/handleResponse.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f623c0afdd860166febc60a3a694b6ef1366e6d1
--- /dev/null
+++ b/src/shared/axios/handleResponse.ts
@@ -0,0 +1,17 @@
+import type { AxiosResponse } from 'axios';
+// 处理响应错误码
+export default (response: AxiosResponse) => {
+ const { status } = response;
+ // 如果http响应状态码response.status正常,则直接返回数据
+ if ((status >= 200 && status <= 300) || status === 304) {
+ return response;
+ } else {
+ const code = parseInt(response.data && response.data.code);
+ const message = (response.data || {}).msg;
+
+ return {
+ code,
+ message,
+ };
+ }
+};
diff --git a/src/shared/axios/index.ts b/src/shared/axios/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2956a536589e0d1724ffd3ca7c1e1ff5ffc1fca7
--- /dev/null
+++ b/src/shared/axios/index.ts
@@ -0,0 +1,222 @@
+/* eslint-disable */
+import axios from 'axios';
+import type {
+ AxiosError,
+ AxiosInstance,
+ AxiosRequestConfig,
+ AxiosResponse,
+ AxiosStatic,
+} from 'axios';
+import handleResponse from './handleResponse';
+import handleError from './handleError';
+import setConfig from './setConfig';
+import { ElLoading, ElMessage } from 'element-plus';
+import { LoadingInstance } from 'element-plus/lib/components/loading/src/loading';
+
+interface RequestConfig extends AxiosRequestConfig {
+ data?: D;
+ $doException?: boolean; // 是否弹出错误提示框
+ global?: boolean; // 是否为全局请求, 全局请求在清除请求池时,不清除
+}
+
+// 全局loading
+let loadingInstance: LoadingInstance | null = null;
+let loadingCount = 0;
+
+interface RequestInstance extends AxiosInstance {
+ removeRequestInterceptor(): void;
+ removeResponseInterceptor(): void;
+ clearPendingPool(whiteList: Array): Array | null;
+ getUri(config?: RequestConfig): string;
+ request, D = any>(
+ config: RequestConfig
+ ): Promise;
+ get, D = any>(
+ url: string,
+ config?: RequestConfig
+ ): Promise;
+ delete, D = any>(
+ url: string,
+ config?: RequestConfig
+ ): Promise;
+ head, D = any>(
+ url: string,
+ config?: RequestConfig
+ ): Promise;
+ options, D = any>(
+ url: string,
+ config?: RequestConfig
+ ): Promise;
+ post, D = any>(
+ url: string,
+ data?: D,
+ config?: RequestConfig
+ ): Promise;
+ put, D = any>(
+ url: string,
+ data?: D,
+ config?: RequestConfig
+ ): Promise;
+ patch, D = any>(
+ url: string,
+ data?: D,
+ config?: RequestConfig
+ ): Promise;
+}
+
+/**
+ * request是基于axios创建的实例,实例只有常见的数据请求方法,没有axios.isCancel/ axios.CancelToken等方法,
+ * 也就是没有**取消请求**和**批量请求**的方法。
+ * 所以如果需要在实例中调用取消某个请求的方法(例如取消上传),请用intactRequest。
+ */
+const intactRequest: AxiosStatic = setConfig(axios);
+const request: RequestInstance = intactRequest.create() as RequestInstance;
+
+// 请求中的api
+const pendingPool: Map = new Map();
+
+/**
+ * 请求拦截
+ */
+const requestInterceptorId = request.interceptors.request.use(
+ (config) => {
+ if (loadingCount === 0) {
+ loadingInstance = ElLoading.service({
+ fullscreen: true,
+ target: 'body',
+ text: 'Loading',
+ background: 'transparent',
+ });
+ }
+ loadingCount++;
+ // 存储请求信息
+ // request.config = Object.assign({}, config);
+ // 定义取消请求
+ config.cancelToken = new axios.CancelToken((cancelFn) => {
+ if (!config.url) {
+ return;
+ }
+ // // 如果已请求,则取消重复请求
+ // if (pendingPool.has(config.url)) {
+ // cancelFn(`${config.url}请求重复`);
+ // } else {
+ // 存储到请求池
+ pendingPool.set(config.url, {
+ cancelFn,
+ global: (config as RequestConfig).global,
+ });
+ // }
+ });
+ return config;
+ },
+ (err: AxiosError) => {
+ Promise.reject(err);
+ }
+);
+
+/**
+ * 响应拦截
+ */
+const responseInterceptorId = request.interceptors.response.use(
+ // @ts-ignore
+ (response: AxiosResponse) => {
+ loadingCount--;
+ if (loadingCount === 0 && loadingInstance) {
+ loadingInstance.close();
+ loadingInstance = null;
+ }
+ const { config } = response;
+ // 请求完成,移除请求池
+ if (config.url) {
+ pendingPool.delete(config.url);
+ }
+
+ return Promise.resolve(handleResponse(response));
+ },
+ (err: AxiosError) => {
+ if (loadingInstance) {
+ loadingInstance.close();
+ }
+ const { config } = err;
+ if (!(config as RequestConfig).$doException) {
+ ElMessage({
+ type: 'error',
+ message: err.toString(),
+ });
+ }
+ // 非取消请求发生异常,同样将请求移除请求池
+ if (!axios.isCancel(err) && config?.url) {
+ pendingPool.delete(config.url);
+ }
+
+ if (err.response) {
+ err = handleError(err);
+ }
+ // 没有response(没有状态码)的情况
+ // 如: 超时;断网;请求重复被取消;主动取消请求;
+ else {
+ // 被取消的请求
+ if (axios.isCancel(err)) {
+ throw new axios.Cancel(err.message || `请求'${config?.url}'被取消`);
+ // @ts-ignore
+ } else if (err.stack && err.stack.includes('timeout')) {
+ // @ts-ignore
+ err.message = '请求超时!';
+ } else {
+ // @ts-ignore
+ err.message = '连接服务器失败!';
+ }
+ }
+ return Promise.reject(err).catch(() => {});
+ }
+);
+// 移除全局的请求拦截器
+function removeRequestInterceptor() {
+ request.interceptors.request.eject(requestInterceptorId);
+}
+
+// 移除全局的响应拦截器
+function removeResponseInterceptor() {
+ request.interceptors.response.eject(responseInterceptorId);
+}
+
+/**
+ * 清除所有pending状态的请求
+ * @param {Array} whiteList 白名单,里面的请求不会被取消
+ * 返回值 被取消了的api请求
+ * 可以在路由变化时取消当前所有非全局的pending状态的请求
+ */
+function clearPendingPool(whiteList: Array = []) {
+ if (!pendingPool.size) {
+ return null;
+ }
+
+ const pendingUrlList: Array = Array.from(pendingPool.keys()).filter(
+ (url: string) => !whiteList.includes(url)
+ );
+ if (!pendingUrlList.length) {
+ return null;
+ }
+
+ pendingUrlList.forEach((pendingUrl) => {
+ // 清除掉所有非全局的pending状态下的请求
+ if (!pendingPool.get(pendingUrl).global) {
+ pendingPool.get(pendingUrl).cancelFn();
+ pendingPool.delete(pendingUrl);
+ }
+ });
+
+ return pendingUrlList;
+}
+
+request.removeRequestInterceptor = removeRequestInterceptor;
+request.removeResponseInterceptor = removeResponseInterceptor;
+request.clearPendingPool = clearPendingPool;
+
+export {
+ intactRequest,
+ request,
+ // interface
+ AxiosResponse,
+};
+export type { RequestConfig, RequestInstance };
diff --git a/src/shared/axios/setConfig.ts b/src/shared/axios/setConfig.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8072e351a1b72fd2bcdfac9ce54654fe16e9c2ab
--- /dev/null
+++ b/src/shared/axios/setConfig.ts
@@ -0,0 +1,17 @@
+import type { AxiosStatic } from 'axios';
+
+/**
+ * @param {axios} axios实例
+ * @param {config} 自定义配置对象,可覆盖掉默认的自定义配置
+ */
+export default (axios: AxiosStatic, config = {}) => {
+ const defaultConfig = {
+ baseURL: '',
+ timeout: 20000,
+ headers: {
+ 'Content-Type': 'application/json;charset=UTF-8',
+ },
+ };
+ Object.assign(axios.defaults, defaultConfig, config);
+ return axios;
+};
diff --git a/src/shared/index.ts b/src/shared/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3cb7068a739871aa991dcf348ddc5a8b4293bfac
--- /dev/null
+++ b/src/shared/index.ts
@@ -0,0 +1,139 @@
+import { Base64 } from 'js-base64';
+import { ElMessage } from 'element-plus';
+import i18n from '@/i18n';
+import { reactive } from 'vue';
+
+import { uploadIssueImage } from '@/api/api-quick-issue';
+
+// 提交issue相关
+
+const { t } = i18n.global;
+
+export function getUrlParam(paraName: string) {
+ const url = document.location.toString();
+ const arrObj = url.split('?');
+ if (arrObj.length > 1) {
+ const arrPara = Base64.decode(arrObj[1]).split('&');
+ let arr;
+ for (let i = 0; i < arrPara.length; i++) {
+ arr = arrPara[i].split('=');
+ if (arr !== null && arr[0] === paraName) {
+ return arr[1];
+ }
+ }
+ return '';
+ } else {
+ return '';
+ }
+}
+export async function handleUploadImage(
+ event: Event,
+ insertImage: any,
+ files: [File]
+) {
+ // 拿到 files 之后上传到文件服务器,然后向编辑框中插入对应的内容
+ const file = files[0];
+ if (file.size / 1024 / 1024 > 2) {
+ ElMessage({
+ message: '不支持2MB以上图片上传',
+ type: 'error',
+ });
+ return;
+ }
+
+ const formData = new FormData();
+ let url = '';
+ formData.append('file', file);
+ await uploadIssueImage(formData).then((res) => {
+ if (res.code === 200 && res.data?.url) {
+ url = res.data?.url;
+ insertImage({
+ url: url,
+ desc: '输入图片说明',
+ });
+ } else {
+ ElMessage({
+ message: res?.msg,
+ type: 'error',
+ });
+ }
+ });
+}
+
+export function statisticalPoint(jump_url: string, quick_issue_email: string) {
+ const sensors = (window as any)['sensorsDataAnalytic201505'];
+ sensors?.setProfile({
+ profileType: 'noGiteeCreateIssue',
+ ...((window as any)['sensorsCustomBuriedData'] || {}),
+ $utm_source: 'quick_issue',
+ jump_url,
+ quick_issue_email,
+ });
+}
+
+//
+export const rules: any = reactive({
+ title: [
+ {
+ required: true,
+ message: t('quickIssue.MANDATORY1'),
+ trigger: 'blur',
+ },
+ {
+ min: 1,
+ max: 100,
+ message: t('quickIssue.TITLE_LIMIT'),
+ trigger: 'blur',
+ },
+ ],
+ issue_type_id: [
+ {
+ required: true,
+ message: t('quickIssue.MANDATORY1'),
+ trigger: 'change',
+ },
+ ],
+ repo: [
+ {
+ required: true,
+ message: t('quickIssue.MANDATORY1'),
+ trigger: 'change',
+ },
+ ],
+ privacy: [],
+ email: [],
+ code: [],
+});
+export const privacyRules = [
+ {
+ required: true,
+ message: t('quickIssue.MANDATORY1'),
+ trigger: 'change',
+ },
+];
+export const emailRules = [
+ {
+ required: true,
+ message: t('quickIssue.EMAIL_ADRESS'),
+ trigger: 'change',
+ },
+ {
+ pattern: new RegExp(
+ '^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$'
+ ),
+ message: t('quickIssue.RIGHT_EMAIL_ADRESS'),
+ trigger: 'change',
+ },
+];
+export const codeRules = [
+ {
+ required: true,
+ message: t('quickIssue.VER_CODE'),
+ trigger: 'blur',
+ },
+ {
+ pattern: /^\d{6}$/,
+ message: t('quickIssue.VER_CODE1'),
+ trigger: 'blur',
+ },
+];
diff --git a/src/shared/lang.ts b/src/shared/lang.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c72b03d6d6a6c4b25f48da7e4770e341dc77aec3
--- /dev/null
+++ b/src/shared/lang.ts
@@ -0,0 +1,4 @@
+export function getNewPath(lang: string, path: string) {
+ const newLang = lang === 'zh' ? 'en' : 'zh';
+ return path.replace(`/${lang}/`, `/${newLang}/`);
+}
diff --git a/src/shared/styles/base.scss b/src/shared/styles/base.scss
new file mode 100644
index 0000000000000000000000000000000000000000..afdec0e5b86e9f86a9c63ed8ded47f0fe0650030
--- /dev/null
+++ b/src/shared/styles/base.scss
@@ -0,0 +1,130 @@
+/* base */
+html,
+body {
+ margin: 0;
+ padding: 0;
+ -webkit-text-size-adjust: none;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+ scroll-behavior: smooth;
+ box-sizing: border-box;
+ overflow-x: hidden;
+ overflow-y: auto;
+ scroll-padding-top: 80px;
+ font-family: 'Helvetica', 'Arial', 'PingFang SC', 'Microsoft YaHei',
+ sans-serif;
+ &::-webkit-scrollbar-track {
+ border-radius: 4px;
+ background-color: var(--o-color-bg2);
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ background-color: var(--o-color-bg2);
+ }
+
+ &::-webkit-scrollbar-thumb {
+ border-radius: 4px;
+ background: var(--o-color-division1);
+ }
+}
+
+:root.dark {
+ --el-color-primary: var(--o-color-kleinblue8);
+}
+
+*,
+:after,
+:before {
+ box-sizing: inherit;
+ margin: 0;
+ padding: 0;
+}
+
+img {
+ vertical-align: top;
+}
+
+[tabindex] {
+ outline: none;
+}
+
+a {
+ cursor: pointer;
+ color: var(--o-color-link1);
+ text-decoration: none;
+ &:hover {
+ color: var(--o-color-link2);
+ }
+ &:active {
+ color: var(--o-color-link3);
+ }
+}
+
+blockquote,
+figure,
+form,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p {
+ margin: 0;
+}
+dd,
+dl,
+li,
+ol,
+ul {
+ margin: 0;
+ padding: 0;
+}
+
+ol,
+ul {
+ list-style: none outside none;
+}
+.overflow {
+ overflow: hidden;
+}
+.hm-t-container {
+ display: none;
+}
+body {
+ .el-loading-spinner {
+ position: absolute;
+ margin: 0;
+ top: 300px;
+ }
+}
+.language-change.el-popper {
+ box-shadow: var(--o-shadow-l1) !important;
+ width: 120px;
+ .el-dropdown-menu {
+ background: none;
+ padding: 0 20px;
+ &__item {
+ justify-content: center;
+ line-height: 50px;
+ border-bottom: 1px solid var(--o-color-division1);
+ color: var(--o-color-text1);
+ padding: 0;
+ background: none !important;
+ &:last-child {
+ border-bottom: none;
+ }
+ &:hover {
+ color: var(--o-color-brand1);
+ }
+ &.active {
+ color: var(--o-color-brand1);
+ }
+ }
+ }
+ .el-popper__arrow {
+ display: none;
+ }
+}
diff --git a/src/shared/styles/element-plus/_message.scss b/src/shared/styles/element-plus/_message.scss
new file mode 100644
index 0000000000000000000000000000000000000000..37c705bf0cb44e3c006304b2361f58896885ab5b
--- /dev/null
+++ b/src/shared/styles/element-plus/_message.scss
@@ -0,0 +1,42 @@
+.el-message {
+ display: flex;
+ justify-content: center;
+ top: 104px !important;
+ height: 112px;
+ border-radius: 0;
+ background: var(--o-color-bg2) !important;
+ box-shadow: var(--o-shadow-l4);
+ font-size: var(--o-font-h4);
+ --el-message-border-color: var(--o-color-bg2);
+
+ .el-message__icon {
+ margin-right: var(--o-spacing-h6);
+ font-size: var(--o-font-size-h5);
+ }
+
+ .el-message__content {
+ text-overflow: -o-ellipsis-lastline;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ line-clamp: 2;
+ -webkit-box-orient: vertical;
+ color: var(--o-color-text1) !important;
+ font-size: var(--o-font-size-h7);
+ }
+
+ @media screen and (max-width: 867px) {
+ height: inherit;
+ max-width: 280px;
+ min-width: 0;
+
+ .el-message__icon {
+ font-size: var(--o-font-size-h8);
+ }
+
+ .el-message__content {
+ font-size: var(--o-font-size-tip);
+ }
+ }
+}
diff --git a/src/shared/styles/element-plus/_option.scss b/src/shared/styles/element-plus/_option.scss
new file mode 100644
index 0000000000000000000000000000000000000000..03fd067d9ad83d26087c357ff58146581f3fe80c
--- /dev/null
+++ b/src/shared/styles/element-plus/_option.scss
@@ -0,0 +1,14 @@
+.el-popper__arrow {
+ display: none;
+}
+.el-popper.o-select-dropdown {
+ border: none;
+ border-radius: 0 !important;
+ background-color: var(--o-color-bg2);
+ .o-option.hover {
+ background-color: var(--o-color-bg4);
+ }
+ .o-option:hover {
+ background-color: var(--o-color-bg4);
+ }
+}
diff --git a/src/shared/styles/element-plus/_popper.scss b/src/shared/styles/element-plus/_popper.scss
new file mode 100644
index 0000000000000000000000000000000000000000..11ae4d5e7ffc6a8b5a08fc52ba4e352635afffb7
--- /dev/null
+++ b/src/shared/styles/element-plus/_popper.scss
@@ -0,0 +1,7 @@
+body {
+ .el-popover.el-popper {
+ border-radius: 0 ;
+ box-shadow: var(--o-shadow-l1);
+ padding: 16px;
+ }
+}
\ No newline at end of file
diff --git a/src/shared/styles/element-plus/index.scss b/src/shared/styles/element-plus/index.scss
new file mode 100644
index 0000000000000000000000000000000000000000..be52d996314ede4115eeb22b7083ec1288b8d45e
--- /dev/null
+++ b/src/shared/styles/element-plus/index.scss
@@ -0,0 +1,19 @@
+@forward 'element-plus/theme-chalk/src/common/var.scss' with (
+ $colors: (
+ 'primary': (
+ 'base': #7d32ea,
+ ),
+ 'success': (
+ 'base': #82c04d,
+ ),
+ 'warning': (
+ 'base': #f0934b,
+ ),
+ 'danger': (
+ 'base': #f3524d,
+ ),
+ 'error': (
+ 'base': #f3524d,
+ ),
+ )
+);
diff --git a/src/shared/styles/index.scss b/src/shared/styles/index.scss
new file mode 100644
index 0000000000000000000000000000000000000000..0a4f79f81e7fc79d6b21a57721a0e8e2ae0f5aa4
--- /dev/null
+++ b/src/shared/styles/index.scss
@@ -0,0 +1,7 @@
+@import './normalize.scss';
+@import './base.scss';
+@import './markdown.scss';
+@import './element-plus/message';
+@import './element-plus/option';
+@import './element-plus/popper';
+@import './theme-dark.scss';
diff --git a/src/shared/styles/markdown.scss b/src/shared/styles/markdown.scss
new file mode 100644
index 0000000000000000000000000000000000000000..bc575be169a83904626d8e709acd75e06175952e
--- /dev/null
+++ b/src/shared/styles/markdown.scss
@@ -0,0 +1,301 @@
+.markdown,
+.vuepress-markdown-body {
+ width: calc(100% - 80px);
+ max-width: 1416px;
+ min-height: calc(100vh - 443px);
+ padding: 40px;
+ margin: var(--o-spacing-h2) auto;
+ margin-bottom: var(--o-spacing-h1);
+ background-color: var(--o-color-bg2);
+ box-shadow: var(--o-shadow-l1);
+ & > *:first-child {
+ margin-top: 0 !important;
+ }
+ --o-color-table: var(--o-color-border2);
+ @media (max-width: 1439px) {
+ width: calc(100% - 48px);
+ }
+ @media (max-width: 1100px) {
+ width: calc(100% - 32px);
+ }
+ @media (max-width: 768px) {
+ min-height: calc(100vh - 395px);
+ padding: var(--o-spacing-h5);
+ margin-top: var(--o-spacing-h5);
+ margin-bottom: var(--o-spacing-h2);
+ }
+ ol,
+ ul {
+ list-style: inherit;
+ }
+
+ a {
+ word-break: break-all;
+ }
+
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ color: var(--o-color-text1);
+ font-weight: normal;
+
+ a {
+ display: none;
+ }
+ }
+
+ hr {
+ margin: var(--o-spacing-h1) 0;
+ border: none;
+ height: 1px;
+ background-color: var(--o-color-division1);
+ @media screen and (max-width: 768px) {
+ margin: var(--o-spacing-h4) 0;
+ }
+ }
+
+ h1 {
+ margin-top: var(--o-spacing-h1);
+ margin-bottom: var(--o-spacing-h2);
+ font-size: var(--o-font-size-h3);
+ line-height: var(--o-line-height-h3);
+ @media screen and (max-width: 768px) {
+ margin: var(--o-spacing-h3) 0 var(--o-spacing-h4);
+ font-size: var(--o-font-size-h7);
+ line-height: var(--o-line-height-h7);
+ }
+ }
+
+ h2 {
+ margin-top: var(--o-spacing-h2);
+ margin-bottom: var(--o-spacing-h3);
+ font-size: var(--o-font-size-h5);
+ line-height: var(--o-line-height-h5);
+ @media screen and (max-width: 768px) {
+ margin: var(--o-spacing-h4) 0 var(--o-spacing-h5);
+ font-size: var(--o-font-size-h8);
+ line-height: var(--o-line-height-h8);
+ }
+ }
+
+ h3 {
+ margin-top: var(--o-spacing-h3);
+ font-size: var(--o-font-size-h7);
+ line-height: var(--o-line-height-h8);
+ @media screen and (max-width: 768px) {
+ margin-top: var(--o-spacing-h5);
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-line-height-text);
+ }
+ }
+
+ h4 {
+ margin-top: var(--o-spacing-h4);
+ font-size: var(--o-font-size-h8);
+ line-height: var(--o-font-size-h8);
+ @media screen and (max-width: 768px) {
+ margin-top: var(--o-spacing-h6);
+ font-size: var(--o-font-size-tip);
+ line-height: var(--o-line-height-tip);
+ }
+ }
+
+ h5 {
+ margin-top: var(--o-spacing-h5);
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-font-size-text);
+ }
+
+ p,
+ ul,
+ ol {
+ margin-top: var(--o-spacing-h8);
+ margin-bottom: var(--o-spacing-h8);
+ font-size: var(--o-font-size-text);
+ font-weight: normal;
+ color: var(--o-color-text4);
+ line-height: var(--o-line-height-text);
+ @media screen and (max-width: 768px) {
+ font-size: var(--o-font-size-tip);
+ }
+ }
+
+ ul,
+ ol {
+ padding-left: 1em;
+
+ li {
+ &::marker {
+ color: var(--o-color-text1);
+ }
+ }
+ }
+
+ table {
+ width: 100%;
+ font-size: var(--o-font-size-text);
+ table-layout: fixed;
+ word-break: break-word;
+ border-collapse: collapse;
+ padding: 0;
+ line-height: var(--o-line-height-text);
+
+ tr {
+ height: 54px;
+ color: var(--o-color-text4);
+ border-bottom: 1px solid var(--o-color-table);
+
+ th {
+ padding-left: var(--o-spacing-h3);
+ text-align: left;
+ font-weight: 500;
+ font-size: var(--o-font-size-h8);
+ line-height: var(--o-line-height-h8);
+ background-color: var(--o-color-bg4);
+ color: var(--o-color-text1);
+ @media screen and (max-width: 768px) {
+ font-size: var(--o-font-size-text);
+ padding-left: var(--o-spacing-h5);
+ }
+ }
+ td {
+ padding-left: var(--o-spacing-h3);
+ line-height: var(--o-line-height-text);
+ @media screen and (max-width: 768px) {
+ padding-left: var(--o-spacing-h6);
+ font-size: var(--o-font-size-tip);
+ }
+ }
+ }
+ }
+
+ strong {
+ font-weight: bold;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ a[href^='#'] {
+ display: none;
+ }
+ // div[class*='language-'] {
+ // position: relative;
+ // margin: 8px 0;
+ // background-color: var(--o-color-bg1);
+ // box-shadow: var(--o-shadow-l1);
+ // overflow-x: auto;
+ // }
+ code,
+ pre {
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+ }
+
+ pre {
+ position: relative;
+ margin: 8px 0;
+ background-color: var(--o-color-bg1);
+ box-shadow: var(--o-shadow-l1);
+ overflow-x: auto;
+ z-index: 1;
+ padding: 24px 32px;
+ @media screen and (max-width: 768px) {
+ padding: 12px 24px;
+ }
+ &::-webkit-scrollbar-track {
+ border-radius: 4px;
+ background-color: var(--o-color-bg2);
+ }
+
+ &::-webkit-scrollbar {
+ height: 8px;
+ background-color: var(--o-color-bg2);
+ }
+
+ &::-webkit-scrollbar-thumb {
+ border-radius: 4px;
+ background: var(--o-color-bg4);
+ }
+ }
+
+ code {
+ padding: 0;
+ line-height: var(--o-line-height-text);
+ font-size: var(--o-font-size-text);
+ color: var(--o-color-text1);
+ }
+}
+
+/**
+ * 法律声明 && 隐私政策
+ **/
+.legal-privacy {
+ margin: 0 auto;
+ padding: 0;
+ padding-top: 94px;
+ padding-bottom: var(--o-spacing-h1);
+ max-width: 880px;
+ background: var(--o-color-bg1);
+ box-shadow: none;
+}
+@media screen and (max-width: 768px) {
+ .legal-privacy {
+ padding-top: 0;
+ margin-top: var(--o-spacing-h2);
+ padding-bottom: var(--o-spacing-h2);
+ }
+}
+.legal-privacy hr {
+ margin: var(--o-spacing-h2) 0;
+}
+@media screen and (max-width: 768px) {
+ .legal-privacy hr {
+ margin: var(--o-spacing-h4) 0 var(--o-spacing-h4) 0;
+ }
+}
+.legal-privacy h1 {
+ margin-top: 0;
+ text-align: center;
+}
+.legal-privacy h2 {
+ font-size: var(--o-font-size-h7);
+ letter-spacing: 0;
+ line-height: var(--o-line-height-h8);
+ font-weight: 700;
+ margin-bottom: var(--o-spacing-h6);
+}
+@media screen and (max-width: 768px) {
+ .legal-privacy h2 {
+ font-size: var(--o-font-size-text);
+ letter-spacing: 0;
+ line-height: var(--o-line-height-text);
+ font-weight: 700;
+ margin-bottom: --o-spacing-h8;
+ }
+}
+.vuepress-markdown-body {
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ margin: var(--o-spacing-h5) 0;
+ font-weight: normal;
+ }
+}
diff --git a/src/shared/styles/normalize.scss b/src/shared/styles/normalize.scss
new file mode 100644
index 0000000000000000000000000000000000000000..ec4f1f581fdb1d954926c6473f35c26ca456ca5f
--- /dev/null
+++ b/src/shared/styles/normalize.scss
@@ -0,0 +1,351 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+ ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+
+html {
+ line-height: 1.15; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+
+/**
+ * Remove the margin in all browsers.
+ */
+
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+ box-sizing: content-box; /* 1 */
+ height: 0; /* 1 */
+ overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+ // font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+ border-bottom: none; /* 1 */
+ text-decoration: underline; /* 2 */
+ text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+ // font-family: monospace, monospace; /* 1 */
+ font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit; /* 1 */
+ font-size: 100%; /* 1 */
+ line-height: 1.15; /* 1 */
+ margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+[type='button'],
+[type='reset'],
+[type='submit'] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type='button']::-moz-focus-inner,
+[type='reset']::-moz-focus-inner,
+[type='submit']::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type='button']:-moz-focusring,
+[type='reset']:-moz-focusring,
+[type='submit']:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+
+legend {
+ box-sizing: border-box; /* 1 */
+ color: inherit; /* 2 */
+ display: table; /* 1 */
+ max-width: 100%; /* 1 */
+ padding: 0; /* 3 */
+ white-space: normal; /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+
+[type='checkbox'],
+[type='radio'] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type='number']::-webkit-inner-spin-button,
+[type='number']::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type='search'] {
+ -webkit-appearance: textfield; /* 1 */
+ outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+
+[type='search']::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button; /* 1 */
+ font: inherit; /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+
+/**
+ * Add the correct display in IE 10+.
+ */
+
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+
+[hidden] {
+ display: none;
+}
diff --git a/src/shared/styles/theme-dark.scss b/src/shared/styles/theme-dark.scss
new file mode 100644
index 0000000000000000000000000000000000000000..7a69c8fbe755a73144e7d3dea90d7f63d36e46bd
--- /dev/null
+++ b/src/shared/styles/theme-dark.scss
@@ -0,0 +1,87 @@
+:root.dark {
+ // 成功色
+ --o-color-success1: var(--o-color-yellowgreen5); // normal
+ --o-color-success2: var(--o-color-yellowgreen7); // hover
+ --o-color-success3: var(--o-color-yellowgreen2); // disabled
+
+ // 告警色
+ --o-color-warning1: var(--o-color-orange5); // normal
+ --o-color-warning2: var(--o-color-orange7); // hover
+ --o-color-warning3: var(--o-color-orange1); // disabled
+
+ // 错误色
+ --o-color-error1: var(--o-color-red5); // normal
+ --o-color-error2: var(--o-color-red7); // hover
+ --o-color-error3: var(--o-color-red1); // disabled
+
+ // 品牌色
+ --o-color-brand1: var(--o-color-kleinblue8); // 常规
+ --o-color-brand2: var(--o-color-kleinblue9); // 悬浮
+ --o-color-brand3: var(--o-color-kleinblue5); // 点击确认
+ --o-color-brand4: var(--o-color-kleinblue7); // 特殊场景
+ --o-color-brand5: var(--o-color-kleinblue3); // 普通禁用
+ --o-color-brand6: var(--o-color-kleinblue3); // 文字禁用
+
+ // 文字颜色
+ --o-color-text1: var(--o-color-white); // 强调/正文标题
+ --o-color-text2: var(--o-color-black); // 强调/正文标题
+ --o-color-text3: var(--o-color-neutral11); // 次强调/正文标题
+ --o-color-text4: var(--o-color-neutral9); // 次要信息/正文
+ --o-color-text5: var(--o-color-neutral5); // 置灰信息
+ --o-color-text-secondary: var(--o-color-neutral6); // 次级文字颜色
+
+ // 背景色
+ --o-color-bg1: var(--o-color-neutral1); // 整体背景色
+ --o-color-bg2: var(--o-color-greyblack1); // 一级容器背景色
+ --o-color-bg3: var(--o-color-greyblack2); // 二级容器背景色
+ --o-color-bg4: var(--o-color-greyblack3); // 三级容器背景色
+ --o-color-bg5: var(--o-color-greyblack3); // 弹出框、tooltip背景色
+ --o-color-bg6: rgba(0, 0, 0, 0.5); // 蒙层
+ --o-color-bg-secondary: var(--o-color-greyblack2); // 次级背景颜色
+
+ // 链接色
+ --o-color-link1: var(--o-color-kleinblue8); // 常规
+ --o-color-link2: var(--o-color-kleinblue9); // 悬浮
+ --o-color-link3: var(--o-color-kleinblue5); // 点击
+ --o-color-link4: var(--o-color-kleinblue7); // 特殊场景
+ --o-color-link5: var(--o-color-kleinblue3); // 一般禁用
+ --o-color-link6: var(--o-color-kleinblue3); // 文字禁用,暂和一般禁用保持一致
+
+ // 边框颜色
+ --o-color-border1: var(--o-color-neutral9);
+ --o-color-border2: var(--o-color-neutral3);
+ --o-color-border3: var(--o-color-kleinblue8);
+
+ // 分割线颜色
+ --o-color-division1: var(--o-color-neutral3);
+
+ // 填充色,用于阴影容器背景
+ --o-color-fill1: var(
+ --o-color-greyblack1
+ ); // SL1 一级投影容器背景,应用于默认状态的卡片、楼层、导航栏、组件里局部投影背景等
+ --o-color-fill2: var(
+ --o-color-greyblack1
+ ); // SL2 二级投影容器背景,应用于卡片、组件里局部投影等
+ --o-color-fill2_hover: var(
+ --o-color-greyblack2
+ ); // SL2-hover 升起投影容器背景,应用于悬停状态的卡片等,是SL2的激活态
+ --o-color-fill3: var(
+ --o-color-greyblack2
+ ); // SL3 三级投影容器背景,应用于一级投影上的卡片、组件等
+ --o-color-fill4: var(
+ --o-color-greyblack3
+ ); // SL4 覆盖阴影容器背景,应用于信息提示【tips、活动进入按钮等】等投影容器
+ --o-color-fill5: var(
+ --o-color-greyblack4
+ ); // SL5 弹出阴影容器背景,应用于模态弹窗投影
+
+ /**
+ * 阴影
+ */
+ --o-shadow-l1: 0 1px 7px rgba(0, 0, 0, 0.3); // SL1 一级投影,应用于楼层、导航栏、组件里局部投影等,
+ --o-shadow-l2: 0 1px 7px rgba(0, 0, 0, 0.3); // SL2-normal 二级投影,应用于卡片、组件里局部投影等
+ --o-shadow-l2_hover: 0 6px 18px rgba(0, 0, 0, 0.42); // SL2-hover 升起投影,应用于悬停状态的卡片等,是SL2的激活态
+ --o-shadow-l3: 0 6px 18px rgba(0, 0, 0, 0.42); // SL3 三级投影,应用于一级投影上的卡片、组件等
+ --o-shadow-l4: 0 10px 32px rgba(0, 0, 0, 0.54); // SL4 覆盖阴影,应用于信息提示【tips、活动进入按钮等】等投影
+ --o-shadow-l5: 0 12px 42px rgba(0, 0, 0, 0.72); // SL5 弹出阴影,应用于模态弹窗投影
+}
diff --git a/src/shared/url-config.ts b/src/shared/url-config.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c7619887361c0c28c143ce1aa3bad9f42a14df10
--- /dev/null
+++ b/src/shared/url-config.ts
@@ -0,0 +1,31 @@
+// 涉及的公网路径配置文件
+const DATA_LINK = 'https://datastat.opengauss.org/';
+const OSCHINA_LINK = 'https://my.oschina.net/';
+const CSDN_LINK = 'https://blog.csdn.net/';
+const CTO_LINK = 'https://blog.51cto.com/';
+const MODB_LINK = 'https://www.modb.pro/';
+const INFOQ_LINK = 'https://www.infoq.cn/';
+const BILIBILI_LINK = 'https://space.bilibili.com/';
+const ZHIZHU_LINK = 'https://www.zhihu.com/';
+const ENMOEDU_LINK = 'https://enmoedu.com/';
+const GITEE_LINK = 'https://gitee.com/';
+const GITEE_LINK1 = 'http://gitee.com/';
+const GIYHUB_LINK = 'https://github.com/';
+const STATUS_LINK = 'https://status.opengauss.org/';
+
+
+export {
+ DATA_LINK, GITEE_LINK1,
+ OSCHINA_LINK,
+ CSDN_LINK,
+ CTO_LINK,
+ MODB_LINK,
+ INFOQ_LINK,
+ BILIBILI_LINK,
+ ZHIZHU_LINK,
+ ENMOEDU_LINK,
+ GITEE_LINK,
+ STATUS_LINK,
+ GIYHUB_LINK,
+
+};
diff --git a/src/shared/utils.ts b/src/shared/utils.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f03cfe425aed8ecd39726ce02b96e1206fec81d9
--- /dev/null
+++ b/src/shared/utils.ts
@@ -0,0 +1,46 @@
+import CryptoJS from 'crypto-js';
+
+// TS 对象key合法检查
+export function isValidKey(
+ key: string | number | symbol,
+ object: object
+): key is keyof typeof object {
+ return Object.prototype.hasOwnProperty.call(object, key);
+}
+
+export function scrollToTop() {
+ document.body.scrollTop = 0;
+ document.documentElement.scrollTop = 0;
+}
+
+export function hiddenMail(mail: string) {
+ const mailTest = new RegExp(
+ '^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$'
+ );
+ if (mailTest.test(mail)) {
+ return `${mail.split('@')[0]}@***${mail.charAt(mail.length - 1)}`;
+ }
+}
+
+/**
+ * @word 要加密的内容
+ * @keyWord String 服务器随机返回的关键字
+ * */
+export function aesEncrypt(word: string, keyWord: string) {
+ const key = CryptoJS.enc.Utf8.parse(keyWord);
+ const srcs = CryptoJS.enc.Utf8.parse(word);
+ const encrypted = CryptoJS.AES.encrypt(srcs, key, {
+ mode: CryptoJS.mode.ECB,
+ padding: CryptoJS.pad.Pkcs7,
+ });
+ return encrypted.toString();
+}
+
+export function getAuthorization() {
+ const secret = import.meta.env.VITE_SECRET;
+ const data = {
+ secret: secret,
+ timestamp: Math.floor(Date.now() / 1000),
+ };
+ return aesEncrypt(JSON.stringify(data), secret);
+}
diff --git a/src/stores/index.ts b/src/stores/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..131c8028833528144e3569e37ca68a65b97c04f6
--- /dev/null
+++ b/src/stores/index.ts
@@ -0,0 +1,32 @@
+import { defineStore } from 'pinia';
+interface LabelColor {
+ color: string;
+ name: string;
+}
+
+// 语言
+export const useLangStore = defineStore('lang', {
+ state: () => {
+ return {
+ lang: '',
+ };
+ },
+ actions: {
+ setLangStore(val: string) {
+ this.lang = val;
+ },
+ },
+});
+// 标签颜色
+export const useLabelColor = defineStore('color', {
+ state: () => {
+ return {
+ labelColor: [] as Array,
+ };
+ },
+ actions: {
+ setLabelColor(data: Array) {
+ this.labelColor = data;
+ },
+ },
+});
diff --git a/src/stores/login.ts b/src/stores/login.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5ab4a27313112a889ebe002bf31eec6397dc7047
--- /dev/null
+++ b/src/stores/login.ts
@@ -0,0 +1,8 @@
+import { defineStore } from 'pinia';
+import { ref } from 'vue';
+
+export const useLogin = defineStore('login', () => {
+ // 登录信息
+ const guardAuthClient = ref({} as any);
+ return { guardAuthClient };
+});
diff --git a/src/views/TheQuickIssue.vue b/src/views/TheQuickIssue.vue
new file mode 100644
index 0000000000000000000000000000000000000000..d845eecb40cac497e370b70528613b9a4e2f506a
--- /dev/null
+++ b/src/views/TheQuickIssue.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/src/views/pull-request/PullRequest.vue b/src/views/pull-request/PullRequest.vue
new file mode 100644
index 0000000000000000000000000000000000000000..baca156c3fa149772fd42126beb28b54d5accea1
--- /dev/null
+++ b/src/views/pull-request/PullRequest.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
+
diff --git a/src/views/submit-issue/SubmitIssue.vue b/src/views/submit-issue/SubmitIssue.vue
new file mode 100644
index 0000000000000000000000000000000000000000..8dc80b95cabdf6e8e479fc09f6db27346924d140
--- /dev/null
+++ b/src/views/submit-issue/SubmitIssue.vue
@@ -0,0 +1,943 @@
+
+
+
+
+
{{ t('quickIssue.ISSUE_TITLE') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ t('quickIssue.GITTE_USER') }}
+
+
+
+ {{ t('quickIssue.NOT_GITEE_USER') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ content }}
+
+
+
+
+ {{ t('quickIssue.CREATE') }}
+ {{ t('quickIssue.CONTINUE') }}
+ {{
+ t('quickIssue.CANCEL')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 0000000000000000000000000000000000000000..3813f8b0573fa6a16f05c8848c7d0811325abead
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1,23 @@
+///
+
+declare module '*.vue' {
+ import type { DefineComponent } from 'vue';
+ // eslint-disable-next-line @typescript-eslint/ban-types
+ const component: DefineComponent<{}, {}, any>;
+ export default component;
+}
+declare module '*.svg';
+declare module '*.png';
+declare module '*.jpg';
+declare module '*.jpeg';
+declare module '*.gif';
+declare module '*.bmp';
+declare module '*.tiff';
+declare module '*.json';
+declare module '*.md';
+declare module '*.mp4';
+declare module '@kangc/v-md-editor/lib/theme/vuepress.js';
+declare module '@kangc/v-md-editor';
+declare module '@kangc/v-md-editor/lib/lang/en-US';
+declare module '@kangc/v-md-editor/lib/lang/zh-CN';
+declare module 'crypto-js';
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000000000000000000000000000000000000..9baf557a61d496ccebf039e3573376a633b6927a
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,24 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "strict": true,
+ "allowJs": true,
+ "jsx": "preserve",
+ "sourceMap": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "lib": ["ESNext", "DOM"],
+ "skipLibCheck": true,
+ "paths": {
+ "@/*": ["./src/*"],
+ "opendesign": ["./opendesign"]
+ },
+ "types": ["unplugin-icons/types/vue", "element-plus/global", "node"]
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/tsconfig.node.json b/tsconfig.node.json
new file mode 100644
index 0000000000000000000000000000000000000000..9d31e2aed93c876bc048cf2f863cb2a847c901e8
--- /dev/null
+++ b/tsconfig.node.json
@@ -0,0 +1,9 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5406c9d7004df03e0213c0646855c0394029118c
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,86 @@
+import { defineConfig } from 'vite';
+import path from 'path';
+import vue from '@vitejs/plugin-vue';
+import vueJsx from '@vitejs/plugin-vue-jsx';
+
+import Icons from 'unplugin-icons/vite';
+import { FileSystemIconLoader } from 'unplugin-icons/loaders';
+
+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';
+
+export default defineConfig({
+ base: process.env.NODE_ENV === 'development' ? './' : '/',
+ resolve: {
+ alias: {
+ '@/': `${path.resolve(__dirname, './src')}/`,
+ 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
+ },
+ },
+
+ plugins: [
+ vue(),
+ vueJsx({}),
+ AutoImport({
+ resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
+ }),
+ Components({
+ resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
+ }),
+ Icons({
+ compiler: 'vue3',
+ customCollections: {
+ app: FileSystemIconLoader('./src/assets/svg-icons'),
+ },
+ }),
+ ElementPlus({
+ useSource: true,
+ }),
+ ],
+ css: {
+ preprocessorOptions: {
+ scss: {
+ additionalData: `@use "@/shared/styles/element-plus/index.scss" as *;`,
+ },
+ },
+ },
+
+ build: {
+ chunkSizeWarningLimit: 1500,
+ rollupOptions: {
+ output: {
+ manualChunks(id) {
+ if (id.includes('node_modules')) {
+ return id
+ .toString()
+ .split('node_modules/')[1]
+ .split('/')[0]
+ .toString();
+ }
+ },
+ },
+ },
+ },
+ server: {
+ proxy: {
+ '/api-dsapi/': {
+ target: 'https://dsapi.osinfra.cn/',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api-dsapi/, ''),
+ },
+ '/api-omapi/': {
+ target: 'https://omapi.osinfra.cn/',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api-omapi/, ''),
+ },
+ '/api-issues/': {
+ target: 'http://119.8.32.82',
+ // target: 'https://ipb.osinfra.cn',
+ changeOrigin: true,
+ rewrite: (path) => path.replace(/^\/api-issues/, ''),
+ },
+ },
+ },
+});