perf: remove redundant props

This commit is contained in:
bqy_fe 2021-07-05 11:51:03 +08:00
parent f5339844c3
commit c99baf7132
27 changed files with 338 additions and 395 deletions

View File

@ -34,7 +34,7 @@
"nprogress": "^1.0.0-1",
"qrcode": "^1.4.4",
"qs": "^6.10.1",
"vant": "^3.1.2",
"vant": "3.1.2",
"vue": "3.1.4",
"vue-router": "^4.0.10",
"vuedraggable": "^4.0.3",

View File

@ -1,13 +1,14 @@
/*
* @Author:
* @Date: 2021-05-04 05:36:58
* @LastEditTime: 2021-06-25 08:47:18
* @LastEditTime: 2021-07-04 17:21:34
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\preview\views\comp-render.tsx
*/
import { defineComponent, PropType } from 'vue'
import type { VisualEditorBlockData, VisualEditorConfig } from '@/visual-editor/visual-editor.utils'
import { visualConfig } from '@/visual.config'
export default defineComponent({
name: 'CompRender',
@ -15,15 +16,11 @@ export default defineComponent({
element: {
type: Object as PropType<VisualEditorBlockData>,
default: () => ({})
},
config: {
type: Object as PropType<VisualEditorConfig>,
default: () => ({})
}
},
setup(props) {
return () =>
props.config.componentMap[props.element.componentKey].render({
visualConfig.componentMap[props.element.componentKey].render({
size: {},
props: props.element.props || {},
model: {},

View File

@ -1,21 +1,21 @@
<!--
* @Author: 卜启缘
* @Date: 2021-06-01 09:45:21
* @LastEditTime: 2021-07-04 08:59:57
* @LastEditTime: 2021-07-04 17:21:47
* @LastEditors: 卜启缘
* @Description:
* @FilePath: \vite-vue3-lowcode\preview\views\preview.vue
-->
<template>
<template v-for="outItem in blocks" :key="outItem._vid">
<slot-item :element="outItem" :models="models" :actions="actions" :config="visualConfig" />
<slot-item :element="outItem" :models="models" :actions="actions" />
</template>
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs, onMounted } from 'vue'
import { Toast } from 'vant'
import { visualConfig } from '@/visual.config'
import { CacheEnum } from '@/enums'
import type { VisualEditorModelValue } from '@/visual-editor/visual-editor.utils'
import SlotItem from './slot-item.vue'
@ -70,8 +70,7 @@ export default defineComponent({
return {
...toRefs(state),
actions: jsonData.actions,
models: jsonData.models,
visualConfig
models: jsonData.models
}
}
})

View File

@ -1,17 +1,17 @@
<!--
* @Author: 卜启缘
* @Date: 2021-06-12 22:18:48
* @LastEditTime: 2021-07-04 12:59:13
* @LastEditTime: 2021-07-05 10:18:22
* @LastEditors: 卜启缘
* @Description:
* @FilePath: \vite-vue3-lowcode\preview\views\slot-item.vue
-->
<template>
<div class="__slot-item">
<comp-render :element="element" :config="config" v-on="events">
<comp-render :element="element" v-on="events">
<template v-for="(value, key) in element.props?.slots" :key="key" #[key]>
<template v-for="item in value?.children" :key="item._vid">
<slot-item :element="item" :config="config" :models="models" :actions="actions" />
<slot-item :element="item" :models="models" :actions="actions" />
</template>
</template>
</comp-render>
@ -46,10 +46,6 @@ export default defineComponent({
models: {
type: Object as PropType<VisualEditorModel[]>,
default: () => ({})
},
config: {
type: Object,
default: () => ({})
}
},
setup(props) {
@ -58,9 +54,10 @@ export default defineComponent({
prev[curr.event] = async () => {
for (const handle of curr.handle) {
const [scopeType, actionType, handleKey] = handle.link
if (scopeType == 'global') {
if (scopeType === 'global') {
const apis: FetchApiItem[] = props.actions[actionType].apis
const { data, options } = apis.find((item) => item.key == handleKey)!
const pramsObj = {}
await request({
...options,
headers: {
@ -71,7 +68,7 @@ export default defineComponent({
password: '123456'
}
})
} else if (scopeType == 'component') {
} else if (scopeType === 'component') {
}
}
}

View File

@ -9,7 +9,7 @@ import {
createEditorSelectProp,
createEditorSwitchProp
} from '@/visual-editor/visual-editor.props'
import { reactive } from 'vue'
import { getCurrentInstance, reactive } from 'vue'
import { isDate } from '@/visual-editor/utils/is'
import dayjs from 'dayjs'
@ -24,10 +24,13 @@ const dateType = {
export default {
key: 'datetimePicker',
moduleName: 'baseWidgets',
label: '表单项类型 - 选择器',
label: '表单项类型 - 时间选择器',
preview: () => <Field name="datetimePicker" label="时间选择器" placeholder={'点击选择'}></Field>,
render: ({ size, block, props }) => {
const { registerRef } = useGlobalProperties()
const { attrs } = getCurrentInstance()!
const state = reactive({
showPicker: false,
text: '',
@ -63,10 +66,11 @@ export default {
)
}}
/>
<Popup v-model={[state.showPicker, 'show', ['modifier']]} position={'bottom'}>
<Popup v-model={[state.showPicker, 'show']} position={'bottom'}>
<DatetimePicker
ref={(el) => registerRef(el, block._vid)}
{...props}
{...attrs}
v-model={state.currentDate}
onConfirm={onConfirm}
onCancel={() => (state.showPicker = false)}

View File

@ -1,7 +1,7 @@
/*
* @Author:
* @Date: 2021-06-01 09:45:21
* @LastEditTime: 2021-07-04 16:58:50
* @LastEditTime: 2021-07-05 10:18:29
* @LastEditors:
* @Description: -
* @FilePath: \vite-vue3-lowcode\src\packages\base-widgets\picker\index.tsx
@ -15,7 +15,7 @@ import {
createEditorInputProp,
createEditorModelBindProp
} from '@/visual-editor/visual-editor.props'
import { reactive } from 'vue'
import { reactive, getCurrentInstance } from 'vue'
export default {
key: 'picker',
@ -24,6 +24,9 @@ export default {
preview: () => <Field name="picker" label="选择器" placeholder={'点击选择'}></Field>,
render: ({ size, block, props }) => {
const { registerRef } = useGlobalProperties()
const { attrs } = getCurrentInstance()!
const state = reactive({
showPicker: false,
text: '',
@ -42,7 +45,6 @@ export default {
const onConfirm = (value) => {
props.modelValue = value.value
state.text = value[props.valueKey || 'text']
state.showPicker = false
console.log(props)
}
@ -72,6 +74,7 @@ export default {
<Picker
ref={(el) => registerRef(el, block._vid)}
{...props}
{...attrs}
defaultIndex={state.defaultIndex}
columnsFieldNames={customFieldName}
onConfirm={onConfirm}

View File

@ -1,7 +1,7 @@
/*
* @Author:
* @Date: 2021-04-22 02:10:31
* @LastEditTime: 2021-06-27 14:58:03
* @LastEditTime: 2021-07-05 11:39:10
* @LastEditors:
* @Description: element-plus
* @FilePath: \vite-vue3-lowcode\src\plugins\element-plus.ts
@ -10,7 +10,15 @@ import 'element-plus/packages/theme-chalk/src/base.scss'
// import 'element-plus/lib/theme-chalk/index.css'
// import 'element-plus/lib/theme-chalk/el-popper.css'
import type { App } from 'vue'
import { ElInfiniteScroll } from 'element-plus'
import { ElInfiniteScroll, locale } from 'element-plus'
import lang from 'element-plus/lib/locale/lang/zh-cn'
import 'dayjs/locale/zh-cn'
// 设置语言
import.meta.env.DEV ? locale(lang) : locale.use(lang)
export const setupElementPlus = (app: App) => {
app.use(ElInfiniteScroll)
}

View File

@ -1,7 +1,7 @@
/*
* @Author:
* @Date: 2021-06-01 13:22:14
* @LastEditTime: 2021-06-23 11:40:10
* @LastEditTime: 2021-07-04 21:36:26
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\components\base-widgets\index.tsx
@ -15,6 +15,9 @@ import DraggableTransitionGroup from '@/visual-editor/components/simulator-edito
export default defineComponent({
name: 'BaseWidgets',
label: '基本组件',
order: 3,
icon: 'el-icon-edit',
setup() {
const baseWidgets = ref(visualConfig.componentModules.baseWidgets)

View File

@ -1,7 +1,7 @@
/*
* @Author:
* @Date: 2021-06-01 13:22:14
* @LastEditTime: 2021-06-25 09:10:19
* @LastEditTime: 2021-07-04 21:36:46
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\components\container-component\index.tsx
@ -16,6 +16,9 @@ import type { VisualEditorComponent } from '@/visual-editor/visual-editor.utils'
export default defineComponent({
name: 'ContainerComponent',
label: '容器组件',
icon: 'el-icon-suitcase',
order: 4,
setup() {
const log = (evt) => {
window.console.log(evt)

View File

@ -1,9 +1,12 @@
<!--自定义组件-->
<template>自定义组件</template>
<!--业务组件-->
<template>业务组件</template>
<script>
export default {
name: 'CustomComponent'
name: 'CustomComponent',
label: '业务组件',
order: 5,
icon: 'el-icon-upload'
}
</script>

View File

@ -1,7 +1,7 @@
<!--
* @Author: 卜启缘
* @Date: 2021-06-24 18:36:03
* @LastEditTime: 2021-06-28 10:10:53
* @LastEditTime: 2021-07-04 19:48:28
* @LastEditors: 卜启缘
* @Description: 接口请求
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\components\data-source\data-fetch.vue
@ -12,14 +12,7 @@
<el-button type="warning" size="small" @click="showImportSwaggerJsonModal"
>导入swagger</el-button
>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
icon-color="red"
title="确定要删除全部接口吗?"
@confirm="updateFetchApi([], true)"
>
<el-popconfirm title="确定要删除全部接口吗?" @confirm="updateFetchApi([], true)">
<template #reference>
<el-button type="danger" size="small">清空</el-button>
</template>

View File

@ -1,7 +1,7 @@
<!--
* @Author: 卜启缘
* @Date: 2021-06-24 18:36:03
* @LastEditTime: 2021-06-27 14:48:53
* @LastEditTime: 2021-07-04 19:49:52
* @LastEditors: 卜启缘
* @Description: 数据模型管理
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\components\data-source\data-model.vue
@ -12,14 +12,7 @@
<el-button type="warning" size="small" @click="showImportSwaggerJsonModal"
>导入swagger</el-button
>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
icon-color="red"
title="确定要删除全部模型吗?"
@confirm="updateModel([], true)"
>
<el-popconfirm title="确定要删除全部模型吗?" @confirm="updateModel([], true)">
<template #reference>
<el-button type="danger" size="small">清空</el-button>
</template>
@ -33,14 +26,7 @@
<span class="truncate w-160px">{{ item.name }}</span>
<div class="model-actions">
<i class="el-icon-edit" @click="editModel(item)"></i>
<el-popconfirm
confirm-button-text="确定"
cancel-button-text="取消"
icon="el-icon-info"
icon-color="red"
title="确定要删除该模型吗?"
@confirm="deleteModel(item.key)"
>
<el-popconfirm title="确定要删除该模型吗?" @confirm="deleteModel(item.key)">
<template #reference>
<i class="el-icon-delete"></i>
</template>

View File

@ -1,7 +1,7 @@
<!--
* @Author: 卜启缘
* @Date: 2021-06-24 18:36:03
* @LastEditTime: 2021-06-27 14:45:03
* @LastEditTime: 2021-07-04 21:36:14
* @LastEditors: 卜启缘
* @Description: 数据源管理
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\components\data-source\index.vue
@ -17,7 +17,14 @@
</el-tabs>
</template>
<script setup lang="tsx">
<script lang="tsx">
export default {
label: '数据源',
order: 2,
icon: 'el-icon-data-board'
}
</script>
<script setup lang="tsx" name="基本组件">
import DataModel from './data-model.vue'
import DataFetch from './data-fetch.vue'
</script>

View File

@ -82,6 +82,9 @@ const rules = {
export default defineComponent({
name: 'PageTree',
label: '页面',
order: 1,
icon: 'el-icon-tickets',
setup() {
const router = useRouter()
const route = useRoute()

View File

@ -1,7 +0,0 @@
export const treeData = [
{
title: '首页',
path: '/',
isDefault: true
}
]

View File

@ -1,42 +1,47 @@
<!--
* @Author: 卜启缘
* @Date: 2021-06-24 00:35:17
* @LastEditTime: 2021-06-27 14:44:35
* @LastEditTime: 2021-07-04 21:44:20
* @LastEditors: 卜启缘
* @Description: 左侧边栏
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\index.vue
-->
<template>
<el-tabs v-model="activeName" tab-position="left" class="left-aside">
<template v-for="tabItem in tabs" :key="tabItem.componentName">
<el-tab-pane :name="tabItem.componentName" lazy>
<template v-for="tabItem in tabs" :key="tabItem.name">
<el-tab-pane :name="tabItem.name" lazy>
<template #label>
<div :ref="(el) => el && (tabItemRef[tabItem.componentName] = el)" class="tab-item">
<div class="tab-item">
<i :class="tabItem.icon"></i>
{{ tabItem.label }}
</div>
</template>
<component :is="tabItem.componentName" v-bind="$attrs" />
<component :is="tabItem.name" v-bind="$attrs" />
</el-tab-pane>
</template>
</el-tabs>
</template>
<script lang="ts">
import { defineComponent, reactive, toRefs, ComponentInternalInstance } from 'vue'
import { tabs } from './tabs'
import components from './components'
/**
* @description 左侧边栏
*/
import { defineComponent, reactive, toRefs } from 'vue'
import components from './components'
const tabs = Object.keys(components)
.map((name) => {
const { label, icon, order } = components[name]
return { label, icon, name, order }
})
.sort((a, b) => a.order - b.order)
export default defineComponent({
name: 'LeftAside',
components,
setup() {
const state = reactive({
activeName: tabs[0].componentName,
tabItemRef: {} as { [prop: string]: ComponentInternalInstance | Element }
activeName: tabs[0].name
})
return {

View File

@ -1,35 +0,0 @@
/*
* @Author:
* @Date: 2021-06-01 09:39:52
* @LastEditTime: 2021-06-28 17:25:30
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\left-aside\tabs.ts
*/
export const tabs = [
{
icon: 'el-icon-tickets',
label: '页面',
componentName: 'PageTree'
},
{
icon: 'el-icon-data-board',
label: '数据源',
componentName: 'data-source'
},
{
icon: 'el-icon-edit',
label: '基础控件',
componentName: 'BaseWidgets'
},
{
icon: 'el-icon-suitcase',
label: '容器组件',
componentName: 'ContainerComponent'
},
{
icon: 'el-icon-upload',
label: '自定义组件',
componentName: 'custom-component'
}
]

View File

@ -1,7 +1,7 @@
/*
* @Author:
* @Date: 2021-06-24 11:01:45
* @LastEditTime: 2021-06-28 18:49:18
* @LastEditTime: 2021-07-04 19:44:10
* @LastEditors:
* @Description: -
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\components\event-action\index.tsx
@ -19,9 +19,9 @@ import {
ElCascader,
ElCollapse,
ElCollapseItem,
ElMessage
ElPopconfirm
} from 'element-plus'
import type { Action, ActionHandle } from '@/visual-editor/visual-editor.utils'
import type { Action } from '@/visual-editor/visual-editor.utils'
import { generateUUID } from '@/visual-editor/utils/'
import { useModal } from '@/visual-editor/hooks/useModal'
import { cloneDeep } from 'lodash'
@ -288,9 +288,18 @@ export const EventAction = defineComponent({
<div class={'flex justify-between'}>
{actionItem.name}
<div>
<ElButton onClick={() => deleteActionItem(index)} type={'danger'} size={'mini'}>
<ElPopconfirm
title={'确定要删除该事件吗?'}
onConfirm={() => deleteActionItem(index)}
>
{{
reference: () => (
<ElButton type={'danger'} size={'mini'}>
</ElButton>
)
}}
</ElPopconfirm>
<ElButton
onClick={() => showEditActionModal(actionItem)}
type={'primary'}

View File

@ -0,0 +1,15 @@
/*
* @Author:
* @Date: 2021-07-05 10:51:09
* @LastEditTime: 2021-07-05 10:52:26
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\components\form-rule\index.tsx
*/
import { defineComponent } from 'vue'
export const FormRule = defineComponent({
setup() {
return () => <></>
}
})

View File

@ -1,7 +1,7 @@
/*
* @Author:
* @Date: 2021-06-12 22:18:48
* @LastEditTime: 2021-06-24 18:30:44
* @LastEditTime: 2021-07-05 10:53:16
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\components\index.ts
@ -11,3 +11,4 @@ export { AttrEditor } from './attr-editor/AttrEditor'
export { Animate } from './animate/Animate'
export { PageSetting } from './page-setting/pageSetting'
export { EventAction } from './event-action/'
export { FormRule } from './form-rule/'

View File

@ -1,19 +1,18 @@
/*
* @Author:
* @Date: 2021-06-01 13:22:14
* @LastEditTime: 2021-06-28 09:25:06
* @LastEditTime: 2021-07-05 11:06:49
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\right-attribute-panel\index.tsx
* RightAttributePanel
*/
import { defineComponent, reactive } from 'vue'
import { defineComponent, reactive, watch } from 'vue'
import styles from './index.module.scss'
import { ElTabPane, ElTabs } from 'element-plus'
import MonacoEditor from '../common/monaco-editor/MonacoEditor'
import { useVisualData } from '@/visual-editor/hooks/useVisualData'
import { AttrEditor, Animate, PageSetting, EventAction } from './components'
import { AttrEditor, Animate, PageSetting, EventAction, FormRule } from './components'
export default defineComponent({
name: 'RightAttributePanel',
@ -25,14 +24,14 @@ export default defineComponent({
isOpen: true
})
const handleSchemaChange = (val) => {
try {
const newObj = JSON.parse(val)
Object.assign(currentBlock.value, newObj)
} catch (e) {
console.log('JSON格式有误', e)
watch(
() => currentBlock.value.label,
(newLabel) => {
if (!newLabel?.startsWith('表单') && state.activeName == 'form-rule') {
state.activeName = 'attr'
}
}
)
return () => (
<>
@ -56,15 +55,11 @@ export default defineComponent({
<ElTabPane label="事件" name="events">
<EventAction />
</ElTabPane>
<ElTabPane label="JSON" name="json" lazy>
<MonacoEditor
code={JSON.stringify(currentBlock.value)}
layout={{ width: 360, height: 800 }}
vid={state.activeName == 'json' ? currentBlock.value._vid : -1}
onChange={handleSchemaChange}
title=""
/>
{currentBlock.value.label?.startsWith('表单') ? (
<ElTabPane label="规则" name="form-rule" lazy>
<FormRule />
</ElTabPane>
) : null}
<ElTabPane label="页面设置" name="page-setting">
<PageSetting />
</ElTabPane>

View File

@ -1,13 +1,14 @@
/*
* @Author:
* @Date: 2021-05-04 05:36:58
* @LastEditTime: 2021-06-25 08:52:37
* @LastEditTime: 2021-07-04 17:23:02
* @LastEditors:
* @Description:
* @FilePath: \vite-vue3-lowcode\src\visual-editor\components\simulator-editor\comp-render.tsx
*/
import { defineComponent, PropType } from 'vue'
import type { VisualEditorBlockData, VisualEditorConfig } from '@/visual-editor/visual-editor.utils'
import type { VisualEditorBlockData } from '@/visual-editor/visual-editor.utils'
import { visualConfig } from '@/visual.config'
export default defineComponent({
name: 'CompRender',
@ -15,15 +16,11 @@ export default defineComponent({
element: {
type: Object as PropType<VisualEditorBlockData>,
default: () => ({})
},
config: {
type: Object as PropType<VisualEditorConfig>,
default: () => ({})
}
},
setup(props) {
return () =>
props.config.componentMap[props.element.componentKey].render({
visualConfig.componentMap[props.element.componentKey].render({
size: {},
props: props.element.props || {},
model: {},

View File

@ -3,20 +3,70 @@
*/
@mixin showContainerBorder {
outline: 2px dashed #b0c1d7;
outline-offset: -2px;
@include showDashedOutline;
&::before {
position: absolute;
@include showCompLabel;
}
}
/**
* 显示组件边界
*/
@mixin showComponentBorder {
@include showSoliOutline;
&::before {
@include showCompLabel;
}
}
/**
* 显示组件标签名称
*/
@mixin showCompLabel($direction: left) {
@if ($direction == 'left') {
top: 0;
left: -3px;
padding: 3px;
transform: translate(-100%, 0);
}
@if ($direction == 'right') {
top: 0;
right: -3px;
transform: translate(100%, 0);
}
@if ($direction == 'top') {
top: 2px;
left: 0;
transform: translate(0, -100%);
}
position: absolute;
padding: 3px 5px;
font-size: 12px;
font-weight: 700;
color: white;
background-color: #006eff;
border-radius: 3px;
content: attr(data-label);
transform: translate(-100%, 0);
}
/**
* 显示实心外边框线
*/
@mixin showSoliOutline($width: 2px) {
outline: $width solid #006eff;
outline-offset: -2px;
}
/**
* 显示虚线外边框线
*/
@mixin showDashedOutline($width: 2px) {
outline: $width dashed #b0c1d7;
outline-offset: -2px;
}

View File

@ -22,7 +22,6 @@
>
<comp-render
:key="outElement._vid"
:config="visualConfig"
:element="outElement"
:style="{
pointerEvents: Object.keys(outElement.props?.slots || {}).length ? 'auto' : 'none'
@ -37,7 +36,6 @@
v-model:children="value.children"
v-model:drag="drag"
:slot-key="slotKey"
:config="visualConfig"
:on-contextmenu-block="onContextmenuBlock"
:select-comp="selectComp"
:delete-comp="deleteComp"
@ -59,9 +57,11 @@ import DraggableTransitionGroup from './draggable-transition-group.vue'
import { $$dropdown, DropdownOption } from '@/visual-editor/utils/dropdown-service'
import CompRender from './comp-render'
import SlotItem from './slot-item.vue'
import MonacoEditor from '@/visual-editor/components/common/monaco-editor/MonacoEditor'
import { cloneDeep } from 'lodash'
import { useGlobalProperties } from '@/hooks/useGlobalProperties'
import { useVisualData } from '@/visual-editor/hooks/useVisualData'
import { useModal } from '@/visual-editor/hooks/useModal'
export default defineComponent({
name: 'SimulatorEditor',
@ -72,7 +72,7 @@ export default defineComponent({
},
emits: ['on-selected'],
setup() {
const { currentPage, visualConfig, setCurrentBlock } = useVisualData()
const { currentPage, setCurrentBlock } = useVisualData()
const { globalProperties } = useGlobalProperties()
@ -198,6 +198,27 @@ export default defineComponent({
}
}}
/>
<DropdownOption
label="查看节点"
icon="el-icon-view"
{...{
onClick: () =>
useModal({
title: '节点信息',
footer: null,
props: {
width: 600
},
content: () => (
<MonacoEditor
code={JSON.stringify(block)}
layout={{ width: 530, height: 600 }}
vid={block._vid}
/>
)
})
}}
/>
<DropdownOption
label="删除节点"
icon="el-icon-delete"
@ -213,7 +234,6 @@ export default defineComponent({
return {
...toRefs(state),
currentPage,
visualConfig,
pageStyle,
deleteComp,
selectComp,
@ -272,9 +292,7 @@ export default defineComponent({
}
&.focus {
content: '';
outline: 2px solid #006eff;
outline-offset: -2px;
@include showComponentBorder;
}
&.drag::after {

View File

@ -16,7 +16,6 @@
@mousedown.stop="selectComp(innerElement)"
>
<comp-render
:config="config"
:element="innerElement"
:style="{
pointerEvents: Object.keys(innerElement.props?.slots || {}).length ? 'auto' : 'none'
@ -27,7 +26,6 @@
v-model:children="value.children"
v-model:drag="isDrag"
:slot-key="key"
:config="config"
:on-contextmenu-block="onContextmenuBlock"
:select-comp="selectComp"
/>
@ -57,10 +55,6 @@ export default defineComponent({
components: { CompRender, DraggableTransitionGroup },
props: {
slotKey: String,
config: {
type: Object,
default: () => ({})
},
drag: {
type: Boolean,
default: false
@ -89,6 +83,8 @@ export default defineComponent({
</script>
<style lang="scss" scoped>
@import './func.scss';
.inner-draggable {
position: relative;
}
@ -120,27 +116,22 @@ export default defineComponent({
transform: translate(0);
&.focusWithChild {
outline: 2px dashed #b0c1d7;
outline-offset: -2px;
}
&.focusWithChild::before {
position: absolute;
top: 0;
left: -3px;
padding: 3px;
font-size: 12px;
font-weight: 700;
color: white;
background-color: #006eff;
border-radius: 3px;
content: attr(data-label);
transform: translate(-100%, 0);
@include showContainerBorder;
}
&.focus {
outline: 2px solid #006eff;
outline-offset: -2px;
@include showSoliOutline;
&::after {
@include showCompLabel(top);
opacity: 0;
transition: opacity 0.2s;
}
&:hover::after {
opacity: 1;
}
}
}
</style>

View File

@ -89,6 +89,7 @@ export default ({ mode }: ConfigEnv): UserConfig => {
exclude: ['vue-demi']
},
server: {
host: '0.0.0.0',
port: 10086, // 设置服务启动端口号
open: false, // 设置服务启动时是否自动打开浏览器
cors: true, // 允许跨域

301
yarn.lock
View File

@ -681,12 +681,7 @@
resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256"
integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==
"@types/node@*":
version "15.12.4"
resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.4.tgz#e1cf817d70a1e118e81922c4ff6683ce9d422e26"
integrity sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==
"@types/node@^16.0.0":
"@types/node@*", "@types/node@^16.0.0":
version "16.0.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.0.tgz#067a6c49dc7a5c2412a505628e26902ae967bf6f"
integrity sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg==
@ -707,9 +702,9 @@
integrity sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==
"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.3.tgz#9c088679876f374eb5983f150d4787aa6fb32d7e"
integrity sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==
version "2.0.4"
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.4.tgz#453e27c6930d66380b4c121e7d5e361c5c2d921b"
integrity sha512-zfyYsDTK1HTGYXU3fTiM76+om93HcFtsZd2M0bO/CL4DiETV7mSa/pIVN/6+G3esOqEMdg2An5cHHbK5t+9w+A==
"@types/vfile-message@*":
version "2.0.0"
@ -851,13 +846,13 @@
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-1.2.4.tgz#a7aa6e6a31c556a8b781de730316deeecf7f56f2"
integrity sha512-D/3H9plevPQGgQGwmV6eecvOnooLTecPR63HPffVVWPEhbfvmtYLWgznzs456NBb2DItiRTCIa1yWxvGqC+I8A==
"@volar/code-gen@^0.25.22":
version "0.25.22"
resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.25.22.tgz#405035eb7e19573f630070677fa91553d79a47bc"
integrity sha512-CStz1TMxJtEQgXosaOLIVykxQBg5VFvxsvlcrCUum1ZCzpRsXPldS/3OdPOCgkdyE/i9kVzKOvt8DYChKTCPqw==
"@volar/code-gen@^0.25.26":
version "0.25.26"
resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.25.26.tgz#44294b71451df317be29f26263c9aec6c6132101"
integrity sha512-PuUahRMRQForfBZpmlW/f/UdftTBIhGNpV81k9cQtM//nFOPN3Jvq4QUNLjFiO/D/o+0jNItSJKIadp6tkV0Ag==
dependencies:
"@volar/shared" "^0.25.22"
"@volar/source-map" "^0.25.22"
"@volar/shared" "^0.25.26"
"@volar/source-map" "^0.25.26"
"@volar/html2pug@^0.25.4":
version "0.25.4"
@ -869,27 +864,27 @@
htmlparser2 "^6.1.0"
pug "^3.0.2"
"@volar/shared@^0.25.22":
version "0.25.22"
resolved "https://registry.yarnpkg.com/@volar/shared/-/shared-0.25.22.tgz#0dbf7fcf201b3a0beacc6fd82d407a748729a978"
integrity sha512-hZQ4dDy0/MgjVONFhs7P2ECDamajwmpSErFYLaLwFClh7DNn6gXYEsawr5kS5zHYs/HaSfSwNQ4sx5Y2MInCZw==
"@volar/shared@^0.25.26":
version "0.25.26"
resolved "https://registry.yarnpkg.com/@volar/shared/-/shared-0.25.26.tgz#90c8d4549f2512d24d800307dfe4951093148cb6"
integrity sha512-jdW2WFwhGoQNnxURMfHlYdXuMoR9TzgnYaG6J17yEqjkVsMbw6MfqLPXp9NOe+lpwi2UM9IMrdWgVpVkD7grjA==
dependencies:
upath "^2.0.1"
vscode-languageserver "^7.1.0-next.4"
"@volar/source-map@^0.25.22":
version "0.25.22"
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.25.22.tgz#5150401e1950dd35fb11720f79e59799d3885741"
integrity sha512-J6xntLQ8I6BMqPBaQZN3JROJPfcFexo/5KecMxGqHkdLC/M/DtVOAp9zkwAXu7XuXA/nF6iGxmL3TYELFRryzw==
"@volar/source-map@^0.25.26":
version "0.25.26"
resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.25.26.tgz#fdf47a407b7d3f7383ebc6ac87c70eafda1648c9"
integrity sha512-voPURNnlvbm7aFze0fXTO7GAbjZL0sBH/ioLZ3Wj+GZ9NoDL5vCC3jrddA3FcFHyHH1Yw9tXToPLb2Q11VkIag==
dependencies:
"@volar/shared" "^0.25.22"
"@volar/shared" "^0.25.26"
"@volar/transforms@^0.25.22":
version "0.25.22"
resolved "https://registry.yarnpkg.com/@volar/transforms/-/transforms-0.25.22.tgz#7f4c10d63f221f3892e951c857bf828de139a29a"
integrity sha512-WcQU2MzAsVILITxbt3urNPUbPlOvsdGuChwCNc9OXV1OgBOTJtJ9sQV63pYr+tb7Yl3Ie2S8Q7lNMy8gS1jvLQ==
"@volar/transforms@^0.25.26":
version "0.25.26"
resolved "https://registry.yarnpkg.com/@volar/transforms/-/transforms-0.25.26.tgz#a23b31e6b06a2195bbaea82392c3b08da08a8ca5"
integrity sha512-3rzOabA96s+YmPUIWnRxIlyOqXRk2Pmlk8StMOKAB9o7QEt0jlVFW8jATEXrGJPcUrKyWo/cVXO06RlEETwB8w==
dependencies:
"@volar/shared" "^0.25.22"
"@volar/shared" "^0.25.26"
"@vue/babel-helper-vue-transform-on@^1.0.2":
version "1.0.2"
@ -911,17 +906,6 @@
html-tags "^3.1.0"
svg-tags "^1.0.0"
"@vue/compiler-core@3.1.2":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.2.tgz#31ab1d88e1706a5c7a545faeeb64c31bd0101db0"
integrity sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q==
dependencies:
"@babel/parser" "^7.12.0"
"@babel/types" "^7.12.0"
"@vue/shared" "3.1.2"
estree-walker "^2.0.1"
source-map "^0.6.1"
"@vue/compiler-core@3.1.4":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.1.4.tgz#a3a74cf52e8f01af386d364ac8a099cbeb260424"
@ -933,15 +917,7 @@
estree-walker "^2.0.1"
source-map "^0.6.1"
"@vue/compiler-dom@3.1.2", "@vue/compiler-dom@^3.0.11":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz#75a7731bcc5d9718183a3c56c18e992f7c13e7b1"
integrity sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg==
dependencies:
"@vue/compiler-core" "3.1.2"
"@vue/shared" "3.1.2"
"@vue/compiler-dom@3.1.4":
"@vue/compiler-dom@3.1.4", "@vue/compiler-dom@^3.0.11":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.1.4.tgz#bf3795e1449f32c965d38c4ea6d808ca05fdfc97"
integrity sha512-3tG2ScHkghhUBuFwl9KgyZhrS8CPFZsO7hUDekJgIp5b1OMkROr4AvxHu6rRMl4WkyvYkvidFNBS2VfOnwa6Kw==
@ -949,7 +925,7 @@
"@vue/compiler-core" "3.1.4"
"@vue/shared" "3.1.4"
"@vue/compiler-sfc@3.1.4":
"@vue/compiler-sfc@3.1.4", "@vue/compiler-sfc@^3.0.11":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.4.tgz#93e87db950e0711339c18baa7bb7d28d3522d7bc"
integrity sha512-4KDQg60Khy3SgnF+V/TB2NZqzmM4TyGRmzsxqG1SebGdMSecCweFDSlI/F1vDYk6dKiCHgmpoT9A1sLxswkJ0A==
@ -972,37 +948,6 @@
postcss-selector-parser "^6.0.4"
source-map "^0.6.1"
"@vue/compiler-sfc@^3.0.11":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz#23ff1e366d887b964899568bffcb11e3d0511fc4"
integrity sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw==
dependencies:
"@babel/parser" "^7.13.9"
"@babel/types" "^7.13.0"
"@types/estree" "^0.0.48"
"@vue/compiler-core" "3.1.2"
"@vue/compiler-dom" "3.1.2"
"@vue/compiler-ssr" "3.1.2"
"@vue/shared" "3.1.2"
consolidate "^0.16.0"
estree-walker "^2.0.1"
hash-sum "^2.0.0"
lru-cache "^5.1.1"
magic-string "^0.25.7"
merge-source-map "^1.1.0"
postcss "^8.1.10"
postcss-modules "^4.0.0"
postcss-selector-parser "^6.0.4"
source-map "^0.6.1"
"@vue/compiler-ssr@3.1.2":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz#e33ad0876d9b96f0950e22b0e174b94c1b049d2d"
integrity sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg==
dependencies:
"@vue/compiler-dom" "3.1.2"
"@vue/shared" "3.1.2"
"@vue/compiler-ssr@3.1.4":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.1.4.tgz#7f6eaac5b1851fc15c82c083e8179eb1216b303c"
@ -1012,24 +957,17 @@
"@vue/shared" "3.1.4"
"@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.0.0-beta.14":
version "6.0.0-beta.14"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.14.tgz#6ed2d6f8d66a9256c9ad04bfff08309ba87b9723"
integrity sha512-44fPrrN1cqcs6bFkT0C+yxTM6PZXLbR+ESh1U1j8UD22yO04gXvxH62HApMjLbS3WqJO/iCNC+CYT+evPQh2EQ==
version "6.0.0-beta.15"
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.0.0-beta.15.tgz#ad7cb384e062f165bcf9c83732125bffbc2ad83d"
integrity sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA==
"@vue/reactivity@3.1.4":
"@vue/reactivity@3.1.4", "@vue/reactivity@^3.0.11":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.4.tgz#d926ed46fb0d48582ccf8665b062d37b5d35ba99"
integrity sha512-YDlgii2Cr9yAoKVZFzgY4j0mYlVT73986X3e5SPp6ifqckSEoFSUWXZK2Tb53TB/9qO29BEEbspnKD3m3wAwkA==
dependencies:
"@vue/shared" "3.1.4"
"@vue/reactivity@^3.0.11":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.1.2.tgz#66fa530dd726d2fef285ae55d02106a727db463b"
integrity sha512-glJzJoN2xE7I2lRvwKM5u1BHRPTd1yc8iaf//Lai/78/uYAvE5DXp5HzWRFOwMlbRvMGJHIQjOqoxj87cDAaag==
dependencies:
"@vue/shared" "3.1.2"
"@vue/runtime-core@3.1.4":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.1.4.tgz#3e30ae6ecbfff06df5adc9414491143191a375ba"
@ -1047,12 +985,7 @@
"@vue/shared" "3.1.4"
csstype "^2.6.8"
"@vue/shared@3.1.2", "@vue/shared@^3.0.11":
version "3.1.2"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.2.tgz#1069c0bc7d6f4bd15ccf3a5f3be29450aca368f9"
integrity sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg==
"@vue/shared@3.1.4":
"@vue/shared@3.1.4", "@vue/shared@^3.0.11":
version "3.1.4"
resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.1.4.tgz#c14c461ec42ea2c1556e86f60b0354341d91adc3"
integrity sha512-6O45kZAmkLvzGLToBxEz4lR2W6kXohCtebV2UxjH9GXjd8X9AhEn68FN9eNanFtWNzvgw1hqd6HkPRVQalqf7Q==
@ -1144,9 +1077,9 @@ ajv@^6.10.0, ajv@^6.12.4:
uri-js "^4.2.2"
ajv@^8.0.1:
version "8.6.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720"
integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ==
version "8.6.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.1.tgz#ae65764bf1edde8cd861281cda5057852364a295"
integrity sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@ -1531,9 +1464,9 @@ camelcase@^6.0.0:
integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001219:
version "1.0.30001239"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz#66e8669985bb2cb84ccb10f68c25ce6dd3e4d2b8"
integrity sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ==
version "1.0.30001242"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001242.tgz#04201627abcd60dc89211f22cbe2347306cda46b"
integrity sha512-KvNuZ/duufelMB3w2xtf9gEWCSxJwUgoxOx5b6ScLXC4kPc9xsczUVCPrQU26j5kOsHM4pSUL54tAZt5THQKug==
capital-case@^1.0.4:
version "1.0.4"
@ -1894,9 +1827,9 @@ cookie@^0.4.0:
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
core-js@^3.15.1:
version "3.15.1"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.1.tgz#6c08ab88abdf56545045ccf5fd81f47f407e7f1a"
integrity sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==
version "3.15.2"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.2.tgz#740660d2ff55ef34ce664d7e2455119c5bdd3d61"
integrity sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==
core-util-is@~1.0.0:
version "1.0.2"
@ -2032,14 +1965,7 @@ debug@^3.1.0, debug@^3.2.7:
dependencies:
ms "^2.1.1"
debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
dependencies:
ms "2.1.2"
debug@^4.3.2:
debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
version "4.3.2"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
@ -2230,9 +2156,9 @@ editor@1.0.0:
integrity sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=
electron-to-chromium@^1.3.723:
version "1.3.755"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.755.tgz#4b6101f13de910cf3f0a1789ddc57328133b9332"
integrity sha512-BJ1s/kuUuOeo1bF/EM2E4yqW9te0Hpof3wgwBx40AWJE18zsD1Tqo0kr7ijnOc+lRsrlrqKPauJAHqaxOItoUA==
version "1.3.766"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.766.tgz#2fd14a4e54f77665872f4e23fcf4968e83638220"
integrity sha512-u2quJ862q9reRKh/je3GXis3w38+RoXH1J9N3XjtsS6NzmUAosNsyZgUVFZPN/ZlJ3v6T0rTyZR3q/J5c6Sy5w==
element-plus@1.0.2-beta.54:
version "1.0.2-beta.54"
@ -2356,9 +2282,9 @@ es6-promisify@^5.0.0:
es6-promise "^4.0.3"
esbuild@^0.12.8:
version "0.12.9"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.9.tgz#bed4e7087c286cd81d975631f77d47feb1660070"
integrity sha512-MWRhAbMOJ9RJygCrt778rz/qNYgA4ZVj6aXnNPxFjs7PmIpb0fuB9Gmg5uWrr6n++XKwwm/RmSz6RR5JL2Ocsw==
version "0.12.14"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.14.tgz#43157dbd0b36d939247d4eb4909a4886ac40f82e"
integrity sha512-z8p+6FGiplR7a3pPonXREbm+8IeXjBGvDpVidZmGB/AJMsJSfGCU+n7KOMCazA9AwvagadRWBhiKorC0w9WJvw==
escalade@^3.1.1:
version "3.1.1"
@ -2434,7 +2360,7 @@ eslint-plugin-vue@^7.12.1:
semver "^7.3.2"
vue-eslint-parser "^7.6.0"
eslint-scope@^5.0.0, eslint-scope@^5.1.1:
eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@ -2650,19 +2576,7 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
fast-glob@^3.1.1, fast-glob@^3.2.5:
version "3.2.5"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661"
integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==
dependencies:
"@nodelib/fs.stat" "^2.0.2"
"@nodelib/fs.walk" "^1.2.3"
glob-parent "^5.1.0"
merge2 "^1.3.0"
micromatch "^4.0.2"
picomatch "^2.2.1"
fast-glob@^3.2.6:
fast-glob@^3.1.1, fast-glob@^3.2.5, fast-glob@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.6.tgz#434dd9529845176ea049acc9343e8282765c6e1a"
integrity sha512-GnLuqj/pvQ7pX8/L4J84nijv6sAnlwvSDpMkJi9i7nPmPxGtRPkBSStfvDW5l6nMdX9VWe+pkKWFTgD+vF2QSQ==
@ -2689,9 +2603,9 @@ fastest-levenshtein@^1.0.12:
integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
fastq@^1.6.0:
version "1.11.0"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==
version "1.11.1"
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807"
integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==
dependencies:
reusify "^1.0.4"
@ -2815,9 +2729,9 @@ flat-cache@^3.0.4:
rimraf "^3.0.2"
flatted@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469"
integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==
version "3.2.0"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.0.tgz#da07fb8808050aba6fdeac2294542e5043583f05"
integrity sha512-XprP7lDrVT+kE2c2YlfiV+IfS9zxukiIOvNamPNsImNhXadSsQEbosItdL9bUQlCZXR13SvPk20BjWSWLA7m4A==
fn-name@^2.0.1:
version "2.0.1"
@ -2825,9 +2739,9 @@ fn-name@^2.0.1:
integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc=
focus-trap@^6.4.0:
version "6.5.1"
resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-6.5.1.tgz#2d2bb91198f17e8bc52070f1fb48ac36be4230b5"
integrity sha512-q57JebeQXVThn9DWvWLP2rUwuArvk8w3PyqZLSddto0thmVmklFzYJQO97Aq3pUcWkTXjflUa88fT0CrASsaHQ==
version "6.6.0"
resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-6.6.0.tgz#7fb37679926ec1bd762d0748b056c68a64a9e8cf"
integrity sha512-2hWVR3XbBejn5v8wDW9DFzLWXcxMNaSJ/CtE3E+FJjjBCLwIYbZJwjUi2RDBfQPM58gHEt5hck0jrJgHR9/s+A==
dependencies:
tabbable "^5.2.0"
@ -2964,7 +2878,7 @@ git-raw-commits@^2.0.0:
split2 "^3.0.0"
through2 "^4.0.0"
glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.2:
glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@ -5347,9 +5261,9 @@ rimraf@~2.6.2:
glob "^7.1.3"
rollup@^2.38.5:
version "2.52.2"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.2.tgz#a7e90d10ddae3e8472c2857bd9f44b09ef34a47a"
integrity sha512-4RlFC3k2BIHlUsJ9mGd8OO+9Lm2eDF5P7+6DNQOp5sx+7N/1tFM01kELfbxlMX3MxT6owvLB1ln4S3QvvQlbUA==
version "2.52.7"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.52.7.tgz#e15a8bf734f6e4c204b7cdf33521151310250cb2"
integrity sha512-55cSH4CCU6MaPr9TAOyrIC+7qFCHscL7tkNsm1MBfIJRRqRbCEY0mmeFn4Wg8FKsHtEH8r389Fz38r/o+kgXLg==
optionalDependencies:
fsevents "~2.3.2"
@ -5864,9 +5778,9 @@ svg-tags@^1.0.0:
integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
systemjs@^6.10.1:
version "6.10.1"
resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.10.1.tgz#4a42a9f4ee8dc740c29dc9af631da819ae736c69"
integrity sha512-i2HiBOTIsm4GpjpiDHqTscZ/78htyTtdhpcbY2XPbIpsaNDIBA9vtxwIl8kSSnIRO0Zn7SHqvvILu3cMoXQuYw==
version "6.10.2"
resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-6.10.2.tgz#c9870217bddf9cfd25d12d4fcd1989541ef1207c"
integrity sha512-PwaC0Z6Y1E6gFekY2u38EC5+5w2M65jYVrD1aAcOptpHVhCwPIwPFJvYJyryQKUyeuQ5bKKI3PBHWNjdE9aizg==
tabbable@^5.2.0:
version "5.2.0"
@ -6326,7 +6240,7 @@ validate-npm-package-license@^3.0.1:
spdx-correct "^3.0.0"
spdx-expression-parse "^3.0.0"
vant@^3.1.2:
vant@3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/vant/-/vant-3.1.2.tgz#8777290f38c4b042d22612343e72dcab95b044ed"
integrity sha512-uw+ZKZTD44L2YojenZjRuF/rETR28rnuI7cQ4tFtEJBLKc1TNxsxl3PYmoGbYt7jd5rMrHYST8SkBsbB5i4kNA==
@ -6462,9 +6376,9 @@ void-elements@^3.1.0:
integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=
vscode-css-languageservice@^5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.1.3.tgz#a7b2f21ed48842af5d9a98223bcae09e33d707d5"
integrity sha512-c8xiUhrDBNG6iS92FEE+K3IWOHAqVvzsqjjLSaXHyF5Qdn/6VhUweGNjtZ2CBSfs+Vkmz7pJzLQ7Io1x5deumA==
version "5.1.4"
resolved "https://registry.yarnpkg.com/vscode-css-languageservice/-/vscode-css-languageservice-5.1.4.tgz#07e4c63f1c3bb06e6f3f329c32b490d20a601bab"
integrity sha512-fIJZJMXbaBsK0ifBb2RmSiLtzwn6NrZnKn7O+0ziIjwAY+rPvSK9St2qqQXFU3reZVRAt/I4GBp40dC/THcUDA==
dependencies:
vscode-languageserver-textdocument "^1.0.1"
vscode-languageserver-types "^3.16.0"
@ -6484,9 +6398,9 @@ vscode-emmet-helper@^2.6.4:
vscode-uri "^2.1.2"
vscode-html-languageservice@^4.0.4:
version "4.0.5"
resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-4.0.5.tgz#4f3657200a0613f2b83d47542c80ca0328868885"
integrity sha512-9ZKp7nfR6ObUA+K65GfgDPdOmXaPH8MOWxE2RwWF3tVnVMq2w+COKjDNHMvv+uNxtmaRT7/skls7CD/HzrW99w==
version "4.0.6"
resolved "https://registry.yarnpkg.com/vscode-html-languageservice/-/vscode-html-languageservice-4.0.6.tgz#c0a538077eb491730f49a47ab13ed7991bd8a45a"
integrity sha512-p1VK0+7JLzBFfbUrENm3QcBNbDzJUVhVnXOxHdC9XmgcubQBUINyzNeYio93srOafjRMQcJmzugB4vfmUnbCQg==
dependencies:
vscode-languageserver-textdocument "^1.0.1"
vscode-languageserver-types "^3.16.0"
@ -6494,9 +6408,9 @@ vscode-html-languageservice@^4.0.4:
vscode-uri "^3.0.2"
vscode-json-languageservice@^4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-4.1.4.tgz#c83d3d812f8f17ab525724c611d8ff5e8834fc84"
integrity sha512-/UqaE58BVFdePM9l971L6xPRLlCLNk01aovf1Pp9hB/8pytmd2s9ZNEnS1JqYyQEJ1k5/fEBsWOdhQlNo4H7VA==
version "4.1.5"
resolved "https://registry.yarnpkg.com/vscode-json-languageservice/-/vscode-json-languageservice-4.1.5.tgz#e429987d9e4693d8cd88338fa3c96616772b6e8c"
integrity sha512-oRVPj2UY6BQ8PQ1LIz/FigUEZQVqsB9msNCFlxRBHE9sSEIJkCbYG6aCB2n7WR17VIisYQdO3MDheuoyI48G2w==
dependencies:
jsonc-parser "^3.0.0"
minimatch "^3.0.4"
@ -6550,26 +6464,26 @@ vscode-nls@^5.0.0:
resolved "https://registry.yarnpkg.com/vscode-nls/-/vscode-nls-5.0.0.tgz#99f0da0bd9ea7cda44e565a74c54b1f2bc257840"
integrity sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==
vscode-pug-languageservice@^0.25.22:
version "0.25.22"
resolved "https://registry.yarnpkg.com/vscode-pug-languageservice/-/vscode-pug-languageservice-0.25.22.tgz#4920f26a395e835e10e99861dd3b9481161e8194"
integrity sha512-1v1ljcqMuyaITCbby3eMsMiAVJXtVxGu+oMwJ8STOeDsMgkOTv3IrfoZjwsps96Qj3pf0d8XJPzSZkGoTrBiOA==
vscode-pug-languageservice@^0.25.26:
version "0.25.26"
resolved "https://registry.yarnpkg.com/vscode-pug-languageservice/-/vscode-pug-languageservice-0.25.26.tgz#cbe9b702637b94ee6ab90eac450adda5ae13b4c8"
integrity sha512-5916Fu1ZQyLcUAvTnqk3BRwbIdlasHwhjdl9ln6686ZldhoXBBW7NRNlJ//N7tJcVJ3q03W7SPPfhDTiPk4ZRQ==
dependencies:
"@volar/code-gen" "^0.25.22"
"@volar/shared" "^0.25.22"
"@volar/source-map" "^0.25.22"
"@volar/transforms" "^0.25.22"
"@volar/code-gen" "^0.25.26"
"@volar/shared" "^0.25.26"
"@volar/source-map" "^0.25.26"
"@volar/transforms" "^0.25.26"
pug-beautify "^0.1.1"
pug-lexer "^5.0.1"
pug-parser "^6.0.0"
vscode-languageserver "^7.1.0-next.4"
vscode-typescript-languageservice@^0.25.22:
version "0.25.22"
resolved "https://registry.yarnpkg.com/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.25.22.tgz#ac642a96e71fbbe8ddef27965b56fc15dd8eac14"
integrity sha512-Fb6i9RsAOTZUqtkQiOv6THkBofWedPtxXiXGGkoIEkkgEoP16wQtw9ctYGsazOO127kjgYLRN8TdsudvqcFtEw==
vscode-typescript-languageservice@^0.25.26:
version "0.25.26"
resolved "https://registry.yarnpkg.com/vscode-typescript-languageservice/-/vscode-typescript-languageservice-0.25.26.tgz#c9976a2df48431a133d66e518a8a4473a7cc63e8"
integrity sha512-+lLUGWq0mAZooeZfE6PRhlvKb7O3p7ouwQGEwXVy0DbIZIAb5rRmYNCbh+qHk632CJiS7ZIrMZBmFYiEg4Bqow==
dependencies:
"@volar/shared" "^0.25.22"
"@volar/shared" "^0.25.26"
typescript-vscode-sh-plugin "^0.6.14"
upath "^2.0.1"
vscode-languageserver "^7.1.0-next.4"
@ -6586,16 +6500,16 @@ vscode-uri@^3.0.2:
integrity sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA==
vscode-vue-languageservice@^0.25.22:
version "0.25.22"
resolved "https://registry.yarnpkg.com/vscode-vue-languageservice/-/vscode-vue-languageservice-0.25.22.tgz#e7ac55bbf8dc2d4529c0603e833a59afaa1ad49b"
integrity sha512-g9AipU1T7AON/rAJ5+pyYmWZD/V+0CTSqRSPMaK/eRaYxLNfrXXLgankoNhqP5XyHFQsYbxMJ6mAg3d0Vy3WZw==
version "0.25.26"
resolved "https://registry.yarnpkg.com/vscode-vue-languageservice/-/vscode-vue-languageservice-0.25.26.tgz#eeb8fbe992b9a41e0c9e65f53cfcbc669e35758e"
integrity sha512-CrqsAANPZFiOoPD7fmWrr2+yJMisLIdlm43MHzXk2IgN/0K5AwPj93n3LgNeNVRI96rvZXhvWC+H9XFZvJDHnw==
dependencies:
"@starptech/prettyhtml" "^0.10.0"
"@volar/code-gen" "^0.25.22"
"@volar/code-gen" "^0.25.26"
"@volar/html2pug" "^0.25.4"
"@volar/shared" "^0.25.22"
"@volar/source-map" "^0.25.22"
"@volar/transforms" "^0.25.22"
"@volar/shared" "^0.25.26"
"@volar/source-map" "^0.25.26"
"@volar/transforms" "^0.25.26"
"@vue/compiler-dom" "^3.0.11"
"@vue/compiler-sfc" "^3.0.11"
"@vue/reactivity" "^3.0.11"
@ -6610,27 +6524,15 @@ vscode-vue-languageservice@^0.25.22:
vscode-json-languageservice "^4.1.4"
vscode-languageserver "^7.1.0-next.4"
vscode-languageserver-textdocument "^1.0.1"
vscode-pug-languageservice "^0.25.22"
vscode-typescript-languageservice "^0.25.22"
vscode-pug-languageservice "^0.25.26"
vscode-typescript-languageservice "^0.25.26"
vue-demi@*:
version "0.9.1"
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.9.1.tgz#25d6e1ebd4d4010757ff3571e2bf6a1d7bf3de82"
integrity sha512-7s1lufRD2l369eFWPjgLvhqCRk0XzGWJsQc7K4q+0mZtixyGIvsK1Cg88P4NcaRIEiBuuN4q1NN4SZKFKwQswA==
vue-eslint-parser@^7.6.0:
version "7.6.0"
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz#01ea1a2932f581ff244336565d712801f8f72561"
integrity sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==
dependencies:
debug "^4.1.1"
eslint-scope "^5.0.0"
eslint-visitor-keys "^1.1.0"
espree "^6.2.1"
esquery "^1.4.0"
lodash "^4.17.15"
vue-eslint-parser@^7.7.2:
vue-eslint-parser@^7.6.0, vue-eslint-parser@^7.7.2:
version "7.7.2"
resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.7.2.tgz#a723080b29c27fa0b3737bedceaeebe30fd0f359"
integrity sha512-zkfxSttpwBW9SQEa+rLR+j6sFHGGhanVH3VuzHQwybCQWJsg/Yi1W619gXOW01U/zekN4D+J4/S4Zufd1sClZg==
@ -6717,12 +6619,7 @@ widest-line@^2.0.0:
dependencies:
string-width "^2.1.1"
windicss@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/windicss/-/windicss-3.1.3.tgz#a4b80af48bdd5d4be13520f700b497af455df700"
integrity sha512-l7fpoba2LY9AYRy4UgcuOpbPsed8UsbpEQYUVWRR1wdAwiKxK6bGIMfpiKJtjPAPdh0GOGUqr6KJar0EDZSxzg==
windicss@^3.1.4:
windicss@^3.1.3, windicss@^3.1.4:
version "3.1.4"
resolved "https://registry.yarnpkg.com/windicss/-/windicss-3.1.4.tgz#557eaf8e3c08064a309ccb5d887c82c4bce25069"
integrity sha512-3RBcANxdOy/n4dLVT8+0X409sGI+piO06ARbQ8RncxGuYgdw5Ip3hrhGIYajH67lV+tHc7xNVGxj73amOC9N0g==