优化代码

This commit is contained in:
zouzhibing 2022-08-29 16:08:26 +08:00
parent 6c40c8c1ec
commit 08a7e57728
23 changed files with 1150 additions and 375 deletions

View File

@ -13,6 +13,8 @@
"dependencies": {
"@better-scroll/core": "^2.4.2",
"@vueuse/core": "^9.1.1",
"@wangeditor/editor": "^5.1.14",
"@wangeditor/editor-for-vue": "^5.1.12",
"clipboard": "^2.0.10",
"core-js": "^3.6.5",
"dayjs": "^1.11.4",
@ -43,7 +45,6 @@
"vue-splitpane": "^1.0.6",
"vuedraggable": "^4.1.0",
"vuex": "^4.0.0-0",
"wangeditor": "^4.7.12",
"xlsx": "^0.18.5"
},
"devDependencies": {

View File

@ -0,0 +1,305 @@
<template>
<div class="m-edit-table">
<div style="margin-top: 15px; margin-bottom: 15px" v-if="mode !== 'hide' && mode !== 'bottom'">
<el-button style="width: 100%" @click="add">
<el-icon style="margin-right: 4px"><plus /></el-icon> </el-button
>
</div>
<el-table :data="transData" style="width: 100%" row-key="id" border>
<template v-for="item in columns">
<el-table-column
v-if="item.type"
:type="item.type"
:width="item.width"
:align="item.align"
:fixed="item.fixed"
:label="item.label"
/>
<el-table-column
v-else
:prop="item.name"
:width="item.width"
:align="item.align"
:fixed="item.fixed"
:label="item.label"
>
<template #default="scope">
<template v-if="!item.slot">
<template v-if="item.readonly">
{{ scope.row[item.name] }}
</template>
<template v-else-if="item.valueType === 'select'">
<el-select
clearable
:placeholder="`请选择`"
v-model="scope.row[item.name]"
v-if="scope.row.edit"
>
<el-option
v-for="ite in item.options"
:key="ite.value"
:label="ite.label"
:value="ite.value"
/>
</el-select>
<span v-else>{{ filterOption(item, scope) }}</span>
</template>
<template v-else-if="item.valueType === 'date'">
<el-date-picker
v-model="scope.row[item.name]"
type="date"
value-format="YYYY-MM-DD"
clearable
placeholder="请选择"
v-if="scope.row.edit"
/>
<span v-else>{{ scope.row[item.name] || '--' }}</span>
</template>
<template v-else>
<el-input
clearable
placeholder="请输入"
v-model="scope.row[item.name]"
v-if="scope.row.edit"
></el-input>
<span v-else>{{ scope.row[item.name] || '--' }}</span>
</template>
</template>
<slot v-else :name="item.name" :item="item" :row="scope.row"></slot>
</template>
</el-table-column>
</template>
<el-table-column prop="operator" label="操作" width="250px" fixed="right">
<template #default="scope">
<el-button
v-if="scope.row.edit"
type="success"
size="small"
icon="CircleCheckFilled"
@click="confirmEdit(scope.row)"
>
保存
</el-button>
<el-button
v-else
type="primary"
size="small"
icon="Edit"
@click="scope.row.edit = !scope.row.edit"
>
编辑
</el-button>
<el-popover
trigger="click"
v-model:visible="scope.row.visible"
placement="top"
:width="160"
>
<p style="display: flex; align-items: center; margin-bottom: 10px">
<el-icon color="#faad14" style="margin-right: 10px"><warning-filled /></el-icon>
删除此行</p
>
<div style="text-align: right; margin: 0">
<el-button size="small" @click="scope.row.visible = false">取消</el-button>
<el-button size="small" type="primary" @click="deleteAction(scope.row)"
>确定</el-button
>
</div>
<template #reference>
<el-button icon="Delete" @click="deleteCurrent(scope.row)" type="danger" size="small"
>删除</el-button
>
</template>
</el-popover>
<el-button
v-if="scope.row.edit"
type="primary"
size="small"
icon="Edit"
@click="cancelEdit(scope.row)"
>
取消
</el-button>
</template>
</el-table-column>
</el-table>
<div style="margin-top: 15px" v-if="mode !== 'hide' && mode !== 'top'">
<el-button style="width: 100%" @click="add">
<el-icon style="margin-right: 4px"><plus /></el-icon> </el-button
>
</div>
</div>
</template>
<script lang="ts" setup>
import { computed, onMounted, ref, watch } from 'vue'
import { deepObjClone } from '@/utils/index'
import { ElMessage, ElMessageBox } from 'element-plus'
import { reactive } from 'vue'
const emit = defineEmits(['del', 'add', 'onChange'])
let transData = ref([])
let props = defineProps({
columns: {
type: Array,
default: () => [],
},
data: {
type: Array,
default: () => [],
},
editableKeys: {
type: Array,
default: () => [],
},
mode: {
type: String,
default: 'bottom',
},
})
//
const deleteCurrent = (row)=>{
// console.log('----------',row)
// row.visible = true
}
const getData = () => {
let arr = deepObjClone(transData.value)
for (let item of arr) {
for (let attr in item) {
if (attr.includes('te__mp')) {
delete item[attr]
}
}
}
emit('onChange', arr)
}
let obj = {}
for (let item of props.columns) {
props.data.forEach((it) => {
if (!obj[item.name]) {
obj[item.name] = null
}
})
}
//
const reset = () => {
transData.value = props.data
for (let item of transData.value) {
if (props.editableKeys.includes(item.id)) {
item.edit = true
}
}
getData()
}
onMounted(() => {
watch(
() => props.data,
(val) => {
// //
transData.value = deepObjClone(val)
//
for (let item of transData.value) {
if (props.editableKeys.includes(item.id)) {
item.edit = true
}
for (let attr in item) {
let temp = `${attr}te__mp`
item[temp] = item[attr]
}
}
},
{
immediate: true,
deep: true,
},
)
})
const visible = ref(false)
const handleSizeChange = (val: number) => {
console.log(`${val} items per page`)
}
const listLoading = ref(false)
//
const confirmEdit = (row) => {
row.edit = false
for (let attr in row) {
if (attr.includes('te__mp')) {
row[attr] = row[attr.replace('te__mp', '')]
}
}
getData()
}
//
const cancelEdit = (row) => {
row.edit = !row.edit
for (let attr in row) {
if (attr !== 'edit') {
if (!attr.includes('te__mp')) {
row[attr] = row[attr + 'te__mp']
}
}
}
}
const deleteAction = (row) => {
row.visible = false
transData.value = transData.value.filter((item) => item.id !== row.id)
emit('del', row)
}
//
const add = () => {
let id = ~~(Math.random() * 1000000).toFixed(0)
let obj1 = Object.assign({}, obj, {
id: id,
edit: true,
visible: false,
})
for (let attr in obj1) {
let temp = `${attr}te__mp`
obj1[temp] = obj1[attr]
}
if (props.mode === 'bottom') {
transData.value.push(obj1)
}
if (props.mode === 'top') {
transData.value.unshift(obj1)
}
}
const filterOption = (item, scope) => {
let obj = item.options.find((ite) => ite.value === scope.row[item.name])
if (obj) {
return obj.label
}
return '--'
}
defineExpose({
reset,
})
</script>
<style scoped>
.edit-input {
padding-right: 100px;
}
.cancel-btn {
position: absolute;
right: 15px;
top: 10px;
}
.inline-edit-table {
width: 100%;
}
</style>

View File

@ -10,12 +10,12 @@
<style lang="scss" scoped>
.m-container-layout {
//margin: 20px;
padding: 20px;
box-sizing: border-box;
width: 100%;
height: 100%;
.m-container-layout-inner {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
background: white;
padding: 20px;
width: 100%;

View File

@ -117,7 +117,7 @@
position: fixed;
top: 50%;
right: 0;
z-index: 1997;
z-index: 99999;
padding: 10px 0 0 0;
margin: 0;
text-align: center;

View File

@ -1,14 +1,34 @@
<template>
<div class="u-wangEditor">
<div id="wangEditor"></div>
<div class="m-wangEditor">
<Toolbar
style="border-bottom: 1px solid #ccc"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
class="editor-content'"
style="height: 300px; overflow-y: hidden;"
v-model="valueHtml"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div>
</template>
<script lang="ts" setup>
// wangEditor
import wangEditor from 'wangeditor'
import { onBeforeUnmount, onMounted, watch } from 'vue'
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import '@wangeditor/editor/dist/css/style.css' // css
import {onBeforeUnmount, onMounted, watch, shallowRef, ref, computed} from 'vue'
let editors = null
// shallowRef
const editorRef = shallowRef()
const toolbarConfig = {}
const editorConfig = { placeholder: '请输入内容...' }
// HTML
const mode = ref('default')
let emit = defineEmits(['update:modelValue'])
let props = defineProps({
modelValue: String,
@ -20,28 +40,41 @@
alert(data)
}
onMounted(() => {
watch(
() => props.modelValue,
(value) => {
editors.txt.html(value)
},
)
const editor = new wangEditor(`#wangEditor`)
// onchange vue
editor.config.onchange = (newHtml) => {
emit('update:modelValue', newHtml)
}
//
editor.create()
const handleCreated = (editor) => {
editorRef.value = editor // editor
}
editors = editor
const valueHtml = computed({
get(){
return props.modelValue
},
set(val){
//
if (editorRef.value.isEmpty()) val = "";
emit('update:modelValue', val)
}
})
onBeforeUnmount(() => {
//
onBeforeUnmount(()=>{
// API
editors.destroy()
editors = null
const editor = editorRef.value
if (editor == null) {
return
}
editor.destroy()
})
</script>
<style></style>
<style lang="scss" scoped>
.m-wangEditor{
z-index: 99;
width: 100%;
border: 1px solid #cccccc;
.editor-toolbar {
border-bottom: 1px solid #cccccc;
}
.editor-content {
overflow-y: hidden;
}
}
</style>

View File

@ -1,10 +1,10 @@
import Vue from 'vue'
import SvgIcon from '@/components/SvgIcon' // svg component
console.log(11111111)
// const req = require.context('./svg', false, /\.svg$/)
const req = import.meta.globEager('./svg/*.svg')
consoole.log('req', req)
const requireAll = (requireContext) => requireContext.keys().map(requireContext)
requireAll(req)

View File

@ -14,13 +14,13 @@ const othersRouter = {
children: [
{
path: 'editor',
component: () => import('@/views/other/editor.vue'),
component: () => import('@/views/other/editor/index.vue'),
name: 'editor',
meta: { title: '富文本编辑器', roles: ['other'] , icon: 'MenuIcon'}
},
{
path: 'mark-down',
component: () => import('@/views/other/mark-down.vue'),
component: () => import('@/views/other/markDown/index.vue'),
name: 'mark-down',
meta: { title: 'markDown', roles: ['other'] , icon: 'MenuIcon'}
},
@ -60,6 +60,12 @@ const othersRouter = {
name: 'qrcode',
meta: { title: '生成二维码', icon: 'MenuIcon' }
},
{
path: 'svgIcon',
component: () => import('@/views/other/svgIcon/index.vue'),
name: 'svgIcon',
meta: { title: 'svg图标', icon: 'MenuIcon' }
},
{
path: 'water-marker',
component: () => import('@/views/other/water-marker.vue'),

View File

@ -9,7 +9,7 @@ const tableRouter = {
redirect: 'noRedirect',
name: 'table',
meta: {
title: '表格',
title: '超级表格',
icon: 'School'
},
children: [
@ -26,8 +26,8 @@ const tableRouter = {
meta: { title: '行内编辑', keepAlive: true , icon: 'MenuIcon'}
},
{
path: 'edit-table',
component: () => import('@/views/table/edit.vue'),
path: 'editableProTable',
component: () => import('@/views/table/EditableProTable.vue'),
name: 'edit-table',
meta: { title: '可编辑表格', keepAlive: true , icon: 'MenuIcon'}
},

16
src/styles/common.scss Normal file
View File

@ -0,0 +1,16 @@
/* 常用 flex */
.flex-center {
display: flex;
align-items: center;
justify-content: center;
}
.flex-justify-between {
display: flex;
align-items: center;
justify-content: space-between;
}
.flex-align-center {
display: flex;
align-items: center;
}

View File

@ -1,3 +1,4 @@
@import "./common.scss";
@import './variables.scss';
@import './sidebar.scss';
@import './transition.scss';

View File

@ -26,7 +26,7 @@
top: 0;
bottom: 0;
left: 0;
z-index: 1001;
z-index: 98;
overflow: hidden;
// reset element-ui css
.horizontal-collapse-transition {

View File

@ -46,10 +46,10 @@ function watermark (options) {
watermarkDiv.classList.add('__wm') // 为元素添加“__wm”类名
container.style.position = 'relative'
if (!__wm) {
container.appendChild(watermarkDiv) // 添加元素
}
container.appendChild(watermarkDiv) // 添加元素
// 监听删除 防止用户去手动删除,如果手动删除 ,在重新添加
// const MutationObserver = window.MutationObserver || window.WebKitMutationObserver
// // 检查浏览器是否支持这个API
// if (MutationObserver) {

View File

@ -1,61 +0,0 @@
<template>
<u-container-layout>
<el-form ref="formRef" :model="dynamicValidateForm" label-width="80px" class="demo-dynamic">
<el-form-item
prop="title"
label="标题"
:rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]"
>
<el-input v-model="dynamicValidateForm.title" />
</el-form-item>
<el-form-item
prop="content"
label="标题"
:rules="[{ required: true, message: '请输入内容', trigger: 'blur' }]"
>
<u-wang-edior v-model="dynamicValidateForm.content" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm(formRef)">保存</el-button>
<!-- <el-button @click="preview">预览</el-button>-->
<el-button @click="resetForm(formRef)">取消</el-button>
</el-form-item>
</el-form>
</u-container-layout>
</template>
<script lang="ts" setup>
import UWangEdior from '@/components/u-wangEdior/index.vue'
import { reactive, ref } from 'vue'
import type { FormInstance } from 'element-plus'
import { ElMessage } from 'element-plus'
const formRef = ref<FormInstance>()
const dynamicValidateForm = reactive<{
title: string
content: string
}>({
title: '',
content: '',
})
const submitForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.validate((valid) => {
console.log('valid', valid)
if (valid) {
ElMessage.success('保存成功')
} else {
console.log('error submit!')
return false
}
})
}
const preview = () => {}
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields()
}
</script>

View File

@ -0,0 +1,98 @@
<template>
<u-container-layout>
<el-form ref="formRef" :model="dynamicValidateForm" label-width="80px" class="demo-dynamic">
<el-form-item
prop="title"
label="标题"
:rules="[{ required: true, message: '请输入标题', trigger: 'blur' }]"
>
<el-input v-model="dynamicValidateForm.title" />
</el-form-item>
<el-form-item
prop="content"
label="标题"
:rules="[{ required: true, message: '请输入内容', trigger: 'blur' }]"
>
<u-wang-edior v-model="dynamicValidateForm.content" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm(formRef)">保存</el-button>
<el-button type="primary" @click="preview(formRef)">预览</el-button>
<el-button @click="resetForm(formRef)">重置</el-button>
</el-form-item>
</el-form>
<el-descriptions title="配置项 " :column="1" border class="descriptions">
<el-descriptions-item label="value"> 双向绑定的 value 使用示例v-model='content' </el-descriptions-item>
<el-descriptions-item label="参考文档"> <a href="https://www.wangeditor.com/v5/for-frame.html"> https://www.wangeditor.com/v5/for-frame.html </a> </el-descriptions-item>
</el-descriptions>
<el-dialog
v-model="dialogVisible"
title="预览"
width="60%"
>
<div style="display: flex;align-items: center;margin-bottom: 20px">
<span style="width: 50px;font-weight: bold">标题</span>
<div>{{dynamicValidateForm.title}}</div>
</div>
<div style="display: flex;align-items: center;margin-bottom: 20px">
<span style="width: 50px;font-weight: bold">内容</span>
<div v-html="dynamicValidateForm.content"></div>
</div>
<template #footer>
</template>
</el-dialog>
</u-container-layout>
</template>
<script lang="ts" setup>
import UWangEdior from '@/components/u-wangEdior/index.vue'
import { reactive, ref } from 'vue'
import type { FormInstance } from 'element-plus'
import { ElMessage } from 'element-plus'
const formRef = ref<FormInstance>()
const dialogVisible = ref<boolean>(false)
const dynamicValidateForm = reactive<{
title: string
content: string
}>({
title: '',
content: '',
})
const submitForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.validate((valid) => {
console.log('valid', valid)
if (valid) {
ElMessage.success('保存成功')
} else {
console.log('error submit!')
return false
}
})
}
const preview = (formEl) => {
if (!formEl) return
formEl.validate((valid) => {
console.log('valid', valid)
if (valid) {
dialogVisible.value = true
} else {
console.log('error submit!')
return false
}
})
}
const resetForm = (formEl: FormInstance | undefined) => {
if (!formEl) return
formEl.resetFields()
}
</script>

View File

@ -1,48 +0,0 @@
<template>
<u-container-layout class="mark-down">
<el-alert
title="Markdown 是基于 md-editor-v3"
type="success"
style="margin-bottom: 20px"
:closable="false"
effect="dark"
/>
<div class="" style="flex: 1">
<md-editor v-model="text" />
</div>
<div style="margin-top: 20px; flex-shrink: 0">
<el-button type="primary" @click="submit">提交</el-button>
</div>
</u-container-layout>
</template>
<script lang="ts">
// https://imzbf.github.io/md-editor-v3/index
// https://www.jianshu.com/p/0b06128a6117
import { defineComponent } from 'vue'
import MdEditor from 'md-editor-v3'
import 'md-editor-v3/lib/style.css'
export default defineComponent({
components: { MdEditor },
data() {
return { text: '## 你好呀,欢迎!' }
},
methods: {
submit() {
console.log('this.text', this.text)
},
},
})
</script>
<style lang="scss">
.mark-down {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.md {
height: 600px;
}
}
</style>

View File

@ -0,0 +1,46 @@
<template>
<u-container-layout class="mark-down">
<el-alert
title="Markdown 是基于 md-editor-v3 插件完成, 官方文档请查看 https://imzbf.github.io/md-editor-v3/index"
type="warning"
:closable="false"
/>
<div class="" style="flex: 1">
<md-editor v-model="text" />
</div>
<div style="margin-top: 20px; flex-shrink: 0">
<el-button type="primary" @click="submit">提交</el-button>
</div>
</u-container-layout>
</template>
<script lang="ts">
//
// https://www.jianshu.com/p/0b06128a6117
import { defineComponent } from 'vue'
import MdEditor from 'md-editor-v3'
import 'md-editor-v3/lib/style.css'
export default defineComponent({
components: { MdEditor },
data() {
return { text: '## 你好呀,欢迎!' }
},
methods: {
submit() {
console.log('this.text', this.text)
},
},
})
</script>
<style lang="scss">
.mark-down {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.md {
height: 600px;
}
}
</style>

View File

@ -0,0 +1,12 @@
.icon-list{
box-sizing: border-box;
display: flex;
justify-content: space-between;
width: 100%;
padding: 40px 100px 0;
margin-bottom: 60px;
}
.icon{
font-size: 50px;
}

View File

@ -0,0 +1,39 @@
<template>
<u-container-layout class="components-container">
<div class="content-box">
<el-alert
title="SVG 图标目前使用 vite-plugin-svg-icons 插件完成,官方文档请查看 https://github.com/vbenjs/vite-plugin-svg-icons"
type="warning"
:closable="false"
/>
<br />
<div class="icon-list">
<SvgIcon icon-class="borrow" class-name="icon"/>
<SvgIcon icon-class="compass" class-name="icon"/>
<SvgIcon icon-class="dashboard" class-name="icon"/>
<SvgIcon icon-class="entrust" class-name="icon"/>
<SvgIcon icon-class="example" class-name="icon"/>
<SvgIcon icon-class="exit-fullscreen" class-name="icon"/>
<SvgIcon icon-class="eye" class-name="icon"/>
<SvgIcon icon-class="eye-open" class-name="icon"/>
<SvgIcon icon-class="form" class-name="icon"/>
<SvgIcon icon-class="fullscreen" class-name="icon"/>
<SvgIcon icon-class="go-out" class-name="icon"/>
</div>
<el-descriptions title="配置项" :column="1" border>
<el-descriptions-item label="name"> 图标的名称svg 图标必须存储在 src/icons 目录下 </el-descriptions-item>
<el-descriptions-item label="prefix"> 图标的前缀默认为 "icon-class" </el-descriptions-item>
<el-descriptions-item label="iconStyle"> 图标的样式默认样式为 { width: "1em", height: " 1em" } </el-descriptions-item>
</el-descriptions>
</div>
</u-container-layout>
</template>
<script setup lang="ts" name="svgIcon">
import SvgIcon from "@/components/SvgIcon/index.vue";
</script>
<style scoped lang="scss">
@import "./index.scss";
</style>

View File

@ -1,10 +1,25 @@
<template>
<div class="m-water-marker">
<el-button @click="addWaterMarker(1)" type="primary">生成默认颜色水印</el-button>
<el-button @click="addWaterMarker(2)" type="primary">生成随机颜色水印</el-button>
<el-button @click="setWaterMarker(-1)" type="primary">默认局部水印</el-button>
<el-button @click="setWaterMarker(0)" type="primary">生成全局水印</el-button>
<el-button @click="setWaterMarker(1)" type="primary">生成默认颜色水印</el-button>
<el-button @click="setWaterMarker(2)" type="primary">生成随机颜色水印</el-button>
<el-input v-model="opacity" style="width: 100px; margin-left: 20px"></el-input>
<el-button @click="addWaterMarker(3)" type="primary">设置透明度</el-button>
<el-button @click="addWaterMarker(4)" type="primary">取消水印</el-button>
<el-button @click="setWaterMarker(3)" type="primary">设置透明度</el-button>
<el-button @click="setWaterMarker(4)" type="primary">取消水印</el-button>
<el-descriptions title="配置项 " :column="1" border class="descriptions">
<el-descriptions-item label="content"> 水印内容默认为 'Vue Admin Perfect' </el-descriptions-item>
<el-descriptions-item label="container"> 水印容器默认生成在 document.body 下面 </el-descriptions-item>
<el-descriptions-item label="globalAlpha"> 设置图形和图像透明度的值默认为 0.3 </el-descriptions-item>
<el-descriptions-item label="height"> 水印高度默认为 240 </el-descriptions-item>
<el-descriptions-item label="width"> 水印宽度默认为 100 </el-descriptions-item>
<el-descriptions-item label="fillStyle"> 水印颜色默认为 '#000' </el-descriptions-item>
<el-descriptions-item label="textAlign"> 文字对齐默认为 'left' </el-descriptions-item>
<el-descriptions-item label="textBaseline"> 基准线默认为 'bottom' </el-descriptions-item>
<el-descriptions-item label="rotate"> 文字旋转角度默认为 '16' 计算方式为 (Math.PI * rotate) / 180 </el-descriptions-item>
<el-descriptions-item label="iconStyle"> 图标的样式默认样式为 { width: "1em", height: " 1em" } </el-descriptions-item>
</el-descriptions>
</div>
</template>
@ -12,8 +27,8 @@
import { nextTick, onMounted, ref } from 'vue'
import watermark from '@/utils/waterMarker'
import { getColor } from '@/utils/index'
const opacity = ref(0.2)
let selectType = ref(-1)
const options = {
rotate: -10,
globalAlpha: opacity.value,
@ -28,36 +43,62 @@
for (let i = 0; i < 30; i++) {
message.push(getColor())
}
const addWaterMarker = (type) => {
if (type === 1) {
options.fillStyle = '#000'
watermark(options)
} else if (type === 2) {
options.fillStyle = message[getRandom(0, 30)]
watermark(options)
} else if (type === 3) {
options.globalAlpha = opacity.value
watermark(options)
} else if (type === 4) {
nextTick(() => {
const wm = document.getElementsByClassName('__wm')[0]
if (wm) {
document.body.removeChild(wm)
}
})
const setWaterMarker = (type) => {
switch (type) {
case -1:
selectType.value = type
options.container = document.getElementsByClassName('m-water-marker')[0]
watermark(options)
return;
case 0:
selectType.value = type
delete options.container
watermark(options)
return;
case 1:
options.fillStyle = '#000'
watermark(options)
return;
case 2:
options.fillStyle = message[getRandom(0, 30)]
watermark(options)
return;
case 3:
options.globalAlpha = opacity.value
watermark(options)
return;
case 4:
nextTick(() => {
const wm = document.getElementsByClassName('__wm')[0]
if (wm) {
if(selectType.value===-1){
wm.remove()
}else {
document.body.removeChild(wm)
}
}
})
}
}
onMounted(() => {
nextTick(() => {})
nextTick(() => {
setWaterMarker(-1)
})
})
</script>
<style>
<style lang="scss">
.m-water-marker {
width: 100%;
height: 100%;
position: relative;
box-sizing: border-box;
padding: 20px;
.descriptions{
margin-top: 50px;
}
}
</style>

View File

@ -0,0 +1,152 @@
<template>
<u-container-layout>
<div style="margin-bottom: 20px">
<div style="display: flex; justify-content: flex-end">
<el-radio-group v-model="radio">
<el-radio label="top" >添加到顶部</el-radio>
<el-radio label="bottom">添加到底部</el-radio>
<el-radio label="hide">隐藏</el-radio>
</el-radio-group>
</div>
<el-divider />
<EditableProTable
:mode="radio"
:columns="column"
:data="list"
@add="add"
ref="table"
:editableKeys="editableKeys"
@onChange="onChange"
@del="deleteAction"
/>
<div style="margin-top: 20px">
<el-button @click="reset">重置</el-button>
<el-button type="primary" @click="config">提交</el-button>
</div>
</div>
<el-descriptions title="配置项 " :column="1" border class="descriptions">
<el-descriptions-item label="组件名"> EditableProTable </el-descriptions-item>
<el-descriptions-item label="columns"> 显示的列数据 </el-descriptions-item>
<el-descriptions-item label="data"> 源数据 </el-descriptions-item>
<el-descriptions-item label="editableKeys"> 显示可编辑输入框的key集合 </el-descriptions-item>
<el-descriptions-item label="mode"> 操作按钮显示的地方默认显示在底部'bottom', 'top bottom hide' </el-descriptions-item>
<el-descriptions-item label="del"> 删除当前行触发的事件 </el-descriptions-item>
<el-descriptions-item label="add"> 添加一行触发的事件 </el-descriptions-item>
<el-descriptions-item label="onChange"> 数据实时改变 </el-descriptions-item>
</el-descriptions>
</u-container-layout>
</template>
<script lang="ts" setup>
import EditableProTable from '@/components/Table/EditableProTable/index.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref } from 'vue'
const table = ref()
const column = [
{ name: 'title', label: '活动名称', width: 160 },
{
name: 'state',
label: '状态',
options: [
{
value: -1,
label: '全部',
},
{
value: 1,
label: '未解决',
},
{
value: 0,
label: '已解决',
},
],
valueType: 'select',
},
{
name: 'decs',
label: '描述',
valueType: 'input',
},
{
name: 'created_at',
label: '活动时间',
valueType: 'date',
},
]
let data = [
{
id: 6247418504,
title: '活动名称一',
readonly: '活动名称一',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-26',
update_at: '2020-05-26',
},
{
id: 6246921229,
title: '活动名称二',
readonly: '活动名称二',
decs: '这个活动真好玩',
state: 0,
created_at: '2020-05-26',
update_at: '2020-05-26',
},
{
id: 6242991229,
title: '活动名称三',
readonly: '活动名称三',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-26',
update_at: '2020-05-26',
},
{
id: 6242981229,
title: '活动名称四',
readonly: '活动名称四',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-26',
update_at: '2020-05-26',
},
]
let arrKeys = data
.map((item) => item.id)
.filter((item) => ![6247418504, 6246921229].includes(item))
const radio = ref('bottom')
const list = ref(data)
let editableKeys = ref(arrKeys)
const dataSource = ref(data)
const deleteAction = (row) => {
console.log('删除', row)
ElMessage.success('点击删除')
}
const onChange = (val) => {
dataSource.value = val
}
const add = (row) => {}
//
const reset = (val) => {
ElMessage.success('重置成功')
table.value.reset()
}
const config = () => {
list.value = dataSource.value
console.log('点击提交=========', dataSource.value)
ElMessage.success('点击提交数据')
}
</script>
<style lang="scss" scoped>
::v-deep(.el-divider--horizontal) {
margin: 10px 0;
}
</style>

View File

@ -1,174 +0,0 @@
<template>
<u-container-layout>
<div>
<div style="display: flex; justify-content: flex-end">
<el-radio-group v-model="radio">
<el-radio label="top">添加到顶部</el-radio>
<el-radio label="bottom">添加到底部</el-radio>
<el-radio label="hide">隐藏</el-radio>
</el-radio-group>
</div>
<el-divider />
<edit-table
:mode="radio"
:columns="column"
:data="list"
@add="add"
ref="table"
:editableKeys="editableKeys"
@onChange="onChange"
@del="deleteAction"
/>
<div style="margin-top: 20px">
<el-button @click="reset">重置</el-button>
<el-button type="primary" @click="config">提交</el-button>
</div>
</div>
</u-container-layout>
</template>
<script lang="ts" setup>
import EditTable from './components/edit.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref } from 'vue'
const table = ref()
const column = [
{ name: 'title', label: '活动名称', width: 160 },
{
name: 'state',
label: '状态',
options: [
{
value: -1,
label: '全部',
},
{
value: 1,
label: '未解决',
},
{
value: 0,
label: '已解决',
},
],
valueType: 'select',
},
{
name: 'decs',
label: '描述',
valueType: 'input',
},
{
name: 'created_at',
label: '活动时间',
valueType: 'date',
},
]
let data = [
{
id: 6247418504,
title: '活动名称一',
readonly: '活动名称一',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-26T09:42:56Z',
update_at: '2020-05-26T09:42:56Z',
},
{
id: 6246921229,
title: '活动名称二',
readonly: '活动名称二',
decs: '这个活动真好玩',
state: 0,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
{
id: 6242991229,
title: '活动名称三',
readonly: '活动名称三',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
{
id: 6242981229,
title: '活动名称四',
readonly: '活动名称四',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
{
id: 62429122229,
title: '活动名称五',
readonly: '活动名称五',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
{
id: 62423391229,
title: '活动名称六',
readonly: '活动名称六',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
{
id: 623291229,
title: '活动名称七',
readonly: '活动名称五',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
{
id: 624291219,
title: '活动名称八',
readonly: '活动名称六',
decs: '这个活动真好玩',
state: 1,
created_at: '2020-05-27T08:19:22Z',
update_at: '2020-05-27T08:19:22Z',
},
]
let arrKeys = data
.map((item) => item.id)
.filter((item) => ![6247418504, 6246921229].includes(item))
const radio = ref('bottom')
const list = ref(data)
let editableKeys = ref(arrKeys)
const dataSource = ref(data)
const deleteAction = (row) => {
console.log('删除', row)
ElMessage.success('点击删除')
}
const onChange = (val) => {
dataSource.value = val
}
const add = (row) => {}
const reset = (val) => {
ElMessage.success('重置成功')
table.value.reset()
}
const config = () => {
list.value = dataSource.value
console.log('点击提交=========', dataSource.value)
ElMessage.success('点击提交数据')
}
</script>
<style lang="scss" scoped>
::v-deep(.el-divider--horizontal) {
margin: 10px 0;
}
</style>

View File

@ -73,11 +73,12 @@ export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
// }
}
},
// 生产环境打包配置
//去除 console debugger
esbuild: {
pure:mode==='production' ? ["console.log", "debugger"] : []
},
// 生产环境打包配置
//去除 console debugger
// build: {
// terserOptions: {
// compress: {

365
yarn.lock
View File

@ -12,15 +12,7 @@
resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1"
integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==
"@babel/runtime-corejs3@^7.11.2":
version "7.18.9"
resolved "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz#7bacecd1cb2dd694eacd32a91fcf7021c20770ae"
integrity sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==
dependencies:
core-js-pure "^3.20.2"
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.11.2":
"@babel/runtime@^7.12.0":
version "7.18.9"
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
@ -159,11 +151,21 @@
estree-walker "^2.0.1"
picomatch "^2.2.2"
"@transloadit/prettier-bytes@0.0.7":
version "0.0.7"
resolved "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz#cdb5399f445fdd606ed833872fa0cabdbc51686b"
integrity sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA==
"@trysound/sax@0.2.0":
version "0.2.0"
resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
"@types/event-emitter@^0.3.3":
version "0.3.3"
resolved "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.3.tgz#727032a9fc67565f96bbd78b2e2809275c97d7e7"
integrity sha512-UfnOK1pIxO7P+EgPRZXD9jMpimd8QEFcEZ5R67R1UhGbv4zghU5+NE7U8M8G9H5Jc8FI51rqDWQs6FtUfq2e/Q==
"@types/json-schema@^7.0.9":
version "7.0.11"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
@ -283,6 +285,49 @@
"@typescript-eslint/types" "5.32.0"
eslint-visitor-keys "^3.3.0"
"@uppy/companion-client@^2.2.2":
version "2.2.2"
resolved "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz#c70b42fdcca728ef88b3eebf7ee3e2fa04b4923b"
integrity sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==
dependencies:
"@uppy/utils" "^4.1.2"
namespace-emitter "^2.0.1"
"@uppy/core@^2.1.1":
version "2.3.3"
resolved "https://registry.npmmirror.com/@uppy/core/-/core-2.3.3.tgz#c2dc50a9a3dce6d565490780b2fc35b32367e047"
integrity sha512-oTFYZT02dIoUGm8Ar6+Tg/xbL8MliwiPQdiuoCimPBmY19ZhuJm/K4wEYZ6nOFeYsgBWYi1yWfsmdx8LvFVx4g==
dependencies:
"@transloadit/prettier-bytes" "0.0.7"
"@uppy/store-default" "^2.1.1"
"@uppy/utils" "^4.1.2"
lodash.throttle "^4.1.1"
mime-match "^1.0.2"
namespace-emitter "^2.0.1"
nanoid "^3.1.25"
preact "^10.5.13"
"@uppy/store-default@^2.1.1":
version "2.1.1"
resolved "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz#62a656a099bdaa012306e054d093754cb2d36e3e"
integrity sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ==
"@uppy/utils@^4.1.2":
version "4.1.2"
resolved "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.2.tgz#7b7bec41625764b563e9635f09e81e6907bb640f"
integrity sha512-rl9aKRE4o2mRKVAhYHHf8uV7BoUOQkvDH6yOaJ4tuHJ6HgPkvxVxqUY8L+yKV1hx4mw6OF9hLIzpW/+TLSfyfQ==
dependencies:
lodash.throttle "^4.1.1"
"@uppy/xhr-upload@^2.0.3":
version "2.1.3"
resolved "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz#0d4e355332fe0c6eb372d7731315e04d02aeeb18"
integrity sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==
dependencies:
"@uppy/companion-client" "^2.2.2"
"@uppy/utils" "^4.1.2"
nanoid "^3.1.25"
"@vitejs/plugin-vue@^3.0.0":
version "3.0.1"
resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-3.0.1.tgz#b6af8f782485374bbb5fe09edf067a845bf4caae"
@ -439,6 +484,84 @@
dependencies:
vue-demi "*"
"@wangeditor/basic-modules@^1.1.3":
version "1.1.3"
resolved "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.3.tgz#57884ae60947613324e94acde5abae7f00d59e2a"
integrity sha512-TGJix4UelO46yAgwI946ctx4lSIJbYBwNvjSJ9Tf8mKr0WMCeLVBV+MV85rXPsfcmWtR4wBNwSg648Z+RbqRUg==
dependencies:
is-url "^1.2.4"
"@wangeditor/code-highlight@^1.0.2":
version "1.0.2"
resolved "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.2.tgz#df6bf7ac8d232c6afb0cb8189baa9f8d52feeded"
integrity sha512-SCtOcUxjKqIso/LSxGSOaYr3G6MC2En0gNTyHIMCG928T0fo0ufaqp/vIXKQzVL2Y+X/CSAOB2EbrFlgGvr0AQ==
dependencies:
prismjs "^1.23.0"
"@wangeditor/core@^1.1.11":
version "1.1.11"
resolved "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.11.tgz#1525a7cddd2c41ceee7a4f9ef6a794b6bacf779b"
integrity sha512-BwHVRJzESnkjKikTc2U2zsbd06l1pSo7qKy5+SpZLudYWrFxmd85VN+5GxM57FodogkNw/k04DFHcFSUfXcaKA==
dependencies:
"@types/event-emitter" "^0.3.3"
event-emitter "^0.3.5"
html-void-elements "^2.0.0"
i18next "^20.4.0"
scroll-into-view-if-needed "^2.2.28"
slate-history "^0.66.0"
"@wangeditor/editor-for-vue@^5.1.12":
version "5.1.12"
resolved "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz#f7d5f239b39cdfc01d31151488de8443fe6edc64"
integrity sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ==
"@wangeditor/editor@^5.1.14":
version "5.1.14"
resolved "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.14.tgz#863cef775ead194503d5636232e96b04ecc34040"
integrity sha512-erILPAkpKldyGi4cEwrOW65v12GhZy2qj2A8kPlypU46lE72Y3XowZxWogN1TI/mqMDR84AHr0QWOvygOV1xwQ==
dependencies:
"@uppy/core" "^2.1.1"
"@uppy/xhr-upload" "^2.0.3"
"@wangeditor/basic-modules" "^1.1.3"
"@wangeditor/code-highlight" "^1.0.2"
"@wangeditor/core" "^1.1.11"
"@wangeditor/list-module" "^1.0.2"
"@wangeditor/table-module" "^1.1.1"
"@wangeditor/upload-image-module" "^1.0.1"
"@wangeditor/video-module" "^1.1.1"
dom7 "^3.0.0"
is-hotkey "^0.2.0"
lodash.camelcase "^4.3.0"
lodash.clonedeep "^4.5.0"
lodash.debounce "^4.0.8"
lodash.foreach "^4.5.0"
lodash.isequal "^4.5.0"
lodash.throttle "^4.1.1"
lodash.toarray "^4.4.0"
nanoid "^3.2.0"
slate "^0.72.0"
snabbdom "^3.1.0"
"@wangeditor/list-module@^1.0.2":
version "1.0.2"
resolved "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.2.tgz#c9e57c4c34bbcc32df3a9030df2fda0bb4f77a39"
integrity sha512-VfENZEFvsLTiLxN/cj8cibFGy9NVV+/cfATTiLiH9ef+8lgKv8apttXYVlqIAfnlJLLuCk0cIm8c/zH+hbtrZg==
"@wangeditor/table-module@^1.1.1":
version "1.1.1"
resolved "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.1.tgz#cc88f2d566a3f314801cda4ab7ffceeb3c21c251"
integrity sha512-VPjEWQtncS2DsXYXiHUxPSxn2Xhc8GdhG3la7N5YhvxQde1+4N0SZLXeWsYvbGzOq4um5XToq5pktLLbE8G+EA==
"@wangeditor/upload-image-module@^1.0.1":
version "1.0.1"
resolved "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.1.tgz#a074518d73ce9c5cfd3e8ee56d1adf831996f142"
integrity sha512-vgUV4ENttTITblqtVuzleIq732OmzmzzgrIvX6b3GRGPSw5u8glJ/87tOEhvHjHECc4oFo18B7xzJ1GpBj79/w==
"@wangeditor/video-module@^1.1.1":
version "1.1.1"
resolved "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.1.tgz#67f24a8a64bd94baf2116d26da042faf5e8a5eb8"
integrity sha512-6gzpS5cnJihW2T0HFjqmbv6v8ouyaeMUjdM2X8BPohwD74p1ov00dCmRt5QekNTyYSmRHK0ASkUMOvRGqaDxMg==
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@ -847,6 +970,11 @@ compress-commons@^4.1.0:
normalize-path "^3.0.0"
readable-stream "^3.6.0"
compute-scroll-into-view@^1.0.17:
version "1.0.17"
resolved "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab"
integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@ -857,11 +985,6 @@ copy-descriptor@^0.1.0:
resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
core-js-pure@^3.20.2:
version "3.24.1"
resolved "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.24.1.tgz#8839dde5da545521bf282feb7dc6d0b425f39fd3"
integrity sha512-r1nJk41QLLPyozHUUPmILCEMtMw24NG4oWK6RbsDdjzQgg9ZvrUsPBj1MnG0wXXp1DCDU6j+wUvEmBSrtRbLXg==
core-js@^3.6.5:
version "3.24.1"
resolved "https://registry.npmmirror.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f"
@ -953,6 +1076,14 @@ csstype@^2.6.8:
resolved "https://registry.npmmirror.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda"
integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==
d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
dependencies:
es5-ext "^0.10.50"
type "^1.0.1"
dart-sass@^1.25.0:
version "1.25.0"
resolved "https://registry.npmmirror.com/dart-sass/-/dart-sass-1.25.0.tgz#e00c0348118916e9d81cb485297184c131af1dad"
@ -1064,6 +1195,13 @@ dom-serializer@^1.0.1:
domhandler "^4.2.0"
entities "^2.0.0"
dom7@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz#b861ce5d67a6becd7aaa3ad02942ff14b1240331"
integrity sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==
dependencies:
ssr-window "^3.0.0-alpha.1"
domelementtype@1, domelementtype@^1.3.1:
version "1.3.1"
resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
@ -1178,6 +1316,32 @@ entities@^2.0.0:
resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
es5-ext@^0.10.35, es5-ext@^0.10.50, es5-ext@~0.10.14:
version "0.10.62"
resolved "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
dependencies:
es6-iterator "^2.0.3"
es6-symbol "^3.1.3"
next-tick "^1.1.0"
es6-iterator@^2.0.3:
version "2.0.3"
resolved "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
dependencies:
d "1"
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
version "3.1.3"
resolved "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
dependencies:
d "^1.0.1"
ext "^1.1.2"
esbuild-android-64@0.14.53:
version "0.14.53"
resolved "https://registry.npmmirror.com/esbuild-android-64/-/esbuild-android-64-0.14.53.tgz#259bc3ef1399a3cad8f4f67c40ee20779c4de675"
@ -1476,6 +1640,14 @@ etag@^1.8.1:
resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
event-emitter@^0.3.5:
version "0.3.5"
resolved "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
dependencies:
d "1"
es5-ext "~0.10.14"
exceljs@^4.3.0:
version "4.3.0"
resolved "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz#939bc0d4c59c200acadb7051be34d25c109853c4"
@ -1504,6 +1676,13 @@ expand-brackets@^2.1.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
ext@^1.1.2:
version "1.6.0"
resolved "https://registry.npmmirror.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52"
integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==
dependencies:
type "^2.5.0"
extend-shallow@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
@ -1833,6 +2012,11 @@ he@^1.1.1:
resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
html-void-elements@^2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f"
integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==
htmlparser2@^3.8.3:
version "3.10.1"
resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
@ -1845,6 +2029,13 @@ htmlparser2@^3.8.3:
inherits "^2.0.1"
readable-stream "^3.1.1"
i18next@^20.4.0:
version "20.6.1"
resolved "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz#535e5f6e5baeb685c7d25df70db63bf3cc0aa345"
integrity sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==
dependencies:
"@babel/runtime" "^7.12.0"
ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
@ -1865,6 +2056,11 @@ immediate@~3.0.5:
resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
immer@^9.0.6:
version "9.0.15"
resolved "https://registry.npmmirror.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc"
integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==
immutable@^4.0.0:
version "4.1.0"
resolved "https://registry.npmmirror.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
@ -1985,6 +2181,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
is-hotkey@^0.2.0:
version "0.2.0"
resolved "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz#1835a68171a91e5c9460869d96336947c8340cef"
integrity sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==
is-number@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
@ -2009,6 +2210,16 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
is-plain-object@^5.0.0:
version "5.0.0"
resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
is-url@^1.2.4:
version "1.2.4"
resolved "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
is-windows@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
@ -2176,6 +2387,21 @@ lodash-unified@^1.0.2:
resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.2.tgz#bb2694db3533781e5cce984af60cfaea318b83c1"
integrity sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==
lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
lodash.debounce@^4.0.8:
version "4.0.8"
resolved "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@ -2196,6 +2422,11 @@ lodash.flatten@^4.4.0:
resolved "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==
lodash.foreach@^4.5.0:
version "4.5.0"
resolved "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
integrity sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==
lodash.groupby@^4.6.0:
version "4.6.0"
resolved "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz#0b08a1dcf68397c397855c3239783832df7403d1"
@ -2236,6 +2467,16 @@ lodash.merge@^4.6.2:
resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
lodash.throttle@^4.1.1:
version "4.1.1"
resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
lodash.toarray@^4.4.0:
version "4.4.0"
resolved "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
integrity sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw==
lodash.union@^4.6.0:
version "4.6.0"
resolved "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88"
@ -2345,6 +2586,13 @@ micromatch@^4.0.4:
braces "^3.0.2"
picomatch "^2.3.1"
mime-match@^1.0.2:
version "1.0.2"
resolved "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz#3f87c31e9af1a5fd485fb9db134428b23bbb7ba8"
integrity sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==
dependencies:
wildcard "^1.1.0"
mimic-response@^3.1.0:
version "3.1.0"
resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
@ -2407,7 +2655,12 @@ ms@2.1.2:
resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
nanoid@^3.3.4:
namespace-emitter@^2.0.1:
version "2.0.1"
resolved "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz#978d51361c61313b4e6b8cf6f3853d08dfa2b17c"
integrity sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==
nanoid@^3.1.25, nanoid@^3.2.0, nanoid@^3.3.4:
version "3.3.4"
resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
@ -2434,6 +2687,11 @@ natural-compare@^1.4.0:
resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
next-tick@^1.1.0:
version "1.1.0"
resolved "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
@ -2678,6 +2936,11 @@ posthtml@^0.9.2:
posthtml-parser "^0.2.0"
posthtml-render "^1.0.5"
preact@^10.5.13:
version "10.10.6"
resolved "https://registry.npmmirror.com/preact/-/preact-10.10.6.tgz#1fe62aecf93974b64e6a42e09ba1f00f93207d14"
integrity sha512-w0mCL5vICUAZrh1DuHEdOWBjxdO62lvcO++jbzr8UhhYcTbFkpegLH9XX+7MadjTl/y0feoqwQ/zAnzkc/EGog==
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@ -2700,6 +2963,11 @@ print-js@^1.6.0:
resolved "https://registry.npmmirror.com/print-js/-/print-js-1.6.0.tgz#692b046cf31992b46afa6c6d8a9db1c69d431d1f"
integrity sha512-BfnOIzSKbqGRtO4o0rnj/K3681BSd2QUrsIZy/+WdCIugjIswjmx3lDEZpXB2ruGf9d4b3YNINri81+J0FsBWg==
prismjs@^1.23.0:
version "1.29.0"
resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12"
integrity sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
@ -2877,6 +3145,13 @@ saxes@^5.0.1:
dependencies:
xmlchars "^2.2.0"
scroll-into-view-if-needed@^2.2.28:
version "2.2.29"
resolved "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz#551791a84b7e2287706511f8c68161e4990ab885"
integrity sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==
dependencies:
compute-scroll-into-view "^1.0.17"
scule@^0.3.2:
version "0.3.2"
resolved "https://registry.npmmirror.com/scule/-/scule-0.3.2.tgz#472445cecd8357165a94a067f78cee40e700b596"
@ -2940,6 +3215,27 @@ slash@^3.0.0:
resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
slate-history@^0.66.0:
version "0.66.0"
resolved "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz#ac63fddb903098ceb4c944433e3f75fe63acf940"
integrity sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==
dependencies:
is-plain-object "^5.0.0"
slate@^0.72.0:
version "0.72.8"
resolved "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz#5a018edf24e45448655293a68bfbcf563aa5ba81"
integrity sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==
dependencies:
immer "^9.0.6"
is-plain-object "^5.0.0"
tiny-warning "^1.0.3"
snabbdom@^3.1.0:
version "3.5.1"
resolved "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.5.1.tgz#25f80ef15b194baea703d9d5441892e369de18e1"
integrity sha512-wHMNIOjkm/YNE5EM3RCbr/+DVgPg6AqQAX1eOxO46zYNvCXjKP5Y865tqQj3EXnaMBjkxmQA5jFuDpDK/dbfiA==
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@ -3030,6 +3326,11 @@ ssf@~0.11.2:
dependencies:
frac "~1.1.2"
ssr-window@^3.0.0-alpha.1:
version "3.0.0"
resolved "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz#fd5b82801638943e0cc704c4691801435af7ac37"
integrity sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==
stable@^0.1.8:
version "0.1.8"
resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
@ -3200,6 +3501,11 @@ tiny-emitter@^2.0.0:
resolved "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
tiny-warning@^1.0.3:
version "1.0.3"
resolved "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
tmp@^0.2.0:
version "0.2.1"
resolved "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
@ -3259,11 +3565,6 @@ tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.1.0:
version "2.4.0"
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@ -3283,6 +3584,16 @@ type-fest@^0.20.2:
resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
type@^1.0.1:
version "1.2.0"
resolved "https://registry.npmmirror.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
type@^2.5.0:
version "2.7.2"
resolved "https://registry.npmmirror.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
typescript@^4.6.4:
version "4.7.4"
resolved "https://registry.npmmirror.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
@ -3596,15 +3907,6 @@ vuex@^4.0.0-0:
dependencies:
"@vue/devtools-api" "^6.0.0-beta.11"
wangeditor@^4.7.12:
version "4.7.15"
resolved "https://registry.npmmirror.com/wangeditor/-/wangeditor-4.7.15.tgz#38c5e279a79d0428e4fd77ae5be46367e9c819e5"
integrity sha512-aPTdREd8BxXVyJ5MI+LU83FQ7u1EPd341iXIorRNYSOvoimNoZ4nPg+yn3FGbB93/owEa6buLw8wdhYnMCJQLg==
dependencies:
"@babel/runtime" "^7.11.2"
"@babel/runtime-corejs3" "^7.11.2"
tslib "^2.1.0"
webpack-sources@^3.2.3:
version "3.2.3"
resolved "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
@ -3622,6 +3924,11 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
wildcard@^1.1.0:
version "1.1.2"
resolved "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz#a7020453084d8cd2efe70ba9d3696263de1710a5"
integrity sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==
wmf@~1.0.1:
version "1.0.2"
resolved "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da"