mirror of
https://github.com/vbenjs/vue-vben-admin.git
synced 2025-08-26 16:46:19 +08:00
chore: add some notes
This commit is contained in:
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
@@ -138,6 +138,7 @@
|
|||||||
// "vetur.format.defaultFormatter.html": "prettyhtml",
|
// "vetur.format.defaultFormatter.html": "prettyhtml",
|
||||||
"vetur.format.defaultFormatter.ts": "prettier-tslint",
|
"vetur.format.defaultFormatter.ts": "prettier-tslint",
|
||||||
"vetur.format.defaultFormatter.js": "prettier",
|
"vetur.format.defaultFormatter.js": "prettier",
|
||||||
|
"vetur.languageFeatures.codeActions": false,
|
||||||
// "vetur.useWorkspaceDependencies": true,
|
// "vetur.useWorkspaceDependencies": true,
|
||||||
"vetur.format.defaultFormatterOptions": {
|
"vetur.format.defaultFormatterOptions": {
|
||||||
"js-beautify-html": {
|
"js-beautify-html": {
|
||||||
|
@@ -11,7 +11,8 @@
|
|||||||
|
|
||||||
### 🎫 Chores
|
### 🎫 Chores
|
||||||
|
|
||||||
- 更新 antdv 到`2.0.0-rc.1`
|
- 更新 antdv 到`2.0.0-rc.1`(暂时还原到 beta15,rc1 菜单卡顿太严重.)
|
||||||
|
- 添加部分注释
|
||||||
|
|
||||||
### 🐛 Bug Fixes
|
### 🐛 Bug Fixes
|
||||||
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
// 修改自
|
// Modified from
|
||||||
// https://github.com/luxueyan/vite-transform-globby-import/blob/master/src/index.ts
|
// https://github.com/luxueyan/vite-transform-globby-import/blob/master/src/index.ts
|
||||||
|
|
||||||
// TODO 目前还不能监听文件新增及删除 内容已经改变,缓存问题?
|
// TODO Currently, it is not possible to monitor file addition and deletion. The content has been changed, the cache problem?
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { lstatSync } from 'fs';
|
import { lstatSync } from 'fs';
|
||||||
import glob from 'glob';
|
import glob from 'glob';
|
||||||
|
@@ -4,11 +4,11 @@ import { resultSuccess } from '../_util';
|
|||||||
const userInfo = {
|
const userInfo = {
|
||||||
name: 'Vben',
|
name: 'Vben',
|
||||||
userid: '00000001',
|
userid: '00000001',
|
||||||
email: 'antdesign@alipay.com',
|
email: 'test@gmail.com',
|
||||||
signature: '海纳百川,有容乃大',
|
signature: '海纳百川,有容乃大',
|
||||||
introduction: '微笑着,努力着,欣赏着',
|
introduction: '微笑着,努力着,欣赏着',
|
||||||
title: '交互专家',
|
title: '交互专家',
|
||||||
group: '蚂蚁集团11-某某某事业群-某某平台部-某某技术部-UED',
|
group: '某某某事业群-某某平台部-某某技术部-UED',
|
||||||
tags: [
|
tags: [
|
||||||
{
|
{
|
||||||
key: '0',
|
key: '0',
|
||||||
@@ -38,7 +38,7 @@ const userInfo = {
|
|||||||
notifyCount: 12,
|
notifyCount: 12,
|
||||||
unreadCount: 11,
|
unreadCount: 11,
|
||||||
country: 'China',
|
country: 'China',
|
||||||
address: '厦门市 77 号',
|
address: 'Xiamen City 77',
|
||||||
phone: '0592-268888888',
|
phone: '0592-268888888',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
18
package.json
18
package.json
@@ -22,8 +22,8 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@iconify/iconify": "^2.0.0-rc.2",
|
"@iconify/iconify": "^2.0.0-rc.2",
|
||||||
"@vueuse/core": "^4.0.0-beta.41",
|
"@vueuse/core": "4.0.0-beta.41",
|
||||||
"ant-design-vue": "^2.0.0-rc.1",
|
"ant-design-vue": "2.0.0-beta.15",
|
||||||
"apexcharts": "3.22.0",
|
"apexcharts": "3.22.0",
|
||||||
"axios": "^0.21.0",
|
"axios": "^0.21.0",
|
||||||
"echarts": "^4.9.0",
|
"echarts": "^4.9.0",
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
"qrcode": "^1.4.4",
|
"qrcode": "^1.4.4",
|
||||||
"vditor": "^3.6.2",
|
"vditor": "^3.6.2",
|
||||||
"vue": "^3.0.2",
|
"vue": "^3.0.2",
|
||||||
"vue-i18n": "^9.0.0-beta.6",
|
"vue-i18n": "^9.0.0-beta.7",
|
||||||
"vue-router": "^4.0.0-rc.3",
|
"vue-router": "^4.0.0-rc.3",
|
||||||
"vuex": "^4.0.0-rc.1",
|
"vuex": "^4.0.0-rc.1",
|
||||||
"vuex-module-decorators": "^1.0.1",
|
"vuex-module-decorators": "^1.0.1",
|
||||||
@@ -45,10 +45,10 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^11.0.0",
|
"@commitlint/cli": "^11.0.0",
|
||||||
"@commitlint/config-conventional": "^11.0.0",
|
"@commitlint/config-conventional": "^11.0.0",
|
||||||
"@iconify/json": "^1.1.258",
|
"@iconify/json": "^1.1.260",
|
||||||
"@ls-lint/ls-lint": "^1.9.2",
|
"@ls-lint/ls-lint": "^1.9.2",
|
||||||
"@purge-icons/generated": "^0.4.1",
|
"@purge-icons/generated": "^0.4.1",
|
||||||
"@types/echarts": "^4.9.0",
|
"@types/echarts": "^4.9.1",
|
||||||
"@types/fs-extra": "^9.0.4",
|
"@types/fs-extra": "^9.0.4",
|
||||||
"@types/koa-static": "^4.0.1",
|
"@types/koa-static": "^4.0.1",
|
||||||
"@types/lodash-es": "^4.17.3",
|
"@types/lodash-es": "^4.17.3",
|
||||||
@@ -56,10 +56,10 @@
|
|||||||
"@types/nprogress": "^0.2.0",
|
"@types/nprogress": "^0.2.0",
|
||||||
"@types/qrcode": "^1.3.5",
|
"@types/qrcode": "^1.3.5",
|
||||||
"@types/rollup-plugin-visualizer": "^2.6.0",
|
"@types/rollup-plugin-visualizer": "^2.6.0",
|
||||||
"@types/yargs": "^15.0.9",
|
"@types/yargs": "^15.0.10",
|
||||||
"@types/zxcvbn": "^4.4.0",
|
"@types/zxcvbn": "^4.4.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^4.6.1",
|
"@typescript-eslint/eslint-plugin": "^4.8.1",
|
||||||
"@typescript-eslint/parser": "^4.6.1",
|
"@typescript-eslint/parser": "^4.8.1",
|
||||||
"@vue/compiler-sfc": "^3.0.2",
|
"@vue/compiler-sfc": "^3.0.2",
|
||||||
"@vuedx/typecheck": "^0.2.4-0",
|
"@vuedx/typecheck": "^0.2.4-0",
|
||||||
"@vuedx/typescript-plugin-vue": "^0.2.4-0",
|
"@vuedx/typescript-plugin-vue": "^0.2.4-0",
|
||||||
@@ -84,7 +84,7 @@
|
|||||||
"prettier": "^2.1.2",
|
"prettier": "^2.1.2",
|
||||||
"rimraf": "^3.0.2",
|
"rimraf": "^3.0.2",
|
||||||
"rollup-plugin-visualizer": "^4.1.2",
|
"rollup-plugin-visualizer": "^4.1.2",
|
||||||
"stylelint": "^13.7.2",
|
"stylelint": "^13.8.0",
|
||||||
"stylelint-config-prettier": "^8.0.2",
|
"stylelint-config-prettier": "^8.0.2",
|
||||||
"stylelint-config-standard": "^20.0.0",
|
"stylelint-config-standard": "^20.0.0",
|
||||||
"stylelint-order": "^4.1.0",
|
"stylelint-order": "^4.1.0",
|
||||||
|
@@ -1,3 +1,7 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Vben
|
||||||
|
* @Description:
|
||||||
|
*/
|
||||||
module.exports = {
|
module.exports = {
|
||||||
printWidth: 100,
|
printWidth: 100,
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
|
@@ -33,20 +33,17 @@
|
|||||||
</style>
|
</style>
|
||||||
<circle cx="97" cy="97" r="81" stroke-width="16" stroke="#327fd8" fill="none"></circle>
|
<circle cx="97" cy="97" r="81" stroke-width="16" stroke="#327fd8" fill="none"></circle>
|
||||||
<g class="load">
|
<g class="load">
|
||||||
<!--右半圆环-->
|
|
||||||
<linearGradient id="left-linear" gradientUnits="userSpaceOnUse" x1="50" y1="0" x2="100" y2="180">
|
<linearGradient id="left-linear" gradientUnits="userSpaceOnUse" x1="50" y1="0" x2="100" y2="180">
|
||||||
<stop offset="0" style="stop-color: #64acff;" />
|
<stop offset="0" style="stop-color: #64acff;" />
|
||||||
<stop offset="1" style="stop-color: #9DBFE4;" />
|
<stop offset="1" style="stop-color: #9DBFE4;" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<path class="left-linear" d="M20,100c0-44.1,35.9-80,80-80V0C44.8,0,0,44.8,0,100s44.8,100,100,100v-20C55.9,180,20,144.1,20,100z" />
|
<path class="left-linear" d="M20,100c0-44.1,35.9-80,80-80V0C44.8,0,0,44.8,0,100s44.8,100,100,100v-20C55.9,180,20,144.1,20,100z" />
|
||||||
<!--左半圆环-->
|
|
||||||
<circle class="bottom" cx="100" cy="190" r="10" />
|
<circle class="bottom" cx="100" cy="190" r="10" />
|
||||||
<linearGradient id="right-linear" gradientUnits="userSpaceOnUse" x1="100" y1="120" x2="100" y2="180">
|
<linearGradient id="right-linear" gradientUnits="userSpaceOnUse" x1="100" y1="120" x2="100" y2="180">
|
||||||
<stop offset="0" style="stop-color: transparent;" />
|
<stop offset="0" style="stop-color: transparent;" />
|
||||||
<stop offset="1" style="stop-color: transparent;" />
|
<stop offset="1" style="stop-color: transparent;" />
|
||||||
</linearGradient>
|
</linearGradient>
|
||||||
<path class="right-linear" d="M100,0v20c44.1,0,80,35.9,80,80c0,44.1-35.9,80-80,80v20c55.2,0,100-44.8,100-100S155.2,0,100,0z" />
|
<path class="right-linear" d="M100,0v20c44.1,0,80,35.9,80,80c0,44.1-35.9,80-80,80v20c55.2,0,100-44.8,100-100S155.2,0,100,0z" />
|
||||||
<!--左半圆环-->
|
|
||||||
<circle class="top" cx="100" cy="10" r="10" />
|
<circle class="top" cx="100" cy="10" r="10" />
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.6 KiB |
31
src/App.vue
31
src/App.vue
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<ConfigProvider :locale="zhCN" :transform-cell-text="transformCellText" v-bind="lockOn">
|
<ConfigProvider v-bind="lockEvent" :locale="zhCN" :transform-cell-text="transformCellText">
|
||||||
<router-view />
|
<router-view />
|
||||||
</ConfigProvider>
|
</ConfigProvider>
|
||||||
</template>
|
</template>
|
||||||
@@ -13,9 +13,8 @@
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import 'moment/dist/locale/zh-cn';
|
import 'moment/dist/locale/zh-cn';
|
||||||
|
|
||||||
import { useConfigProvider, useInitAppConfigStore } from './useApp';
|
import { getConfigProvider, initAppConfigStore } from '/@/setup/Application';
|
||||||
import { useLockPage } from '/@/hooks/web/useLockPage';
|
import { useLockPage } from '/@/hooks/web/useLockPage';
|
||||||
import { useSetting } from '/@/hooks/core/useSetting';
|
|
||||||
|
|
||||||
moment.locale('zh-cn');
|
moment.locale('zh-cn');
|
||||||
|
|
||||||
@@ -23,26 +22,22 @@
|
|||||||
name: 'App',
|
name: 'App',
|
||||||
components: { ConfigProvider },
|
components: { ConfigProvider },
|
||||||
setup() {
|
setup() {
|
||||||
// Initialize application settings
|
// Initialize vuex internal system configuration
|
||||||
useInitAppConfigStore();
|
initAppConfigStore();
|
||||||
// Initialize breakpoint monitoring
|
|
||||||
createBreakpointListen();
|
|
||||||
// Get system configuration
|
|
||||||
const { projectSetting } = useSetting();
|
|
||||||
// Get ConfigProvider configuration
|
|
||||||
const { transformCellText } = useConfigProvider();
|
|
||||||
|
|
||||||
let lockOn = {};
|
// Create a global breakpoint monitor
|
||||||
if (projectSetting.lockTime) {
|
createBreakpointListen();
|
||||||
// Monitor the mouse or keyboard time, used to recalculate the lock screen time
|
|
||||||
const { on } = useLockPage();
|
// Get ConfigProvider configuration
|
||||||
lockOn = on;
|
const { transformCellText } = getConfigProvider();
|
||||||
}
|
|
||||||
|
// Create a lock screen monitor
|
||||||
|
const lockEvent = useLockPage();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
transformCellText,
|
transformCellText,
|
||||||
zhCN,
|
zhCN,
|
||||||
lockOn,
|
lockEvent,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
@@ -5,7 +5,7 @@ enum Api {
|
|||||||
ACCOUNT_INFO = '/account/getAccountInfo',
|
ACCOUNT_INFO = '/account/getAccountInfo',
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取个人中心--基础设置内容
|
// Get personal center-basic settings
|
||||||
export function accountInfoApi() {
|
export function accountInfoApi() {
|
||||||
return defHttp.request<GetAccountInfoModel>({
|
return defHttp.request<GetAccountInfoModel>({
|
||||||
url: Api.ACCOUNT_INFO,
|
url: Api.ACCOUNT_INFO,
|
||||||
|
@@ -7,7 +7,7 @@ enum Api {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 根据id获取用户菜单
|
* @description: Get user menu based on id
|
||||||
*/
|
*/
|
||||||
export function getMenuListById(params: getMenuListByIdParams) {
|
export function getMenuListById(params: getMenuListByIdParams) {
|
||||||
return defHttp.request<getMenuListByIdParamsResultModel>({
|
return defHttp.request<getMenuListByIdParamsResultModel>({
|
||||||
|
@@ -11,13 +11,13 @@ export interface RouteItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 获取菜单接口
|
* @description: Get menu interface
|
||||||
*/
|
*/
|
||||||
export interface getMenuListByIdParams {
|
export interface getMenuListByIdParams {
|
||||||
id: number | string;
|
id: number | string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 获取菜单返回值
|
* @description: Get menu return value
|
||||||
*/
|
*/
|
||||||
export type getMenuListByIdParamsResultModel = RouteItem[];
|
export type getMenuListByIdParamsResultModel = RouteItem[];
|
||||||
|
@@ -7,7 +7,7 @@ enum Api {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 上传接口
|
* @description: Upload interface
|
||||||
*/
|
*/
|
||||||
export function uploadApi(
|
export function uploadApi(
|
||||||
params: UploadFileParams,
|
params: UploadFileParams,
|
||||||
|
@@ -1,2 +1,8 @@
|
|||||||
|
import type { App } from 'vue';
|
||||||
import Authority from './src/index.vue';
|
import Authority from './src/index.vue';
|
||||||
export default Authority;
|
|
||||||
|
export default (app: App): void => {
|
||||||
|
app.component(Authority.name, Authority);
|
||||||
|
};
|
||||||
|
|
||||||
|
export { Authority };
|
||||||
|
@@ -1,17 +1,28 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: Vben
|
||||||
|
* @Description:Access control component for fine-grained access control.
|
||||||
|
-->
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { PropType } from 'vue';
|
import type { PropType } from 'vue';
|
||||||
import { defineComponent, computed, unref } from 'vue';
|
import { defineComponent, computed, unref } from 'vue';
|
||||||
|
|
||||||
import { PermissionModeEnum } from '/@/enums/appEnum';
|
import { PermissionModeEnum } from '/@/enums/appEnum';
|
||||||
import { RoleEnum } from '/@/enums/roleEnum';
|
import { RoleEnum } from '/@/enums/roleEnum';
|
||||||
|
|
||||||
import { usePermission } from '/@/hooks/web/usePermission';
|
import { usePermission } from '/@/hooks/web/usePermission';
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
|
|
||||||
import { getSlot } from '/@/utils/helper/tsxHelper';
|
import { getSlot } from '/@/utils/helper/tsxHelper';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'Authority',
|
name: 'Authority',
|
||||||
props: {
|
props: {
|
||||||
// 指定角色可见
|
/**
|
||||||
|
* Specified role is visible
|
||||||
|
* When the permission mode is the role mode, the value value can pass the role value.
|
||||||
|
* When the permission mode is background, the value value can pass the code permission value
|
||||||
|
* @default ''
|
||||||
|
*/
|
||||||
value: {
|
value: {
|
||||||
type: [Number, Array, String] as PropType<RoleEnum | RoleEnum[] | string | string[]>,
|
type: [Number, Array, String] as PropType<RoleEnum | RoleEnum[] | string | string[]>,
|
||||||
default: '',
|
default: '',
|
||||||
@@ -23,7 +34,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 渲染角色按钮
|
* Render role button
|
||||||
*/
|
*/
|
||||||
function renderRoleAuth() {
|
function renderRoleAuth() {
|
||||||
const { value } = props;
|
const { value } = props;
|
||||||
@@ -34,10 +45,8 @@
|
|||||||
return hasPermission(value) ? getSlot(slots) : null;
|
return hasPermission(value) ? getSlot(slots) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
// Render coding button
|
||||||
* 渲染编码按钮
|
// Here only judge whether it is included, the specific implementation can be written according to the project logic
|
||||||
* 这里只判断是否包含,具体实现可以根据项目自行写逻辑
|
|
||||||
*/
|
|
||||||
function renderCodeAuth() {
|
function renderCodeAuth() {
|
||||||
const { value } = props;
|
const { value } = props;
|
||||||
if (!value) {
|
if (!value) {
|
||||||
@@ -49,12 +58,12 @@
|
|||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
const mode = unref(getModeRef);
|
const mode = unref(getModeRef);
|
||||||
// 基于角色渲染
|
// Role-based value control
|
||||||
if (mode === PermissionModeEnum.ROLE) {
|
if (mode === PermissionModeEnum.ROLE) {
|
||||||
return renderRoleAuth();
|
return renderRoleAuth();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 基于后台编码渲染
|
// Based on background role permission control
|
||||||
if (mode === PermissionModeEnum.BACK) {
|
if (mode === PermissionModeEnum.BACK) {
|
||||||
return renderCodeAuth();
|
return renderCodeAuth();
|
||||||
}
|
}
|
||||||
|
@@ -1,3 +1,7 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: Vben
|
||||||
|
* @Description: Arrow component with animation
|
||||||
|
-->
|
||||||
<template>
|
<template>
|
||||||
<span :class="getClass">
|
<span :class="getClass">
|
||||||
<RightOutlined />
|
<RightOutlined />
|
||||||
|
@@ -71,9 +71,6 @@
|
|||||||
return props.absolute ? props.position : {};
|
return props.absolute ? props.position : {};
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 渲染内容
|
|
||||||
*/
|
|
||||||
const renderTitle = () => {
|
const renderTitle = () => {
|
||||||
const list = props.text;
|
const list = props.text;
|
||||||
if (isString(list)) {
|
if (isString(list)) {
|
||||||
@@ -89,6 +86,7 @@
|
|||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
return h(
|
return h(
|
||||||
|
// @ts-ignores
|
||||||
Tooltip,
|
Tooltip,
|
||||||
{
|
{
|
||||||
title: h(
|
title: h(
|
||||||
|
@@ -12,33 +12,19 @@
|
|||||||
|
|
||||||
import { defineComponent, computed } from 'vue';
|
import { defineComponent, computed } from 'vue';
|
||||||
import { Button } from 'ant-design-vue';
|
import { Button } from 'ant-design-vue';
|
||||||
// import { extendSlots } from '/@/utils/helper/tsxHelper';
|
|
||||||
// import { useThrottle } from '/@/hooks/core/useThrottle';
|
|
||||||
// import { isFunction } from '/@/utils/is';
|
|
||||||
import Icon from '/@/components/Icon';
|
import Icon from '/@/components/Icon';
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'AButton',
|
name: 'AButton',
|
||||||
inheritAttrs: false,
|
inheritAttrs: false,
|
||||||
components: { Button, Icon },
|
components: { Button, Icon },
|
||||||
props: {
|
props: {
|
||||||
// 按钮类型
|
|
||||||
type: {
|
type: {
|
||||||
type: String as PropType<'primary' | 'default' | 'danger' | 'dashed' | 'link'>,
|
type: String as PropType<'primary' | 'default' | 'danger' | 'dashed' | 'link'>,
|
||||||
default: 'default',
|
default: 'default',
|
||||||
},
|
},
|
||||||
// 节流防抖类型 throttle debounce
|
|
||||||
// throttle: {
|
|
||||||
// type: String as PropType<'throttle' | 'debounce'>,
|
|
||||||
// default: 'throttle',
|
|
||||||
// },
|
|
||||||
color: {
|
color: {
|
||||||
type: String as PropType<'error' | 'warning' | 'success' | ''>,
|
type: String as PropType<'error' | 'warning' | 'success' | ''>,
|
||||||
},
|
},
|
||||||
// // 防抖节流时间
|
|
||||||
// throttleTime: {
|
|
||||||
// type: Number as PropType<number>,
|
|
||||||
// default: 50,
|
|
||||||
// },
|
|
||||||
loading: {
|
loading: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
default: false,
|
default: false,
|
||||||
@@ -58,42 +44,15 @@
|
|||||||
const getIsCircleBtn = computed(() => {
|
const getIsCircleBtn = computed(() => {
|
||||||
return attrs.shape === 'circle';
|
return attrs.shape === 'circle';
|
||||||
});
|
});
|
||||||
// const getListeners = computed(() => {
|
|
||||||
// const { throttle, throttleTime = 0 } = props;
|
|
||||||
// // 是否开启节流防抖
|
|
||||||
// const throttleType = throttle!.toLowerCase();
|
|
||||||
// const isDebounce = throttleType === 'debounce';
|
|
||||||
// const openThrottle = ['throttle', 'debounce'].includes(throttleType) && throttleTime > 0;
|
|
||||||
// if (!openThrottle) {
|
|
||||||
// return {
|
|
||||||
// ...attrs,
|
|
||||||
// };
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const on: {
|
|
||||||
// onClick?: Fn;
|
|
||||||
// } = {};
|
|
||||||
|
|
||||||
// if (attrs.onClick && isFunction(attrs.onClick) && openThrottle) {
|
|
||||||
// const [handler] = useThrottle(attrs.onClick as any, throttleTime!, {
|
|
||||||
// debounce: isDebounce,
|
|
||||||
// immediate: false,
|
|
||||||
// });
|
|
||||||
// on.onClick = handler;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return {
|
|
||||||
// ...attrs,
|
|
||||||
// ...on,
|
|
||||||
// };
|
|
||||||
// });
|
|
||||||
|
|
||||||
const getColor = computed(() => {
|
const getColor = computed(() => {
|
||||||
const res: string[] = [];
|
|
||||||
const { color, disabled } = props;
|
const { color, disabled } = props;
|
||||||
color && res.push(`ant-btn-${color}`);
|
return [
|
||||||
disabled && res.push('is-disabled');
|
{
|
||||||
return res;
|
[`ant-btn-${color}`]: !!color,
|
||||||
|
[`is-disabled`]: disabled,
|
||||||
|
},
|
||||||
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
const getBindValue = computed((): any => {
|
const getBindValue = computed((): any => {
|
||||||
|
@@ -22,7 +22,8 @@
|
|||||||
import { defineComponent, reactive, onMounted, ref, toRef, toRefs } from 'vue';
|
import { defineComponent, reactive, onMounted, ref, toRef, toRefs } from 'vue';
|
||||||
|
|
||||||
import { Skeleton } from 'ant-design-vue';
|
import { Skeleton } from 'ant-design-vue';
|
||||||
import { useTimeoutFn, useIntersectionObserver } from '@vueuse/core';
|
import { useTimeoutFn } from '@vueuse/core';
|
||||||
|
import { useIntersectionObserver } from '/@/hooks/event/useIntersectionObserver';
|
||||||
interface State {
|
interface State {
|
||||||
isInit: boolean;
|
isInit: boolean;
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
|
@@ -43,23 +43,22 @@
|
|||||||
},
|
},
|
||||||
name: 'CollapseContainer',
|
name: 'CollapseContainer',
|
||||||
props: {
|
props: {
|
||||||
// 标题
|
|
||||||
title: {
|
title: {
|
||||||
type: String as PropType<string>,
|
type: String as PropType<string>,
|
||||||
default: '',
|
default: '',
|
||||||
},
|
},
|
||||||
// 是否可以展开
|
// Can it be expanded
|
||||||
canExpan: {
|
canExpan: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
// 标题右侧温馨提醒
|
// Warm reminder on the right side of the title
|
||||||
helpMessage: {
|
helpMessage: {
|
||||||
type: [Array, String] as PropType<string[] | string>,
|
type: [Array, String] as PropType<string[] | string>,
|
||||||
default: '',
|
default: '',
|
||||||
},
|
},
|
||||||
// 展开收缩的时候是否触发window.resize,
|
// Whether to trigger window.resize when expanding and contracting,
|
||||||
// 可以适应表格和表单,当表单收缩起来,表格触发resize 自适应高度
|
// Can adapt to tables and forms, when the form shrinks, the form triggers resize to adapt to the height
|
||||||
triggerWindowResize: {
|
triggerWindowResize: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
default: false,
|
default: false,
|
||||||
@@ -68,12 +67,12 @@
|
|||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
// 延时加载
|
// Delayed loading
|
||||||
lazy: {
|
lazy: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
// 延时加载时间
|
// Delayed loading time
|
||||||
lazyTime: {
|
lazyTime: {
|
||||||
type: Number as PropType<number>,
|
type: Number as PropType<number>,
|
||||||
default: 0,
|
default: 0,
|
||||||
@@ -82,14 +81,14 @@
|
|||||||
setup(props) {
|
setup(props) {
|
||||||
const showRef = ref(true);
|
const showRef = ref(true);
|
||||||
/**
|
/**
|
||||||
* @description: 处理开展事件
|
* @description: Handling development events
|
||||||
*/
|
*/
|
||||||
function handleExpand() {
|
function handleExpand() {
|
||||||
const hasShow = !unref(showRef);
|
const hasShow = !unref(showRef);
|
||||||
showRef.value = hasShow;
|
showRef.value = hasShow;
|
||||||
|
|
||||||
if (props.triggerWindowResize) {
|
if (props.triggerWindowResize) {
|
||||||
// 这里200毫秒是因为展开有动画,
|
// 200 milliseconds here is because the expansion has animation,
|
||||||
useTimeoutFn(triggerWindowResize, 200);
|
useTimeoutFn(triggerWindowResize, 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,25 +9,23 @@ export const props = {
|
|||||||
type: Object as PropType<Event>,
|
type: Object as PropType<Event>,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
// 样式
|
|
||||||
styles: {
|
styles: {
|
||||||
type: Object as PropType<any>,
|
type: Object as PropType<any>,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
showIcon: {
|
showIcon: {
|
||||||
// 是否显示icon
|
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
axis: {
|
axis: {
|
||||||
// 鼠标右键点击的位置
|
// The position of the right mouse button click
|
||||||
type: Object as PropType<Axis>,
|
type: Object as PropType<Axis>,
|
||||||
default() {
|
default() {
|
||||||
return { x: 0, y: 0 };
|
return { x: 0, y: 0 };
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
items: {
|
items: {
|
||||||
// 最重要的列表,没有的话直接不显示
|
// The most important list, if not, will not be displayed
|
||||||
type: Array as PropType<ContextMenuItem[]>,
|
type: Array as PropType<ContextMenuItem[]>,
|
||||||
default() {
|
default() {
|
||||||
return [];
|
return [];
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
// 对vue-count-to进行改造成支持vue3版本
|
// Transform vue-count-to to support vue3 version
|
||||||
export { default as CountTo } from './src/index.vue';
|
export { default as CountTo } from './src/index.vue';
|
||||||
|
@@ -14,9 +14,8 @@ export default defineComponent({
|
|||||||
props: descProps,
|
props: descProps,
|
||||||
emits: ['register'],
|
emits: ['register'],
|
||||||
setup(props, { attrs, slots, emit }) {
|
setup(props, { attrs, slots, emit }) {
|
||||||
// props来自设置
|
|
||||||
const propsRef = ref<Partial<DescOptions> | null>(null);
|
const propsRef = ref<Partial<DescOptions> | null>(null);
|
||||||
// 自定义title组件:获得title
|
// Custom title component: get title
|
||||||
const getMergeProps = computed(() => {
|
const getMergeProps = computed(() => {
|
||||||
return {
|
return {
|
||||||
...props,
|
...props,
|
||||||
@@ -34,19 +33,19 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 是否使用标题
|
* @description: Whether to use title
|
||||||
*/
|
*/
|
||||||
const useWrapper = computed(() => {
|
const useWrapper = computed(() => {
|
||||||
return !!unref(getMergeProps).title;
|
return !!unref(getMergeProps).title;
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 获取配置Collapse
|
* @description: Get configuration Collapse
|
||||||
*/
|
*/
|
||||||
const getCollapseOptions = computed(
|
const getCollapseOptions = computed(
|
||||||
(): CollapseContainerOptions => {
|
(): CollapseContainerOptions => {
|
||||||
return {
|
return {
|
||||||
// 默认不能展开
|
// Cannot be expanded by default
|
||||||
canExpand: false,
|
canExpand: false,
|
||||||
...unref(getProps).collapseOptions,
|
...unref(getProps).collapseOptions,
|
||||||
};
|
};
|
||||||
@@ -57,7 +56,7 @@ export default defineComponent({
|
|||||||
* @description:设置desc
|
* @description:设置desc
|
||||||
*/
|
*/
|
||||||
function setDescProps(descProps: Partial<DescOptions>): void {
|
function setDescProps(descProps: Partial<DescOptions>): void {
|
||||||
// 保留上一次的setDrawerProps
|
// Keep the last setDrawerProps
|
||||||
const mergeProps = deepMerge(unref(propsRef) || {}, descProps);
|
const mergeProps = deepMerge(unref(propsRef) || {}, descProps);
|
||||||
propsRef.value = cloneDeep(mergeProps);
|
propsRef.value = cloneDeep(mergeProps);
|
||||||
}
|
}
|
||||||
@@ -68,7 +67,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
emit('register', methods);
|
emit('register', methods);
|
||||||
|
|
||||||
// 防止换行
|
// Prevent line breaks
|
||||||
function renderLabel({ label, labelMinWidth, labelStyle }: DescItem) {
|
function renderLabel({ label, labelMinWidth, labelStyle }: DescItem) {
|
||||||
if (!labelStyle && !labelMinWidth) {
|
if (!labelStyle && !labelMinWidth) {
|
||||||
return label;
|
return label;
|
||||||
@@ -101,7 +100,6 @@ export default defineComponent({
|
|||||||
|
|
||||||
const width = contentMinWidth;
|
const width = contentMinWidth;
|
||||||
return (
|
return (
|
||||||
// @ts-ignore
|
|
||||||
<Descriptions.Item label={renderLabel(item)} key={field} span={span}>
|
<Descriptions.Item label={renderLabel(item)} key={field} span={span}>
|
||||||
{() =>
|
{() =>
|
||||||
contentMinWidth ? (
|
contentMinWidth ? (
|
||||||
@@ -131,7 +129,7 @@ export default defineComponent({
|
|||||||
|
|
||||||
const renderContainer = () => {
|
const renderContainer = () => {
|
||||||
const content = props.useCollapse ? renderDesc() : <div>{renderDesc()}</div>;
|
const content = props.useCollapse ? renderDesc() : <div>{renderDesc()}</div>;
|
||||||
// 减少dom层级
|
// Reduce the dom level
|
||||||
return props.useCollapse ? (
|
return props.useCollapse ? (
|
||||||
<CollapseContainer
|
<CollapseContainer
|
||||||
title={unref(getMergeProps).title}
|
title={unref(getMergeProps).title}
|
||||||
|
@@ -2,7 +2,6 @@ import type { VNode } from 'vue';
|
|||||||
import type { CollapseContainerOptions } from '/@/components/Container/index';
|
import type { CollapseContainerOptions } from '/@/components/Container/index';
|
||||||
|
|
||||||
export interface DescItem {
|
export interface DescItem {
|
||||||
// 最小宽度
|
|
||||||
labelMinWidth?: number;
|
labelMinWidth?: number;
|
||||||
|
|
||||||
contentMinWidth?: number;
|
contentMinWidth?: number;
|
||||||
@@ -11,7 +10,7 @@ export interface DescItem {
|
|||||||
|
|
||||||
field: string;
|
field: string;
|
||||||
label: any;
|
label: any;
|
||||||
// 和并列
|
// Merge column
|
||||||
span?: number;
|
span?: number;
|
||||||
show?: (...arg: any) => boolean;
|
show?: (...arg: any) => boolean;
|
||||||
// render
|
// render
|
||||||
@@ -19,10 +18,10 @@ export interface DescItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface DescOptions {
|
export interface DescOptions {
|
||||||
// 是否包含collapse组件
|
// Whether to include the collapse component
|
||||||
useCollapse?: boolean;
|
useCollapse?: boolean;
|
||||||
/**
|
/**
|
||||||
* item配置
|
* item configuration
|
||||||
* @type DescItem
|
* @type DescItem
|
||||||
*/
|
*/
|
||||||
schema: DescItem[];
|
schema: DescItem[];
|
||||||
@@ -32,7 +31,7 @@ export interface DescOptions {
|
|||||||
*/
|
*/
|
||||||
data: any;
|
data: any;
|
||||||
/**
|
/**
|
||||||
* 内置的CollapseContainer组件配置
|
* Built-in CollapseContainer component configuration
|
||||||
* @type CollapseContainerOptions
|
* @type CollapseContainerOptions
|
||||||
*/
|
*/
|
||||||
collapseOptions?: CollapseContainerOptions;
|
collapseOptions?: CollapseContainerOptions;
|
||||||
|
@@ -71,7 +71,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// 底部按钮自定义实现,
|
// Custom implementation of the bottom button,
|
||||||
const getFooterHeight = computed(() => {
|
const getFooterHeight = computed(() => {
|
||||||
const { footerHeight, showFooter }: DrawerProps = unref(getProps);
|
const { footerHeight, showFooter }: DrawerProps = unref(getProps);
|
||||||
if (showFooter && footerHeight) {
|
if (showFooter && footerHeight) {
|
||||||
@@ -80,7 +80,7 @@ export default defineComponent({
|
|||||||
return `0px`;
|
return `0px`;
|
||||||
});
|
});
|
||||||
|
|
||||||
// 取消事件
|
// Cancel event
|
||||||
async function onClose(e: any) {
|
async function onClose(e: any) {
|
||||||
const { closeFunc } = unref(getProps);
|
const { closeFunc } = unref(getProps);
|
||||||
emit('close', e);
|
emit('close', e);
|
||||||
@@ -93,7 +93,7 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function setDrawerProps(props: Partial<DrawerProps>): void {
|
function setDrawerProps(props: Partial<DrawerProps>): void {
|
||||||
// 保留上一次的setDrawerProps
|
// Keep the last setDrawerProps
|
||||||
propsRef.value = deepMerge(unref(propsRef) || {}, props);
|
propsRef.value = deepMerge(unref(propsRef) || {}, props);
|
||||||
if (Reflect.has(props, 'visible')) {
|
if (Reflect.has(props, 'visible')) {
|
||||||
visibleRef.value = !!props.visible;
|
visibleRef.value = !!props.visible;
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
import type { PropType } from 'vue';
|
import type { PropType } from 'vue';
|
||||||
// import {DrawerProps} from './types'
|
|
||||||
export const footerProps = {
|
export const footerProps = {
|
||||||
confirmLoading: Boolean as PropType<boolean>,
|
confirmLoading: Boolean as PropType<boolean>,
|
||||||
/**
|
/**
|
||||||
* @description: 显示关闭按钮
|
* @description: Show close button
|
||||||
*/
|
*/
|
||||||
showCancelBtn: {
|
showCancelBtn: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
@@ -15,7 +14,7 @@ export const footerProps = {
|
|||||||
default: '关闭',
|
default: '关闭',
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
* @description: 显示确认按钮
|
* @description: Show confirmation button
|
||||||
*/
|
*/
|
||||||
showOkBtn: {
|
showOkBtn: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
|
@@ -73,7 +73,7 @@ export interface DrawerProps extends DrawerFooterProps {
|
|||||||
showDetailBack?: boolean;
|
showDetailBack?: boolean;
|
||||||
visible?: boolean;
|
visible?: boolean;
|
||||||
/**
|
/**
|
||||||
* 内置的ScrollContainer组件配置
|
* Built-in ScrollContainer component configuration
|
||||||
* @type ScrollContainerOptions
|
* @type ScrollContainerOptions
|
||||||
*/
|
*/
|
||||||
scrollOptions?: ScrollContainerOptions;
|
scrollOptions?: ScrollContainerOptions;
|
||||||
|
@@ -22,7 +22,7 @@ import { isFunction } from '/@/utils/is';
|
|||||||
|
|
||||||
const dataTransferRef = reactive<any>({});
|
const dataTransferRef = reactive<any>({});
|
||||||
/**
|
/**
|
||||||
* @description: 适用于将drawer独立出去,外面调用
|
* @description: Applicable to separate drawer and call outside
|
||||||
*/
|
*/
|
||||||
export function useDrawer(): UseDrawerReturnType {
|
export function useDrawer(): UseDrawerReturnType {
|
||||||
if (!getCurrentInstance()) {
|
if (!getCurrentInstance()) {
|
||||||
|
@@ -1,7 +1,5 @@
|
|||||||
import type { PropType } from 'vue';
|
import type { PropType } from 'vue';
|
||||||
/**
|
|
||||||
* @description: 基础表格参数配置
|
|
||||||
*/
|
|
||||||
export const dropdownProps = {
|
export const dropdownProps = {
|
||||||
/**
|
/**
|
||||||
* the trigger mode which executes the drop-down action
|
* the trigger mode which executes the drop-down action
|
||||||
@@ -14,52 +12,6 @@ export const dropdownProps = {
|
|||||||
return ['contextmenu'];
|
return ['contextmenu'];
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
// /**
|
|
||||||
// * the dropdown menu
|
|
||||||
// * @type () => Menu
|
|
||||||
// */
|
|
||||||
// overlay: {
|
|
||||||
// type: null,
|
|
||||||
// },
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Class name of the dropdown root element
|
|
||||||
// * @type string
|
|
||||||
// */
|
|
||||||
// overlayClassName: String,
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Style of the dropdown root element
|
|
||||||
// * @type object
|
|
||||||
// */
|
|
||||||
// overlayStyle: Object,
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * whether the dropdown menu is visible
|
|
||||||
// * @type boolean
|
|
||||||
// */
|
|
||||||
// visible: Boolean,
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * whether the dropdown menu is disabled
|
|
||||||
// * @type boolean
|
|
||||||
// */
|
|
||||||
// disabled: Boolean,
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * to set the ontainer of the dropdown menu. The default is to create a div element in body, you can reset it to the scrolling area and make a relative reposition.
|
|
||||||
// * @default () => document.body
|
|
||||||
// * @type Function
|
|
||||||
// */
|
|
||||||
// getPopupContainer: Function,
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * placement of pop menu: bottomLeft bottomCenter bottomRight topLeft topCenter topRight
|
|
||||||
// * @default 'bottomLeft'
|
|
||||||
// * @type string
|
|
||||||
// */
|
|
||||||
// placement: String,
|
|
||||||
};
|
};
|
||||||
export const basicDropdownProps = Object.assign({}, dropdownProps, {
|
export const basicDropdownProps = Object.assign({}, dropdownProps, {
|
||||||
dropMenuList: {
|
dropMenuList: {
|
||||||
|
@@ -27,7 +27,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { FormActionType, FormProps, FormSchema } from './types/form';
|
import type { FormActionType, FormProps, FormSchema } from './types/form';
|
||||||
import type { AdvanceState } from './types/hooks';
|
import type { AdvanceState } from './types/hooks';
|
||||||
import type { Ref } from 'vue';
|
import type { Ref, WatchStopHandle } from 'vue';
|
||||||
import type { ValidateFields } from 'ant-design-vue/lib/form/interface';
|
import type { ValidateFields } from 'ant-design-vue/lib/form/interface';
|
||||||
|
|
||||||
import { defineComponent, reactive, ref, computed, unref, toRef, onMounted, watch } from 'vue';
|
import { defineComponent, reactive, ref, computed, unref, toRef, onMounted, watch } from 'vue';
|
||||||
@@ -66,6 +66,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const defaultValueRef = ref<any>({});
|
const defaultValueRef = ref<any>({});
|
||||||
|
const isInitedDefaultRef = ref(false);
|
||||||
const propsRef = ref<Partial<FormProps>>({});
|
const propsRef = ref<Partial<FormProps>>({});
|
||||||
const schemaRef = ref<Nullable<FormSchema[]>>(null);
|
const schemaRef = ref<Nullable<FormSchema[]>>(null);
|
||||||
const formElRef = ref<Nullable<FormActionType>>(null);
|
const formElRef = ref<Nullable<FormActionType>>(null);
|
||||||
@@ -164,16 +165,19 @@
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
watch(
|
const stopWatch: WatchStopHandle = watch(
|
||||||
() => getSchema.value,
|
() => getSchema.value,
|
||||||
() => {
|
(schema) => {
|
||||||
|
if (unref(isInitedDefaultRef)) {
|
||||||
|
return stopWatch();
|
||||||
|
}
|
||||||
|
if (schema && schema.length) {
|
||||||
initDefault();
|
initDefault();
|
||||||
|
isInitedDefaultRef.value = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* @description:设置表单
|
|
||||||
*/
|
|
||||||
function setProps(formProps: Partial<FormProps>): void {
|
function setProps(formProps: Partial<FormProps>): void {
|
||||||
const mergeProps = deepMerge(unref(propsRef) || {}, formProps);
|
const mergeProps = deepMerge(unref(propsRef) || {}, formProps);
|
||||||
propsRef.value = mergeProps;
|
propsRef.value = mergeProps;
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { Component } from 'vue';
|
import { Component } from 'vue';
|
||||||
/**
|
/**
|
||||||
* 组件列表,在这里注册才可以在表单使用
|
* Component list, register here to use it in the form
|
||||||
*/
|
*/
|
||||||
import {
|
import {
|
||||||
Input,
|
Input,
|
||||||
|
@@ -114,7 +114,7 @@ export default function ({
|
|||||||
) {
|
) {
|
||||||
advanceState.hideAdvanceBtn = false;
|
advanceState.hideAdvanceBtn = false;
|
||||||
|
|
||||||
// 大于3行默认收起
|
// More than 3 lines collapsed by default
|
||||||
} else if (!advanceState.isLoad) {
|
} else if (!advanceState.isLoad) {
|
||||||
advanceState.isLoad = true;
|
advanceState.isLoad = true;
|
||||||
advanceState.isAdvanced = !advanceState.isAdvanced;
|
advanceState.isAdvanced = !advanceState.isAdvanced;
|
||||||
@@ -124,7 +124,7 @@ export default function ({
|
|||||||
if (itemColSum > BASIC_COL_LEN) {
|
if (itemColSum > BASIC_COL_LEN) {
|
||||||
return { isAdvanced: advanceState.isAdvanced, itemColSum };
|
return { isAdvanced: advanceState.isAdvanced, itemColSum };
|
||||||
} else {
|
} else {
|
||||||
// 第一行始终显示
|
// The first line is always displayed
|
||||||
return { isAdvanced: true, itemColSum };
|
return { isAdvanced: true, itemColSum };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -62,7 +62,7 @@ export function useFormAction({
|
|||||||
Object.keys(values).forEach((key) => {
|
Object.keys(values).forEach((key) => {
|
||||||
const element = values[key];
|
const element = values[key];
|
||||||
if (element !== undefined && element !== null && fields.includes(key)) {
|
if (element !== undefined && element !== null && fields.includes(key)) {
|
||||||
// 时间
|
// time type
|
||||||
if (itemIsDateType(key)) {
|
if (itemIsDateType(key)) {
|
||||||
if (Array.isArray(element)) {
|
if (Array.isArray(element)) {
|
||||||
const arr: any[] = [];
|
const arr: any[] = [];
|
||||||
@@ -84,7 +84,7 @@ export function useFormAction({
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @description: 根据字段名删除
|
* @description: Delete based on field name
|
||||||
*/
|
*/
|
||||||
function removeSchemaByFiled(fields: string | string[]): void {
|
function removeSchemaByFiled(fields: string | string[]): void {
|
||||||
const schemaList: FormSchema[] = cloneDeep(unref(getSchema));
|
const schemaList: FormSchema[] = cloneDeep(unref(getSchema));
|
||||||
@@ -102,7 +102,7 @@ export function useFormAction({
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 根据字段名删除
|
* @description: Delete based on field name
|
||||||
*/
|
*/
|
||||||
function _removeSchemaByFiled(field: string, schemaList: FormSchema[]): void {
|
function _removeSchemaByFiled(field: string, schemaList: FormSchema[]): void {
|
||||||
if (isString(field)) {
|
if (isString(field)) {
|
||||||
@@ -114,7 +114,7 @@ export function useFormAction({
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 往某个字段后面插入,如果没有插入最后一个
|
* @description: Insert after a certain field, if not insert the last
|
||||||
*/
|
*/
|
||||||
function appendSchemaByField(schema: FormSchema, prefixField?: string) {
|
function appendSchemaByField(schema: FormSchema, prefixField?: string) {
|
||||||
const schemaList: FormSchema[] = cloneDeep(unref(getSchema));
|
const schemaList: FormSchema[] = cloneDeep(unref(getSchema));
|
||||||
@@ -169,7 +169,7 @@ export function useFormAction({
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 是否是时间
|
* @description: Is it time
|
||||||
*/
|
*/
|
||||||
function itemIsDateType(key: string) {
|
function itemIsDateType(key: string) {
|
||||||
return unref(getSchema).some((item) => {
|
return unref(getSchema).some((item) => {
|
||||||
@@ -193,7 +193,7 @@ export function useFormAction({
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 表单提交
|
* @description: Form submission
|
||||||
*/
|
*/
|
||||||
async function handleSubmit(e?: Event): Promise<void> {
|
async function handleSubmit(e?: Event): Promise<void> {
|
||||||
e && e.preventDefault();
|
e && e.preventDefault();
|
||||||
|
@@ -18,7 +18,7 @@ export function useFormValues({
|
|||||||
getSchema,
|
getSchema,
|
||||||
formModel,
|
formModel,
|
||||||
}: UseFormValuesContext) {
|
}: UseFormValuesContext) {
|
||||||
// 处理表单值
|
// Processing form values
|
||||||
function handleFormValues(values: any) {
|
function handleFormValues(values: any) {
|
||||||
if (!isObject(values)) {
|
if (!isObject(values)) {
|
||||||
return {};
|
return {};
|
||||||
@@ -37,7 +37,7 @@ export function useFormValues({
|
|||||||
if (isArray(value) && value[0]._isAMomentObject && value[1]._isAMomentObject) {
|
if (isArray(value) && value[0]._isAMomentObject && value[1]._isAMomentObject) {
|
||||||
value = value.map((item) => transformDateFunc(item));
|
value = value.map((item) => transformDateFunc(item));
|
||||||
}
|
}
|
||||||
// 去除空格
|
// Remove spaces
|
||||||
if (isString(value)) {
|
if (isString(value)) {
|
||||||
value = value.trim();
|
value = value.trim();
|
||||||
}
|
}
|
||||||
@@ -47,7 +47,7 @@ export function useFormValues({
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 处理时间区间参数
|
* @description: Processing time interval parameters
|
||||||
*/
|
*/
|
||||||
function handleRangeTimeValue(values: any) {
|
function handleRangeTimeValue(values: any) {
|
||||||
const fieldMapToTime = unref(fieldMapToTimeRef);
|
const fieldMapToTime = unref(fieldMapToTimeRef);
|
||||||
|
@@ -31,7 +31,7 @@ export function useItemLabelWidth(schemaItemRef: Ref<FormSchema>, propsRef: Ref<
|
|||||||
wrapperCol: globWrapperCol,
|
wrapperCol: globWrapperCol,
|
||||||
} = unref(propsRef) as any;
|
} = unref(propsRef) as any;
|
||||||
|
|
||||||
// 如果全局有设置labelWidth, 则所有item使用
|
// If labelWidth is set globally, all items use
|
||||||
if ((!globalLabelWidth && !labelWidth && !globalLabelCol) || disabledLabelWidth) {
|
if ((!globalLabelWidth && !labelWidth && !globalLabelCol) || disabledLabelWidth) {
|
||||||
return { labelCol, wrapperCol };
|
return { labelCol, wrapperCol };
|
||||||
}
|
}
|
||||||
|
@@ -42,57 +42,57 @@ export type UseFormReturnType = [RegisterFn, FormActionType];
|
|||||||
|
|
||||||
export interface FormProps {
|
export interface FormProps {
|
||||||
// layout?: 'vertical' | 'inline' | 'horizontal';
|
// layout?: 'vertical' | 'inline' | 'horizontal';
|
||||||
// 表单值
|
// Form value
|
||||||
model?: any;
|
model?: any;
|
||||||
// 整个表单所有项宽度
|
// The width of all items in the entire form
|
||||||
labelWidth?: number | string;
|
labelWidth?: number | string;
|
||||||
// 重置时提交
|
// Submit form on reset
|
||||||
submitOnReset?: boolean;
|
submitOnReset?: boolean;
|
||||||
// 整个表单通用Col配置
|
// Col configuration for the entire form
|
||||||
labelCol?: Partial<ColEx>;
|
labelCol?: Partial<ColEx>;
|
||||||
// 整个表单通用Col配置
|
// Col configuration for the entire form
|
||||||
wrapperCol?: Partial<ColEx>;
|
wrapperCol?: Partial<ColEx>;
|
||||||
|
|
||||||
// 通用col配置
|
// General col configuration
|
||||||
baseColProps?: Partial<ColEx>;
|
baseColProps?: Partial<ColEx>;
|
||||||
|
|
||||||
// 表单配置规则
|
// Form configuration rules
|
||||||
schemas?: FormSchema[];
|
schemas?: FormSchema[];
|
||||||
// 用于合并到动态控制表单项的 函数values
|
// Function values used to merge into dynamic control form items
|
||||||
mergeDynamicData?: any;
|
mergeDynamicData?: any;
|
||||||
// 紧凑模式,用于搜索表单
|
// Compact mode for search forms
|
||||||
compact?: boolean;
|
compact?: boolean;
|
||||||
// 空白行span
|
// Blank line span
|
||||||
emptySpan?: number | Partial<ColEx>;
|
emptySpan?: number | Partial<ColEx>;
|
||||||
// 表单内部组件大小
|
// Internal component size of the form
|
||||||
size?: 'default' | 'small' | 'large';
|
size?: 'default' | 'small' | 'large';
|
||||||
// 是否禁用
|
// Whether to disable
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
// 时间区间字段映射成多个
|
// Time interval fields are mapped into multiple
|
||||||
fieldMapToTime?: FieldMapToTime;
|
fieldMapToTime?: FieldMapToTime;
|
||||||
// 自动设置placeholder
|
// Placeholder is set automatically
|
||||||
autoSetPlaceHolder?: boolean;
|
autoSetPlaceHolder?: boolean;
|
||||||
// 校验信息是否加入label
|
// Check whether the information is added to the label
|
||||||
rulesMessageJoinLabel?: boolean;
|
rulesMessageJoinLabel?: boolean;
|
||||||
// 是否显示收起展开按钮
|
// Whether to show collapse and expand buttons
|
||||||
showAdvancedButton?: boolean;
|
showAdvancedButton?: boolean;
|
||||||
// 超过指定行数自动收起
|
// Automatically collapse over the specified number of rows
|
||||||
autoAdvancedLine?: number;
|
autoAdvancedLine?: number;
|
||||||
// 是否显示操作按钮
|
// Whether to show the operation button
|
||||||
showActionButtonGroup?: boolean;
|
showActionButtonGroup?: boolean;
|
||||||
|
|
||||||
// 重置按钮配置
|
// Reset button configuration
|
||||||
resetButtonOptions?: Partial<ButtonProps>;
|
resetButtonOptions?: Partial<ButtonProps>;
|
||||||
|
|
||||||
// 确认按钮配置
|
// Confirm button configuration
|
||||||
submitButtonOptions?: Partial<ButtonProps>;
|
submitButtonOptions?: Partial<ButtonProps>;
|
||||||
|
|
||||||
// 操作列配置
|
// Operation column configuration
|
||||||
actionColOptions?: Partial<ColEx>;
|
actionColOptions?: Partial<ColEx>;
|
||||||
|
|
||||||
// 显示重置按钮
|
// Show reset button
|
||||||
showResetButton?: boolean;
|
showResetButton?: boolean;
|
||||||
// 显示确认按钮
|
// Show confirmation button
|
||||||
showSubmitButton?: boolean;
|
showSubmitButton?: boolean;
|
||||||
|
|
||||||
resetFunc?: () => Promise<void>;
|
resetFunc?: () => Promise<void>;
|
||||||
@@ -101,27 +101,27 @@ export interface FormProps {
|
|||||||
colon?: boolean;
|
colon?: boolean;
|
||||||
}
|
}
|
||||||
export interface FormSchema {
|
export interface FormSchema {
|
||||||
// 字段名
|
// Field name
|
||||||
field: string;
|
field: string;
|
||||||
// 内部值更改触发的事件名,默认 change
|
// Event name triggered by internal value change, default change
|
||||||
changeEvent?: string;
|
changeEvent?: string;
|
||||||
// v-model绑定的变量名 默认 value
|
// Variable name bound to v-model Default value
|
||||||
valueField?: string;
|
valueField?: string;
|
||||||
// 标签名
|
// Label name
|
||||||
label: string;
|
label: string;
|
||||||
// 辅助文本
|
// Auxiliary text
|
||||||
subLabel?: string;
|
subLabel?: string;
|
||||||
// 文本右侧帮助文本
|
// Help text on the right side of the text
|
||||||
helpMessage?: string | string[];
|
helpMessage?: string | string[];
|
||||||
// BaseHelp组件props
|
// BaseHelp component props
|
||||||
helpComponentProps?: Partial<HelpComponentProps>;
|
helpComponentProps?: Partial<HelpComponentProps>;
|
||||||
// label宽度,有传的话 itemProps配置的 labelCol 和WrapperCol会失效
|
// Label width, if it is passed, the labelCol and WrapperCol configured by itemProps will be invalid
|
||||||
labelWidth?: string | number;
|
labelWidth?: string | number;
|
||||||
// 禁用调有formModel全局设置的labelWidth,自己手动设置 labelCol和wrapperCol
|
// Disable the adjustment of labelWidth with global settings of formModel, and manually set labelCol and wrapperCol by yourself
|
||||||
disabledLabelWidth?: boolean;
|
disabledLabelWidth?: boolean;
|
||||||
// 组件
|
// render component
|
||||||
component: ComponentType;
|
component: ComponentType;
|
||||||
// 组件参数
|
// Component parameters
|
||||||
componentProps?:
|
componentProps?:
|
||||||
| ((opt: {
|
| ((opt: {
|
||||||
schema: FormSchema;
|
schema: FormSchema;
|
||||||
@@ -130,35 +130,35 @@ export interface FormSchema {
|
|||||||
formModel: any;
|
formModel: any;
|
||||||
}) => any)
|
}) => any)
|
||||||
| object;
|
| object;
|
||||||
// 必填
|
// Required
|
||||||
required?: boolean;
|
required?: boolean;
|
||||||
|
|
||||||
// 校验规则
|
// Validation rules
|
||||||
rules?: Rule[];
|
rules?: Rule[];
|
||||||
// 校验信息是否加入label
|
// Check whether the information is added to the label
|
||||||
rulesMessageJoinLabel?: boolean;
|
rulesMessageJoinLabel?: boolean;
|
||||||
|
|
||||||
// 参考formModelItem
|
// Reference formModelItem
|
||||||
itemProps?: Partial<FormItem>;
|
itemProps?: Partial<FormItem>;
|
||||||
|
|
||||||
// formModelItem外层的col配置
|
// col configuration outside formModelItem
|
||||||
colProps?: Partial<ColEx>;
|
colProps?: Partial<ColEx>;
|
||||||
|
|
||||||
// 默认值
|
// 默认值
|
||||||
defaultValue?: any;
|
defaultValue?: any;
|
||||||
isAdvanced?: boolean;
|
isAdvanced?: boolean;
|
||||||
|
|
||||||
// 配合详情组件
|
// Matching details components
|
||||||
span?: number;
|
span?: number;
|
||||||
|
|
||||||
ifShow?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
|
ifShow?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
|
||||||
|
|
||||||
show?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
|
show?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
|
||||||
|
|
||||||
// 渲染form-item标签内的内容
|
// Render the content in the form-item tag
|
||||||
render?: (renderCallbackParams: RenderCallbackParams) => VNode | VNode[] | string;
|
render?: (renderCallbackParams: RenderCallbackParams) => VNode | VNode[] | string;
|
||||||
|
|
||||||
// 渲染 col内容,需要外层包裹 form-item
|
// Rendering col content requires outer wrapper form-item
|
||||||
renderColContent?: (renderCallbackParams: RenderCallbackParams) => VNode | VNode[] | string;
|
renderColContent?: (renderCallbackParams: RenderCallbackParams) => VNode | VNode[] | string;
|
||||||
|
|
||||||
renderComponentContent?:
|
renderComponentContent?:
|
||||||
@@ -167,10 +167,10 @@ export interface FormSchema {
|
|||||||
| VNode[]
|
| VNode[]
|
||||||
| string;
|
| string;
|
||||||
|
|
||||||
// 自定义slot, 在 from-item内
|
// Custom slot, in from-item
|
||||||
slot?: string;
|
slot?: string;
|
||||||
|
|
||||||
// 自定义slot,类似renderColContent
|
// Custom slot, similar to renderColContent
|
||||||
colSlot?: string;
|
colSlot?: string;
|
||||||
|
|
||||||
dynamicDisabled?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
|
dynamicDisabled?: boolean | ((renderCallbackParams: RenderCallbackParams) => boolean);
|
||||||
@@ -179,16 +179,16 @@ export interface FormSchema {
|
|||||||
}
|
}
|
||||||
export interface HelpComponentProps {
|
export interface HelpComponentProps {
|
||||||
maxWidth: string;
|
maxWidth: string;
|
||||||
// 是否显示序号
|
// Whether to display the serial number
|
||||||
showIndex: boolean;
|
showIndex: boolean;
|
||||||
// 文本列表
|
// Text list
|
||||||
text: any;
|
text: any;
|
||||||
// 颜色
|
// colour
|
||||||
color: string;
|
color: string;
|
||||||
// 字体大小
|
// font size
|
||||||
fontSize: string;
|
fontSize: string;
|
||||||
icon: string;
|
icon: string;
|
||||||
absolute: boolean;
|
absolute: boolean;
|
||||||
// 定位
|
// Positioning
|
||||||
position: any;
|
position: any;
|
||||||
}
|
}
|
||||||
|
@@ -6,7 +6,8 @@ import { Menu } from 'ant-design-vue';
|
|||||||
import SearchInput from './SearchInput.vue';
|
import SearchInput from './SearchInput.vue';
|
||||||
import MenuContent from './MenuContent';
|
import MenuContent from './MenuContent';
|
||||||
|
|
||||||
import { MenuModeEnum, MenuThemeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
|
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
|
||||||
|
import { ThemeEnum } from '/@/enums/appEnum';
|
||||||
|
|
||||||
import { menuStore } from '/@/store/modules/menu';
|
import { menuStore } from '/@/store/modules/menu';
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
@@ -254,7 +255,7 @@ export default defineComponent({
|
|||||||
{getSlot(slots, 'header')}
|
{getSlot(slots, 'header')}
|
||||||
<SearchInput
|
<SearchInput
|
||||||
class={!props.search ? 'hidden' : ''}
|
class={!props.search ? 'hidden' : ''}
|
||||||
theme={props.theme as MenuThemeEnum}
|
theme={props.theme as ThemeEnum}
|
||||||
onChange={handleInputChange}
|
onChange={handleInputChange}
|
||||||
onClick={handleInputClick}
|
onClick={handleInputClick}
|
||||||
collapsed={getCollapsedState}
|
collapsed={getCollapsedState}
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { PropType } from 'vue';
|
import type { PropType } from 'vue';
|
||||||
import { defineComponent, computed } from 'vue';
|
import { defineComponent, computed } from 'vue';
|
||||||
import { MenuThemeEnum } from '/@/enums/menuEnum';
|
import { ThemeEnum } from '/@/enums/appEnum';
|
||||||
|
|
||||||
// hook
|
// hook
|
||||||
import { useDebounce } from '/@/hooks/core/useDebounce';
|
import { useDebounce } from '/@/hooks/core/useDebounce';
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
type: String as PropType<MenuThemeEnum>,
|
type: String as PropType<ThemeEnum>,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup(props, { emit }) {
|
setup(props, { emit }) {
|
||||||
|
@@ -1,7 +1,8 @@
|
|||||||
import type { Menu } from '/@/router/types';
|
import type { Menu } from '/@/router/types';
|
||||||
import type { PropType } from 'vue';
|
import type { PropType } from 'vue';
|
||||||
|
|
||||||
import { MenuModeEnum, MenuTypeEnum, MenuThemeEnum } from '/@/enums/menuEnum';
|
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
|
||||||
|
import { ThemeEnum } from '/@/enums/appEnum';
|
||||||
export const basicProps = {
|
export const basicProps = {
|
||||||
items: {
|
items: {
|
||||||
type: Array as PropType<Menu[]>,
|
type: Array as PropType<Menu[]>,
|
||||||
@@ -40,7 +41,7 @@ export const basicProps = {
|
|||||||
},
|
},
|
||||||
theme: {
|
theme: {
|
||||||
type: String as PropType<string>,
|
type: String as PropType<string>,
|
||||||
default: MenuThemeEnum.DARK,
|
default: ThemeEnum.DARK,
|
||||||
},
|
},
|
||||||
showLogo: {
|
showLogo: {
|
||||||
type: Boolean as PropType<boolean>,
|
type: Boolean as PropType<boolean>,
|
||||||
|
3
src/components/Menu/src/types.d.ts
vendored
3
src/components/Menu/src/types.d.ts
vendored
@@ -1,3 +1,4 @@
|
|||||||
|
import { ThemeEnum } from '/@/enums/appEnum';
|
||||||
export interface MenuState {
|
export interface MenuState {
|
||||||
// 默认选中的列表
|
// 默认选中的列表
|
||||||
defaultSelectedKeys: string[];
|
defaultSelectedKeys: string[];
|
||||||
@@ -6,7 +7,7 @@ export interface MenuState {
|
|||||||
mode: MenuModeEnum;
|
mode: MenuModeEnum;
|
||||||
|
|
||||||
// 主题
|
// 主题
|
||||||
theme: ComputedRef<MenuThemeEnum> | MenuThemeEnum;
|
theme: ComputedRef<ThemeEnum> | ThemeEnum;
|
||||||
|
|
||||||
// 缩进
|
// 缩进
|
||||||
inlineIndent?: number;
|
inlineIndent?: number;
|
||||||
|
@@ -208,8 +208,8 @@
|
|||||||
padding: 16px;
|
padding: 16px;
|
||||||
|
|
||||||
.ant-form {
|
.ant-form {
|
||||||
padding: 12px 12px 4px 12px;
|
padding: 20px 20px 4px 12px;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 18px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
}
|
}
|
||||||
|
@@ -33,7 +33,7 @@ import {
|
|||||||
Result,
|
Result,
|
||||||
Empty,
|
Empty,
|
||||||
} from 'ant-design-vue';
|
} from 'ant-design-vue';
|
||||||
import { getApp } from '/@/useApp';
|
import { getApp } from '/@/setup/Application';
|
||||||
|
|
||||||
const compList = [Icon, Button, AntButton.Group, AppFooter];
|
const compList = [Icon, Button, AntButton.Group, AppFooter];
|
||||||
|
|
||||||
|
@@ -16,4 +16,4 @@
|
|||||||
@page-loading-z-index: 10000;
|
@page-loading-z-index: 10000;
|
||||||
|
|
||||||
// left-menu
|
// left-menu
|
||||||
@app-menu-item-height: 46px;
|
@app-menu-item-height: 44px;
|
||||||
|
@@ -15,6 +15,13 @@ export enum ThemeModeEnum {
|
|||||||
SEMI_DARK = 'semi-dark-mode',
|
SEMI_DARK = 'semi-dark-mode',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// menu theme enum
|
||||||
|
export enum ThemeEnum {
|
||||||
|
DARK = 'dark',
|
||||||
|
|
||||||
|
LIGHT = 'light',
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限模式
|
* 权限模式
|
||||||
*/
|
*/
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
export const MENU_DRAG_STATE = 'MENU_DRAG_STATE';
|
|
@@ -10,13 +10,6 @@ export enum MenuTypeEnum {
|
|||||||
TOP_MENU = 'top-menu',
|
TOP_MENU = 'top-menu',
|
||||||
}
|
}
|
||||||
|
|
||||||
// menu theme enum
|
|
||||||
export enum MenuThemeEnum {
|
|
||||||
DARK = 'dark',
|
|
||||||
|
|
||||||
LIGHT = 'light',
|
|
||||||
}
|
|
||||||
|
|
||||||
// 折叠触发器位置
|
// 折叠触发器位置
|
||||||
export enum TriggerEnum {
|
export enum TriggerEnum {
|
||||||
// 不显示
|
// 不显示
|
||||||
|
@@ -1,4 +0,0 @@
|
|||||||
export enum PaginationEnum {
|
|
||||||
// Default number of pages
|
|
||||||
DEFAULT_PAGE_SIZE = 20,
|
|
||||||
}
|
|
@@ -1,6 +0,0 @@
|
|||||||
export enum ResultEnum {
|
|
||||||
SUCCESS = 0,
|
|
||||||
ERROR = 1,
|
|
||||||
TIMEOUT = 401,
|
|
||||||
TYPE = 'success',
|
|
||||||
}
|
|
18
src/hooks/core/onMountedOrActivated.ts
Normal file
18
src/hooks/core/onMountedOrActivated.ts
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
import { nextTick, onMounted, onActivated } from 'vue';
|
||||||
|
|
||||||
|
export function onMountedOrActivated(hook: Fn) {
|
||||||
|
let mounted: boolean;
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
hook();
|
||||||
|
nextTick(() => {
|
||||||
|
mounted = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
onActivated(() => {
|
||||||
|
if (mounted) {
|
||||||
|
hook();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
9
src/hooks/core/useExpose.ts
Normal file
9
src/hooks/core/useExpose.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import { getCurrentInstance } from 'vue';
|
||||||
|
|
||||||
|
// expose public api
|
||||||
|
export function useExpose(apis: Record<string, any>) {
|
||||||
|
const instance = getCurrentInstance();
|
||||||
|
if (instance) {
|
||||||
|
Object.assign(instance.proxy, apis);
|
||||||
|
}
|
||||||
|
}
|
47
src/hooks/core/useModel.ts
Normal file
47
src/hooks/core/useModel.ts
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import { toRef, Ref, reactive, customRef, SetupContext, watch, UnwrapRef } from 'vue';
|
||||||
|
|
||||||
|
export type ModelProps<U> = Readonly<
|
||||||
|
{ [props: string]: any } & {
|
||||||
|
modelValue?: U;
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
|
||||||
|
export function useModel<T>(
|
||||||
|
props: ModelProps<T>,
|
||||||
|
context: SetupContext,
|
||||||
|
callback?: (val: T | undefined, internalState: { value: UnwrapRef<T | undefined> }) => any
|
||||||
|
) {
|
||||||
|
const outerModel: Ref<T | undefined> = toRef(props, 'modelValue');
|
||||||
|
const internalState = reactive({
|
||||||
|
value: props.modelValue,
|
||||||
|
});
|
||||||
|
|
||||||
|
const internalModel = customRef<UnwrapRef<T> | undefined>((track, trigger) => {
|
||||||
|
return {
|
||||||
|
get() {
|
||||||
|
track();
|
||||||
|
return internalState.value;
|
||||||
|
},
|
||||||
|
set(newVal) {
|
||||||
|
if (internalState.value === newVal) return;
|
||||||
|
internalState.value = newVal;
|
||||||
|
context.emit('update:modelValue', newVal);
|
||||||
|
trigger();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
watch(outerModel, (val, oldVal) => {
|
||||||
|
if (val === oldVal || val === internalState.value) return;
|
||||||
|
if (callback) {
|
||||||
|
callback(val, internalState);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
internalState.value = val as UnwrapRef<T> | undefined;
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
internalState,
|
||||||
|
internalModel,
|
||||||
|
};
|
||||||
|
}
|
15
src/hooks/core/useRefs.ts
Normal file
15
src/hooks/core/useRefs.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import { ref, onBeforeUpdate } from 'vue';
|
||||||
|
|
||||||
|
export function useRefs() {
|
||||||
|
const refs = ref([] as Element[]);
|
||||||
|
|
||||||
|
onBeforeUpdate(() => {
|
||||||
|
refs.value = [];
|
||||||
|
});
|
||||||
|
|
||||||
|
const setRefs = (index: number) => (el: Element) => {
|
||||||
|
refs.value[index] = el;
|
||||||
|
};
|
||||||
|
|
||||||
|
return [refs, setRefs];
|
||||||
|
}
|
@@ -27,7 +27,7 @@ export function throttle<T extends unknown[]>(
|
|||||||
}
|
}
|
||||||
let { immediate = false } = options;
|
let { immediate = false } = options;
|
||||||
const { once = false, debounce = false } = options;
|
const { once = false, debounce = false } = options;
|
||||||
let timeoutId: ReturnType<typeof setTimeout> | undefined;
|
let timeoutId: Nullable<TimeoutHandle>;
|
||||||
// Has it been cancelled
|
// Has it been cancelled
|
||||||
let cancelled: boolean | null = false;
|
let cancelled: boolean | null = false;
|
||||||
/**
|
/**
|
||||||
@@ -36,7 +36,7 @@ export function throttle<T extends unknown[]>(
|
|||||||
function clearTimer() {
|
function clearTimer() {
|
||||||
if (timeoutId) {
|
if (timeoutId) {
|
||||||
window.clearTimeout(timeoutId);
|
window.clearTimeout(timeoutId);
|
||||||
timeoutId = undefined;
|
timeoutId = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/** cancel exec */
|
/** cancel exec */
|
||||||
@@ -63,7 +63,7 @@ export function throttle<T extends unknown[]>(
|
|||||||
const callNow = !timeoutId;
|
const callNow = !timeoutId;
|
||||||
if (callNow) {
|
if (callNow) {
|
||||||
exec();
|
exec();
|
||||||
timeoutId = undefined;
|
timeoutId = null;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
debounce && clearTimer();
|
debounce && clearTimer();
|
||||||
|
20
src/hooks/core/useToggle.ts
Normal file
20
src/hooks/core/useToggle.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import { ref, watch, Ref, SetupContext } from 'vue';
|
||||||
|
|
||||||
|
export function useToggle(internalModel: Ref<unknown>, { emit }: SetupContext) {
|
||||||
|
const isActive = ref(!!internalModel.value);
|
||||||
|
const isToggled = ref(false);
|
||||||
|
watch(internalModel, (val) => {
|
||||||
|
isActive.value = !!val;
|
||||||
|
});
|
||||||
|
watch(isActive, (value) => {
|
||||||
|
!!value !== !!internalModel.value && emit('onUpdate:modelValue', value);
|
||||||
|
});
|
||||||
|
function toggleIt() {
|
||||||
|
isToggled.value = !isToggled.value;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
isActive,
|
||||||
|
toggleIt,
|
||||||
|
isToggled,
|
||||||
|
};
|
||||||
|
}
|
48
src/hooks/event/useIntersectionObserver.ts
Normal file
48
src/hooks/event/useIntersectionObserver.ts
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
import { Ref, watchEffect, ref } from 'vue';
|
||||||
|
|
||||||
|
interface IntersectionObserverProps {
|
||||||
|
target: Ref<Element | null | undefined>;
|
||||||
|
root?: Ref<Element | null | undefined>;
|
||||||
|
onIntersect: IntersectionObserverCallback;
|
||||||
|
rootMargin?: string;
|
||||||
|
threshold?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function useIntersectionObserver({
|
||||||
|
target,
|
||||||
|
root,
|
||||||
|
onIntersect,
|
||||||
|
rootMargin = '0px',
|
||||||
|
threshold = 0.1,
|
||||||
|
}: IntersectionObserverProps) {
|
||||||
|
let cleanup = () => {};
|
||||||
|
const observer: Ref<Nullable<IntersectionObserver>> = ref(null);
|
||||||
|
const stopEffect = watchEffect(() => {
|
||||||
|
cleanup();
|
||||||
|
|
||||||
|
observer.value = new IntersectionObserver(onIntersect, {
|
||||||
|
root: root ? root.value : null,
|
||||||
|
rootMargin,
|
||||||
|
threshold,
|
||||||
|
});
|
||||||
|
|
||||||
|
const current = target.value;
|
||||||
|
|
||||||
|
current && observer.value.observe(current);
|
||||||
|
|
||||||
|
cleanup = () => {
|
||||||
|
if (observer.value) {
|
||||||
|
observer.value.disconnect();
|
||||||
|
target.value && observer.value.unobserve(target.value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
observer,
|
||||||
|
stop: () => {
|
||||||
|
cleanup();
|
||||||
|
stopEffect();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
@@ -1,10 +1,15 @@
|
|||||||
import { ref, Ref, unref } from 'vue';
|
import { ref, Ref, unref } from 'vue';
|
||||||
import { useEventListener } from '/@/hooks/event/useEventListener';
|
import { useEventListener } from '/@/hooks/event/useEventListener';
|
||||||
|
import { isServer } from '/@/utils/is';
|
||||||
export function useClickOutside<T extends HTMLElement>(
|
export function useClickOutside<T extends HTMLElement>(
|
||||||
containerRef: Ref<T>,
|
containerRef: Ref<T>,
|
||||||
onClickOutside: (e: MouseEvent | TouchEvent) => void
|
onClickOutside: (e: MouseEvent | TouchEvent) => void,
|
||||||
|
eventName = 'click'
|
||||||
) {
|
) {
|
||||||
|
if (isServer) return;
|
||||||
|
|
||||||
const isTouchRef = ref(false);
|
const isTouchRef = ref(false);
|
||||||
|
|
||||||
useEventListener({
|
useEventListener({
|
||||||
el: document,
|
el: document,
|
||||||
name: 'touchend',
|
name: 'touchend',
|
||||||
@@ -13,7 +18,7 @@ export function useClickOutside<T extends HTMLElement>(
|
|||||||
});
|
});
|
||||||
useEventListener({
|
useEventListener({
|
||||||
el: document,
|
el: document,
|
||||||
name: 'click',
|
name: eventName,
|
||||||
listener: handler,
|
listener: handler,
|
||||||
options: true,
|
options: true,
|
||||||
});
|
});
|
||||||
|
13
src/hooks/web/useHeight.ts
Normal file
13
src/hooks/web/useHeight.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { Ref, ref, onMounted, nextTick } from 'vue';
|
||||||
|
import { useRect } from '/@/hooks/web/useRect';
|
||||||
|
export const useHeight = (element: Element | Ref<Element>) => {
|
||||||
|
const height = ref();
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
nextTick(() => {
|
||||||
|
height.value = useRect(element).height;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return height;
|
||||||
|
};
|
@@ -1,4 +1,4 @@
|
|||||||
import { onUnmounted, watchEffect } from 'vue';
|
import { computed, onUnmounted, watchEffect } from 'vue';
|
||||||
import { useThrottle } from '/@/hooks/core/useThrottle';
|
import { useThrottle } from '/@/hooks/core/useThrottle';
|
||||||
|
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
@@ -7,10 +7,11 @@ import { userStore } from '/@/store/modules/user';
|
|||||||
export function useLockPage() {
|
export function useLockPage() {
|
||||||
let timeId: ReturnType<typeof setTimeout>;
|
let timeId: ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
function clear() {
|
function clear(): void {
|
||||||
window.clearTimeout(timeId);
|
window.clearTimeout(timeId);
|
||||||
}
|
}
|
||||||
function resetCalcLockTimeout() {
|
|
||||||
|
function resetCalcLockTimeout(): void {
|
||||||
// not login
|
// not login
|
||||||
if (!userStore.getTokenState) {
|
if (!userStore.getTokenState) {
|
||||||
clear();
|
clear();
|
||||||
@@ -28,31 +29,37 @@ export function useLockPage() {
|
|||||||
}, lockTime * 60 * 1000);
|
}, lockTime * 60 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
function lockPage() {
|
function lockPage(): void {
|
||||||
appStore.commitLockInfoState({
|
appStore.commitLockInfoState({
|
||||||
isLock: true,
|
isLock: true,
|
||||||
pwd: undefined,
|
pwd: undefined,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect((onClean) => {
|
||||||
if (userStore.getTokenState) {
|
if (userStore.getTokenState) {
|
||||||
resetCalcLockTimeout();
|
resetCalcLockTimeout();
|
||||||
} else {
|
} else {
|
||||||
clear();
|
clear();
|
||||||
}
|
}
|
||||||
|
onClean(() => {
|
||||||
|
clear();
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
clear();
|
clear();
|
||||||
});
|
});
|
||||||
|
|
||||||
const [keyupFn] = useThrottle(resetCalcLockTimeout, 2000);
|
const [keyupFn] = useThrottle(resetCalcLockTimeout, 2000);
|
||||||
|
|
||||||
return {
|
return computed(() => {
|
||||||
registerGlobOnKeyup: keyupFn,
|
const openLockPage = appStore.getProjectConfig.lockTime;
|
||||||
registerGlobOnMouseMove: keyupFn,
|
if (openLockPage) {
|
||||||
on: {
|
return { onKeyup: keyupFn, onMousemove: keyupFn };
|
||||||
onKeyup: keyupFn,
|
} else {
|
||||||
onMousemove: keyupFn,
|
clear();
|
||||||
},
|
return {};
|
||||||
};
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
@@ -1,18 +1,24 @@
|
|||||||
|
import type { RouteRecordRaw } from 'vue-router';
|
||||||
|
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
import { permissionStore } from '/@/store/modules/permission';
|
import { permissionStore } from '/@/store/modules/permission';
|
||||||
import { useTabs } from './useTabs';
|
|
||||||
import { RoleEnum } from '/@/enums/roleEnum';
|
|
||||||
import router, { resetRouter } from '/@/router';
|
|
||||||
import { userStore } from '/@/store/modules/user';
|
import { userStore } from '/@/store/modules/user';
|
||||||
import { isArray } from '/@/utils/is';
|
|
||||||
import { RootRoute } from '/@/router/routes';
|
|
||||||
import type { RouteRecordRaw } from 'vue-router';
|
|
||||||
import { PermissionModeEnum } from '/@/enums/appEnum';
|
|
||||||
import { intersection } from 'lodash-es';
|
|
||||||
|
|
||||||
|
import { useTabs } from './useTabs';
|
||||||
|
|
||||||
|
import router, { resetRouter } from '/@/router';
|
||||||
|
import { RootRoute } from '/@/router/routes';
|
||||||
|
|
||||||
|
import { PermissionModeEnum } from '/@/enums/appEnum';
|
||||||
|
import { RoleEnum } from '/@/enums/roleEnum';
|
||||||
|
|
||||||
|
import { intersection } from 'lodash-es';
|
||||||
|
import { isArray } from '/@/utils/is';
|
||||||
|
|
||||||
|
// User permissions related operations
|
||||||
export function usePermission() {
|
export function usePermission() {
|
||||||
/**
|
/**
|
||||||
* 更换权限模式
|
* Change permission mode
|
||||||
*/
|
*/
|
||||||
async function togglePermissionMode() {
|
async function togglePermissionMode() {
|
||||||
appStore.commitProjectConfigState({
|
appStore.commitProjectConfigState({
|
||||||
@@ -25,6 +31,10 @@ export function usePermission() {
|
|||||||
// location.reload();
|
// location.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset and regain authority resource information
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
async function resume(id?: string | number) {
|
async function resume(id?: string | number) {
|
||||||
resetRouter();
|
resetRouter();
|
||||||
const routes = await permissionStore.buildRoutesAction(id);
|
const routes = await permissionStore.buildRoutesAction(id);
|
||||||
@@ -41,12 +51,12 @@ export function usePermission() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 角色模式下判断是否显示
|
* Determine whether there is permission
|
||||||
*/
|
*/
|
||||||
function hasPermission(value?: RoleEnum | RoleEnum[] | string | string[], def = true): boolean {
|
function hasPermission(value?: RoleEnum | RoleEnum[] | string | string[], def = true): boolean {
|
||||||
const permMode = appStore.getProjectConfig.permissionMode;
|
const permMode = appStore.getProjectConfig.permissionMode;
|
||||||
if (PermissionModeEnum.ROLE === permMode) {
|
if (PermissionModeEnum.ROLE === permMode) {
|
||||||
// !不传默认可见
|
// Visible by default
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
@@ -56,7 +66,7 @@ export function usePermission() {
|
|||||||
return (intersection(value, userStore.getRoleListState) as RoleEnum[]).length > 0;
|
return (intersection(value, userStore.getRoleListState) as RoleEnum[]).length > 0;
|
||||||
}
|
}
|
||||||
if (PermissionModeEnum.BACK === permMode) {
|
if (PermissionModeEnum.BACK === permMode) {
|
||||||
// !不传默认可见
|
// Visible by default
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
@@ -66,17 +76,18 @@ export function usePermission() {
|
|||||||
}
|
}
|
||||||
return (intersection(value, allCodeList) as string[]).length > 0;
|
return (intersection(value, allCodeList) as string[]).length > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新角色
|
* Change roles
|
||||||
* @param roles
|
* @param roles
|
||||||
*/
|
*/
|
||||||
async function changeRole(roles: RoleEnum | RoleEnum[]): Promise<void> {
|
async function changeRole(roles: RoleEnum | RoleEnum[]): Promise<void> {
|
||||||
if (appStore.getProjectConfig.permissionMode !== PermissionModeEnum.ROLE) {
|
if (appStore.getProjectConfig.permissionMode !== PermissionModeEnum.ROLE) {
|
||||||
throw new Error('请在配置中将PermissionModeEnum切换为ROLE模式在进行操作!');
|
throw new Error(
|
||||||
|
'Please switch PermissionModeEnum to ROLE mode in the configuration to operate!'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (!isArray(roles)) {
|
if (!isArray(roles)) {
|
||||||
roles = [roles];
|
roles = [roles];
|
||||||
@@ -86,10 +97,10 @@ export function usePermission() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Change menu
|
||||||
*/
|
*/
|
||||||
async function changeMenu(id?: string | number) {
|
async function changeMenu(id?: string | number) {
|
||||||
// 这里传入id是为测试,实际可以不用传,会自动获取登录人的id
|
// TODO The id passed in here is for testing. Actually, you don’t need to pass it. The id of the login person will be automatically obtained.
|
||||||
resume(id);
|
resume(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
33
src/hooks/web/useRect.ts
Normal file
33
src/hooks/web/useRect.ts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import { Ref, unref } from 'vue';
|
||||||
|
import { isWindow } from '/@/utils/is';
|
||||||
|
|
||||||
|
export const useRect = (elementRef: (Element | Window) | Ref<Element | Window | undefined>) => {
|
||||||
|
const element = unref(elementRef);
|
||||||
|
|
||||||
|
if (isWindow(element)) {
|
||||||
|
const width = element.innerWidth;
|
||||||
|
const height = element.innerHeight;
|
||||||
|
|
||||||
|
return {
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: width,
|
||||||
|
bottom: height,
|
||||||
|
width,
|
||||||
|
height,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element && element.getBoundingClientRect) {
|
||||||
|
return element.getBoundingClientRect();
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
bottom: 0,
|
||||||
|
width: 0,
|
||||||
|
height: 0,
|
||||||
|
};
|
||||||
|
};
|
@@ -35,7 +35,7 @@ interface SwitchOptions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface SelectConfig {
|
interface SelectConfig {
|
||||||
options?: SelectOptions;
|
options?: LabelValueOptions;
|
||||||
def?: any;
|
def?: any;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
handler?: Fn;
|
handler?: Fn;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ContentEnum, RouterTransitionEnum } from '/@/enums/appEnum';
|
import { ContentEnum, RouterTransitionEnum, ThemeEnum } from '/@/enums/appEnum';
|
||||||
import { MenuThemeEnum, TopMenuAlignEnum, TriggerEnum } from '/@/enums/menuEnum';
|
import { TopMenuAlignEnum, TriggerEnum } from '/@/enums/menuEnum';
|
||||||
|
|
||||||
export enum HandlerEnum {
|
export enum HandlerEnum {
|
||||||
CHANGE_LAYOUT,
|
CHANGE_LAYOUT,
|
||||||
@@ -40,11 +40,11 @@ export enum HandlerEnum {
|
|||||||
|
|
||||||
export const themeOptions = [
|
export const themeOptions = [
|
||||||
{
|
{
|
||||||
value: MenuThemeEnum.LIGHT,
|
value: ThemeEnum.LIGHT,
|
||||||
label: '亮色',
|
label: '亮色',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: MenuThemeEnum.DARK,
|
value: ThemeEnum.DARK,
|
||||||
label: '暗色',
|
label: '暗色',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
24
src/main.ts
24
src/main.ts
@@ -4,34 +4,40 @@ import router, { setupRouter } from '/@/router';
|
|||||||
import { setupStore } from '/@/store';
|
import { setupStore } from '/@/store';
|
||||||
import { setupAntd } from '/@/setup/ant-design-vue';
|
import { setupAntd } from '/@/setup/ant-design-vue';
|
||||||
import { setupErrorHandle } from '/@/setup/error-handle';
|
import { setupErrorHandle } from '/@/setup/error-handle';
|
||||||
import { setupDirectives } from '/@/setup/directives';
|
import { setupGlobDirectives } from '/@/setup/directives';
|
||||||
|
|
||||||
import { isDevMode, isProdMode, isUseMock } from '/@/utils/env';
|
|
||||||
import { setupProdMockServer } from '../mock/_createProductionServer';
|
import { setupProdMockServer } from '../mock/_createProductionServer';
|
||||||
import { setApp } from './useApp';
|
import { setApp } from '/@/setup/Application';
|
||||||
|
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
|
|
||||||
|
import { isDevMode, isProdMode, isUseMock } from '/@/utils/env';
|
||||||
|
|
||||||
import '/@/design/index.less';
|
import '/@/design/index.less';
|
||||||
|
|
||||||
const app = createApp(App);
|
const app = createApp(App);
|
||||||
|
|
||||||
// ui
|
// Configure component library
|
||||||
setupAntd(app);
|
setupAntd(app);
|
||||||
// router
|
|
||||||
|
// Configure routing
|
||||||
setupRouter(app);
|
setupRouter(app);
|
||||||
// store
|
|
||||||
|
// Configure vuex store
|
||||||
setupStore(app);
|
setupStore(app);
|
||||||
|
|
||||||
// Directives
|
// Register global directive
|
||||||
setupDirectives(app);
|
setupGlobDirectives(app);
|
||||||
|
|
||||||
// error-handle
|
// Configure global error handling
|
||||||
setupErrorHandle(app);
|
setupErrorHandle(app);
|
||||||
|
|
||||||
|
// Mount when the route is ready
|
||||||
router.isReady().then(() => {
|
router.isReady().then(() => {
|
||||||
app.mount('#app');
|
app.mount('#app');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// The development environment takes effect
|
||||||
if (isDevMode()) {
|
if (isDevMode()) {
|
||||||
app.config.performance = true;
|
app.config.performance = true;
|
||||||
window.__APP__ = app;
|
window.__APP__ = app;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import type { ProjectConfig } from '/@/types/config';
|
import type { ProjectConfig } from '/@/types/config';
|
||||||
|
|
||||||
import { MenuTypeEnum, MenuThemeEnum, MenuModeEnum, TriggerEnum } from '/@/enums/menuEnum';
|
import { MenuTypeEnum, MenuModeEnum, TriggerEnum } from '/@/enums/menuEnum';
|
||||||
import { ContentEnum, PermissionModeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
|
import { ContentEnum, PermissionModeEnum, ThemeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
|
||||||
import { primaryColor } from '../../build/config/lessModifyVars';
|
import { primaryColor } from '../../build/config/lessModifyVars';
|
||||||
import { isProdMode } from '/@/utils/env';
|
import { isProdMode } from '/@/utils/env';
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ const setting: ProjectConfig = {
|
|||||||
// 是否显示顶部
|
// 是否显示顶部
|
||||||
show: true,
|
show: true,
|
||||||
// theme
|
// theme
|
||||||
theme: MenuThemeEnum.LIGHT,
|
theme: ThemeEnum.LIGHT,
|
||||||
// 开启锁屏功能
|
// 开启锁屏功能
|
||||||
useLockPage: true,
|
useLockPage: true,
|
||||||
// 显示刷新按钮
|
// 显示刷新按钮
|
||||||
@@ -74,7 +74,7 @@ const setting: ProjectConfig = {
|
|||||||
// 菜单类型
|
// 菜单类型
|
||||||
type: MenuTypeEnum.SIDEBAR,
|
type: MenuTypeEnum.SIDEBAR,
|
||||||
// 菜单主题
|
// 菜单主题
|
||||||
theme: MenuThemeEnum.DARK,
|
theme: ThemeEnum.DARK,
|
||||||
// 分割菜单
|
// 分割菜单
|
||||||
split: false,
|
split: false,
|
||||||
// 顶部菜单布局
|
// 顶部菜单布局
|
||||||
|
@@ -1,4 +1,7 @@
|
|||||||
// Application related functions
|
/**
|
||||||
|
* Application configuration
|
||||||
|
*/
|
||||||
|
|
||||||
import type { ProjectConfig } from '/@/types/config';
|
import type { ProjectConfig } from '/@/types/config';
|
||||||
import type { App } from 'vue';
|
import type { App } from 'vue';
|
||||||
import { computed, ref } from 'vue';
|
import { computed, ref } from 'vue';
|
||||||
@@ -18,7 +21,9 @@ import {
|
|||||||
|
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
|
|
||||||
|
// Used to share global app instances
|
||||||
let app: App;
|
let app: App;
|
||||||
|
|
||||||
export function setApp(_app: App): void {
|
export function setApp(_app: App): void {
|
||||||
app = _app;
|
app = _app;
|
||||||
}
|
}
|
||||||
@@ -27,7 +32,7 @@ export function getApp(): App {
|
|||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO 主题切换
|
// TODO Theme switching
|
||||||
export function useThemeMode(mode: ThemeModeEnum) {
|
export function useThemeMode(mode: ThemeModeEnum) {
|
||||||
const modeRef = ref(mode);
|
const modeRef = ref(mode);
|
||||||
const html = document.documentElement;
|
const html = document.documentElement;
|
||||||
@@ -43,7 +48,7 @@ export function useThemeMode(mode: ThemeModeEnum) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initial project configuration
|
// Initial project configuration
|
||||||
export function useInitAppConfigStore() {
|
export function initAppConfigStore() {
|
||||||
let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
|
let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
|
||||||
if (!projCfg) {
|
if (!projCfg) {
|
||||||
projCfg = projectSetting;
|
projCfg = projectSetting;
|
||||||
@@ -67,8 +72,8 @@ export function useInitAppConfigStore() {
|
|||||||
appStore.commitProjectConfigState(projCfg);
|
appStore.commitProjectConfigState(projCfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config Provider
|
// antdv Config Provider
|
||||||
export function useConfigProvider() {
|
export function getConfigProvider() {
|
||||||
function transformCellText({ text }: { text: string }) {
|
function transformCellText({ text }: { text: string }) {
|
||||||
if (isNull(text) || isUnDef(text)) {
|
if (isNull(text) || isUnDef(text)) {
|
||||||
return ' - ';
|
return ' - ';
|
@@ -1,5 +1,5 @@
|
|||||||
// Load on demand
|
// Load on demand
|
||||||
|
// This module only introduces components globally before login
|
||||||
import type { App } from 'vue';
|
import type { App } from 'vue';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
@@ -1,14 +0,0 @@
|
|||||||
@import (reference) '../../design/index.less';
|
|
||||||
|
|
||||||
.app-svg-loading {
|
|
||||||
position: relative;
|
|
||||||
width: auto;
|
|
||||||
|
|
||||||
&__tip {
|
|
||||||
display: block;
|
|
||||||
margin-top: 4px;
|
|
||||||
font-size: 13px;
|
|
||||||
color: #303133;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,11 +1,16 @@
|
|||||||
import { Spin } from 'ant-design-vue';
|
import { Spin } from 'ant-design-vue';
|
||||||
import svgImg from '/@/assets/images/loading.svg';
|
import svgImg from '/@/assets/images/loading.svg';
|
||||||
|
|
||||||
import './spin.less';
|
|
||||||
Spin.setDefaultIndicator({
|
Spin.setDefaultIndicator({
|
||||||
indicator: () => {
|
indicator: () => {
|
||||||
return (
|
return (
|
||||||
<div class="app-svg-loading">
|
<div
|
||||||
|
class="app-svg-loading"
|
||||||
|
style={{
|
||||||
|
position: 'relative',
|
||||||
|
width: 'auto',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<img src={svgImg} alt="" height="32" width="32" class="g-loading" />
|
<img src={svgImg} alt="" height="32" width="32" class="g-loading" />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
86
src/setup/application.ts
Normal file
86
src/setup/application.ts
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
/**
|
||||||
|
* Application configuration
|
||||||
|
*/
|
||||||
|
|
||||||
|
import type { ProjectConfig } from '/@/types/config';
|
||||||
|
import type { App } from 'vue';
|
||||||
|
import { computed, ref } from 'vue';
|
||||||
|
|
||||||
|
import { ThemeModeEnum } from '/@/enums/appEnum';
|
||||||
|
import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
|
||||||
|
|
||||||
|
import projectSetting from '/@/settings/projectSetting';
|
||||||
|
import { getLocal } from '/@/utils/helper/persistent';
|
||||||
|
import { isUnDef, isNull } from '/@/utils/is';
|
||||||
|
import {
|
||||||
|
updateGrayMode,
|
||||||
|
updateColorWeak,
|
||||||
|
updateHeaderBgColor,
|
||||||
|
updateSidebarBgColor,
|
||||||
|
} from '/@/setup/theme';
|
||||||
|
|
||||||
|
import { appStore } from '/@/store/modules/app';
|
||||||
|
|
||||||
|
// Used to share global app instances
|
||||||
|
let app: App;
|
||||||
|
|
||||||
|
export function setApp(_app: App): void {
|
||||||
|
app = _app;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getApp(): App {
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO Theme switching
|
||||||
|
export function useThemeMode(mode: ThemeModeEnum) {
|
||||||
|
const modeRef = ref(mode);
|
||||||
|
const html = document.documentElement;
|
||||||
|
const clsList = html.classList;
|
||||||
|
|
||||||
|
const change = () => {
|
||||||
|
clsList.contains(mode) ? clsList.remove(mode) : clsList.add(mode);
|
||||||
|
};
|
||||||
|
return {
|
||||||
|
runChangeThemeMode: change,
|
||||||
|
mode: computed(() => modeRef.value),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initial project configuration
|
||||||
|
export function initAppConfigStore() {
|
||||||
|
let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
|
||||||
|
if (!projCfg) {
|
||||||
|
projCfg = projectSetting;
|
||||||
|
}
|
||||||
|
const { colorWeak, grayMode, headerBgColor, menuBgColor } = projCfg;
|
||||||
|
try {
|
||||||
|
// if (
|
||||||
|
// themeColor !== primaryColor &&
|
||||||
|
// themeColor &&
|
||||||
|
// process.env.VUE_APP_USE_THEME_REPLACER !== 'TRUE'
|
||||||
|
// ) {
|
||||||
|
// updateTheme(themeColor);
|
||||||
|
// }
|
||||||
|
headerBgColor && updateHeaderBgColor(headerBgColor);
|
||||||
|
menuBgColor && updateSidebarBgColor(menuBgColor);
|
||||||
|
grayMode && updateGrayMode(grayMode);
|
||||||
|
colorWeak && updateColorWeak(colorWeak);
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
}
|
||||||
|
appStore.commitProjectConfigState(projCfg);
|
||||||
|
}
|
||||||
|
|
||||||
|
// antdv Config Provider
|
||||||
|
export function getConfigProvider() {
|
||||||
|
function transformCellText({ text }: { text: string }) {
|
||||||
|
if (isNull(text) || isUnDef(text)) {
|
||||||
|
return ' - ';
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
transformCellText,
|
||||||
|
};
|
||||||
|
}
|
@@ -1,5 +1,9 @@
|
|||||||
|
/**
|
||||||
|
* Configure and register global directives
|
||||||
|
*/
|
||||||
import type { App } from 'vue';
|
import type { App } from 'vue';
|
||||||
import { setupPermissionDirective } from './permission';
|
import { setupPermissionDirective } from './permission';
|
||||||
export function setupDirectives(app: App) {
|
|
||||||
|
export function setupGlobDirectives(app: App) {
|
||||||
setupPermissionDirective(app);
|
setupPermissionDirective(app);
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* Global authority directive
|
||||||
|
* Used for fine-grained control of component permissions
|
||||||
|
* @Example v-auth="RoleEnum.TEST"
|
||||||
|
*/
|
||||||
|
import type { App, Directive, DirectiveBinding } from 'vue';
|
||||||
|
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
import type { App } from 'vue';
|
|
||||||
import { usePermission } from '/@/hooks/web/usePermission';
|
import { usePermission } from '/@/hooks/web/usePermission';
|
||||||
import { PermissionModeEnum } from '/@/enums/appEnum';
|
import { PermissionModeEnum } from '/@/enums/appEnum';
|
||||||
const { hasPermission } = usePermission();
|
const { hasPermission } = usePermission();
|
||||||
@@ -13,18 +19,28 @@ function isAuth(el: Element, binding: any) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function isBackMode() {
|
function isBackMode() {
|
||||||
return appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK;
|
return appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK;
|
||||||
}
|
}
|
||||||
export function setupPermissionDirective(app: App) {
|
|
||||||
app.directive('auth', {
|
const mounted = (el: Element, binding: DirectiveBinding<any>) => {
|
||||||
mounted(el: Element, binding) {
|
|
||||||
if (isBackMode()) return;
|
if (isBackMode()) return;
|
||||||
isAuth(el, binding);
|
isAuth(el, binding);
|
||||||
},
|
};
|
||||||
updated(el: Element, binding) {
|
|
||||||
|
const updated = (el: Element, binding: DirectiveBinding<any>) => {
|
||||||
if (!isBackMode()) return;
|
if (!isBackMode()) return;
|
||||||
isAuth(el, binding);
|
isAuth(el, binding);
|
||||||
},
|
};
|
||||||
});
|
|
||||||
|
const authDirective: Directive = {
|
||||||
|
mounted,
|
||||||
|
updated,
|
||||||
|
};
|
||||||
|
|
||||||
|
export function setupPermissionDirective(app: App) {
|
||||||
|
app.directive('auth', authDirective);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default authDirective;
|
||||||
|
@@ -1,11 +1,16 @@
|
|||||||
|
/**
|
||||||
|
* Prevent repeated clicks
|
||||||
|
* @Example v-repeat-click="()=>{}"
|
||||||
|
*/
|
||||||
import { on, once } from '/@/utils/domUtils';
|
import { on, once } from '/@/utils/domUtils';
|
||||||
|
import type { Directive, DirectiveBinding } from 'vue';
|
||||||
|
|
||||||
export default {
|
const repeatDirective: Directive = {
|
||||||
beforeMount(el: Element, binding: any) {
|
beforeMount(el: Element, binding: DirectiveBinding<any>) {
|
||||||
let interval: ReturnType<typeof setInterval> | null = null;
|
let interval: Nullable<IntervalHandle> = null;
|
||||||
let startTime = 0;
|
let startTime = 0;
|
||||||
const handler = () => binding.value && binding.value();
|
const handler = (): void => binding.value && binding.value();
|
||||||
const clear = () => {
|
const clear = (): void => {
|
||||||
if (Date.now() - startTime < 100) {
|
if (Date.now() - startTime < 100) {
|
||||||
handler();
|
handler();
|
||||||
}
|
}
|
||||||
@@ -13,7 +18,7 @@ export default {
|
|||||||
interval = null;
|
interval = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
on(el, 'mousedown', (e) => {
|
on(el, 'mousedown', (e: MouseEvent): void => {
|
||||||
if ((e as any).button !== 0) return;
|
if ((e as any).button !== 0) return;
|
||||||
startTime = Date.now();
|
startTime = Date.now();
|
||||||
once(document as any, 'mouseup', clear);
|
once(document as any, 'mouseup', clear);
|
||||||
@@ -22,3 +27,5 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export default repeatDirective;
|
||||||
|
@@ -1,19 +1,28 @@
|
|||||||
|
/**
|
||||||
|
* Used to configure the global error handling function, which can monitor vue errors, script errors, static resource errors and Promise errors
|
||||||
|
*/
|
||||||
|
|
||||||
import { errorStore, ErrorInfo } from '/@/store/modules/error';
|
import { errorStore, ErrorInfo } from '/@/store/modules/error';
|
||||||
import { useSetting } from '/@/hooks/core/useSetting';
|
import { useSetting } from '/@/hooks/core/useSetting';
|
||||||
import { ErrorTypeEnum } from '/@/enums/exceptionEnum';
|
import { ErrorTypeEnum } from '/@/enums/exceptionEnum';
|
||||||
import { App } from 'vue';
|
import { App } from 'vue';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handling error stack information
|
||||||
|
* @param error
|
||||||
|
*/
|
||||||
function processStackMsg(error: Error) {
|
function processStackMsg(error: Error) {
|
||||||
if (!error.stack) {
|
if (!error.stack) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
let stack = error.stack
|
let stack = error.stack
|
||||||
.replace(/\n/gi, '') // 去掉换行,节省传输内容大小
|
.replace(/\n/gi, '') // Remove line breaks to save the size of the transmitted content
|
||||||
.replace(/\bat\b/gi, '@') // chrome中是at,ff中是@
|
.replace(/\bat\b/gi, '@') // At in chrome, @ in ff
|
||||||
.split('@') // 以@分割信息
|
.split('@') // Split information with @
|
||||||
.slice(0, 9) // 最大堆栈长度(Error.stackTraceLimit = 10),所以只取前10条
|
.slice(0, 9) // The maximum stack length (Error.stackTraceLimit = 10), so only take the first 10
|
||||||
.map((v) => v.replace(/^\s*|\s*$/g, '')) // 去除多余空格
|
.map((v) => v.replace(/^\s*|\s*$/g, '')) // Remove extra spaces
|
||||||
.join('~') // 手动添加分隔符,便于后期展示
|
.join('~') // Manually add separators for later display
|
||||||
.replace(/\?[^:]+/gi, ''); // 去除js文件链接的多余参数(?x=1之类)
|
.replace(/\?[^:]+/gi, ''); // Remove redundant parameters of js file links (?x=1 and the like)
|
||||||
const msg = error.toString();
|
const msg = error.toString();
|
||||||
if (stack.indexOf(msg) < 0) {
|
if (stack.indexOf(msg) < 0) {
|
||||||
stack = msg + '@' + stack;
|
stack = msg + '@' + stack;
|
||||||
@@ -21,6 +30,10 @@ function processStackMsg(error: Error) {
|
|||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get comp name
|
||||||
|
* @param vm
|
||||||
|
*/
|
||||||
function formatComponentName(vm: any) {
|
function formatComponentName(vm: any) {
|
||||||
if (vm.$root === vm) {
|
if (vm.$root === vm) {
|
||||||
return {
|
return {
|
||||||
@@ -43,6 +56,10 @@ function formatComponentName(vm: any) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure Vue error handling function
|
||||||
|
*/
|
||||||
|
|
||||||
function vueErrorHandler(err: Error, vm: any, info: string) {
|
function vueErrorHandler(err: Error, vm: any, info: string) {
|
||||||
const { name, path } = formatComponentName(vm);
|
const { name, path } = formatComponentName(vm);
|
||||||
errorStore.commitErrorInfoState({
|
errorStore.commitErrorInfoState({
|
||||||
@@ -56,6 +73,9 @@ function vueErrorHandler(err: Error, vm: any, info: string) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure script error handling function
|
||||||
|
*/
|
||||||
export function scriptErrorHandler(
|
export function scriptErrorHandler(
|
||||||
event: Event | string,
|
event: Event | string,
|
||||||
source?: string,
|
source?: string,
|
||||||
@@ -86,6 +106,9 @@ export function scriptErrorHandler(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure Promise error handling function
|
||||||
|
*/
|
||||||
function registerPromiseErrorHandler() {
|
function registerPromiseErrorHandler() {
|
||||||
window.addEventListener(
|
window.addEventListener(
|
||||||
'unhandledrejection',
|
'unhandledrejection',
|
||||||
@@ -104,8 +127,11 @@ function registerPromiseErrorHandler() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure monitoring resource loading error handling function
|
||||||
|
*/
|
||||||
function registerResourceErrorHandler() {
|
function registerResourceErrorHandler() {
|
||||||
// 监控资源加载错误(img,script,css,以及jsonp)
|
// Monitoring resource loading error(img,script,css,and jsonp)
|
||||||
window.addEventListener(
|
window.addEventListener(
|
||||||
'error',
|
'error',
|
||||||
function (e: Event) {
|
function (e: Event) {
|
||||||
@@ -129,19 +155,23 @@ function registerResourceErrorHandler() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure global error handling
|
||||||
|
* @param app
|
||||||
|
*/
|
||||||
export function setupErrorHandle(app: App) {
|
export function setupErrorHandle(app: App) {
|
||||||
const { projectSetting } = useSetting();
|
const { projectSetting } = useSetting();
|
||||||
const { useErrorHandle } = projectSetting;
|
const { useErrorHandle } = projectSetting;
|
||||||
if (!useErrorHandle) {
|
if (!useErrorHandle) return;
|
||||||
return;
|
// Vue exception monitoring;
|
||||||
}
|
|
||||||
// Vue异常监控;
|
|
||||||
app.config.errorHandler = vueErrorHandler;
|
app.config.errorHandler = vueErrorHandler;
|
||||||
// js错误
|
|
||||||
|
// script error
|
||||||
window.onerror = scriptErrorHandler;
|
window.onerror = scriptErrorHandler;
|
||||||
// promise 异常
|
|
||||||
|
// promise exception
|
||||||
registerPromiseErrorHandler();
|
registerPromiseErrorHandler();
|
||||||
|
|
||||||
// 静态资源异常
|
// Static resource exception
|
||||||
registerResourceErrorHandler();
|
registerResourceErrorHandler();
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { isHexColor, colorIsDark, lighten, darken } from '/@/utils/color';
|
import { isHexColor, colorIsDark, lighten, darken } from '/@/utils/color';
|
||||||
import { appStore } from '/@/store/modules/app';
|
import { appStore } from '/@/store/modules/app';
|
||||||
import { MenuThemeEnum } from '/@/enums/menuEnum';
|
import { ThemeEnum } from '/@/enums/appEnum';
|
||||||
|
|
||||||
const HEADER_BG_COLOR_VAR = '--header-bg-color';
|
const HEADER_BG_COLOR_VAR = '--header-bg-color';
|
||||||
const HEADER_BG_HOVER_COLOR_VAR = '--header-bg-hover-color';
|
const HEADER_BG_HOVER_COLOR_VAR = '--header-bg-hover-color';
|
||||||
@@ -22,14 +22,26 @@ function toggleClass(flag: boolean, clsName: string) {
|
|||||||
document.body.className = flag ? `${className} ${clsName} ` : className;
|
document.body.className = flag ? `${className} ${clsName} ` : className;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the status of the project's color weakness mode
|
||||||
|
* @param gray
|
||||||
|
*/
|
||||||
export const updateColorWeak = (colorWeak: boolean) => {
|
export const updateColorWeak = (colorWeak: boolean) => {
|
||||||
toggleClass(colorWeak, 'color-weak');
|
toggleClass(colorWeak, 'color-weak');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change project gray mode status
|
||||||
|
* @param gray
|
||||||
|
*/
|
||||||
export const updateGrayMode = (gray: boolean) => {
|
export const updateGrayMode = (gray: boolean) => {
|
||||||
toggleClass(gray, 'gray-mode');
|
toggleClass(gray, 'gray-mode');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the background color of the top header
|
||||||
|
* @param color
|
||||||
|
*/
|
||||||
export function updateHeaderBgColor(color: string) {
|
export function updateHeaderBgColor(color: string) {
|
||||||
if (!isHexColor(color)) return;
|
if (!isHexColor(color)) return;
|
||||||
// bg color
|
// bg color
|
||||||
@@ -40,15 +52,20 @@ export function updateHeaderBgColor(color: string) {
|
|||||||
setCssVar(HEADER_BG_HOVER_COLOR_VAR, hoverColor);
|
setCssVar(HEADER_BG_HOVER_COLOR_VAR, hoverColor);
|
||||||
setCssVar(HEADER_MENU_ACTIVE_BG_COLOR_VAR, hoverColor);
|
setCssVar(HEADER_MENU_ACTIVE_BG_COLOR_VAR, hoverColor);
|
||||||
|
|
||||||
|
// Determine the depth of the color value and automatically switch the theme
|
||||||
const isDark = colorIsDark(color);
|
const isDark = colorIsDark(color);
|
||||||
|
|
||||||
appStore.commitProjectConfigState({
|
appStore.commitProjectConfigState({
|
||||||
headerSetting: {
|
headerSetting: {
|
||||||
theme: isDark ? MenuThemeEnum.DARK : MenuThemeEnum.LIGHT,
|
theme: isDark ? ThemeEnum.DARK : ThemeEnum.LIGHT,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Change the background color of the left menu
|
||||||
|
* @param color bg color
|
||||||
|
*/
|
||||||
export function updateSidebarBgColor(color: string) {
|
export function updateSidebarBgColor(color: string) {
|
||||||
if (!isHexColor(color)) return;
|
if (!isHexColor(color)) return;
|
||||||
|
|
||||||
@@ -58,11 +75,12 @@ export function updateSidebarBgColor(color: string) {
|
|||||||
setCssVar(SIDER_LIGHTEN_2_BG_COLOR, lighten(color, 8));
|
setCssVar(SIDER_LIGHTEN_2_BG_COLOR, lighten(color, 8));
|
||||||
|
|
||||||
// only #ffffff is light
|
// only #ffffff is light
|
||||||
|
// Only when the background color is #fff, the theme of the menu will be changed to light
|
||||||
const isLight = ['#fff', '#ffffff'].includes(color.toLowerCase());
|
const isLight = ['#fff', '#ffffff'].includes(color.toLowerCase());
|
||||||
|
|
||||||
appStore.commitProjectConfigState({
|
appStore.commitProjectConfigState({
|
||||||
menuSetting: {
|
menuSetting: {
|
||||||
theme: isLight ? MenuThemeEnum.LIGHT : MenuThemeEnum.DARK,
|
theme: isLight ? ThemeEnum.LIGHT : ThemeEnum.DARK,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@@ -1,19 +1,16 @@
|
|||||||
import type { App } from 'vue';
|
import type { App } from 'vue';
|
||||||
import {
|
import { createStore, createLogger, Plugin } from 'vuex';
|
||||||
createStore,
|
|
||||||
// createLogger, Plugin
|
|
||||||
} from 'vuex';
|
|
||||||
import { config } from 'vuex-module-decorators';
|
import { config } from 'vuex-module-decorators';
|
||||||
import { isDevMode } from '/@/utils/env';
|
import { isDevMode } from '/@/utils/env';
|
||||||
|
|
||||||
config.rawError = true;
|
config.rawError = true;
|
||||||
const isDev = isDevMode();
|
const isDev = isDevMode();
|
||||||
// const plugins: Plugin<any>[] = isDev ? [createLogger()] : [];
|
const plugins: Plugin<any>[] = isDev ? [createLogger()] : [];
|
||||||
|
|
||||||
const store = createStore({
|
const store = createStore({
|
||||||
modules: {},
|
// modules: {},
|
||||||
strict: isDev,
|
strict: isDev,
|
||||||
// plugins,
|
plugins,
|
||||||
});
|
});
|
||||||
|
|
||||||
export function setupStore(app: App<Element>) {
|
export function setupStore(app: App<Element>) {
|
||||||
|
8
src/types/config.d.ts
vendored
8
src/types/config.d.ts
vendored
@@ -1,6 +1,6 @@
|
|||||||
// 左侧菜单, 顶部菜单
|
// 左侧菜单, 顶部菜单
|
||||||
import { MenuTypeEnum, MenuModeEnum, MenuThemeEnum, TriggerEnum } from '/@/enums/menuEnum';
|
import { MenuTypeEnum, MenuModeEnum, TriggerEnum } from '/@/enums/menuEnum';
|
||||||
import { ContentEnum, PermissionModeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
|
import { ContentEnum, PermissionModeEnum, ThemeEnum, RouterTransitionEnum } from '/@/enums/appEnum';
|
||||||
|
|
||||||
export interface MessageSetting {
|
export interface MessageSetting {
|
||||||
title: string;
|
title: string;
|
||||||
@@ -20,7 +20,7 @@ export interface MenuSetting {
|
|||||||
menuWidth: number;
|
menuWidth: number;
|
||||||
mode: MenuModeEnum;
|
mode: MenuModeEnum;
|
||||||
type: MenuTypeEnum;
|
type: MenuTypeEnum;
|
||||||
theme: MenuThemeEnum;
|
theme: ThemeEnum;
|
||||||
topMenuAlign: 'start' | 'center' | 'end';
|
topMenuAlign: 'start' | 'center' | 'end';
|
||||||
collapsedShowSearch: boolean;
|
collapsedShowSearch: boolean;
|
||||||
trigger: TriggerEnum;
|
trigger: TriggerEnum;
|
||||||
@@ -41,7 +41,7 @@ export interface MultiTabsSetting {
|
|||||||
export interface HeaderSetting {
|
export interface HeaderSetting {
|
||||||
fixed: boolean;
|
fixed: boolean;
|
||||||
show: boolean;
|
show: boolean;
|
||||||
theme: MenuThemeEnum;
|
theme: ThemeEnum;
|
||||||
// 显示刷新按钮
|
// 显示刷新按钮
|
||||||
showRedo: boolean;
|
showRedo: boolean;
|
||||||
// 显示全屏按钮
|
// 显示全屏按钮
|
||||||
|
6
src/types/event.d.ts
vendored
6
src/types/event.d.ts
vendored
@@ -1,9 +1,7 @@
|
|||||||
/**
|
|
||||||
* @description: 输入框事件
|
|
||||||
*/
|
|
||||||
declare interface ChangeEvent extends Event {
|
declare interface ChangeEvent extends Event {
|
||||||
target: HTMLInputElement;
|
target: HTMLInputElement;
|
||||||
}
|
}
|
||||||
interface WheelEvent {
|
|
||||||
|
declare interface WheelEvent {
|
||||||
path?: EventTarget[];
|
path?: EventTarget[];
|
||||||
}
|
}
|
||||||
|
15
src/types/global.d.ts
vendored
15
src/types/global.d.ts
vendored
@@ -6,7 +6,6 @@ declare interface PromiseFn<T = any, R = T> {
|
|||||||
(...arg: T[]): Promise<R>;
|
(...arg: T[]): Promise<R>;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 任意对象
|
|
||||||
declare interface IObj<T = any> {
|
declare interface IObj<T = any> {
|
||||||
[key: string]: T;
|
[key: string]: T;
|
||||||
[key: number]: T;
|
[key: number]: T;
|
||||||
@@ -34,19 +33,11 @@ declare type Indexable<T = any> = {
|
|||||||
|
|
||||||
declare type Hash<T> = Indexable<T>;
|
declare type Hash<T> = Indexable<T>;
|
||||||
|
|
||||||
// declare type DeepPartial<T> = {
|
|
||||||
// [P in keyof T]?: T[P] extends (infer U)[]
|
|
||||||
// ? RecursivePartial<U>[]
|
|
||||||
// : T[P] extends object
|
|
||||||
// ? RecursivePartial<T[P]>
|
|
||||||
// : T[P];
|
|
||||||
// };
|
|
||||||
|
|
||||||
declare type DeepPartial<T> = {
|
declare type DeepPartial<T> = {
|
||||||
[P in keyof T]?: DeepPartial<T[P]>;
|
[P in keyof T]?: DeepPartial<T[P]>;
|
||||||
};
|
};
|
||||||
|
|
||||||
declare type SelectOptions = {
|
declare type LabelValueOptions = {
|
||||||
label: string;
|
label: string;
|
||||||
value: any;
|
value: any;
|
||||||
}[];
|
}[];
|
||||||
@@ -54,3 +45,7 @@ declare type SelectOptions = {
|
|||||||
declare type EmitType = (event: string, ...args: any[]) => void;
|
declare type EmitType = (event: string, ...args: any[]) => void;
|
||||||
|
|
||||||
declare type TargetContext = '_self' | '_blank';
|
declare type TargetContext = '_self' | '_blank';
|
||||||
|
|
||||||
|
declare type TimeoutHandle = ReturnType<typeof setTimeout>;
|
||||||
|
|
||||||
|
declare type IntervalHandle = ReturnType<typeof setInterval>;
|
||||||
|
1
src/types/window.d.ts
vendored
1
src/types/window.d.ts
vendored
@@ -2,6 +2,7 @@ import type { App } from 'vue';
|
|||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
declare interface Window {
|
declare interface Window {
|
||||||
|
// Global vue app instance
|
||||||
__APP__: App<Element>;
|
__APP__: App<Element>;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,9 +1,8 @@
|
|||||||
import { userStore } from '/@/store/modules/user';
|
import { userStore } from '/@/store/modules/user';
|
||||||
// import { permissionStore } from '@/store/modules/permission';
|
|
||||||
// import { RoleEnum } from '@/enums/roleEnum';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 获取token
|
* @description: Get token
|
||||||
|
* @return jwt token
|
||||||
*/
|
*/
|
||||||
export function getToken(): string {
|
export function getToken(): string {
|
||||||
return userStore.getTokenState;
|
return userStore.getTokenState;
|
||||||
|
@@ -4,6 +4,6 @@
|
|||||||
export function triggerWindowResize() {
|
export function triggerWindowResize() {
|
||||||
const event = document.createEvent('HTMLEvents');
|
const event = document.createEvent('HTMLEvents');
|
||||||
event.initEvent('resize', true, true);
|
event.initEvent('resize', true, true);
|
||||||
(event as any).eventType = 'message';
|
(event as ChangeEvent).eventType = 'message';
|
||||||
window.dispatchEvent(event);
|
window.dispatchEvent(event);
|
||||||
}
|
}
|
||||||
|
@@ -50,10 +50,6 @@ export function isArray(val: unknown): val is Array<any> {
|
|||||||
return val && Array.isArray(val);
|
return val && Array.isArray(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
export const isClient = () => {
|
|
||||||
return typeof window !== 'undefined';
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isWindow = (val: any): val is Window => {
|
export const isWindow = (val: any): val is Window => {
|
||||||
return typeof window !== 'undefined' && is(val, 'Window');
|
return typeof window !== 'undefined' && is(val, 'Window');
|
||||||
};
|
};
|
||||||
@@ -64,6 +60,8 @@ export const isElement = (val: unknown): val is Element => {
|
|||||||
|
|
||||||
export const isServer = typeof window === 'undefined';
|
export const isServer = typeof window === 'undefined';
|
||||||
|
|
||||||
|
export const isClient = typeof window !== 'undefined';
|
||||||
|
|
||||||
export function isImageDom(o: Element) {
|
export function isImageDom(o: Element) {
|
||||||
return o && ['IMAGE', 'IMG'].includes(o.tagName);
|
return o && ['IMAGE', 'IMG'].includes(o.tagName);
|
||||||
}
|
}
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
const projectName = import.meta.env.VITE_GLOB_APP_TITLE;
|
const projectName = import.meta.env.VITE_GLOB_APP_TITLE;
|
||||||
|
|
||||||
export function warn(message: string) {
|
export function warn(message: string) {
|
||||||
console.warn(`[${projectName} warn]:${message}`);
|
console.warn(`[${projectName} warn]:${message}`);
|
||||||
}
|
}
|
||||||
|
@@ -9,9 +9,6 @@
|
|||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: 'Welcome',
|
name: 'Welcome',
|
||||||
components: { House },
|
components: { House },
|
||||||
setup() {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
import { FormSchema } from '/@/components/Form';
|
import { FormSchema } from '/@/components/Form';
|
||||||
|
|
||||||
const basicOptions: SelectOptions = [
|
const basicOptions: LabelValueOptions = [
|
||||||
{
|
{
|
||||||
label: '付晓晓',
|
label: '付晓晓',
|
||||||
value: '1',
|
value: '1',
|
||||||
@@ -11,7 +11,7 @@ const basicOptions: SelectOptions = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const storeTypeOptions: SelectOptions = [
|
const storeTypeOptions: LabelValueOptions = [
|
||||||
{
|
{
|
||||||
label: '私密',
|
label: '私密',
|
||||||
value: '1',
|
value: '1',
|
||||||
|
@@ -58,7 +58,7 @@
|
|||||||
import { Alert, Divider } from 'ant-design-vue';
|
import { Alert, Divider } from 'ant-design-vue';
|
||||||
import CurrentPermissionMode from '../CurrentPermissionMode.vue';
|
import CurrentPermissionMode from '../CurrentPermissionMode.vue';
|
||||||
import { usePermission } from '/@/hooks/web/usePermission';
|
import { usePermission } from '/@/hooks/web/usePermission';
|
||||||
import Authority from '/@/components/Authority';
|
import { Authority } from '/@/components/Authority';
|
||||||
import { getPermCodeByUserId } from '/@/api/sys/user';
|
import { getPermCodeByUserId } from '/@/api/sys/user';
|
||||||
import { permissionStore } from '/@/store/modules/permission';
|
import { permissionStore } from '/@/store/modules/permission';
|
||||||
import { PermissionModeEnum } from '/@/enums/appEnum';
|
import { PermissionModeEnum } from '/@/enums/appEnum';
|
||||||
|
@@ -65,7 +65,7 @@
|
|||||||
import { userStore } from '/@/store/modules/user';
|
import { userStore } from '/@/store/modules/user';
|
||||||
import { RoleEnum } from '/@/enums/roleEnum';
|
import { RoleEnum } from '/@/enums/roleEnum';
|
||||||
import { usePermission } from '/@/hooks/web/usePermission';
|
import { usePermission } from '/@/hooks/web/usePermission';
|
||||||
import Authority from '/@/components/Authority';
|
import { Authority } from '/@/components/Authority';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: { Alert, CurrentPermissionMode, Divider, Authority },
|
components: { Alert, CurrentPermissionMode, Divider, Authority },
|
||||||
|
493
yarn.lock
493
yarn.lock
@@ -1050,10 +1050,10 @@
|
|||||||
resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.2.tgz#c4a95ddc06ca9b9496df03604e66fdefb39f4c4b"
|
resolved "https://registry.npmjs.org/@iconify/iconify/-/iconify-2.0.0-rc.2.tgz#c4a95ddc06ca9b9496df03604e66fdefb39f4c4b"
|
||||||
integrity sha512-BybEHU5/I9EQ0CcwKAqmreZ2bMnAXrqLCTptAc6vPetHMbrXdZfejP5mt57e/8PNSt/qE7BHniU5PCYA+PGIHw==
|
integrity sha512-BybEHU5/I9EQ0CcwKAqmreZ2bMnAXrqLCTptAc6vPetHMbrXdZfejP5mt57e/8PNSt/qE7BHniU5PCYA+PGIHw==
|
||||||
|
|
||||||
"@iconify/json@^1.1.258":
|
"@iconify/json@^1.1.260":
|
||||||
version "1.1.259"
|
version "1.1.260"
|
||||||
resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.259.tgz#433ccff8572e42c3abab1cdbac872af0e8340419"
|
resolved "https://registry.npmjs.org/@iconify/json/-/json-1.1.260.tgz#75bfcdcaf01f1a0092bb26f4ce7aebf357da431a"
|
||||||
integrity sha512-tDL4IgKtj3LA2lI+IoZfylBtKWNpV5I9BLj7WGMI/SvGkkYo+9DUap3Ho6iUbQLtu9GmHwpE/cA8mwEBkj/otw==
|
integrity sha512-gpRn0o55mvBTCcZRb8jBtqxV/5Av01BnnVn7/FyboBNdGkEQ8EMTqJL10SDUf9TLM8s63KKSg/ZeCJj870THtA==
|
||||||
|
|
||||||
"@koa/cors@^3.1.0":
|
"@koa/cors@^3.1.0":
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
@@ -1227,13 +1227,13 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" ">=7.9.0"
|
"@babel/core" ">=7.9.0"
|
||||||
|
|
||||||
"@stylelint/postcss-markdown@^0.36.1":
|
"@stylelint/postcss-markdown@^0.36.2":
|
||||||
version "0.36.1"
|
version "0.36.2"
|
||||||
resolved "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz#829b87e6c0f108014533d9d7b987dc9efb6632e8"
|
resolved "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz#0a540c4692f8dcdfc13c8e352c17e7bfee2bb391"
|
||||||
integrity sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw==
|
integrity sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
remark "^12.0.0"
|
remark "^13.0.0"
|
||||||
unist-util-find-all-after "^3.0.1"
|
unist-util-find-all-after "^3.0.2"
|
||||||
|
|
||||||
"@surma/rollup-plugin-off-main-thread@^1.1.1":
|
"@surma/rollup-plugin-off-main-thread@^1.1.1":
|
||||||
version "1.4.2"
|
version "1.4.2"
|
||||||
@@ -1280,10 +1280,10 @@
|
|||||||
"@types/keygrip" "*"
|
"@types/keygrip" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/echarts@^4.9.0":
|
"@types/echarts@^4.9.1":
|
||||||
version "4.9.0"
|
version "4.9.1"
|
||||||
resolved "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.0.tgz#e133ea5429ada1d814f9cc1deae855421dcdd2ef"
|
resolved "https://registry.npmjs.org/@types/echarts/-/echarts-4.9.1.tgz#e21ea327af62b1148a7ab69a039f8fa002506de2"
|
||||||
integrity sha512-9QIAUe6cxM5GyGNCIhlEwf7l5oclZDVM0HNRfehPx3dDUt1Jfhbvp/U2wfgwtL/IDqyASBVs1zu4qyaCsuJINA==
|
integrity sha512-tpx/gqJD6oz1ZJnIqDaUppsoRuZdnbhAFPslWlTGk0q8//9l34DLwzOrviHCOE+Oy1R5A1VZ994/CPg1Cl3naw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/zrender" "*"
|
"@types/zrender" "*"
|
||||||
|
|
||||||
@@ -1396,6 +1396,13 @@
|
|||||||
resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03"
|
resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.0.tgz#57f228f2b80c046b4a1bd5cac031f81f207f4f03"
|
||||||
integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==
|
integrity sha512-RaE0B+14ToE4l6UqdarKPnXwVDuigfFv+5j9Dze/Nqr23yyuqdNvzcZi3xB+3Agvi5R4EOgAksfv3lXX4vBt9w==
|
||||||
|
|
||||||
|
"@types/mdast@^3.0.0":
|
||||||
|
version "3.0.3"
|
||||||
|
resolved "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz#2d7d671b1cd1ea3deb306ea75036c2a0407d2deb"
|
||||||
|
integrity sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "*"
|
||||||
|
|
||||||
"@types/mime@*":
|
"@types/mime@*":
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a"
|
resolved "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz#c893b73721db73699943bfc3653b1deb7faa4a3a"
|
||||||
@@ -1412,9 +1419,9 @@
|
|||||||
integrity sha512-OlwyyyoY81P8f7FU0zILUPxqQQ3/W+CwbqI6dWvOxaH8w948fAl1+hOG9C9ZgJcwzG+aloJcsastY4c4p91R1Q==
|
integrity sha512-OlwyyyoY81P8f7FU0zILUPxqQQ3/W+CwbqI6dWvOxaH8w948fAl1+hOG9C9ZgJcwzG+aloJcsastY4c4p91R1Q==
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "14.14.7"
|
version "14.14.8"
|
||||||
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.7.tgz#8ea1e8f8eae2430cf440564b98c6dfce1ec5945d"
|
resolved "https://registry.npmjs.org/@types/node/-/node-14.14.8.tgz#2127bd81949a95c8b7d3240f3254352d72563aec"
|
||||||
integrity sha512-Zw1vhUSQZYw+7u5dAwNbIA9TuTotpzY/OF7sJM9FqPOF3SPjKnxrjoTktXDZgUjybf4cWVBP7O8wvKdSaGHweg==
|
integrity sha512-z/5Yd59dCKI5kbxauAJgw6dLPzW+TNOItNE00PkpzNwUIEwdj/Lsqwq94H5DdYBX7C13aRA0CY32BK76+neEUA==
|
||||||
|
|
||||||
"@types/normalize-package-data@^2.4.0":
|
"@types/normalize-package-data@^2.4.0":
|
||||||
version "2.4.0"
|
version "2.4.0"
|
||||||
@@ -1471,14 +1478,14 @@
|
|||||||
rollup "^0.63.4"
|
rollup "^0.63.4"
|
||||||
|
|
||||||
"@types/serve-static@*":
|
"@types/serve-static@*":
|
||||||
version "1.13.7"
|
version "1.13.8"
|
||||||
resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.7.tgz#e51b51a0becda910f9fd04c718044da69d6c492e"
|
resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.8.tgz#851129d434433c7082148574ffec263d58309c46"
|
||||||
integrity sha512-3diZWucbR+xTmbDlU+FRRxBf+31OhFew7cJXML/zh9NmvSPTNoFecAwHB66BUqFgENJtqMiyl7JAwUE/siqdLw==
|
integrity sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/mime" "*"
|
"@types/mime" "*"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/unist@^2.0.0", "@types/unist@^2.0.2":
|
"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
|
resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
|
||||||
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
|
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
|
||||||
@@ -1488,10 +1495,10 @@
|
|||||||
resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
|
resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
|
||||||
integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
|
integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==
|
||||||
|
|
||||||
"@types/yargs@^15.0.9":
|
"@types/yargs@^15.0.10":
|
||||||
version "15.0.9"
|
version "15.0.10"
|
||||||
resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.9.tgz#524cd7998fe810cdb02f26101b699cccd156ff19"
|
resolved "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.10.tgz#0fe3c8173a0d5c3e780b389050140c3f5ea6ea74"
|
||||||
integrity sha512-HmU8SeIRhZCWcnRskCs36Q1Q00KBV6Cqh/ora8WN1+22dY07AZdn6Gel8QZ3t26XYPImtcL8WV/eqjhVmMEw4g==
|
integrity sha512-z8PNtlhrj7eJNLmrAivM7rjBESG6JwC5xP3RVk12i/8HVP7Xnx/sEmERnRImyEuUaJfO942X0qMOYsoupaJbZQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
@@ -1505,61 +1512,61 @@
|
|||||||
resolved "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609"
|
resolved "https://registry.npmjs.org/@types/zxcvbn/-/zxcvbn-4.4.0.tgz#fbc1d941cc6d9d37d18405c513ba6b294f89b609"
|
||||||
integrity sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg==
|
integrity sha512-GQLOT+SN20a+AI51y3fAimhyTF4Y0RG+YP3gf91OibIZ7CJmPFgoZi+ZR5a+vRbS01LbQosITWum4ATmJ1Z6Pg==
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@^4.6.1":
|
"@typescript-eslint/eslint-plugin@^4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.7.0.tgz#85c9bbda00c0cb604d3c241f7bc7fb171a2d3479"
|
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.1.tgz#b362abe0ee478a6c6d06c14552a6497f0b480769"
|
||||||
integrity sha512-li9aiSVBBd7kU5VlQlT1AqP0uWGDK6JYKUQ9cVDnOg34VNnd9t4jr0Yqc/bKxJr/tDCPDaB4KzoSFN9fgVxe/Q==
|
integrity sha512-d7LeQ7dbUrIv5YVFNzGgaW3IQKMmnmKFneRWagRlGYOSfLJVaRbj/FrBNOBC1a3tVO+TgNq1GbHvRtg1kwL0FQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/experimental-utils" "4.7.0"
|
"@typescript-eslint/experimental-utils" "4.8.1"
|
||||||
"@typescript-eslint/scope-manager" "4.7.0"
|
"@typescript-eslint/scope-manager" "4.8.1"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
functional-red-black-tree "^1.0.1"
|
functional-red-black-tree "^1.0.1"
|
||||||
regexpp "^3.0.0"
|
regexpp "^3.0.0"
|
||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/experimental-utils@4.7.0":
|
"@typescript-eslint/experimental-utils@4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.7.0.tgz#8d1058c38bec3d3bbd9c898a1c32318d80faf3c5"
|
resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.1.tgz#27275c20fa4336df99ebcf6195f7d7aa7aa9f22d"
|
||||||
integrity sha512-cymzovXAiD4EF+YoHAB5Oh02MpnXjvyaOb+v+BdpY7lsJXZQN34oIETeUwVT2XfV9rSNpXaIcknDLfupO/tUoA==
|
integrity sha512-WigyLn144R3+lGATXW4nNcDJ9JlTkG8YdBWHkDlN0lC3gUGtDi7Pe3h5GPvFKMcRz8KbZpm9FJV9NTW8CpRHpg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/json-schema" "^7.0.3"
|
"@types/json-schema" "^7.0.3"
|
||||||
"@typescript-eslint/scope-manager" "4.7.0"
|
"@typescript-eslint/scope-manager" "4.8.1"
|
||||||
"@typescript-eslint/types" "4.7.0"
|
"@typescript-eslint/types" "4.8.1"
|
||||||
"@typescript-eslint/typescript-estree" "4.7.0"
|
"@typescript-eslint/typescript-estree" "4.8.1"
|
||||||
eslint-scope "^5.0.0"
|
eslint-scope "^5.0.0"
|
||||||
eslint-utils "^2.0.0"
|
eslint-utils "^2.0.0"
|
||||||
|
|
||||||
"@typescript-eslint/parser@^4.6.1":
|
"@typescript-eslint/parser@^4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.7.0.tgz#44bdab0f788b478178368baa65d3365fdc63da1c"
|
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.8.1.tgz#4fe2fbdbb67485bafc4320b3ae91e34efe1219d1"
|
||||||
integrity sha512-+meGV8bMP1sJHBI2AFq1GeTwofcGiur8LoIr6v+rEmD9knyCqDlrQcFHR0KDDfldHIFDU/enZ53fla6ReF4wRw==
|
integrity sha512-QND8XSVetATHK9y2Ltc/XBl5Ro7Y62YuZKnPEwnNPB8E379fDsvzJ1dMJ46fg/VOmk0hXhatc+GXs5MaXuL5Uw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/scope-manager" "4.7.0"
|
"@typescript-eslint/scope-manager" "4.8.1"
|
||||||
"@typescript-eslint/types" "4.7.0"
|
"@typescript-eslint/types" "4.8.1"
|
||||||
"@typescript-eslint/typescript-estree" "4.7.0"
|
"@typescript-eslint/typescript-estree" "4.8.1"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@4.7.0":
|
"@typescript-eslint/scope-manager@4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.7.0.tgz#2115526085fb72723ccdc1eeae75dec7126220ed"
|
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.8.1.tgz#e343c475f8f1d15801b546cb17d7f309b768fdce"
|
||||||
integrity sha512-ILITvqwDJYbcDCROj6+Ob0oCKNg3SH46iWcNcTIT9B5aiVssoTYkhKjxOMNzR1F7WSJkik4zmuqve5MdnA0DyA==
|
integrity sha512-r0iUOc41KFFbZdPAdCS4K1mXivnSZqXS5D9oW+iykQsRlTbQRfuFRSW20xKDdYiaCoH+SkSLeIF484g3kWzwOQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "4.7.0"
|
"@typescript-eslint/types" "4.8.1"
|
||||||
"@typescript-eslint/visitor-keys" "4.7.0"
|
"@typescript-eslint/visitor-keys" "4.8.1"
|
||||||
|
|
||||||
"@typescript-eslint/types@4.7.0":
|
"@typescript-eslint/types@4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.7.0.tgz#5e95ef5c740f43d942542b35811f87b62fccca69"
|
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.8.1.tgz#23829c73c5fc6f4fcd5346a7780b274f72fee222"
|
||||||
integrity sha512-uLszFe0wExJc+I7q0Z/+BnP7wao/kzX0hB5vJn4LIgrfrMLgnB2UXoReV19lkJQS1a1mHWGGODSxnBx6JQC3Sg==
|
integrity sha512-ave2a18x2Y25q5K05K/U3JQIe2Av4+TNi/2YuzyaXLAsDx6UZkz1boZ7nR/N6Wwae2PpudTZmHFXqu7faXfHmA==
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@4.7.0":
|
"@typescript-eslint/typescript-estree@4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.7.0.tgz#539531167f05ba20eb0b6785567076679e29d393"
|
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.1.tgz#7307e3f2c9e95df7daa8dc0a34b8c43b7ec0dd32"
|
||||||
integrity sha512-5XZRQznD1MfUmxu1t8/j2Af4OxbA7EFU2rbo0No7meb46eHgGkSieFdfV6omiC/DGIBhH9H9gXn7okBbVOm8jw==
|
integrity sha512-bJ6Fn/6tW2g7WIkCWh3QRlaSU7CdUUK52shx36/J7T5oTQzANvi6raoTsbwGM11+7eBbeem8hCCKbyvAc0X3sQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "4.7.0"
|
"@typescript-eslint/types" "4.8.1"
|
||||||
"@typescript-eslint/visitor-keys" "4.7.0"
|
"@typescript-eslint/visitor-keys" "4.8.1"
|
||||||
debug "^4.1.1"
|
debug "^4.1.1"
|
||||||
globby "^11.0.1"
|
globby "^11.0.1"
|
||||||
is-glob "^4.0.1"
|
is-glob "^4.0.1"
|
||||||
@@ -1567,12 +1574,12 @@
|
|||||||
semver "^7.3.2"
|
semver "^7.3.2"
|
||||||
tsutils "^3.17.1"
|
tsutils "^3.17.1"
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@4.7.0":
|
"@typescript-eslint/visitor-keys@4.8.1":
|
||||||
version "4.7.0"
|
version "4.8.1"
|
||||||
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.7.0.tgz#6783824f22acfc49e754970ed21b88ac03b80e6f"
|
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.1.tgz#794f68ee292d1b2e3aa9690ebedfcb3a8c90e3c3"
|
||||||
integrity sha512-aDJDWuCRsf1lXOtignlfiPODkzSxxop7D0rZ91L6ZuMlcMCSh0YyK+gAfo5zN/ih6WxMwhoXgJWC3cWQdaKC+A==
|
integrity sha512-3nrwXFdEYALQh/zW8rFwP4QltqsanCDz4CwWMPiIZmwlk9GlvBeueEIbq05SEq4ganqM0g9nh02xXgv5XI3PeQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types" "4.7.0"
|
"@typescript-eslint/types" "4.8.1"
|
||||||
eslint-visitor-keys "^2.0.0"
|
eslint-visitor-keys "^2.0.0"
|
||||||
|
|
||||||
"@vue/compiler-core@*", "@vue/compiler-core@3.0.2", "@vue/compiler-core@^3.0.0-rc.5":
|
"@vue/compiler-core@*", "@vue/compiler-core@3.0.2", "@vue/compiler-core@^3.0.0-rc.5":
|
||||||
@@ -1725,7 +1732,7 @@
|
|||||||
vscode-languageserver-textdocument "^1.0.1"
|
vscode-languageserver-textdocument "^1.0.1"
|
||||||
vscode-uri "^2.1.2"
|
vscode-uri "^2.1.2"
|
||||||
|
|
||||||
"@vueuse/core@^4.0.0-beta.41":
|
"@vueuse/core@4.0.0-beta.41":
|
||||||
version "4.0.0-beta.41"
|
version "4.0.0-beta.41"
|
||||||
resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.0.0-beta.41.tgz#0058aed5ade75ae2866283498009ad5172cbae84"
|
resolved "https://registry.npmjs.org/@vueuse/core/-/core-4.0.0-beta.41.tgz#0058aed5ade75ae2866283498009ad5172cbae84"
|
||||||
integrity sha512-CgUih65PzYScorm1S4F93e6XXm+qxA8GrRLOSB1kXaqtP6vXedwkBxKkNEYNACx4reL4VEHqM/BrM6FajXkQUg==
|
integrity sha512-CgUih65PzYScorm1S4F93e6XXm+qxA8GrRLOSB1kXaqtP6vXedwkBxKkNEYNACx4reL4VEHqM/BrM6FajXkQUg==
|
||||||
@@ -1850,10 +1857,10 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
color-convert "^2.0.1"
|
color-convert "^2.0.1"
|
||||||
|
|
||||||
ant-design-vue@^2.0.0-rc.1:
|
ant-design-vue@2.0.0-beta.15:
|
||||||
version "2.0.0-rc.1"
|
version "2.0.0-beta.15"
|
||||||
resolved "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-2.0.0-rc.1.tgz#2ef02475f3aa4c1474f2fe3cf44a52c34787be02"
|
resolved "https://registry.npmjs.org/ant-design-vue/-/ant-design-vue-2.0.0-beta.15.tgz#3c787dabb70a33885d0e751e58f9a5610ed06134"
|
||||||
integrity sha512-iKXkFtTHarvLHV7LWmYh6g/Cmkv+xK+vS621A1Qvg37Z6lCGg3K9BGAizmklAYzOTiPz0Ltt63eSiNqYMGh52g==
|
integrity sha512-OxZy+ZYU3LauIL4Rhqwy441K/iD++Cit6upnQy5+LVUrX0PSObPqPqMWVpncbAmJJYTEz88gkvgGeYqBdzouWA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@ant-design-vue/use" "^0.0.1-0"
|
"@ant-design-vue/use" "^0.0.1-0"
|
||||||
"@ant-design/icons-vue" "^5.1.5"
|
"@ant-design/icons-vue" "^5.1.5"
|
||||||
@@ -2301,11 +2308,6 @@ caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
|
|||||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz#fce86d321369603c2bc855ee0e901a7f49f8310b"
|
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001158.tgz#fce86d321369603c2bc855ee0e901a7f49f8310b"
|
||||||
integrity sha512-s5loVYY+yKpuVA3HyW8BarzrtJvwHReuzugQXlv1iR3LKSReoFXRm86mT6hT7PEF5RxW+XQZg+6nYjlywYzQ+g==
|
integrity sha512-s5loVYY+yKpuVA3HyW8BarzrtJvwHReuzugQXlv1iR3LKSReoFXRm86mT6hT7PEF5RxW+XQZg+6nYjlywYzQ+g==
|
||||||
|
|
||||||
ccount@^1.0.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043"
|
|
||||||
integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==
|
|
||||||
|
|
||||||
cfb@^1.1.4:
|
cfb@^1.1.4:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz#6a4d0872b525ed60349e1ef51fb4b0bf73eca9a8"
|
resolved "https://registry.npmjs.org/cfb/-/cfb-1.2.0.tgz#6a4d0872b525ed60349e1ef51fb4b0bf73eca9a8"
|
||||||
@@ -2349,11 +2351,6 @@ chalk@^3.0.0:
|
|||||||
ansi-styles "^4.1.0"
|
ansi-styles "^4.1.0"
|
||||||
supports-color "^7.1.0"
|
supports-color "^7.1.0"
|
||||||
|
|
||||||
character-entities-html4@^1.0.0:
|
|
||||||
version "1.1.4"
|
|
||||||
resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz#0e64b0a3753ddbf1fdc044c5fd01d0199a02e125"
|
|
||||||
integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==
|
|
||||||
|
|
||||||
character-entities-legacy@^1.0.0:
|
character-entities-legacy@^1.0.0:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
|
resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1"
|
||||||
@@ -2522,11 +2519,6 @@ codepage@~1.14.0:
|
|||||||
commander "~2.14.1"
|
commander "~2.14.1"
|
||||||
exit-on-epipe "~1.0.1"
|
exit-on-epipe "~1.0.1"
|
||||||
|
|
||||||
collapse-white-space@^1.0.2:
|
|
||||||
version "1.0.6"
|
|
||||||
resolved "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz#e63629c0016665792060dbbeb79c42239d2c5287"
|
|
||||||
integrity sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==
|
|
||||||
|
|
||||||
collection-visit@^1.0.0:
|
collection-visit@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
|
resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
|
||||||
@@ -3001,7 +2993,7 @@ debug@^3.1.0, debug@^3.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.1"
|
ms "^2.1.1"
|
||||||
|
|
||||||
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0:
|
debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0:
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
|
resolved "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1"
|
||||||
integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==
|
integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==
|
||||||
@@ -3263,9 +3255,9 @@ ejs@^2.6.1:
|
|||||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||||
|
|
||||||
electron-to-chromium@^1.3.591:
|
electron-to-chromium@^1.3.591:
|
||||||
version "1.3.596"
|
version "1.3.598"
|
||||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.596.tgz#c7ed98512c7ff36ddcbfed9e54e6355335c35257"
|
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.598.tgz#8f757018902ab6190323a8c5f6124d854893a35b"
|
||||||
integrity sha512-nLO2Wd2yU42eSoNJVQKNf89CcEGqeFZd++QsnN2XIgje1s/19AgctfjLIbPORlvcCO8sYjLwX4iUgDdusOY8Sg==
|
integrity sha512-G5Ztk23/ubLYVPxPXnB1uu105uzIPd4xB/D8ld8x1GaSC9+vU9NZL16nYZya8H77/7CCKKN7dArzJL3pBs8N7A==
|
||||||
|
|
||||||
emoji-regex@^7.0.1:
|
emoji-regex@^7.0.1:
|
||||||
version "7.0.3"
|
version "7.0.3"
|
||||||
@@ -3698,6 +3690,13 @@ file-entry-cache@^5.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
flat-cache "^2.0.1"
|
flat-cache "^2.0.1"
|
||||||
|
|
||||||
|
file-entry-cache@^6.0.0:
|
||||||
|
version "6.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a"
|
||||||
|
integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==
|
||||||
|
dependencies:
|
||||||
|
flat-cache "^3.0.4"
|
||||||
|
|
||||||
fill-range@^4.0.0:
|
fill-range@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
|
||||||
@@ -3792,11 +3791,24 @@ flat-cache@^2.0.1:
|
|||||||
rimraf "2.6.3"
|
rimraf "2.6.3"
|
||||||
write "1.0.3"
|
write "1.0.3"
|
||||||
|
|
||||||
|
flat-cache@^3.0.4:
|
||||||
|
version "3.0.4"
|
||||||
|
resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
|
||||||
|
integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
|
||||||
|
dependencies:
|
||||||
|
flatted "^3.1.0"
|
||||||
|
rimraf "^3.0.2"
|
||||||
|
|
||||||
flatted@^2.0.0:
|
flatted@^2.0.0:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
|
resolved "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138"
|
||||||
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
|
integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==
|
||||||
|
|
||||||
|
flatted@^3.1.0:
|
||||||
|
version "3.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067"
|
||||||
|
integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==
|
||||||
|
|
||||||
follow-redirects@^1.0.0, follow-redirects@^1.10.0:
|
follow-redirects@^1.0.0, follow-redirects@^1.10.0:
|
||||||
version "1.13.0"
|
version "1.13.0"
|
||||||
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
|
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db"
|
||||||
@@ -4415,7 +4427,7 @@ inflight@^1.0.4:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
wrappy "1"
|
wrappy "1"
|
||||||
|
|
||||||
inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
|
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
@@ -4483,11 +4495,6 @@ is-alphabetical@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
|
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d"
|
||||||
integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
|
integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==
|
||||||
|
|
||||||
is-alphanumeric@^1.0.0:
|
|
||||||
version "1.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4"
|
|
||||||
integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ=
|
|
||||||
|
|
||||||
is-alphanumerical@^1.0.0:
|
is-alphanumerical@^1.0.0:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
|
resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf"
|
||||||
@@ -4719,21 +4726,11 @@ is-utf8@^0.2.0, is-utf8@^0.2.1:
|
|||||||
resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||||
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
|
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
|
||||||
|
|
||||||
is-whitespace-character@^1.0.0:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz#0858edd94a95594c7c9dd0b5c174ec6e45ee4aa7"
|
|
||||||
integrity sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==
|
|
||||||
|
|
||||||
is-windows@^1.0.1, is-windows@^1.0.2:
|
is-windows@^1.0.1, is-windows@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
||||||
|
|
||||||
is-word-character@^1.0.0:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz#ce0e73216f98599060592f62ff31354ddbeb0230"
|
|
||||||
integrity sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==
|
|
||||||
|
|
||||||
is-wsl@^2.1.1:
|
is-wsl@^2.1.1:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
|
||||||
@@ -4933,10 +4930,10 @@ klona@^2.0.4:
|
|||||||
resolved "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
|
resolved "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0"
|
||||||
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
|
integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==
|
||||||
|
|
||||||
known-css-properties@^0.19.0:
|
known-css-properties@^0.20.0:
|
||||||
version "0.19.0"
|
version "0.20.0"
|
||||||
resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.19.0.tgz#5d92b7fa16c72d971bda9b7fe295bdf61836ee5b"
|
resolved "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.20.0.tgz#0570831661b47dd835293218381166090ff60e96"
|
||||||
integrity sha512-eYboRV94Vco725nKMlpkn3nV2+96p9c3gKXRsYqAJSswSENvBhN7n5L+uDhY58xQa0UukWsDMTGELzmD8Q+wTA==
|
integrity sha512-URvsjaA9ypfreqJ2/ylDr5MUERhJZ+DhguoWRr2xgS5C7aGCalXo+ewL+GixgKBfhT2vuL02nbIgNGqVWgTOYw==
|
||||||
|
|
||||||
koa-bodyparser@^4.3.0:
|
koa-bodyparser@^4.3.0:
|
||||||
version "4.3.0"
|
version "4.3.0"
|
||||||
@@ -5227,7 +5224,7 @@ log-update@^4.0.0:
|
|||||||
slice-ansi "^4.0.0"
|
slice-ansi "^4.0.0"
|
||||||
wrap-ansi "^6.2.0"
|
wrap-ansi "^6.2.0"
|
||||||
|
|
||||||
longest-streak@^2.0.1:
|
longest-streak@^2.0.0:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
|
resolved "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4"
|
||||||
integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
|
integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==
|
||||||
@@ -5320,29 +5317,37 @@ map-visit@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
markdown-escapes@^1.0.0:
|
|
||||||
version "1.0.4"
|
|
||||||
resolved "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz#c95415ef451499d7602b91095f3c8e8975f78535"
|
|
||||||
integrity sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==
|
|
||||||
|
|
||||||
markdown-table@^2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b"
|
|
||||||
integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==
|
|
||||||
dependencies:
|
|
||||||
repeat-string "^1.0.0"
|
|
||||||
|
|
||||||
mathml-tag-names@^2.1.3:
|
mathml-tag-names@^2.1.3:
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
|
resolved "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz#4ddadd67308e780cf16a47685878ee27b736a0a3"
|
||||||
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
integrity sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==
|
||||||
|
|
||||||
mdast-util-compact@^2.0.0:
|
mdast-util-from-markdown@^0.8.0:
|
||||||
version "2.0.1"
|
version "0.8.1"
|
||||||
resolved "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490"
|
resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.1.tgz#781371d493cac11212947226190270c15dc97116"
|
||||||
integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==
|
integrity sha512-qJXNcFcuCSPqUF0Tb0uYcFDIq67qwB3sxo9RPdf9vG8T90ViKnksFqdB/Coq2a7sTnxL/Ify2y7aIQXDkQFH0w==
|
||||||
dependencies:
|
dependencies:
|
||||||
unist-util-visit "^2.0.0"
|
"@types/mdast" "^3.0.0"
|
||||||
|
mdast-util-to-string "^1.0.0"
|
||||||
|
micromark "~2.10.0"
|
||||||
|
parse-entities "^2.0.0"
|
||||||
|
|
||||||
|
mdast-util-to-markdown@^0.5.0:
|
||||||
|
version "0.5.3"
|
||||||
|
resolved "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.5.3.tgz#e05c54a3ccd239bab63c48a1e5b5747f0dcd5aca"
|
||||||
|
integrity sha512-sr8q7fQJ1xoCqZSXW6dO/MYu2Md+a4Hfk9uO+XHCfiBhVM0EgWtfAV7BuN+ff6otUeu2xDyt1o7vhZGwOG3+BA==
|
||||||
|
dependencies:
|
||||||
|
"@types/unist" "^2.0.0"
|
||||||
|
longest-streak "^2.0.0"
|
||||||
|
mdast-util-to-string "^1.0.0"
|
||||||
|
parse-entities "^2.0.0"
|
||||||
|
repeat-string "^1.0.0"
|
||||||
|
zwitch "^1.0.0"
|
||||||
|
|
||||||
|
mdast-util-to-string@^1.0.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz#27055500103f51637bd07d01da01eb1967a43527"
|
||||||
|
integrity sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==
|
||||||
|
|
||||||
media-typer@0.3.0:
|
media-typer@0.3.0:
|
||||||
version "0.3.0"
|
version "0.3.0"
|
||||||
@@ -5380,23 +5385,6 @@ meow@^4.0.0:
|
|||||||
redent "^2.0.0"
|
redent "^2.0.0"
|
||||||
trim-newlines "^2.0.0"
|
trim-newlines "^2.0.0"
|
||||||
|
|
||||||
meow@^7.1.1:
|
|
||||||
version "7.1.1"
|
|
||||||
resolved "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz#7c01595e3d337fcb0ec4e8eed1666ea95903d306"
|
|
||||||
integrity sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==
|
|
||||||
dependencies:
|
|
||||||
"@types/minimist" "^1.2.0"
|
|
||||||
camelcase-keys "^6.2.2"
|
|
||||||
decamelize-keys "^1.1.0"
|
|
||||||
hard-rejection "^2.1.0"
|
|
||||||
minimist-options "4.1.0"
|
|
||||||
normalize-package-data "^2.5.0"
|
|
||||||
read-pkg-up "^7.0.1"
|
|
||||||
redent "^3.0.0"
|
|
||||||
trim-newlines "^3.0.0"
|
|
||||||
type-fest "^0.13.1"
|
|
||||||
yargs-parser "^18.1.3"
|
|
||||||
|
|
||||||
meow@^8.0.0:
|
meow@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz#1aa10ee61046719e334ffdc038bb5069250ec99a"
|
resolved "https://registry.npmjs.org/meow/-/meow-8.0.0.tgz#1aa10ee61046719e334ffdc038bb5069250ec99a"
|
||||||
@@ -5436,6 +5424,14 @@ merge@^1.2.1:
|
|||||||
resolved "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
|
resolved "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
|
||||||
integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
|
integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
|
||||||
|
|
||||||
|
micromark@~2.10.0:
|
||||||
|
version "2.10.1"
|
||||||
|
resolved "https://registry.npmjs.org/micromark/-/micromark-2.10.1.tgz#cd73f54e0656f10e633073db26b663a221a442a7"
|
||||||
|
integrity sha512-fUuVF8sC1X7wsCS29SYQ2ZfIZYbTymp0EYr6sab3idFjigFFjGa5UwoniPlV9tAgntjuapW1t9U+S0yDYeGKHQ==
|
||||||
|
dependencies:
|
||||||
|
debug "^4.0.0"
|
||||||
|
parse-entities "^2.0.0"
|
||||||
|
|
||||||
micromatch@^3.0.4:
|
micromatch@^3.0.4:
|
||||||
version "3.1.10"
|
version "3.1.10"
|
||||||
resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
|
||||||
@@ -5658,9 +5654,9 @@ node-modules-regexp@^1.0.0:
|
|||||||
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
|
integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=
|
||||||
|
|
||||||
node-releases@^1.1.66:
|
node-releases@^1.1.66:
|
||||||
version "1.1.66"
|
version "1.1.67"
|
||||||
resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz#609bd0dc069381015cd982300bae51ab4f1b1814"
|
resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12"
|
||||||
integrity sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==
|
integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==
|
||||||
|
|
||||||
normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
|
normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
@@ -6309,7 +6305,7 @@ postcss-value-parser@^4.1.0:
|
|||||||
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
|
resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb"
|
||||||
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
||||||
|
|
||||||
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6:
|
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.35, postcss@^7.0.5, postcss@^7.0.6:
|
||||||
version "7.0.35"
|
version "7.0.35"
|
||||||
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
|
resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24"
|
||||||
integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
|
integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==
|
||||||
@@ -6626,63 +6622,35 @@ relateurl@^0.2.7:
|
|||||||
resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
|
||||||
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
|
integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
|
||||||
|
|
||||||
remark-parse@^8.0.0:
|
remark-parse@^9.0.0:
|
||||||
version "8.0.3"
|
version "9.0.0"
|
||||||
resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz#9c62aa3b35b79a486454c690472906075f40c7e1"
|
resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz#4d20a299665880e4f4af5d90b7c7b8a935853640"
|
||||||
integrity sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==
|
integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==
|
||||||
dependencies:
|
dependencies:
|
||||||
ccount "^1.0.0"
|
mdast-util-from-markdown "^0.8.0"
|
||||||
collapse-white-space "^1.0.2"
|
|
||||||
is-alphabetical "^1.0.0"
|
|
||||||
is-decimal "^1.0.0"
|
|
||||||
is-whitespace-character "^1.0.0"
|
|
||||||
is-word-character "^1.0.0"
|
|
||||||
markdown-escapes "^1.0.0"
|
|
||||||
parse-entities "^2.0.0"
|
|
||||||
repeat-string "^1.5.4"
|
|
||||||
state-toggle "^1.0.0"
|
|
||||||
trim "0.0.1"
|
|
||||||
trim-trailing-lines "^1.0.0"
|
|
||||||
unherit "^1.0.4"
|
|
||||||
unist-util-remove-position "^2.0.0"
|
|
||||||
vfile-location "^3.0.0"
|
|
||||||
xtend "^4.0.1"
|
|
||||||
|
|
||||||
remark-stringify@^8.0.0:
|
remark-stringify@^9.0.0:
|
||||||
version "8.1.1"
|
version "9.0.0"
|
||||||
resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz#e2a9dc7a7bf44e46a155ec78996db896780d8ce5"
|
resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.0.tgz#8ba0c9e4167c42733832215a81550489759e3793"
|
||||||
integrity sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==
|
integrity sha512-8x29DpTbVzEc6Dwb90qhxCtbZ6hmj3BxWWDpMhA+1WM4dOEGH5U5/GFe3Be5Hns5MvPSFAr1e2KSVtKZkK5nUw==
|
||||||
dependencies:
|
dependencies:
|
||||||
ccount "^1.0.0"
|
mdast-util-to-markdown "^0.5.0"
|
||||||
is-alphanumeric "^1.0.0"
|
|
||||||
is-decimal "^1.0.0"
|
|
||||||
is-whitespace-character "^1.0.0"
|
|
||||||
longest-streak "^2.0.1"
|
|
||||||
markdown-escapes "^1.0.0"
|
|
||||||
markdown-table "^2.0.0"
|
|
||||||
mdast-util-compact "^2.0.0"
|
|
||||||
parse-entities "^2.0.0"
|
|
||||||
repeat-string "^1.5.4"
|
|
||||||
state-toggle "^1.0.0"
|
|
||||||
stringify-entities "^3.0.0"
|
|
||||||
unherit "^1.0.4"
|
|
||||||
xtend "^4.0.1"
|
|
||||||
|
|
||||||
remark@^12.0.0:
|
remark@^13.0.0:
|
||||||
version "12.0.1"
|
version "13.0.0"
|
||||||
resolved "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz#f1ddf68db7be71ca2bad0a33cd3678b86b9c709f"
|
resolved "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz#d15d9bf71a402f40287ebe36067b66d54868e425"
|
||||||
integrity sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==
|
integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==
|
||||||
dependencies:
|
dependencies:
|
||||||
remark-parse "^8.0.0"
|
remark-parse "^9.0.0"
|
||||||
remark-stringify "^8.0.0"
|
remark-stringify "^9.0.0"
|
||||||
unified "^9.0.0"
|
unified "^9.1.0"
|
||||||
|
|
||||||
repeat-element@^1.1.2:
|
repeat-element@^1.1.2:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
|
resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
|
||||||
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
|
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
|
||||||
|
|
||||||
repeat-string@^1.0.0, repeat-string@^1.5.4, repeat-string@^1.6.1:
|
repeat-string@^1.0.0, repeat-string@^1.6.1:
|
||||||
version "1.6.1"
|
version "1.6.1"
|
||||||
resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
|
||||||
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
|
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
|
||||||
@@ -7186,16 +7154,16 @@ source-map-url@^0.4.0:
|
|||||||
resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
|
||||||
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
|
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
|
||||||
|
|
||||||
|
source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
||||||
|
version "0.6.1"
|
||||||
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||||
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
|
|
||||||
source-map@^0.5.0, source-map@^0.5.6:
|
source-map@^0.5.0, source-map@^0.5.6:
|
||||||
version "0.5.7"
|
version "0.5.7"
|
||||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||||
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
||||||
|
|
||||||
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
|
||||||
version "0.6.1"
|
|
||||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
|
||||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
|
||||||
|
|
||||||
source-map@^0.7.3, source-map@~0.7.2:
|
source-map@^0.7.3, source-map@~0.7.2:
|
||||||
version "0.7.3"
|
version "0.7.3"
|
||||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||||
@@ -7270,11 +7238,6 @@ ssf@~0.11.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
frac "~1.1.2"
|
frac "~1.1.2"
|
||||||
|
|
||||||
state-toggle@^1.0.0:
|
|
||||||
version "1.0.3"
|
|
||||||
resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz#e123b16a88e143139b09c6852221bc9815917dfe"
|
|
||||||
integrity sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==
|
|
||||||
|
|
||||||
static-extend@^0.1.1:
|
static-extend@^0.1.1:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
|
||||||
@@ -7343,15 +7306,6 @@ string_decoder@~1.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "~5.1.0"
|
safe-buffer "~5.1.0"
|
||||||
|
|
||||||
stringify-entities@^3.0.0:
|
|
||||||
version "3.1.0"
|
|
||||||
resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903"
|
|
||||||
integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==
|
|
||||||
dependencies:
|
|
||||||
character-entities-html4 "^1.0.0"
|
|
||||||
character-entities-legacy "^1.0.0"
|
|
||||||
xtend "^4.0.0"
|
|
||||||
|
|
||||||
stringify-object@^3.3.0:
|
stringify-object@^3.3.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
|
resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629"
|
||||||
@@ -7472,22 +7426,22 @@ stylelint-order@^4.1.0:
|
|||||||
postcss "^7.0.31"
|
postcss "^7.0.31"
|
||||||
postcss-sorting "^5.0.1"
|
postcss-sorting "^5.0.1"
|
||||||
|
|
||||||
stylelint@^13.7.2:
|
stylelint@^13.8.0:
|
||||||
version "13.7.2"
|
version "13.8.0"
|
||||||
resolved "https://registry.npmjs.org/stylelint/-/stylelint-13.7.2.tgz#6f3c58eea4077680ed0ceb0d064b22b100970486"
|
resolved "https://registry.npmjs.org/stylelint/-/stylelint-13.8.0.tgz#446765dbe25e3617f819a0165956faf2563ddc23"
|
||||||
integrity sha512-mmieorkfmO+ZA6CNDu1ic9qpt4tFvH2QUB7vqXgrMVHe5ENU69q7YDq0YUg/UHLuCsZOWhUAvcMcLzLDIERzSg==
|
integrity sha512-iHH3dv3UI23SLDrH4zMQDjLT9/dDIz/IpoFeuNxZmEx86KtfpjDOscxLTFioQyv+2vQjPlRZnK0UoJtfxLICXQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@stylelint/postcss-css-in-js" "^0.37.2"
|
"@stylelint/postcss-css-in-js" "^0.37.2"
|
||||||
"@stylelint/postcss-markdown" "^0.36.1"
|
"@stylelint/postcss-markdown" "^0.36.2"
|
||||||
autoprefixer "^9.8.6"
|
autoprefixer "^9.8.6"
|
||||||
balanced-match "^1.0.0"
|
balanced-match "^1.0.0"
|
||||||
chalk "^4.1.0"
|
chalk "^4.1.0"
|
||||||
cosmiconfig "^7.0.0"
|
cosmiconfig "^7.0.0"
|
||||||
debug "^4.1.1"
|
debug "^4.2.0"
|
||||||
execall "^2.0.0"
|
execall "^2.0.0"
|
||||||
fast-glob "^3.2.4"
|
fast-glob "^3.2.4"
|
||||||
fastest-levenshtein "^1.0.12"
|
fastest-levenshtein "^1.0.12"
|
||||||
file-entry-cache "^5.0.1"
|
file-entry-cache "^6.0.0"
|
||||||
get-stdin "^8.0.0"
|
get-stdin "^8.0.0"
|
||||||
global-modules "^2.0.0"
|
global-modules "^2.0.0"
|
||||||
globby "^11.0.1"
|
globby "^11.0.1"
|
||||||
@@ -7496,14 +7450,14 @@ stylelint@^13.7.2:
|
|||||||
ignore "^5.1.8"
|
ignore "^5.1.8"
|
||||||
import-lazy "^4.0.0"
|
import-lazy "^4.0.0"
|
||||||
imurmurhash "^0.1.4"
|
imurmurhash "^0.1.4"
|
||||||
known-css-properties "^0.19.0"
|
known-css-properties "^0.20.0"
|
||||||
lodash "^4.17.20"
|
lodash "^4.17.20"
|
||||||
log-symbols "^4.0.0"
|
log-symbols "^4.0.0"
|
||||||
mathml-tag-names "^2.1.3"
|
mathml-tag-names "^2.1.3"
|
||||||
meow "^7.1.1"
|
meow "^8.0.0"
|
||||||
micromatch "^4.0.2"
|
micromatch "^4.0.2"
|
||||||
normalize-selector "^0.2.0"
|
normalize-selector "^0.2.0"
|
||||||
postcss "^7.0.32"
|
postcss "^7.0.35"
|
||||||
postcss-html "^0.36.0"
|
postcss-html "^0.36.0"
|
||||||
postcss-less "^3.1.4"
|
postcss-less "^3.1.4"
|
||||||
postcss-media-query-parser "^0.2.3"
|
postcss-media-query-parser "^0.2.3"
|
||||||
@@ -7511,7 +7465,7 @@ stylelint@^13.7.2:
|
|||||||
postcss-safe-parser "^4.0.2"
|
postcss-safe-parser "^4.0.2"
|
||||||
postcss-sass "^0.4.4"
|
postcss-sass "^0.4.4"
|
||||||
postcss-scss "^2.1.1"
|
postcss-scss "^2.1.1"
|
||||||
postcss-selector-parser "^6.0.2"
|
postcss-selector-parser "^6.0.4"
|
||||||
postcss-syntax "^0.36.2"
|
postcss-syntax "^0.36.2"
|
||||||
postcss-value-parser "^4.1.0"
|
postcss-value-parser "^4.1.0"
|
||||||
resolve-from "^5.0.0"
|
resolve-from "^5.0.0"
|
||||||
@@ -7522,8 +7476,8 @@ stylelint@^13.7.2:
|
|||||||
style-search "^0.1.0"
|
style-search "^0.1.0"
|
||||||
sugarss "^2.0.0"
|
sugarss "^2.0.0"
|
||||||
svg-tags "^1.0.0"
|
svg-tags "^1.0.0"
|
||||||
table "^6.0.1"
|
table "^6.0.3"
|
||||||
v8-compile-cache "^2.1.1"
|
v8-compile-cache "^2.2.0"
|
||||||
write-file-atomic "^3.0.3"
|
write-file-atomic "^3.0.3"
|
||||||
|
|
||||||
sugarss@^2.0.0:
|
sugarss@^2.0.0:
|
||||||
@@ -7631,7 +7585,7 @@ table@^5.2.3:
|
|||||||
slice-ansi "^2.1.0"
|
slice-ansi "^2.1.0"
|
||||||
string-width "^3.0.0"
|
string-width "^3.0.0"
|
||||||
|
|
||||||
table@^6.0.1:
|
table@^6.0.3:
|
||||||
version "6.0.3"
|
version "6.0.3"
|
||||||
resolved "https://registry.npmjs.org/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123"
|
resolved "https://registry.npmjs.org/table/-/table-6.0.3.tgz#e5b8a834e37e27ad06de2e0fda42b55cfd8a0123"
|
||||||
integrity sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw==
|
integrity sha512-8321ZMcf1B9HvVX/btKv8mMZahCjn2aYrDlpqHaBFCfnox64edeH9kEid0vTLTRR8gWR2A20aDgeuTTea4sVtw==
|
||||||
@@ -7687,9 +7641,9 @@ terser@^4.6.2, terser@^4.6.3, terser@^4.7.0:
|
|||||||
source-map-support "~0.5.12"
|
source-map-support "~0.5.12"
|
||||||
|
|
||||||
terser@^5.0.0:
|
terser@^5.0.0:
|
||||||
version "5.3.8"
|
version "5.4.0"
|
||||||
resolved "https://registry.npmjs.org/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd"
|
resolved "https://registry.npmjs.org/terser/-/terser-5.4.0.tgz#9815c0839072d5c894e22c6fc508fbe9f5e7d7e8"
|
||||||
integrity sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==
|
integrity sha512-3dZunFLbCJis9TAF2VnX+VrQLctRUmt1p3W2kCsJuZE4ZgWqh//+1MZ62EanewrqKoUf4zIaDGZAvml4UDc0OQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
commander "^2.20.0"
|
commander "^2.20.0"
|
||||||
source-map "~0.7.2"
|
source-map "~0.7.2"
|
||||||
@@ -7813,16 +7767,6 @@ trim-off-newlines@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
|
resolved "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3"
|
||||||
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
|
integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM=
|
||||||
|
|
||||||
trim-trailing-lines@^1.0.0:
|
|
||||||
version "1.1.4"
|
|
||||||
resolved "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0"
|
|
||||||
integrity sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==
|
|
||||||
|
|
||||||
trim@0.0.1:
|
|
||||||
version "0.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd"
|
|
||||||
integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0=
|
|
||||||
|
|
||||||
trough@^1.0.0:
|
trough@^1.0.0:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
|
resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406"
|
||||||
@@ -7868,11 +7812,6 @@ type-fest@^0.11.0:
|
|||||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
|
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1"
|
||||||
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
|
integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==
|
||||||
|
|
||||||
type-fest@^0.13.1:
|
|
||||||
version "0.13.1"
|
|
||||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
|
|
||||||
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
|
|
||||||
|
|
||||||
type-fest@^0.18.0:
|
type-fest@^0.18.0:
|
||||||
version "0.18.1"
|
version "0.18.1"
|
||||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
|
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f"
|
||||||
@@ -7923,14 +7862,6 @@ uglify-js@^3.1.4:
|
|||||||
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.6.tgz#144b50d3e05eadd3ad4dd047c60ca541a8cd4e9c"
|
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.6.tgz#144b50d3e05eadd3ad4dd047c60ca541a8cd4e9c"
|
||||||
integrity sha512-oASI1FOJ7BBFkSCNDZ446EgkSuHkOZBuqRFrwXIKWCoXw8ZXQETooTQjkAcBS03Acab7ubCKsXnwuV2svy061g==
|
integrity sha512-oASI1FOJ7BBFkSCNDZ446EgkSuHkOZBuqRFrwXIKWCoXw8ZXQETooTQjkAcBS03Acab7ubCKsXnwuV2svy061g==
|
||||||
|
|
||||||
unherit@^1.0.4:
|
|
||||||
version "1.1.3"
|
|
||||||
resolved "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz#6c9b503f2b41b262330c80e91c8614abdaa69c22"
|
|
||||||
integrity sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==
|
|
||||||
dependencies:
|
|
||||||
inherits "^2.0.0"
|
|
||||||
xtend "^4.0.0"
|
|
||||||
|
|
||||||
unicode-canonical-property-names-ecmascript@^1.0.4:
|
unicode-canonical-property-names-ecmascript@^1.0.4:
|
||||||
version "1.0.4"
|
version "1.0.4"
|
||||||
resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
|
resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
|
||||||
@@ -7954,7 +7885,7 @@ unicode-property-aliases-ecmascript@^1.0.4:
|
|||||||
resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
|
resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4"
|
||||||
integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
|
integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==
|
||||||
|
|
||||||
unified@^9.0.0:
|
unified@^9.1.0:
|
||||||
version "9.2.0"
|
version "9.2.0"
|
||||||
resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
|
resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
|
||||||
integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
|
integrity sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==
|
||||||
@@ -7988,7 +7919,7 @@ unique-string@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
crypto-random-string "^1.0.0"
|
crypto-random-string "^1.0.0"
|
||||||
|
|
||||||
unist-util-find-all-after@^3.0.1:
|
unist-util-find-all-after@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6"
|
resolved "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz#fdfecd14c5b7aea5e9ef38d5e0d5f774eeb561f6"
|
||||||
integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==
|
integrity sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==
|
||||||
@@ -8000,13 +7931,6 @@ unist-util-is@^4.0.0:
|
|||||||
resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.3.tgz#e8b44db55fc20c43752b3346c116344d45d7c91d"
|
resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.3.tgz#e8b44db55fc20c43752b3346c116344d45d7c91d"
|
||||||
integrity sha512-bTofCFVx0iQM8Jqb1TBDVRIQW03YkD3p66JOd/aCWuqzlLyUtx1ZAGw/u+Zw+SttKvSVcvTiKYbfrtLoLefykw==
|
integrity sha512-bTofCFVx0iQM8Jqb1TBDVRIQW03YkD3p66JOd/aCWuqzlLyUtx1ZAGw/u+Zw+SttKvSVcvTiKYbfrtLoLefykw==
|
||||||
|
|
||||||
unist-util-remove-position@^2.0.0:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz#5d19ca79fdba712301999b2b73553ca8f3b352cc"
|
|
||||||
integrity sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==
|
|
||||||
dependencies:
|
|
||||||
unist-util-visit "^2.0.0"
|
|
||||||
|
|
||||||
unist-util-stringify-position@^2.0.0:
|
unist-util-stringify-position@^2.0.0:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
|
resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da"
|
||||||
@@ -8014,23 +7938,6 @@ unist-util-stringify-position@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/unist" "^2.0.2"
|
"@types/unist" "^2.0.2"
|
||||||
|
|
||||||
unist-util-visit-parents@^3.0.0:
|
|
||||||
version "3.1.1"
|
|
||||||
resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6"
|
|
||||||
integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==
|
|
||||||
dependencies:
|
|
||||||
"@types/unist" "^2.0.0"
|
|
||||||
unist-util-is "^4.0.0"
|
|
||||||
|
|
||||||
unist-util-visit@^2.0.0:
|
|
||||||
version "2.0.3"
|
|
||||||
resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c"
|
|
||||||
integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==
|
|
||||||
dependencies:
|
|
||||||
"@types/unist" "^2.0.0"
|
|
||||||
unist-util-is "^4.0.0"
|
|
||||||
unist-util-visit-parents "^3.0.0"
|
|
||||||
|
|
||||||
universalify@^0.1.0:
|
universalify@^0.1.0:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
||||||
@@ -8091,7 +7998,7 @@ uuid@^3.3.2:
|
|||||||
resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||||
|
|
||||||
v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1:
|
v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
|
resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132"
|
||||||
integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
|
integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==
|
||||||
@@ -8116,11 +8023,6 @@ vditor@^3.6.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
diff-match-patch "^1.0.5"
|
diff-match-patch "^1.0.5"
|
||||||
|
|
||||||
vfile-location@^3.0.0:
|
|
||||||
version "3.2.0"
|
|
||||||
resolved "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz#d8e41fbcbd406063669ebf6c33d56ae8721d0f3c"
|
|
||||||
integrity sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==
|
|
||||||
|
|
||||||
vfile-message@^2.0.0:
|
vfile-message@^2.0.0:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
|
resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a"
|
||||||
@@ -8265,12 +8167,12 @@ vue-eslint-parser@^7.1.1:
|
|||||||
esquery "^1.0.1"
|
esquery "^1.0.1"
|
||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
|
|
||||||
vue-i18n@^9.0.0-beta.6:
|
vue-i18n@^9.0.0-beta.7:
|
||||||
version "9.0.0-beta.6"
|
version "9.0.0-beta.7"
|
||||||
resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.0.0-beta.6.tgz#ea89cee5ade18f2a2d0f2ead0ac4a6bedccade6e"
|
resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.0.0-beta.7.tgz#f6fad5b4be218018aab4797f80dd2a95ee5236f9"
|
||||||
integrity sha512-6WWNumUYOnoFi50szUxhxNjTntWlL3SSb6DCoDQW3aKIGK6xTKj9bLI1gnSPfFn54dTYlJtzxEHuY8C/kvm7kg==
|
integrity sha512-hFl0XnV91P/4UyWvHYvdYxuk3GRnKIW9zXAm6hrUU4mOIwpqchi7jVQva2TJLr52Mpsu4zYXmzL1h5pgrKmCfQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
source-map "^0.6.1"
|
source-map "0.6.1"
|
||||||
|
|
||||||
vue-router@^4.0.0-rc.3:
|
vue-router@^4.0.0-rc.3:
|
||||||
version "4.0.0-rc.3"
|
version "4.0.0-rc.3"
|
||||||
@@ -8571,7 +8473,7 @@ xlsx@^0.16.8:
|
|||||||
wmf "~1.0.1"
|
wmf "~1.0.1"
|
||||||
word "~0.3.0"
|
word "~0.3.0"
|
||||||
|
|
||||||
xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1:
|
xtend@~4.0.1:
|
||||||
version "4.0.2"
|
version "4.0.2"
|
||||||
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||||
@@ -8609,7 +8511,7 @@ yargs-parser@^13.1.2:
|
|||||||
camelcase "^5.0.0"
|
camelcase "^5.0.0"
|
||||||
decamelize "^1.2.0"
|
decamelize "^1.2.0"
|
||||||
|
|
||||||
yargs-parser@^18.1.2, yargs-parser@^18.1.3:
|
yargs-parser@^18.1.2:
|
||||||
version "18.1.3"
|
version "18.1.3"
|
||||||
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0"
|
||||||
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
||||||
@@ -8683,6 +8585,11 @@ zrender@4.3.2:
|
|||||||
resolved "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz#ec7432f9415c82c73584b6b7b8c47e1b016209c6"
|
resolved "https://registry.npmjs.org/zrender/-/zrender-4.3.2.tgz#ec7432f9415c82c73584b6b7b8c47e1b016209c6"
|
||||||
integrity sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==
|
integrity sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g==
|
||||||
|
|
||||||
|
zwitch@^1.0.0:
|
||||||
|
version "1.0.5"
|
||||||
|
resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920"
|
||||||
|
integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==
|
||||||
|
|
||||||
zxcvbn@^4.4.2:
|
zxcvbn@^4.4.2:
|
||||||
version "4.4.2"
|
version "4.4.2"
|
||||||
resolved "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30"
|
resolved "https://registry.npmjs.org/zxcvbn/-/zxcvbn-4.4.2.tgz#28ec17cf09743edcab056ddd8b1b06262cc73c30"
|
||||||
|
Reference in New Issue
Block a user