forked from mirror/minecraft-color-gradient-generator
refactor: redesign🪄
This commit is contained in:
parent
88e5dfec2a
commit
c40f374164
9
auto-imports.d.ts
vendored
Normal file
9
auto-imports.d.ts
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// noinspection JSUnusedGlobalSymbols
|
||||
// Generated by unplugin-auto-import
|
||||
export {}
|
||||
declare global {
|
||||
|
||||
}
|
40
components.d.ts
vendored
Normal file
40
components.d.ts
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
/* eslint-disable */
|
||||
/* prettier-ignore */
|
||||
// @ts-nocheck
|
||||
// Generated by unplugin-vue-components
|
||||
// Read more: https://github.com/vuejs/core/pull/3399
|
||||
export {}
|
||||
|
||||
declare module 'vue' {
|
||||
export interface GlobalComponents {
|
||||
ColorBar: typeof import('./src/components/color-picker/color-bar.vue')['default']
|
||||
ColorCube: typeof import('./src/components/color-picker/color-cube.vue')['default']
|
||||
ColorList: typeof import('./src/components/ColorList.vue')['default']
|
||||
ColorPicker: typeof import('./src/components/color-picker/index.vue')['default']
|
||||
ColorQuickslot: typeof import('./src/components/color-picker/color-quickslot.vue')['default']
|
||||
Footer: typeof import('./src/components/mcg-layout/footer.vue')['default']
|
||||
Header: typeof import('./src/components/mcg-layout/header.vue')['default']
|
||||
HexInput: typeof import('./src/components/color-picker/hex-input.vue')['default']
|
||||
Main: typeof import('./src/components/color-picker/main.vue')['default']
|
||||
McgFooter: typeof import('./src/components/mcg-layout/mcg-footer.vue')['default']
|
||||
McgHeader: typeof import('./src/components/mcg-layout/mcg-header.vue')['default']
|
||||
Picker: typeof import('./src/components/color-picker/picker.vue')['default']
|
||||
TAlert: typeof import('tdesign-vue-next')['Alert']
|
||||
TButton: typeof import('tdesign-vue-next')['Button']
|
||||
TCard: typeof import('tdesign-vue-next')['Card']
|
||||
TConfigProvider: typeof import('tdesign-vue-next')['ConfigProvider']
|
||||
TDivider: typeof import('tdesign-vue-next')['Divider']
|
||||
TDrawer: typeof import('tdesign-vue-next')['Drawer']
|
||||
TForm: typeof import('tdesign-vue-next')['Form']
|
||||
TFormItem: typeof import('tdesign-vue-next')['FormItem']
|
||||
TInput: typeof import('tdesign-vue-next')['Input']
|
||||
TLink: typeof import('tdesign-vue-next')['Link']
|
||||
TPopconfirm: typeof import('tdesign-vue-next')['Popconfirm']
|
||||
TPopup: typeof import('tdesign-vue-next')['Popup']
|
||||
TRadio: typeof import('tdesign-vue-next')['Radio']
|
||||
TRadioGroup: typeof import('tdesign-vue-next')['RadioGroup']
|
||||
TSpace: typeof import('tdesign-vue-next')['Space']
|
||||
TSwitch: typeof import('tdesign-vue-next')['Switch']
|
||||
TTextarea: typeof import('tdesign-vue-next')['Textarea']
|
||||
}
|
||||
}
|
20
index.html
20
index.html
@ -5,17 +5,25 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="google" content="notranslate" />
|
||||
<title>Minecraft 渐变颜色生成器</title>
|
||||
|
||||
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Barlow:wght@400;700&family=Noto+Sans+SC:wght@200;400;700;900&family=Material+Symbols+Outlined&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5VBQHF5MKV"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-5VBQHF5MKV');
|
||||
function gtag() {
|
||||
dataLayer.push(arguments);
|
||||
}
|
||||
gtag("js", new Date());
|
||||
|
||||
gtag("config", "G-5VBQHF5MKV");
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
14
package.json
14
package.json
@ -1,5 +1,6 @@
|
||||
{
|
||||
"name": "minecraft-color-gradient-generator",
|
||||
"version": "2.0.0",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
@ -8,18 +9,27 @@
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@jaames/iro": "^5.5.2",
|
||||
"color-stepper": "^2.0.0-beta2",
|
||||
"lodash": "^4.17.21",
|
||||
"pinia": "^2.1.7",
|
||||
"pinia-plugin-persistedstate": "^3.2.1",
|
||||
"reset.css": "^2.0.2",
|
||||
"view-ui-plus": "^1.3.14",
|
||||
"tdesign-vue-next": "^1.7.1",
|
||||
"vue": "^3.2.47",
|
||||
"vuedraggable": "^4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/lodash": "^4.14.202",
|
||||
"@types/node": "^20.3.2",
|
||||
"@vitejs/plugin-vue": "^4.1.0",
|
||||
"less": "^4.1.3",
|
||||
"sass": "^1.69.5",
|
||||
"typescript": "^5.0.2",
|
||||
"unplugin-auto-import": "^0.17.2",
|
||||
"unplugin-vue-components": "^0.26.0",
|
||||
"vite": "^4.3.9",
|
||||
"vite-plugin-package-version": "^1.1.0",
|
||||
"vue-tsc": "^1.4.2"
|
||||
}
|
||||
}
|
||||
}
|
232
src/App.vue
232
src/App.vue
@ -1,225 +1,45 @@
|
||||
<template>
|
||||
<div class="cg-container">
|
||||
<mcg-header />
|
||||
<main class="cg-main">
|
||||
<color-list v-model="gradientColorList" />
|
||||
<div class="cg-content">
|
||||
<section class="cg-content--form">
|
||||
<Input v-model="inputVal" type="textarea" :rows="2" size="large" placeholder="输入欲加渐变的文字..." show-word-limit maxlength="100" />
|
||||
</section>
|
||||
<div class="cg-configration">
|
||||
<Form ref="formInline" :model="formData" :label-width="100" inline>
|
||||
<FormItem>
|
||||
<template #label>
|
||||
<div>
|
||||
字符模式
|
||||
<Tooltip content="客户端发送使用&,服务端发送使用§" placement="top-start">
|
||||
<Icon type="md-alert" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
<Switch v-model="formData.charMode">
|
||||
<template #open><span>&</span></template>
|
||||
<template #close><span>§</span></template>
|
||||
</Switch>
|
||||
</FormItem>
|
||||
<FormItem>
|
||||
<template #label>
|
||||
<div>
|
||||
兼容模式
|
||||
<Tooltip content="仅限服务器不支持&#前缀发送Hex颜色" placement="top-start" max-width="200">
|
||||
<Icon type="md-alert" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
<Switch v-model="formData.compatibleMode" />
|
||||
</FormItem>
|
||||
<FormItem>
|
||||
<template #label>
|
||||
<div>
|
||||
移除空格
|
||||
<Tooltip content="移除空格/换行/制表符" placement="top-start">
|
||||
<Icon type="md-alert" />
|
||||
</Tooltip>
|
||||
</div>
|
||||
</template>
|
||||
<Switch v-model="formData.clearSpaceChar" />
|
||||
</FormItem>
|
||||
</Form>
|
||||
</div>
|
||||
<Card title="预览" class="preview-card">
|
||||
<template #extra>
|
||||
<span style="cursor: pointer" @click="onCopyClickHandler">复制</span>
|
||||
</template>
|
||||
<div class="gradient-bar" :style="`background: linear-gradient(to right, ${gradientColorList.join(', ')});`"></div>
|
||||
<div class="cg-result cg-result--preview">
|
||||
<VNodeComp :content="resultVNodes" />
|
||||
</div>
|
||||
<Divider />
|
||||
<div class="cg-result cg-result--raw" contenteditable>
|
||||
{{ resultVal }}
|
||||
</div>
|
||||
</Card>
|
||||
<t-space direction="vertical" style="width: 100%">
|
||||
<div class="text-input-box">
|
||||
<text-input v-model="appStore.processText" />
|
||||
</div>
|
||||
</main>
|
||||
<div class="picker-box">
|
||||
<color-picker>
|
||||
<template #list-setting>
|
||||
<t-button theme="default" @click="visibleSetting = true">设置</t-button>
|
||||
</template>
|
||||
</color-picker>
|
||||
</div>
|
||||
<div class="text-output-box">
|
||||
<text-output v-model="appStore.processText" />
|
||||
</div>
|
||||
</t-space>
|
||||
<mcg-footer />
|
||||
<mcg-setting v-model="visibleSetting" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, h, reactive, ref, VNode } from "vue";
|
||||
import ColorList from "./components/ColorList.vue";
|
||||
import McgHeader from "./components/McgHeader.vue";
|
||||
import McgFooter from "./components/McgFooter.vue";
|
||||
import { VNode as VNodeComp } from "./utils/vnode";
|
||||
import { Message } from "view-ui-plus";
|
||||
import { genColorGradients } from "./utils/util";
|
||||
import { useAppStore } from "./plugins/store/modules/app";
|
||||
|
||||
const inputVal = ref("");
|
||||
const gradientColorList = ref<string[]>([]);
|
||||
const formData = reactive({
|
||||
charMode: true,
|
||||
compatibleMode: false,
|
||||
clearSpaceChar: true,
|
||||
});
|
||||
import { ColorPicker } from "./components/color-picker";
|
||||
import { McgHeader, McgFooter } from "./components/mcg-layout";
|
||||
import { TextInput } from "./components/text-input";
|
||||
import { TextOutput } from "./components/text-output";
|
||||
import { McgSetting } from "./components/mcg-setting";
|
||||
import { ref } from "vue";
|
||||
|
||||
const inputFormatVal = computed<string>(() => {
|
||||
if (formData.clearSpaceChar) return inputVal.value.replace(/\t|\s|\r|\n/g, "");
|
||||
else return inputVal.value;
|
||||
});
|
||||
const appStore = useAppStore();
|
||||
|
||||
const gradientBarCss = computed<string>(() => {
|
||||
return `linear-gradient(${gradientColorList.value.join(", ")});`;
|
||||
});
|
||||
|
||||
const resultVNodes = computed<VNode | VNode[]>(() => {
|
||||
if (gradientColorList.value.length < 2) {
|
||||
return inputFormatVal.value.split("").map((el) => h("span", el));
|
||||
} else {
|
||||
const gradientArray = genColorGradients(gradientColorList.value, inputFormatVal.value.length);
|
||||
|
||||
return inputFormatVal.value.split("").map((el, index) => {
|
||||
return h("span", { style: { color: gradientArray[index] } }, el);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const resultVal = computed<string>(() => {
|
||||
if (gradientColorList.value.length < 2) {
|
||||
return inputFormatVal.value;
|
||||
} else {
|
||||
const gradientArray = genColorGradients(gradientColorList.value, inputFormatVal.value.length);
|
||||
return inputFormatVal.value.split("").reduce((acc, cur, index) => {
|
||||
const colorChar = formData.charMode ? "&" : "§";
|
||||
if (formData.compatibleMode) {
|
||||
const colorSplit = gradientArray[index]
|
||||
.slice(1)
|
||||
.split("")
|
||||
.map((c) => `${colorChar}${c}`)
|
||||
.join("");
|
||||
return `${acc}${colorChar}x${colorSplit}${cur}`;
|
||||
} else {
|
||||
return `${acc}${colorChar}${gradientArray[index]}${cur}`;
|
||||
}
|
||||
}, "");
|
||||
}
|
||||
});
|
||||
|
||||
const onCopyClickHandler = () => {
|
||||
if (resultVal.value.length === 0) {
|
||||
Message.warning("请先输入文本哦");
|
||||
return;
|
||||
}
|
||||
navigator.clipboard
|
||||
.writeText(resultVal.value)
|
||||
.then(() => Message.success("复制成功啦"))
|
||||
.catch((err) => {
|
||||
Message.error("复制失败,请尝试更新您的浏览器");
|
||||
console.error(err);
|
||||
});
|
||||
};
|
||||
const visibleSetting = ref(false);
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import url("./assets/styles/mixins.less");
|
||||
<style lang="scss" scoped>
|
||||
.cg-container {
|
||||
width: 96%;
|
||||
height: 100%;
|
||||
max-width: 1024px;
|
||||
margin: 0 auto;
|
||||
.cg-main {
|
||||
display: flex;
|
||||
.cg-content {
|
||||
flex: 1;
|
||||
padding: 0 20px;
|
||||
&--form {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
.cg-configration {
|
||||
width: 100%;
|
||||
min-height: 60px;
|
||||
border: 1px dashed #dcdee2;
|
||||
border-radius: 10px;
|
||||
margin-bottom: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 20px;
|
||||
&:deep(.ivu-form-item) {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
.preview-card {
|
||||
:deep(.ivu-card-body) {
|
||||
position: relative;
|
||||
padding-top: 30px;
|
||||
}
|
||||
.gradient-bar {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 6px;
|
||||
}
|
||||
}
|
||||
.cg-result {
|
||||
width: 100%;
|
||||
height: 150px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
font-size: 20px;
|
||||
line-height: 25px;
|
||||
letter-spacing: 1px;
|
||||
.custom-scrollbar();
|
||||
outline: none;
|
||||
border: none;
|
||||
word-break: break-all;
|
||||
&--preview {
|
||||
height: 80px;
|
||||
}
|
||||
&--raw {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.cg-header {
|
||||
height: 100px !important;
|
||||
}
|
||||
.cg-main {
|
||||
flex-direction: column !important;
|
||||
:deep(.color-list) {
|
||||
flex-direction: row !important;
|
||||
.color-item {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.cg-content {
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
width: 1200px;
|
||||
}
|
||||
</style>
|
||||
|
@ -1,23 +0,0 @@
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.color-container__color-picker-popover {
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
.ivu-color-picker {
|
||||
.ivu-icon.ivu-icon-ios-arrow-down {
|
||||
display: none;
|
||||
}
|
||||
.ivu-input-icon-normal + .ivu-input {
|
||||
height: 38px !important;
|
||||
padding: 7px !important;
|
||||
}
|
||||
.ivu-color-picker-input {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
.custom-scrollbar {
|
||||
&::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
border-radius: 10px;
|
||||
background-color: rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
&::-webkit-scrollbar-thumb,
|
||||
&::-webkit-scrollbar-track {
|
||||
border: 0;
|
||||
}
|
||||
}
|
@ -1,205 +0,0 @@
|
||||
<template>
|
||||
<div class="color-container">
|
||||
<Poptip confirm title="是否删除所有颜色配置?" @on-ok="onDeleteAllHandler" placement="right" transfer>
|
||||
<div class="color-item is-delete">
|
||||
<div class="color-item--cube delete">
|
||||
<Icon type="md-trash" />
|
||||
<span>全部删除</span>
|
||||
</div>
|
||||
</div>
|
||||
</Poptip>
|
||||
<div class="color-item is-add">
|
||||
<div class="color-item--cube add" @click="onAddColorHandler()">
|
||||
<Icon type="md-add" />
|
||||
<span>新增</span>
|
||||
<div class="color-picker">
|
||||
<ColorPicker ref="colorPickerAddRef" size="large" recommend @on-change="onColorPickerChangeHandler" transfer-class-name="color-container__color-picker-popover" transfer />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<draggable v-model="privateValue" tag="ul" class="color-list">
|
||||
<template #item="{ element, index }">
|
||||
<Dropdown class="color-item" trigger="contextMenu" placement="right" transfer>
|
||||
<li class="color-item--cube" :style="`--cube-color: ${element}`">
|
||||
<span class="hex">{{ element }}</span>
|
||||
<section class="edit">
|
||||
<ColorPicker v-model="privateValue[index]" transfer-class-name="color-container__color-picker-popover" transfer />
|
||||
</section>
|
||||
</li>
|
||||
<template #list>
|
||||
<DropdownMenu>
|
||||
<DropdownItem style="color: #ed4014" @click="onDeleteColorHandler(index)">删除</DropdownItem>
|
||||
</DropdownMenu>
|
||||
</template>
|
||||
</Dropdown>
|
||||
</template>
|
||||
</draggable>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import { Message } from "view-ui-plus";
|
||||
import draggable from "vuedraggable";
|
||||
|
||||
const props = withDefaults(defineProps<ColorListProps>(), {
|
||||
modelValue: () => [],
|
||||
});
|
||||
const emit = defineEmits(["update:modelValue"]);
|
||||
const colorPickerAddRef = ref();
|
||||
|
||||
const privateValue = computed({
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emit("update:modelValue", val),
|
||||
});
|
||||
|
||||
const onDeleteColorHandler = (index: number) => {
|
||||
props.modelValue.splice(index, 1);
|
||||
};
|
||||
|
||||
const onAddColorHandler = () => {
|
||||
colorPickerAddRef.value?.toggleVisible();
|
||||
};
|
||||
|
||||
const onDeleteAllHandler = () => {
|
||||
Message.success("已删除所有颜色配置");
|
||||
emit("update:modelValue", []);
|
||||
};
|
||||
|
||||
const onColorPickerChangeHandler = (val: string) => {
|
||||
if (props.modelValue.includes(val)) {
|
||||
Message.warning("已存在相同颜色");
|
||||
return;
|
||||
}
|
||||
props.modelValue.push(val.toUpperCase());
|
||||
};
|
||||
</script>
|
||||
<script lang="ts">
|
||||
interface ColorListProps {
|
||||
modelValue: string[];
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import url("../assets/styles/mixins.less");
|
||||
|
||||
.color-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
max-height: 800px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
position: relative;
|
||||
.custom-scrollbar();
|
||||
.color-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.ivu-poptip {
|
||||
width: 100%;
|
||||
&:deep(.ivu-poptip-rel) {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.color-item {
|
||||
width: 200px;
|
||||
margin: 0 10px 16px 10px;
|
||||
&--cube {
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
border: 1px dashed #dcdee2;
|
||||
border-radius: 10px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
transition: all 0.3s;
|
||||
background-color: #fff;
|
||||
cursor: default;
|
||||
&:hover {
|
||||
box-shadow: rgba(62, 57, 107, 0.3) 0px 6px 16px 0px;
|
||||
.edit {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
&::before {
|
||||
content: "";
|
||||
background-color: var(--cube-color);
|
||||
display: block;
|
||||
width: 10px;
|
||||
height: 100%;
|
||||
}
|
||||
.hex {
|
||||
color: #17233d;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.edit {
|
||||
width: 60px;
|
||||
height: 100%;
|
||||
margin-left: auto;
|
||||
transition: all 0.3s;
|
||||
opacity: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 25px;
|
||||
cursor: pointer;
|
||||
&:deep(.ivu-color-picker) {
|
||||
.ivu-icon.ivu-icon-ios-arrow-down {
|
||||
display: none;
|
||||
}
|
||||
.ivu-input-icon-normal + .ivu-input {
|
||||
padding-right: 7px;
|
||||
}
|
||||
.ivu-color-picker-input {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
&.is-delete {
|
||||
user-select: none;
|
||||
.color-item--cube {
|
||||
height: 40px !important;
|
||||
background-color: #f56c6c;
|
||||
border: none;
|
||||
color: #fff;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
.ivu-icon {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
&.is-add {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 2;
|
||||
user-select: none;
|
||||
.color-item--cube {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 25px;
|
||||
color: #17233d;
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
.color-picker {
|
||||
margin-left: 20px;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,39 +0,0 @@
|
||||
<template>
|
||||
<footer class="cg-footer">
|
||||
<section class="cg-footer__section">
|
||||
"Minecraft" 是 Mojang Synergies AB 的商标
|
||||
<Divider type="vertical" />
|
||||
<a href="https://github.com/tuanzisama" target="_blank">
|
||||
<Icon type="logo-github" />
|
||||
@tuanzisama
|
||||
</a>
|
||||
<Divider type="vertical" />
|
||||
<a
|
||||
href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=_z8lAFy5g4oHy5j68j1Yx-FK6spjSDKd&authKey=oYJwq0XWxSZ9uWnN1VW1om1HD2bwnCD%2BXXrVEk5ciPy9V%2Byp8ywAre89%2F6z52ksC&noverify=0&group_code=202653244"
|
||||
target="_blank"
|
||||
>
|
||||
<Icon type="md-color-wand" />
|
||||
元界MC - 社交×互动×游戏
|
||||
</a>
|
||||
</section>
|
||||
<section class="cg-footer__section">
|
||||
<a href="https://www.mcbbs.net/thread-1004671-1-1.html" target="_blank"> [广告] PlayerTitle × 一款有点好用的玩家称号插件 </a>
|
||||
</section>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup></script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.cg-footer {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
padding: 40px 0;
|
||||
&__section {
|
||||
margin-bottom: 10px;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,16 +0,0 @@
|
||||
<template>
|
||||
<header class="cg-header">
|
||||
<p>Minecraft 渐变颜色生成器</p>
|
||||
</header>
|
||||
</template>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.cg-header {
|
||||
height: 200px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 40px;
|
||||
font-weight: 700;
|
||||
}
|
||||
</style>
|
42
src/components/color-picker/color-bar.vue
Normal file
42
src/components/color-picker/color-bar.vue
Normal file
@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<div class="colorbar-box">
|
||||
<div class="colorbar" ref="colorbarRef" :style="{ background: colorStore.getGradientCss }"></div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref } from "vue";
|
||||
import { useColorStore } from "../../plugins/store/modules/color";
|
||||
|
||||
const colorStore = useColorStore();
|
||||
const colorbarRef = ref<HTMLDivElement>();
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.colorbar-box {
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
.colorbar {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
border-radius: 5px;
|
||||
border: 2px solid #ffffff;
|
||||
outline: 2px solid #17233d;
|
||||
background-color: #66ccff;
|
||||
position: relative;
|
||||
.colorbar-stop {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: var(--stop-position);
|
||||
background-color: var(--color-hex);
|
||||
|
||||
width: 10px;
|
||||
height: 140%;
|
||||
border-radius: 5px;
|
||||
border: 3px solid #ffffff;
|
||||
outline: 2px solid #17233d;
|
||||
cursor: move;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
42
src/components/color-picker/color-quickslot.vue
Normal file
42
src/components/color-picker/color-quickslot.vue
Normal file
@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<ul class="color-cube-box">
|
||||
<t-popup v-for="(item, index) in colorList" :key="index" :content="item.label" :delay="[200, 50]" hide-empty-popup>
|
||||
<li class="color-cube" :style="`--color-hex: ${item.color}`" @click="onCubeClickHandler(item)"></li>
|
||||
</t-popup>
|
||||
</ul>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import colorList, { ColorItem } from "./colors";
|
||||
|
||||
const emit = defineEmits<ColorCubeEmit>();
|
||||
|
||||
const onCubeClickHandler = (item: ColorItem) => {
|
||||
emit("on-change", item.color);
|
||||
};
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
export interface ColorCubeEmit {
|
||||
(e: "on-change", value: HexColorString): void;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.color-cube-box {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
.color-cube {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border: 3px solid #ffffff;
|
||||
outline: 2px solid #17233d;
|
||||
background-color: var(--color-hex);
|
||||
margin-right: 10px;
|
||||
margin-bottom: 15px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
</style>
|
25
src/components/color-picker/colors.ts
Normal file
25
src/components/color-picker/colors.ts
Normal file
@ -0,0 +1,25 @@
|
||||
const colorList: ColorItem[] = [
|
||||
{ label: "&0", color: "#000000" },
|
||||
{ label: "&1", color: "#0000AA" },
|
||||
{ label: "&2", color: "#00AA00" },
|
||||
{ label: "&3", color: "#00AAAA" },
|
||||
{ label: "&4", color: "#AA0000" },
|
||||
{ label: "&5", color: "#AA00AA" },
|
||||
{ label: "&6", color: "#FFAA00" },
|
||||
{ label: "&7", color: "#AAAAAA" },
|
||||
{ label: "&8", color: "#555555" },
|
||||
{ label: "&9", color: "#5555FF" },
|
||||
{ label: "&a", color: "#55FF55" },
|
||||
{ label: "&b", color: "#55FFFF" },
|
||||
{ label: "&c", color: "#FF5555" },
|
||||
{ label: "&d", color: "#FF55FF" },
|
||||
{ label: "&e", color: "#FFFF55" },
|
||||
{ label: "&f", color: "#ffffff" },
|
||||
];
|
||||
|
||||
export default colorList;
|
||||
|
||||
export interface ColorItem {
|
||||
label?: string;
|
||||
color: HexColorString;
|
||||
}
|
71
src/components/color-picker/hex-input.vue
Normal file
71
src/components/color-picker/hex-input.vue
Normal file
@ -0,0 +1,71 @@
|
||||
<template>
|
||||
<div class="hex-input">
|
||||
<t-input
|
||||
v-model="privateValue"
|
||||
label="#"
|
||||
maxlength="6"
|
||||
placeholder="16进制颜色"
|
||||
size="large"
|
||||
@paste="onInputPasteHandler"
|
||||
@change="onInputChangeHandler"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { MessagePlugin } from "tdesign-vue-next";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = withDefaults(defineProps<HexInputProps>(), {});
|
||||
const emit = defineEmits<HexInputEmit>();
|
||||
|
||||
const privateValue = computed({
|
||||
get: () => props.modelValue?.replace(/#/g, "") as string,
|
||||
set: (val) => emit("update:modelValue", `#${val}`),
|
||||
});
|
||||
|
||||
const hexColorRegExp = /#?[a-fA-F0-9]{6}/;
|
||||
|
||||
const onInputPasteHandler = ({ e, pasteValue }: { e: ClipboardEvent; pasteValue: string }) => {
|
||||
if (pasteValue === "") {
|
||||
MessagePlugin.warning({ content: "请粘贴文本", placement: "bottom" });
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
if (!hexColorRegExp.test(pasteValue)) {
|
||||
MessagePlugin.warning({ content: "请粘贴16进制文字", placement: "bottom" });
|
||||
e.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
privateValue.value = pasteValue.replace(/#/g, "") as HexColorString;
|
||||
};
|
||||
|
||||
const onInputChangeHandler = (_val: string | number) => {
|
||||
const value = String(_val);
|
||||
if (value.length === 6 && hexColorRegExp.test(value)) {
|
||||
emit("on-change", `#${privateValue.value}` as HexColorString);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
export interface HexInputProps {
|
||||
modelValue: HexColorString | "";
|
||||
}
|
||||
|
||||
export interface HexInputEmit {
|
||||
(e: "update:modelValue", value: HexInputProps["modelValue"]): void;
|
||||
(e: "on-change", value: HexColorString): void;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.hex-input {
|
||||
width: 100%;
|
||||
&:deep(.t-input__inner) {
|
||||
font-family: "Barlow";
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
</style>
|
3
src/components/color-picker/index.ts
Normal file
3
src/components/color-picker/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import PickerMain from "./main.vue";
|
||||
|
||||
export const ColorPicker = PickerMain;
|
190
src/components/color-picker/main.vue
Normal file
190
src/components/color-picker/main.vue
Normal file
@ -0,0 +1,190 @@
|
||||
<template>
|
||||
<t-card bordered class="color-picker-wrapper">
|
||||
<div class="color-picker-header">
|
||||
<color-bar />
|
||||
<picker ref="pickerRef" v-model="colorStore.selectColorList[colorStore.selectedIndex]">
|
||||
<draggable v-model="colorStore.selectColorList" tag="ul" class="color-list">
|
||||
<template #item="{ element, index }">
|
||||
<li
|
||||
class="color-cell"
|
||||
:style="`--color-hex: ${element}`"
|
||||
:data-index="index + 1"
|
||||
:class="{ 'color-cell--active': colorStore.selectedIndex === index }"
|
||||
@click="onColorCellClickHandler(element, index)"
|
||||
>
|
||||
<div class="color-cell__cube"></div>
|
||||
<hex-input v-model="colorStore.selectColorList[index]" style="width: 150px" />
|
||||
<span class="color-cell__delete" @click.stop="onColorCellDeleteHandler(element, index)">×</span>
|
||||
</li>
|
||||
</template>
|
||||
</draggable>
|
||||
</picker>
|
||||
</div>
|
||||
<div class="color-picker-footer">
|
||||
<t-space class="color-setting" size="10px">
|
||||
<slot name="setting"> </slot>
|
||||
</t-space>
|
||||
<t-space class="list-setting" size="10px">
|
||||
<t-button @click="onAddColorClickHandler">新增</t-button>
|
||||
<t-popconfirm content="确认重置吗" @confirm="onResetClickHandler">
|
||||
<t-button theme="danger">重置</t-button>
|
||||
</t-popconfirm>
|
||||
<slot name="list-setting"> </slot>
|
||||
</t-space>
|
||||
</div>
|
||||
</t-card>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { onMounted, ref } from "vue";
|
||||
import picker, { PickerExpose } from "./picker.vue";
|
||||
import { useColorStore } from "../../plugins/store/modules/color";
|
||||
import HexInput from "./hex-input.vue";
|
||||
import draggable from "vuedraggable";
|
||||
|
||||
const pickerRef = ref<PickerExpose>();
|
||||
const colorStore = useColorStore();
|
||||
|
||||
onMounted(() => {
|
||||
colorStore.resetSelectColorList();
|
||||
});
|
||||
|
||||
const onColorCellClickHandler = (item: HexColorString, index: number) => {
|
||||
colorStore.selectedIndex = index;
|
||||
pickerRef.value?.setColor(item);
|
||||
};
|
||||
|
||||
const onColorCellDeleteHandler = (item: HexColorString, index: number) => {
|
||||
colorStore.pullColorListAt(index);
|
||||
};
|
||||
|
||||
const onAddColorClickHandler = () => {
|
||||
colorStore.addSelectColorList();
|
||||
};
|
||||
|
||||
const onResetClickHandler = () => {
|
||||
colorStore.resetSelectColorList();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.color-picker-wrapper {
|
||||
width: 100%;
|
||||
.color-picker-header {
|
||||
width: 100%;
|
||||
margin-bottom: 20px;
|
||||
padding-bottom: 20px;
|
||||
border-bottom: 1px solid #d4d7de;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.color-picker-footer {
|
||||
display: flex;
|
||||
.list-setting {
|
||||
margin-left: auto;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.color-list {
|
||||
width: 100%;
|
||||
max-height: 400px;
|
||||
overflow-y: auto;
|
||||
@include custom-scrollbar();
|
||||
.color-cell {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
border-radius: 5px;
|
||||
padding: 10px 10px 10px 20px;
|
||||
@include flex-center;
|
||||
transition: all 0.3s;
|
||||
border: 1px solid transparent;
|
||||
position: relative;
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
&:last-child,
|
||||
&--active {
|
||||
&::after {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: "#" attr(data-index);
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 70px;
|
||||
transform: translateY(-50%) skewX(-10deg);
|
||||
font-size: 35px;
|
||||
font-family: "Barlow";
|
||||
font-weight: 700;
|
||||
color: #f0f1f2;
|
||||
user-select: none;
|
||||
pointer-events: none;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 95%;
|
||||
height: 1px;
|
||||
background-color: #ebeef5;
|
||||
left: 50%;
|
||||
bottom: 0;
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
|
||||
&--active {
|
||||
background: #f0f1f2;
|
||||
border: 1px solid #d9dcdf;
|
||||
.color-cell__cube {
|
||||
border: 3px solid #ffffff;
|
||||
outline: 2px solid #17233d;
|
||||
}
|
||||
.color-cell__delete {
|
||||
color: #a7aeb9;
|
||||
}
|
||||
|
||||
&::before {
|
||||
color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
&__cube {
|
||||
width: 35px;
|
||||
height: 35px;
|
||||
background-color: var(--color-hex);
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
margin-right: 20px;
|
||||
flex-shrink: 0;
|
||||
border: 3px solid #e4e7ed;
|
||||
outline: 2px solid transparent;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
&__text {
|
||||
font-weight: 700;
|
||||
font-size: 18px;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
&__delete {
|
||||
color: #dfe1e6;
|
||||
cursor: pointer;
|
||||
margin-left: auto;
|
||||
font-weight: 700;
|
||||
font-size: 30px;
|
||||
padding-right: 5px;
|
||||
transition: color 0.3s;
|
||||
user-select: none;
|
||||
&:hover {
|
||||
color: #17233d;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
117
src/components/color-picker/picker.vue
Normal file
117
src/components/color-picker/picker.vue
Normal file
@ -0,0 +1,117 @@
|
||||
<template>
|
||||
<div class="picker-container">
|
||||
<div class="picker--box" ref="boxPickerRef"></div>
|
||||
<div class="picker-options">
|
||||
<div class="color-input">
|
||||
<hex-input v-model="privateValue" @on-change="onHexInputChangeHandler" />
|
||||
</div>
|
||||
<color-quickslot @on-change="onColorQuickSlotChangeHandler" />
|
||||
</div>
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import iro from "@jaames/iro";
|
||||
import HexInput from "./hex-input.vue";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
|
||||
const boxPickerRef = ref<HTMLDivElement>();
|
||||
const boxPickerInstance = ref();
|
||||
|
||||
const props = withDefaults(defineProps<PickerProps>(), {
|
||||
modelValue: "#FFFFFF",
|
||||
});
|
||||
const emit = defineEmits<PickerEmit>();
|
||||
|
||||
const privateValue = computed({
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emit("update:modelValue", val),
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
initializeBoxPicker();
|
||||
});
|
||||
|
||||
const initializeBoxPicker = () => {
|
||||
if (boxPickerRef.value) {
|
||||
boxPickerInstance.value = iro.ColorPicker(boxPickerRef.value, {
|
||||
layout: [
|
||||
{ component: iro.ui.Box, options: { boxHeight: 200 } },
|
||||
{ component: iro.ui.Slider, options: { sliderType: "hue" } },
|
||||
],
|
||||
width: 350,
|
||||
color: privateValue.value,
|
||||
});
|
||||
|
||||
boxPickerInstance.value.on("color:change", (iroColor: iro.Color) => {
|
||||
privateValue.value = iroColor.hexString as HexColorString;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const onHexInputChangeHandler = (val: HexColorString) => {
|
||||
setColor(val);
|
||||
console.info("onHexInputChangeHandler", val);
|
||||
privateValue.value = val;
|
||||
};
|
||||
|
||||
const onColorQuickSlotChangeHandler = (val: HexColorString) => {
|
||||
setColor(val);
|
||||
privateValue.value = val;
|
||||
};
|
||||
|
||||
const setColor = (color: HexColorString) => {
|
||||
boxPickerInstance.value?.setColors([color]);
|
||||
};
|
||||
|
||||
defineExpose<PickerExpose>({
|
||||
setColor,
|
||||
});
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
export interface PickerProps {
|
||||
modelValue?: HexColorString | "";
|
||||
}
|
||||
|
||||
export interface PickerExpose {
|
||||
setColor: (color: HexColorString) => void;
|
||||
}
|
||||
|
||||
export interface PickerEmit {
|
||||
(e: "update:modelValue", value: PickerProps["modelValue"]): void;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.picker-container {
|
||||
display: flex;
|
||||
}
|
||||
.picker--box {
|
||||
margin-right: 20px;
|
||||
&:deep(.IroBox) {
|
||||
border-radius: 6px !important;
|
||||
}
|
||||
&:deep(.IroColorPicker),
|
||||
&:deep(.IroSlider),
|
||||
&:deep(.IroSliderGradient) {
|
||||
border-radius: 6px !important;
|
||||
}
|
||||
}
|
||||
.picker-options {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-shrink: 0;
|
||||
|
||||
width: 350px;
|
||||
$gap-size: 20px;
|
||||
margin-right: $gap-size;
|
||||
padding-right: $gap-size;
|
||||
border-right: 1px dashed #dcdfe6;
|
||||
|
||||
.color-input {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
19
src/components/mcg-layout/footer.vue
Normal file
19
src/components/mcg-layout/footer.vue
Normal file
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<footer class="cg-footer">
|
||||
<t-space direction="vertical" size="10px">
|
||||
<t-link href="https://github.com/tuanzisama" target="_blank" theme="primary" style="font-weight: bold"> Github@tuanzisama </t-link>
|
||||
<t-link href="https://www.mcbbs.net/thread-1004671-1-1.html" target="_blank" theme="warning">
|
||||
[广告] PlayerTitle × 一款有点好用的玩家称号插件
|
||||
</t-link>
|
||||
<p>"Minecraft" 是 Mojang Synergies AB 的商标</p>
|
||||
</t-space>
|
||||
</footer>
|
||||
</template>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.cg-footer {
|
||||
font-size: 12px;
|
||||
text-align: center;
|
||||
padding: 40px 0;
|
||||
}
|
||||
</style>
|
42
src/components/mcg-layout/header.vue
Normal file
42
src/components/mcg-layout/header.vue
Normal file
@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<header class="cg-header">
|
||||
<p class="cg-header__title" :data-version="pkgVersion + modeText">Minecraft 渐变颜色生成器</p>
|
||||
</header>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed } from "vue";
|
||||
|
||||
const pkgVersion = computed(() => {
|
||||
return import.meta.env.PACKAGE_VERSION;
|
||||
});
|
||||
|
||||
const modeText = computed(() => {
|
||||
return import.meta.env.DEV ? "-SNAPSHOT" : "";
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.cg-header {
|
||||
height: 120px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 40px;
|
||||
font-weight: 700;
|
||||
&__title {
|
||||
position: relative;
|
||||
&::after {
|
||||
content: "v" attr(data-version);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: calc(100% + 5px);
|
||||
|
||||
padding: 2px 4px;
|
||||
border-radius: 5px;
|
||||
background-color: #f0f2f5;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
5
src/components/mcg-layout/index.ts
Normal file
5
src/components/mcg-layout/index.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import Header from "./header.vue";
|
||||
import Footer from "./footer.vue";
|
||||
|
||||
export const McgHeader = Header;
|
||||
export const McgFooter = Footer;
|
3
src/components/mcg-setting/index.ts
Normal file
3
src/components/mcg-setting/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import Main from "./main.vue";
|
||||
|
||||
export const McgSetting = Main;
|
92
src/components/mcg-setting/main.vue
Normal file
92
src/components/mcg-setting/main.vue
Normal file
@ -0,0 +1,92 @@
|
||||
<template>
|
||||
<t-drawer
|
||||
v-model:visible="privateValue"
|
||||
header="设置"
|
||||
size="600px"
|
||||
:close-on-overlay-click="false"
|
||||
:close-on-esc-keydown="false"
|
||||
@confirm="onConfirmHandler"
|
||||
>
|
||||
<t-form class="setting-form" :data="formData">
|
||||
<t-form-item label="字符模式" name="charMode">
|
||||
<t-radio-group v-model="formData.charMode">
|
||||
<t-radio value="&">&</t-radio>
|
||||
<t-radio value="§">§</t-radio>
|
||||
</t-radio-group>
|
||||
</t-form-item>
|
||||
<t-form-item label="兼容模式" name="compatibleMode" class="warped-formitem">
|
||||
<t-switch v-model="formData.compatibleMode" />
|
||||
<p class="setting-item-summary">仅限服务器不支持&#前缀发送Hex颜色</p>
|
||||
</t-form-item>
|
||||
<t-form-item label="移除空格" name="clearSpaceCharacter" class="warped-formitem">
|
||||
<t-switch v-model="formData.clearSpaceCharacter" />
|
||||
<p class="setting-item-summary">移除空格/换行/制表符</p>
|
||||
</t-form-item>
|
||||
</t-form>
|
||||
</t-drawer>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, reactive, watch } from "vue";
|
||||
import { AppStoreState, useAppStore } from "../../plugins/store/modules/app";
|
||||
import { MessagePlugin } from "tdesign-vue-next";
|
||||
|
||||
const props = withDefaults(defineProps<McgSettingProps>(), {
|
||||
modelValue: false,
|
||||
});
|
||||
const emit = defineEmits<McgSettingEmit>();
|
||||
const appStore = useAppStore();
|
||||
const formData = reactive<AppStoreState["setting"]>({
|
||||
charMode: "&",
|
||||
compatibleMode: false,
|
||||
clearSpaceCharacter: true,
|
||||
});
|
||||
|
||||
watch(
|
||||
() => props.modelValue,
|
||||
(newVal) => {
|
||||
if (newVal) {
|
||||
formData.charMode = appStore.setting.charMode;
|
||||
formData.compatibleMode = appStore.setting.compatibleMode;
|
||||
formData.clearSpaceCharacter = appStore.setting.clearSpaceCharacter;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
const privateValue = computed({
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emit("update:modelValue", val),
|
||||
});
|
||||
|
||||
const onConfirmHandler = () => {
|
||||
appStore.saveSetting(formData);
|
||||
privateValue.value = false;
|
||||
MessagePlugin.success({ content: "保存成功", placement: "bottom" });
|
||||
};
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
export interface McgSettingProps {
|
||||
modelValue: boolean;
|
||||
}
|
||||
export interface McgSettingEmit {
|
||||
(e: "update:modelValue", value: McgSettingProps["modelValue"]): void;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.setting-form {
|
||||
.setting-item-summary {
|
||||
flex-basis: 100%;
|
||||
margin-top: 10px;
|
||||
padding: 5px 10px;
|
||||
background: #f5f7fa;
|
||||
border: 1px solid #dcdfe6;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.warped-formitem:deep(.t-form__controls-content) {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
</style>
|
3
src/components/text-input/index.ts
Normal file
3
src/components/text-input/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import Main from "./main.vue";
|
||||
|
||||
export const TextInput = Main;
|
37
src/components/text-input/main.vue
Normal file
37
src/components/text-input/main.vue
Normal file
@ -0,0 +1,37 @@
|
||||
<template>
|
||||
<div class="text-input-wrapper">
|
||||
<t-textarea v-model="privateValue" placeholder="输入文字..." maxlength="200" :autosize="{ minRows: 3, maxRows: 8 }" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = withDefaults(defineProps<TextInputProps>(), {});
|
||||
const emit = defineEmits<TextInputEmit>();
|
||||
|
||||
const privateValue = computed({
|
||||
get: () => props.modelValue,
|
||||
set: (val) => emit("update:modelValue", val),
|
||||
});
|
||||
</script>
|
||||
|
||||
<script lang="ts">
|
||||
export interface TextInputProps {
|
||||
modelValue: string;
|
||||
}
|
||||
export interface TextInputEmit {
|
||||
(e: "update:modelValue", value: TextInputProps["modelValue"]): void;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.text-input-wrapper {
|
||||
width: 100%;
|
||||
&:deep(.t-textarea__inner) {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
font-family: "Barlow", "Noto Sans SC", sans-serif;
|
||||
}
|
||||
}
|
||||
</style>
|
3
src/components/text-output/index.ts
Normal file
3
src/components/text-output/index.ts
Normal file
@ -0,0 +1,3 @@
|
||||
import Main from "./main.vue";
|
||||
|
||||
export const TextOutput = Main;
|
111
src/components/text-output/main.vue
Normal file
111
src/components/text-output/main.vue
Normal file
@ -0,0 +1,111 @@
|
||||
<template>
|
||||
<div class="text-output-wrapper">
|
||||
<t-card title="生成" header-bordered>
|
||||
<template #actions>
|
||||
<span style="cursor: pointer" @click="onCopyClickHandler">复制</span>
|
||||
</template>
|
||||
<div class="text-output text-output--preview">
|
||||
<v-node-component :content="resultVNode" />
|
||||
</div>
|
||||
<t-divider />
|
||||
<div class="text-output text-output--raw" v-text="resultHTML" contenteditable></div>
|
||||
</t-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, h } from "vue";
|
||||
import { VNode as vNodeComponent } from "../../utils/vnode";
|
||||
import { genColorGradients } from "../../utils/util";
|
||||
import { useAppStore } from "../../plugins/store/modules/app";
|
||||
import { useColorStore } from "../../plugins/store/modules/color";
|
||||
import { MessagePlugin } from "tdesign-vue-next";
|
||||
|
||||
const appStore = useAppStore();
|
||||
const colorStore = useColorStore();
|
||||
|
||||
const gradientList = computed(() => {
|
||||
return genColorGradients(colorStore.selectColorList, appStore.processText.length);
|
||||
});
|
||||
|
||||
const resultContent = computed<Record<"code" | "color" | "char", string>[]>(() => {
|
||||
return appStore.processText.split("").map((item, index) => {
|
||||
const color = gradientList.value[index];
|
||||
if (appStore.setting.compatibleMode) {
|
||||
const colorSplit = color
|
||||
.slice(1)
|
||||
.split("")
|
||||
.reduce((acc, cur) => `${acc}${appStore.setting.charMode}${cur}`, "");
|
||||
return { code: `${appStore.setting.charMode}x${colorSplit}${item}`, color, char: item };
|
||||
} else {
|
||||
return { code: `${appStore.setting.charMode}${color}`, color, char: item };
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
const resultText = computed<string>(() => {
|
||||
if (colorStore.selectColorList.length < 2) {
|
||||
return appStore.processText;
|
||||
} else {
|
||||
return resultContent.value.map((item) => item.char).join("");
|
||||
}
|
||||
});
|
||||
|
||||
const resultVNode = computed(() => {
|
||||
if (colorStore.selectColorList.length < 2) {
|
||||
return appStore.processText.split("").map((el) => h("span", el));
|
||||
}
|
||||
return resultContent.value.map((item) => h("span", { style: { color: item.color } }, item.char));
|
||||
});
|
||||
|
||||
const resultHTML = computed(() => {
|
||||
if (colorStore.selectColorList.length < 2) {
|
||||
return appStore.processText;
|
||||
}
|
||||
return resultContent.value.map((item) => `${item.code}${item.char}`).join("");
|
||||
});
|
||||
|
||||
const onCopyClickHandler = () => {
|
||||
if (appStore.processText.length === 0) {
|
||||
MessagePlugin.warning({ content: "请先输入文本", placement: "bottom" });
|
||||
return;
|
||||
}
|
||||
navigator.clipboard
|
||||
.writeText(resultText.value)
|
||||
.then(() => MessagePlugin.success({ content: "复制成功啦", placement: "bottom" }))
|
||||
.catch((err) => {
|
||||
MessagePlugin.error({ content: "复制失败,请尝试更新您的浏览器", placement: "bottom" });
|
||||
console.error(err);
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.text-output-wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.text-output {
|
||||
width: 100%;
|
||||
height: 150px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
font-size: 20px;
|
||||
line-height: 25px;
|
||||
letter-spacing: 1px;
|
||||
@include custom-scrollbar();
|
||||
outline: none;
|
||||
border: none;
|
||||
word-break: break-all;
|
||||
&--preview {
|
||||
height: 80px;
|
||||
}
|
||||
&--raw {
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
&:deep(.color-tag) {
|
||||
color: var(--color-hex);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
16
src/main.ts
16
src/main.ts
@ -1,8 +1,12 @@
|
||||
import { createApp } from "vue";
|
||||
import ViewUIPlus from "view-ui-plus";
|
||||
import App from "./App.vue";
|
||||
import "view-ui-plus/dist/styles/viewuiplus.css";
|
||||
import "reset.css";
|
||||
import "./assets/styles/main.less";
|
||||
import store from "./plugins/store";
|
||||
|
||||
createApp(App).use(ViewUIPlus).mount("#app");
|
||||
import "reset.css";
|
||||
import "./styles/global.scss";
|
||||
import "tdesign-vue-next/es/style/index.css";
|
||||
|
||||
import App from "./App.vue";
|
||||
|
||||
const app = createApp(App);
|
||||
app.use(store);
|
||||
app.mount("#app");
|
||||
|
7
src/plugins/store/index.ts
Normal file
7
src/plugins/store/index.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { createPinia } from "pinia";
|
||||
import piniaPluginPersistedstate from "pinia-plugin-persistedstate";
|
||||
|
||||
const pinia = createPinia();
|
||||
pinia.use(piniaPluginPersistedstate);
|
||||
|
||||
export default pinia;
|
43
src/plugins/store/modules/app.ts
Normal file
43
src/plugins/store/modules/app.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import { defineStore } from "pinia";
|
||||
|
||||
export interface AppStoreState {
|
||||
processText: string;
|
||||
setting: {
|
||||
/**
|
||||
* 字符模式
|
||||
* 客户端发送使用&,服务端发送使用§
|
||||
*/
|
||||
charMode: "&" | "§";
|
||||
/**
|
||||
* 兼容模式
|
||||
* 仅限服务器不支持&#前缀发送Hex颜色
|
||||
*/
|
||||
compatibleMode: boolean;
|
||||
/**
|
||||
* 移除空格
|
||||
* 移除空格/换行/制表符
|
||||
*/
|
||||
clearSpaceCharacter: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export const useAppStore = defineStore("app", {
|
||||
state: (): AppStoreState => ({
|
||||
processText: "",
|
||||
setting: {
|
||||
charMode: "&",
|
||||
compatibleMode: false,
|
||||
clearSpaceCharacter: true,
|
||||
},
|
||||
}),
|
||||
actions: {
|
||||
saveSetting(data: AppStoreState["setting"]) {
|
||||
this.setting.charMode = data.charMode;
|
||||
this.setting.compatibleMode = data.compatibleMode;
|
||||
this.setting.clearSpaceCharacter = data.clearSpaceCharacter;
|
||||
},
|
||||
},
|
||||
persist: {
|
||||
paths: ["setting"],
|
||||
},
|
||||
});
|
44
src/plugins/store/modules/color.ts
Normal file
44
src/plugins/store/modules/color.ts
Normal file
@ -0,0 +1,44 @@
|
||||
import { defineStore } from "pinia";
|
||||
|
||||
export interface ColorState {
|
||||
selectColorList: HexColorString[];
|
||||
selectedIndex: number;
|
||||
}
|
||||
|
||||
export const useColorStore = defineStore("color", {
|
||||
state: (): ColorState => ({
|
||||
selectColorList: [],
|
||||
selectedIndex: 0,
|
||||
}),
|
||||
getters: {
|
||||
getGradientCss: (state) => {
|
||||
const stops = state.selectColorList.map((item, index, list) => `${item} ${(100 / list.length) * index}%`);
|
||||
return `linear-gradient(to right, ${stops.join(", ")})`;
|
||||
},
|
||||
colorStopList: (state) => {
|
||||
return state.selectColorList.map((item, index, list) => {
|
||||
return { hex: item, pos: index === 0 ? 0 : (100 / (list.length - 1)) * index };
|
||||
});
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
resetSelectColorList() {
|
||||
this.selectColorList = ["#A8ABB2", "#303133"];
|
||||
},
|
||||
pullColorListAt(index: number) {
|
||||
if (this.selectColorList.length > 2) {
|
||||
this.selectColorList.splice(index, 1);
|
||||
}
|
||||
},
|
||||
addSelectColorList(color?: HexColorString) {
|
||||
this.selectColorList.push(color ?? randomColor());
|
||||
},
|
||||
},
|
||||
persist: {
|
||||
paths: [],
|
||||
},
|
||||
});
|
||||
|
||||
function randomColor(): HexColorString {
|
||||
return ("#" + ((Math.random() * 0xffffff) << 0).toString(16)) as HexColorString;
|
||||
}
|
16
src/styles/global.scss
Normal file
16
src/styles/global.scss
Normal file
@ -0,0 +1,16 @@
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
color: #17233d;
|
||||
font-family: "Barlow", "Noto Sans SC", sans-serif;
|
||||
}
|
||||
|
||||
#app {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
}
|
133
src/styles/mixins.scss
Normal file
133
src/styles/mixins.scss
Normal file
@ -0,0 +1,133 @@
|
||||
@mixin fill-parent() {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@mixin flex-vcenter($isColumn: false) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@if $isColumn {
|
||||
flex-direction: column;
|
||||
} @else {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin flex-center() {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
@mixin absolute-vcenter() {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
@mixin text-ellipsis {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@mixin img-cover {
|
||||
@include fill-parent();
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
@mixin img-contain {
|
||||
@include fill-parent();
|
||||
object-fit: contain;
|
||||
}
|
||||
|
||||
@mixin x-margin-top($val: 0px) {
|
||||
margin-top: #{$val * 2};
|
||||
margin-top: calc(#{$val} + constant(safe-area-inset-top));
|
||||
margin-top: calc(#{$val} + env(safe-area-inset-top));
|
||||
}
|
||||
|
||||
@mixin x-top($val: 0px) {
|
||||
top: #{$val * 2};
|
||||
top: calc(#{$val} + constant(safe-area-inset-top));
|
||||
top: calc(#{$val} + env(safe-area-inset-top));
|
||||
}
|
||||
|
||||
@mixin custom-scrollbar($size: 8px, $radius: 8px, $bgColor: rgba(238, 236, 236, 0.3)) {
|
||||
&::-webkit-scrollbar {
|
||||
background-color: transparent;
|
||||
width: $size;
|
||||
height: $size;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background-color: $bgColor;
|
||||
border-radius: $radius;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb:hover {
|
||||
background-color: darken($bgColor, 5%);
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-button {
|
||||
height: 0;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-button,
|
||||
&::-webkit-scrollbar-corner {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-arrow-color {
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin text-typo($color: var(--tzr-primary-color)) {
|
||||
position: relative;
|
||||
margin-bottom: 7px;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: var(--text-typo-offset, 0px);
|
||||
height: 2px;
|
||||
background-color: rgb(224, 224, 224);
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
transition: all 0.5s;
|
||||
position: absolute;
|
||||
bottom: var(--text-typo-offset, 0px);
|
||||
height: 2px;
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
&::after {
|
||||
animation: typo 0.5s reverse;
|
||||
animation-fill-mode: both;
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
background-color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes typo {
|
||||
from {
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
to {
|
||||
width: 0%;
|
||||
left: 10%;
|
||||
}
|
||||
}
|
||||
}
|
6
src/typings.d.ts
vendored
Normal file
6
src/typings.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
type HexColorString = `#${string}`;
|
||||
|
||||
interface ColorStop {
|
||||
hex: HexColorString;
|
||||
stop: number;
|
||||
}
|
@ -1,7 +1,29 @@
|
||||
import { fileURLToPath, URL } from "node:url";
|
||||
import { defineConfig } from "vite";
|
||||
import vue from "@vitejs/plugin-vue";
|
||||
import version from "vite-plugin-package-version";
|
||||
import AutoImport from "unplugin-auto-import/vite";
|
||||
import Components from "unplugin-vue-components/vite";
|
||||
import { TDesignResolver } from "unplugin-vue-components/resolvers";
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [vue()]
|
||||
plugins: [
|
||||
vue(),
|
||||
version(),
|
||||
AutoImport({ resolvers: [TDesignResolver({ library: "vue-next" })] }),
|
||||
Components({ resolvers: [TDesignResolver({ library: "vue-next" })] }),
|
||||
],
|
||||
resolve: {
|
||||
alias: [{ find: "@", replacement: fileURLToPath(new URL("./src", import.meta.url)) }],
|
||||
},
|
||||
css: {
|
||||
preprocessorOptions: {
|
||||
scss: {
|
||||
additionalData: `
|
||||
@import "@/styles/mixins.scss";
|
||||
`,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
613
yarn.lock
613
yarn.lock
@ -2,11 +2,23 @@
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@antfu/utils@^0.7.6":
|
||||
version "0.7.7"
|
||||
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.7.tgz#26ea493a831b4f3a85475e7157be02fb4eab51fb"
|
||||
integrity sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==
|
||||
|
||||
"@babel/parser@^7.20.15", "@babel/parser@^7.21.3":
|
||||
version "7.22.5"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.5.tgz"
|
||||
integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==
|
||||
|
||||
"@babel/runtime@^7.16.3", "@babel/runtime@^7.22.6":
|
||||
version "7.23.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d"
|
||||
integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
"@esbuild/android-arm64@0.17.19":
|
||||
version "0.17.19"
|
||||
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
|
||||
@ -117,16 +129,94 @@
|
||||
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz"
|
||||
integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.13":
|
||||
"@irojs/iro-core@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@irojs/iro-core/-/iro-core-1.2.1.tgz#ab45cf0899717fae785ef9661b82bb6f78cd3748"
|
||||
integrity sha512-p2OvsBSSmidsDsTSkID6jEyXDF7lcyxPrkh3qBzasBZFpjkYd6kZ3yMWai3MlAaQ3F7li/Et7rSJVV09Fpei+A==
|
||||
|
||||
"@jaames/iro@^5.5.2":
|
||||
version "5.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@jaames/iro/-/iro-5.5.2.tgz#15301c19080b985aede06c5f07867aa20d06e679"
|
||||
integrity sha512-Fbi5U4Vdkw6UsF+R3oMlPONqkvUDMkwzh+mX718gQsDFt3+1r1jvGsrfCbedmXAAy0WsjDHOrefK0BkDk99TQg==
|
||||
dependencies:
|
||||
"@irojs/iro-core" "^1.2.1"
|
||||
preact "^10.0.0"
|
||||
|
||||
"@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.15":
|
||||
version "1.4.15"
|
||||
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
|
||||
integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
|
||||
|
||||
"@nodelib/fs.scandir@2.1.5":
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
|
||||
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "2.0.5"
|
||||
run-parallel "^1.1.9"
|
||||
|
||||
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
|
||||
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
||||
|
||||
"@nodelib/fs.walk@^1.2.3":
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
|
||||
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
|
||||
dependencies:
|
||||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@popperjs/core@^2.11.8":
|
||||
version "2.11.8"
|
||||
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
|
||||
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
|
||||
|
||||
"@rollup/pluginutils@^5.0.4", "@rollup/pluginutils@^5.1.0":
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0"
|
||||
integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==
|
||||
dependencies:
|
||||
"@types/estree" "^1.0.0"
|
||||
estree-walker "^2.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
"@types/estree@^1.0.0":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
|
||||
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
|
||||
|
||||
"@types/lodash@4.14.182":
|
||||
version "4.14.182"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.182.tgz#05301a4d5e62963227eaafe0ce04dd77c54ea5c2"
|
||||
integrity sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==
|
||||
|
||||
"@types/lodash@^4.14.202":
|
||||
version "4.14.202"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8"
|
||||
integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==
|
||||
|
||||
"@types/node@^20.3.2":
|
||||
version "20.3.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.3.2.tgz#fa6a90f2600e052a03c18b8cb3fd83dd4e599898"
|
||||
integrity sha512-vOBLVQeCQfIcF/2Y7eKFTqrMnizK5lRNQ7ykML/5RuwVXVWxYkgwS7xbt4B6fKCUPgbSL5FSsjHQpaGQP/dQmw==
|
||||
|
||||
"@types/sortablejs@^1.15.1":
|
||||
version "1.15.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/sortablejs/-/sortablejs-1.15.7.tgz#11f85e98fce2854708e5c6d6011f7a236d79ae9f"
|
||||
integrity sha512-PvgWCx1Lbgm88FdQ6S7OGvLIjWS66mudKPlfdrWil0TjsO5zmoZmzoKiiwRShs1dwPgrlkr0N4ewuy0/+QUXYQ==
|
||||
|
||||
"@types/tinycolor2@^1.4.3":
|
||||
version "1.4.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.6.tgz#670cbc0caf4e58dd61d1e3a6f26386e473087f06"
|
||||
integrity sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==
|
||||
|
||||
"@types/validator@^13.7.17":
|
||||
version "13.11.7"
|
||||
resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.7.tgz#99e19760297667ae46b7069ec8b96cbfe0a08b98"
|
||||
integrity sha512-q0JomTsJ2I5Mv7dhHhQLGjMvX0JJm5dyZ1DXQySIUzU1UlwzB8bt+R6+LODUbz0UDIOvEzGc28tk27gBJw2N8Q==
|
||||
|
||||
"@vitejs/plugin-vue@^4.1.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz"
|
||||
@ -195,6 +285,11 @@
|
||||
"@vue/compiler-dom" "3.3.4"
|
||||
"@vue/shared" "3.3.4"
|
||||
|
||||
"@vue/devtools-api@^6.5.0":
|
||||
version "6.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697"
|
||||
integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==
|
||||
|
||||
"@vue/language-core@1.8.3":
|
||||
version "1.8.3"
|
||||
resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-1.8.3.tgz"
|
||||
@ -265,6 +360,11 @@
|
||||
"@volar/typescript" "1.7.10"
|
||||
"@vue/language-core" "1.8.3"
|
||||
|
||||
acorn@^8.10.0, acorn@^8.11.2:
|
||||
version "8.11.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
|
||||
integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
|
||||
@ -283,6 +383,14 @@ anymatch@^1.3.0:
|
||||
micromatch "^2.1.5"
|
||||
normalize-path "^2.0.0"
|
||||
|
||||
anymatch@~3.1.2:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
|
||||
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
|
||||
dependencies:
|
||||
normalize-path "^3.0.0"
|
||||
picomatch "^2.0.4"
|
||||
|
||||
arr-diff@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz"
|
||||
@ -325,11 +433,6 @@ async-each@^1.0.0:
|
||||
resolved "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz"
|
||||
integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==
|
||||
|
||||
async-validator@^3.3.0:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz"
|
||||
integrity sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==
|
||||
|
||||
atob@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz"
|
||||
@ -827,16 +930,16 @@ base@^0.11.1:
|
||||
mixin-deep "^1.2.0"
|
||||
pascalcase "^0.1.1"
|
||||
|
||||
batch-processor@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz"
|
||||
integrity sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==
|
||||
|
||||
binary-extensions@^1.0.0:
|
||||
version "1.13.1"
|
||||
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz"
|
||||
integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
|
||||
|
||||
binary-extensions@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
|
||||
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
|
||||
|
||||
bindings@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
||||
@ -884,6 +987,13 @@ braces@^2.3.1:
|
||||
split-string "^3.0.2"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
braces@^3.0.2, braces@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
|
||||
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
|
||||
dependencies:
|
||||
fill-range "^7.0.1"
|
||||
|
||||
cache-base@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz"
|
||||
@ -910,6 +1020,21 @@ chalk@^1.1.3:
|
||||
strip-ansi "^3.0.0"
|
||||
supports-color "^2.0.0"
|
||||
|
||||
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
|
||||
version "3.5.3"
|
||||
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
|
||||
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
|
||||
dependencies:
|
||||
anymatch "~3.1.2"
|
||||
braces "~3.0.2"
|
||||
glob-parent "~5.1.2"
|
||||
is-binary-path "~2.1.0"
|
||||
is-glob "~4.0.1"
|
||||
normalize-path "~3.0.0"
|
||||
readdirp "~3.6.0"
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
chokidar@^1.6.1:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz"
|
||||
@ -997,20 +1122,15 @@ core-util-is@~1.0.0:
|
||||
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
|
||||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
||||
|
||||
countup.js@^1.9.3:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.npmjs.org/countup.js/-/countup.js-1.9.3.tgz"
|
||||
integrity sha512-UHf2P/mFKaESqdPq+UdBJm/1y8lYdlcDd0nTZHNC8cxWoJwZr1Eldm1PpWui446vDl5Pd8PtRYkr3q6K4+Qa5A==
|
||||
|
||||
csstype@^3.1.1:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz"
|
||||
integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
|
||||
|
||||
dayjs@^1.11.0:
|
||||
version "1.11.8"
|
||||
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz"
|
||||
integrity sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ==
|
||||
dayjs@^1.11.9:
|
||||
version "1.11.10"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
|
||||
integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
|
||||
|
||||
de-indent@^1.0.2:
|
||||
version "1.0.2"
|
||||
@ -1031,16 +1151,18 @@ debug@^3.2.6:
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
decode-uri-component@^0.2.0:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz"
|
||||
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
|
||||
|
||||
deepmerge@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz"
|
||||
integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
|
||||
|
||||
define-property@^0.2.5:
|
||||
version "0.2.5"
|
||||
resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz"
|
||||
@ -1070,13 +1192,6 @@ detect-indent@^4.0.0:
|
||||
dependencies:
|
||||
repeating "^2.0.0"
|
||||
|
||||
element-resize-detector@^1.2.0:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz"
|
||||
integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==
|
||||
dependencies:
|
||||
batch-processor "1.0.0"
|
||||
|
||||
errno@^0.1.1:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz"
|
||||
@ -1117,6 +1232,11 @@ escape-string-regexp@^1.0.2:
|
||||
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
|
||||
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
||||
|
||||
escape-string-regexp@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
|
||||
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
|
||||
|
||||
estree-walker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
|
||||
@ -1190,6 +1310,24 @@ extglob@^2.0.4:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.1"
|
||||
|
||||
fast-glob@^3.3.1, fast-glob@^3.3.2:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
|
||||
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
|
||||
dependencies:
|
||||
"@nodelib/fs.stat" "^2.0.2"
|
||||
"@nodelib/fs.walk" "^1.2.3"
|
||||
glob-parent "^5.1.2"
|
||||
merge2 "^1.3.0"
|
||||
micromatch "^4.0.4"
|
||||
|
||||
fastq@^1.6.0:
|
||||
version "1.15.0"
|
||||
resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
|
||||
integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
|
||||
dependencies:
|
||||
reusify "^1.0.4"
|
||||
|
||||
file-uri-to-path@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||
@ -1221,6 +1359,13 @@ fill-range@^4.0.0:
|
||||
repeat-string "^1.6.1"
|
||||
to-regex-range "^2.1.0"
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
|
||||
dependencies:
|
||||
to-regex-range "^5.0.1"
|
||||
|
||||
for-in@^1.0.1, for-in@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz"
|
||||
@ -1263,6 +1408,11 @@ fsevents@~2.3.2:
|
||||
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
|
||||
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
||||
|
||||
function-bind@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
|
||||
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
||||
|
||||
get-value@^2.0.3, get-value@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz"
|
||||
@ -1283,6 +1433,13 @@ glob-parent@^2.0.0:
|
||||
dependencies:
|
||||
is-glob "^2.0.0"
|
||||
|
||||
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==
|
||||
dependencies:
|
||||
is-glob "^4.0.1"
|
||||
|
||||
glob@^7.1.2:
|
||||
version "7.2.3"
|
||||
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
|
||||
@ -1343,6 +1500,13 @@ has-values@^1.0.0:
|
||||
is-number "^3.0.0"
|
||||
kind-of "^4.0.0"
|
||||
|
||||
hasown@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
|
||||
integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
he@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
|
||||
@ -1368,6 +1532,11 @@ image-size@~0.5.0:
|
||||
resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz"
|
||||
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
||||
|
||||
immutable@^4.0.0:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f"
|
||||
integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
|
||||
@ -1409,11 +1578,25 @@ is-binary-path@^1.0.0:
|
||||
dependencies:
|
||||
binary-extensions "^1.0.0"
|
||||
|
||||
is-binary-path@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
|
||||
dependencies:
|
||||
binary-extensions "^2.0.0"
|
||||
|
||||
is-buffer@^1.1.5:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz"
|
||||
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
|
||||
|
||||
is-core-module@^2.13.0:
|
||||
version "2.13.1"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
|
||||
integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
|
||||
dependencies:
|
||||
hasown "^2.0.0"
|
||||
|
||||
is-data-descriptor@^0.1.4:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz"
|
||||
@ -1475,6 +1658,11 @@ is-extglob@^1.0.0:
|
||||
resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz"
|
||||
integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==
|
||||
|
||||
is-extglob@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
|
||||
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
||||
|
||||
is-finite@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz"
|
||||
@ -1487,6 +1675,13 @@ is-glob@^2.0.0, is-glob@^2.0.1:
|
||||
dependencies:
|
||||
is-extglob "^1.0.0"
|
||||
|
||||
is-glob@^4.0.1, is-glob@~4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
|
||||
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
||||
dependencies:
|
||||
is-extglob "^2.1.1"
|
||||
|
||||
is-number@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz"
|
||||
@ -1506,6 +1701,11 @@ is-number@^4.0.0:
|
||||
resolved "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz"
|
||||
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
|
||||
|
||||
is-number@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||
|
||||
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz"
|
||||
@ -1550,11 +1750,6 @@ isobject@^3.0.0, isobject@^3.0.1:
|
||||
resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"
|
||||
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
|
||||
|
||||
js-calendar@^1.2.3:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz"
|
||||
integrity sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0":
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
|
||||
@ -1580,6 +1775,11 @@ json5@^0.5.1:
|
||||
resolved "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz"
|
||||
integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==
|
||||
|
||||
jsonc-parser@^3.2.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
|
||||
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
|
||||
|
||||
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
|
||||
version "3.2.2"
|
||||
resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz"
|
||||
@ -1621,17 +1821,20 @@ less@^4.1.3:
|
||||
needle "^3.1.0"
|
||||
source-map "~0.6.0"
|
||||
|
||||
lodash.chunk@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmjs.org/lodash.chunk/-/lodash.chunk-4.2.0.tgz"
|
||||
integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w==
|
||||
local-pkg@^0.4.3:
|
||||
version "0.4.3"
|
||||
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
|
||||
integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
|
||||
|
||||
lodash.throttle@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz"
|
||||
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
|
||||
local-pkg@^0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c"
|
||||
integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==
|
||||
dependencies:
|
||||
mlly "^1.4.2"
|
||||
pkg-types "^1.0.3"
|
||||
|
||||
lodash@^4.17.4:
|
||||
lodash@^4.17.21, lodash@^4.17.4:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
@ -1657,6 +1860,13 @@ magic-string@^0.30.0:
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.13"
|
||||
|
||||
magic-string@^0.30.3, magic-string@^0.30.5:
|
||||
version "0.30.5"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9"
|
||||
integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.15"
|
||||
|
||||
make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz"
|
||||
@ -1682,6 +1892,11 @@ math-random@^1.0.1:
|
||||
resolved "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz"
|
||||
integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==
|
||||
|
||||
merge2@^1.3.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||
|
||||
micromatch@^2.1.5:
|
||||
version "2.3.11"
|
||||
resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz"
|
||||
@ -1720,6 +1935,14 @@ micromatch@^3.1.10:
|
||||
snapdragon "^0.8.1"
|
||||
to-regex "^3.0.2"
|
||||
|
||||
micromatch@^4.0.4:
|
||||
version "4.0.5"
|
||||
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
|
||||
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
|
||||
dependencies:
|
||||
braces "^3.0.2"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
mime@^1.4.1:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
|
||||
@ -1739,11 +1962,23 @@ minimatch@^9.0.0:
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^9.0.3:
|
||||
version "9.0.3"
|
||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825"
|
||||
integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.2.6:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
mitt@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
|
||||
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
|
||||
|
||||
mixin-deep@^1.2.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz"
|
||||
@ -1759,11 +1994,26 @@ mkdirp@^0.5.1:
|
||||
dependencies:
|
||||
minimist "^1.2.6"
|
||||
|
||||
mlly@^1.2.0, mlly@^1.4.2:
|
||||
version "1.4.2"
|
||||
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e"
|
||||
integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==
|
||||
dependencies:
|
||||
acorn "^8.10.0"
|
||||
pathe "^1.1.1"
|
||||
pkg-types "^1.0.3"
|
||||
ufo "^1.3.0"
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
|
||||
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
|
||||
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
|
||||
@ -1817,10 +2067,10 @@ normalize-path@^2.0.0, normalize-path@^2.0.1:
|
||||
dependencies:
|
||||
remove-trailing-separator "^1.0.1"
|
||||
|
||||
numeral@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz"
|
||||
integrity sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==
|
||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
||||
|
||||
object-assign@^4.1.0:
|
||||
version "4.1.1"
|
||||
@ -1914,20 +2164,52 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
|
||||
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
|
||||
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
|
||||
|
||||
path-parse@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
||||
|
||||
pathe@^1.1.0, pathe@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a"
|
||||
integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==
|
||||
|
||||
picocolors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
|
||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||
|
||||
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
pify@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz"
|
||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||
|
||||
popper.js@^1.14.6:
|
||||
version "1.16.1"
|
||||
resolved "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz"
|
||||
integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==
|
||||
pinia-plugin-persistedstate@^3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.yarnpkg.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.1.tgz#66780602aecd6c7b152dd7e3ddc249a1f7a13fe5"
|
||||
integrity sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==
|
||||
|
||||
pinia@^2.1.7:
|
||||
version "2.1.7"
|
||||
resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.1.7.tgz#4cf5420d9324ca00b7b4984d3fbf693222115bbc"
|
||||
integrity sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==
|
||||
dependencies:
|
||||
"@vue/devtools-api" "^6.5.0"
|
||||
vue-demi ">=0.14.5"
|
||||
|
||||
pkg-types@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"
|
||||
integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
|
||||
dependencies:
|
||||
jsonc-parser "^3.2.0"
|
||||
mlly "^1.2.0"
|
||||
pathe "^1.1.0"
|
||||
|
||||
posix-character-classes@^0.1.0:
|
||||
version "0.1.1"
|
||||
@ -1943,6 +2225,11 @@ postcss@^8.1.10, postcss@^8.4.23:
|
||||
picocolors "^1.0.0"
|
||||
source-map-js "^1.0.2"
|
||||
|
||||
preact@^10.0.0:
|
||||
version "10.19.3"
|
||||
resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.3.tgz#7a7107ed2598a60676c943709ea3efb8aaafa899"
|
||||
integrity sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==
|
||||
|
||||
preserve@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz"
|
||||
@ -1968,6 +2255,11 @@ prr@~1.0.1:
|
||||
resolved "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz"
|
||||
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
|
||||
|
||||
queue-microtask@^1.2.2:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
||||
|
||||
randomatic@^3.0.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz"
|
||||
@ -1999,6 +2291,13 @@ readdirp@^2.0.0:
|
||||
micromatch "^3.1.10"
|
||||
readable-stream "^2.0.2"
|
||||
|
||||
readdirp@~3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
|
||||
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
|
||||
dependencies:
|
||||
picomatch "^2.2.1"
|
||||
|
||||
regenerate@^1.2.1:
|
||||
version "1.4.2"
|
||||
resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz"
|
||||
@ -2014,6 +2313,11 @@ regenerator-runtime@^0.11.0:
|
||||
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz"
|
||||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
||||
|
||||
regenerator-runtime@^0.14.0:
|
||||
version "0.14.1"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
|
||||
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
|
||||
|
||||
regenerator-transform@^0.10.0:
|
||||
version "0.10.1"
|
||||
resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz"
|
||||
@ -2091,11 +2395,25 @@ resolve-url@^0.2.1:
|
||||
resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz"
|
||||
integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
|
||||
|
||||
resolve@^1.22.4:
|
||||
version "1.22.8"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
|
||||
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
|
||||
dependencies:
|
||||
is-core-module "^2.13.0"
|
||||
path-parse "^1.0.7"
|
||||
supports-preserve-symlinks-flag "^1.0.0"
|
||||
|
||||
ret@~0.1.10:
|
||||
version "0.1.15"
|
||||
resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz"
|
||||
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
|
||||
|
||||
reusify@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
|
||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||
|
||||
rollup@^3.21.0:
|
||||
version "3.25.3"
|
||||
resolved "https://registry.npmjs.org/rollup/-/rollup-3.25.3.tgz"
|
||||
@ -2103,6 +2421,13 @@ rollup@^3.21.0:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
run-parallel@^1.1.9:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
|
||||
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
|
||||
dependencies:
|
||||
queue-microtask "^1.2.2"
|
||||
|
||||
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
|
||||
@ -2120,15 +2445,24 @@ safe-regex@^1.1.0:
|
||||
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sass@^1.69.5:
|
||||
version "1.69.5"
|
||||
resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde"
|
||||
integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==
|
||||
dependencies:
|
||||
chokidar ">=3.0.0 <4.0.0"
|
||||
immutable "^4.0.0"
|
||||
source-map-js ">=0.6.2 <2.0.0"
|
||||
|
||||
sax@^1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"
|
||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||
|
||||
select@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz"
|
||||
integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==
|
||||
scule@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/scule/-/scule-1.1.1.tgz#82b4d13bb8c729c15849256e749cee0cb52a4d89"
|
||||
integrity sha512-sHtm/SsIK9BUBI3EFT/Gnp9VoKfY6QLvlkvAE6YK7454IF8FSgJEAnJpVdSC7K5/pjI5NfxhzBLW2JAfYA/shQ==
|
||||
|
||||
semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
@ -2192,7 +2526,12 @@ sortablejs@1.14.0:
|
||||
resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz"
|
||||
integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==
|
||||
|
||||
source-map-js@^1.0.2:
|
||||
sortablejs@^1.15.0:
|
||||
version "1.15.1"
|
||||
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.1.tgz#9a35f52cdff449fb42ea8ecf222f3468d76e0a47"
|
||||
integrity sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ==
|
||||
|
||||
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
|
||||
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
|
||||
@ -2259,12 +2598,50 @@ strip-ansi@^3.0.0:
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-literal@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07"
|
||||
integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==
|
||||
dependencies:
|
||||
acorn "^8.10.0"
|
||||
|
||||
supports-color@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
|
||||
integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==
|
||||
|
||||
tinycolor2@^1.4.1:
|
||||
supports-preserve-symlinks-flag@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
|
||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||
|
||||
tdesign-icons-vue-next@^0.2.0:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/tdesign-icons-vue-next/-/tdesign-icons-vue-next-0.2.2.tgz#32f1bef1e6a5828bfc5c7d7250e5171c22940abb"
|
||||
integrity sha512-ZKleBME7ZF1IVgnRXmIBPjfNa2Mef1nrK56f2xwn1Aa5mvXxB3fSxEzwhObR7bhzf/K42mz/Knnbll5Y7vCBjg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.16.3"
|
||||
|
||||
tdesign-vue-next@^1.7.1:
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/tdesign-vue-next/-/tdesign-vue-next-1.7.1.tgz#e342935cc361f6662fdd4608f1fd3ce201466560"
|
||||
integrity sha512-zPfzkgul4zAltUt3OJIzItZkhBxYT7kc5uoW/pGRvlcKwqOj4v+LdgAU9UfYztgKVyrwLQVc82KRaM+4y2nlYg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.22.6"
|
||||
"@popperjs/core" "^2.11.8"
|
||||
"@types/lodash" "4.14.182"
|
||||
"@types/sortablejs" "^1.15.1"
|
||||
"@types/tinycolor2" "^1.4.3"
|
||||
"@types/validator" "^13.7.17"
|
||||
dayjs "^1.11.9"
|
||||
lodash "^4.17.21"
|
||||
mitt "^3.0.1"
|
||||
sortablejs "^1.15.0"
|
||||
tdesign-icons-vue-next "^0.2.0"
|
||||
tinycolor2 "^1.6.0"
|
||||
validator "^13.9.0"
|
||||
|
||||
tinycolor2@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz"
|
||||
integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==
|
||||
@ -2289,6 +2666,13 @@ to-regex-range@^2.1.0:
|
||||
is-number "^3.0.0"
|
||||
repeat-string "^1.6.1"
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
||||
dependencies:
|
||||
is-number "^7.0.0"
|
||||
|
||||
to-regex@^3.0.1, to-regex@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz"
|
||||
@ -2314,6 +2698,28 @@ typescript@^5.0.2:
|
||||
resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz"
|
||||
integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
|
||||
|
||||
ufo@^1.3.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496"
|
||||
integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==
|
||||
|
||||
unimport@^3.6.0:
|
||||
version "3.6.1"
|
||||
resolved "https://registry.yarnpkg.com/unimport/-/unimport-3.6.1.tgz#b1448ba7c86ee5fca362ba4030691759205998f9"
|
||||
integrity sha512-zKzbp8AQ+l8QK3XrONtUBdgBbMI8TkGh8hBYF77ZkVqMLLIAHwGSwJRFolPQMBx/5pezeRKvmu2gzlqnxRZeqQ==
|
||||
dependencies:
|
||||
"@rollup/pluginutils" "^5.1.0"
|
||||
escape-string-regexp "^5.0.0"
|
||||
fast-glob "^3.3.2"
|
||||
local-pkg "^0.5.0"
|
||||
magic-string "^0.30.5"
|
||||
mlly "^1.4.2"
|
||||
pathe "^1.1.1"
|
||||
pkg-types "^1.0.3"
|
||||
scule "^1.1.1"
|
||||
strip-literal "^1.3.0"
|
||||
unplugin "^1.5.1"
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz"
|
||||
@ -2324,6 +2730,46 @@ union-value@^1.0.0:
|
||||
is-extendable "^0.1.1"
|
||||
set-value "^2.0.1"
|
||||
|
||||
unplugin-auto-import@^0.17.2:
|
||||
version "0.17.2"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-auto-import/-/unplugin-auto-import-0.17.2.tgz#b55c58dfb46f323905c5a0616a9d3825fb72679c"
|
||||
integrity sha512-Eu/xWI6SH4jTWXvzOfXQWAxRtiz/gMObm7wXtgMj7wBjHQKLgHTmHd4R4oha87KYGah1aKMqiqDeAxiPmfSoTg==
|
||||
dependencies:
|
||||
"@antfu/utils" "^0.7.6"
|
||||
"@rollup/pluginutils" "^5.1.0"
|
||||
fast-glob "^3.3.2"
|
||||
local-pkg "^0.5.0"
|
||||
magic-string "^0.30.5"
|
||||
minimatch "^9.0.3"
|
||||
unimport "^3.6.0"
|
||||
unplugin "^1.5.1"
|
||||
|
||||
unplugin-vue-components@^0.26.0:
|
||||
version "0.26.0"
|
||||
resolved "https://registry.yarnpkg.com/unplugin-vue-components/-/unplugin-vue-components-0.26.0.tgz#6d79caa770039a1eb3d7c09fdd28778ea20afef3"
|
||||
integrity sha512-s7IdPDlnOvPamjunVxw8kNgKNK8A5KM1YpK5j/p97jEKTjlPNrA0nZBiSfAKKlK1gWZuyWXlKL5dk3EDw874LQ==
|
||||
dependencies:
|
||||
"@antfu/utils" "^0.7.6"
|
||||
"@rollup/pluginutils" "^5.0.4"
|
||||
chokidar "^3.5.3"
|
||||
debug "^4.3.4"
|
||||
fast-glob "^3.3.1"
|
||||
local-pkg "^0.4.3"
|
||||
magic-string "^0.30.3"
|
||||
minimatch "^9.0.3"
|
||||
resolve "^1.22.4"
|
||||
unplugin "^1.4.0"
|
||||
|
||||
unplugin@^1.4.0, unplugin@^1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.5.1.tgz#806688376fa3dcca4d2fa2c5d27cf6cd0370fbef"
|
||||
integrity sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==
|
||||
dependencies:
|
||||
acorn "^8.11.2"
|
||||
chokidar "^3.5.3"
|
||||
webpack-sources "^3.2.3"
|
||||
webpack-virtual-modules "^0.6.0"
|
||||
|
||||
unset-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz"
|
||||
@ -2352,11 +2798,6 @@ util-deprecate@~1.0.1:
|
||||
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
v-click-outside-x@^3.7.1:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.npmjs.org/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz"
|
||||
integrity sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg==
|
||||
|
||||
v8flags@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz"
|
||||
@ -2364,24 +2805,15 @@ v8flags@^2.1.1:
|
||||
dependencies:
|
||||
user-home "^1.1.1"
|
||||
|
||||
view-ui-plus@^1.3.14:
|
||||
version "1.3.14"
|
||||
resolved "https://registry.npmjs.org/view-ui-plus/-/view-ui-plus-1.3.14.tgz"
|
||||
integrity sha512-ebB2YpyTG488y6al4syqkAtg47064TUxUuA0jehJ64iyyMqy3s/N2cipdnzx72v6yaTCzlcYmuZNx0xXL25NZA==
|
||||
dependencies:
|
||||
async-validator "^3.3.0"
|
||||
countup.js "^1.9.3"
|
||||
dayjs "^1.11.0"
|
||||
deepmerge "^2.2.1"
|
||||
element-resize-detector "^1.2.0"
|
||||
js-calendar "^1.2.3"
|
||||
lodash.chunk "^4.2.0"
|
||||
lodash.throttle "^4.1.1"
|
||||
numeral "^2.0.6"
|
||||
popper.js "^1.14.6"
|
||||
select "^1.1.2"
|
||||
tinycolor2 "^1.4.1"
|
||||
v-click-outside-x "^3.7.1"
|
||||
validator@^13.9.0:
|
||||
version "13.11.0"
|
||||
resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b"
|
||||
integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==
|
||||
|
||||
vite-plugin-package-version@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/vite-plugin-package-version/-/vite-plugin-package-version-1.1.0.tgz#7d8088955aa21e4ec93353c98992b3f58c4bf13c"
|
||||
integrity sha512-TPoFZXNanzcaKCIrC3e2L/TVRkkRLB6l4RPN/S7KbG7rWfyLcCEGsnXvxn6qR7fyZwXalnnSN/I9d6pSFjHpEA==
|
||||
|
||||
vite@^4.3.9:
|
||||
version "4.3.9"
|
||||
@ -2394,6 +2826,11 @@ vite@^4.3.9:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
vue-demi@>=0.14.5:
|
||||
version "0.14.6"
|
||||
resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.6.tgz#dc706582851dc1cdc17a0054f4fec2eb6df74c92"
|
||||
integrity sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==
|
||||
|
||||
vue-template-compiler@^2.7.14:
|
||||
version "2.7.14"
|
||||
resolved "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz"
|
||||
@ -2429,6 +2866,16 @@ vuedraggable@^4.1.0:
|
||||
dependencies:
|
||||
sortablejs "1.14.0"
|
||||
|
||||
webpack-sources@^3.2.3:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
|
||||
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
||||
|
||||
webpack-virtual-modules@^0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz#ac6fdb9c5adb8caecd82ec241c9631b7a3681b6f"
|
||||
integrity sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
|
||||
|
Loading…
Reference in New Issue
Block a user