diff --git a/README.md b/README.md index 2a3b5a8..f7d1689 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ - - ### 特性 -💎 简单易用 - 基于 Element-plus 进行面向常见业务的封装 -📦 场景丰富 - 提供一些列面向常见业务场景基础组件 -💡 TypeScript - 提供完整 TypeScript 类型定义 -🎨 更少的代码 - 多种配置减少代码的书写 +-💎 简单易用 - 基于 Element-plus 进行面向常见业务的封装 +-📦 场景丰富 - 提供一些列面向常见业务场景基础组件 +-💡 TypeScript - 提供完整 TypeScript 类型定义 +-🎨 更少的代码 - 多种配置减少代码的书写 +### 发布到githubio +- 提交代码后,登录到github 点Actions查看流水线是否构建成功 ```js // 需要在使用的项目的tsconfig.json文件中添加以下 compilerOptions:{ diff --git a/global.d.ts b/global.d.ts index 120c661..5cd63ba 100644 --- a/global.d.ts +++ b/global.d.ts @@ -13,6 +13,10 @@ import TTimerBtn from './lib/timer-btn/src/index.vue' import TModuleForm from './lib/module-form/src/index.vue' import TAdaptivePage from './lib/adaptive-page/src/index.vue' import TDatePicker from './lib/date-picker/src/index.vue' +import ProSearch from "./lib/proSearch/src/index.vue" +import ProTable from "./lib/proTable/index.vue" +import ProLayout from "./lib/proLayout/index.vue" +import ProLoading from "./lib/proLoading/index.vue" // GlobalComponents for Volar declare module '@vue/runtime-core' { export interface GlobalComponents { @@ -121,6 +125,10 @@ declare module '@vue/runtime-core' { TModuleForm: typeof TModuleForm TAdaptivePage: typeof TAdaptivePage TDatePicker: typeof TDatePicker + ProSearch: typeof ProSearch + ProTable: typeof ProTable + ProLoading: typeof ProLoading + ProLayout: typeof ProLayout } interface ComponentCustomProperties { @@ -131,8 +139,7 @@ declare module '@vue/runtime-core' { $alert: typeof import('element-plus')['ElMessageBox']['alert'] $confirm: typeof import('element-plus')['ElMessageBox']['confirm'] $prompt: typeof import('element-plus')['ElMessageBox']['prompt'] - $loading: typeof import('element-plus')['ElLoadingService'] + // $loading: typeof import('element-plus')['ElLoadingService'] } } - export {} diff --git a/package.json b/package.json index 077f3b7..bb58349 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { "name": "lighting-pro", - "version": "0.0.2", + "version": "0.0.3", "description": "Vue3 中基于Element-plus二次封装基础组件文档", "author": "lantingBoy", "license": "ISC", "private": false, - "main": "lib/lamp-pro.umd.cjs", - "module": "lib/lamp-pro.umd.cjs", + "main": "lib/lighting-pro.umd.cjs", + "module": "lib/lighting-pro.umd.cjs", "types": "lib/index.d.ts", "type": "module", "files": [ @@ -61,13 +61,14 @@ "unplugin-auto-import": "^0.11.2", "vite": "^3.1.0", "vite-plugin-compression": "^0.5.1", - "vite-plugin-dts": "^1.7.3", + "vite-plugin-dts": "3.6.3", "vite-plugin-vue-setup-extend": "^0.4.0", "vitepress": "1.0.0-alpha.75", "vue": "3.2.44", "vue-hooks-plus": "^1.8.5", "vue-router": "^4.1.5", "vue-tsc": "^0.40.4", + "vue3-print-nb": "^0.1.4", "vuedraggable": "^4.1.0" }, "repository": { @@ -87,5 +88,8 @@ "二次封装组件", "封装组件", "components" - ] + ], + "dependencies": { + "vue-loading-overlay": "^6.0.3" + } } diff --git a/packages/SearchForm/components/SearchFormItem.vue b/packages/SearchForm/components/SearchFormItem.vue new file mode 100644 index 0000000..1588583 --- /dev/null +++ b/packages/SearchForm/components/SearchFormItem.vue @@ -0,0 +1,92 @@ + + + diff --git a/packages/SearchForm/index.vue b/packages/SearchForm/index.vue new file mode 100644 index 0000000..129b29d --- /dev/null +++ b/packages/SearchForm/index.vue @@ -0,0 +1,94 @@ + + diff --git a/packages/assets/iconfont/iconfont.scss b/packages/assets/iconfont/iconfont.scss new file mode 100644 index 0000000..4fb5acd --- /dev/null +++ b/packages/assets/iconfont/iconfont.scss @@ -0,0 +1,82 @@ +@font-face { + font-family: "hdzkIcon"; /* Project id 4053247 */ + src: url('iconfont.ttf?t=1683597555982') format('truetype'); +} + +.hdzkIcon { + font-family: "hdzkIcon" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-arrow_down:before { + content: "\e634"; +} + +.icon-user:before { + content: "\e633"; +} + +.icon-org_tree:before { + content: "\e632"; +} + +.icon-org_extend:before { + content: "\e631"; +} + +.icon-anquan:before { + content: "\e630"; +} + +.icon-fenzu:before { + content: "\e68f"; +} + +.icon-daochu:before { + content: "\e690"; +} + +.icon-dongzuo:before { + content: "\e691"; +} + +.icon-kapianshitu:before { + content: "\e692"; +} + +.icon-riqi:before { + content: "\e693"; +} + +.icon-search:before { + content: "\e694"; +} + +.icon-shaixuan:before { + content: "\e695"; +} + +.icon-dayinji:before { + content: "\e696"; +} + +.icon-chongzhi:before { + content: "\e697"; +} + +.icon-shoucang:before { + content: "\e698"; +} + +.icon-liebiaoshitu:before { + content: "\e699"; +} + +.icon-weishoucang:before { + content: "\e69a"; +} + + diff --git a/packages/assets/iconfont/iconfont.ttf b/packages/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000..cd94eef Binary files /dev/null and b/packages/assets/iconfont/iconfont.ttf differ diff --git a/packages/assets/iconfont/iconfont.woff b/packages/assets/iconfont/iconfont.woff new file mode 100644 index 0000000..7fe3a0b Binary files /dev/null and b/packages/assets/iconfont/iconfont.woff differ diff --git a/packages/assets/iconfont/iconfont.woff2 b/packages/assets/iconfont/iconfont.woff2 new file mode 100644 index 0000000..cf50cb2 Binary files /dev/null and b/packages/assets/iconfont/iconfont.woff2 differ diff --git a/packages/assets/images/close.png b/packages/assets/images/close.png new file mode 100644 index 0000000..02e0c6d Binary files /dev/null and b/packages/assets/images/close.png differ diff --git a/packages/assets/images/notData.png b/packages/assets/images/notData.png new file mode 100644 index 0000000..c579a78 Binary files /dev/null and b/packages/assets/images/notData.png differ diff --git a/packages/assets/js/index.ts b/packages/assets/js/index.ts new file mode 100644 index 0000000..b750481 --- /dev/null +++ b/packages/assets/js/index.ts @@ -0,0 +1,89 @@ +import { FieldNamesProps } from "@/proTable/interface"; + +/** + * @description: 是否为数组 + */ +export function isArray(val: any): val is Array { + return val && Array.isArray(val); +} + +/** + * @description 格式化表格单元格默认值 (el-table-column) + * @param {Number} row 行 + * @param {Number} col 列 + * @param {*} callValue 当前单元格值 + * @returns {String} + * */ +export function formatTableColumn(row: number, col: number, callValue: any) { + // 如果当前值为数组,使用 / 拼接(根据需求自定义) + if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--"; + return callValue ?? "--"; +} + +/** + * @description 处理 ProTable 值为数组 || 无数据 + * @param {*} callValue 需要处理的值 + * @returns {String} + * */ +export function formatValue(callValue: any) { + // 如果当前值为数组,使用 / 拼接(根据需求自定义) + if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--"; + return callValue ?? "--"; +} + +/** + * @description 处理 prop 为多级嵌套的情况,返回的数据 (列如: prop: user.name) + * @param {Object} row 当前行数据 + * @param {String} prop 当前 prop + * @returns {*} + * */ +export function handleRowAccordingToProp(row: { [key: string]: any }, prop: string) { + if (!prop.includes(".")) return row[prop] ?? "--"; + prop.split(".").forEach(item => (row = row[item] ?? "--")); + return row; +} + +/** + * @description 处理 prop,当 prop 为多级嵌套时 ==> 返回最后一级 prop + * @param {String} prop 当前 prop + * @returns {String} + * */ +export function handleProp(prop: string) { + const propArr = prop.split("."); + if (propArr.length == 1) return prop; + return propArr[propArr.length - 1]; +} + +/** + * @description 根据枚举列表查询当需要的数据(如果指定了 label 和 value 的 key值,会自动识别格式化) + * @param {String} callValue 当前单元格值 + * @param {Array} enumData 字典列表 + * @param {Array} fieldNames label && value && children 的 key 值 + * @param {String} type 过滤类型(目前只有 tag) + * @returns {String} + * */ +export function filterEnum(callValue: any, enumData?: any, fieldNames?: FieldNamesProps, type?: "tag") { + const value = fieldNames?.value ?? "value"; + const label = fieldNames?.label ?? "label"; + const children = fieldNames?.children ?? "children"; + let filterData: { [key: string]: any } = {}; + // 判断 enumData 是否为数组 + if (Array.isArray(enumData)) filterData = findItemNested(enumData, callValue, value, children); + // 判断是否输出的结果为 tag 类型 + if (type == "tag") { + return filterData?.tagType ? filterData.tagType : ""; + } else { + return filterData ? filterData[label] : "--"; + } +} + +/** + * @description 递归查找 callValue 对应的 enum 值 + * */ +export function findItemNested(enumData: any, callValue: any, value: string, children: string) { + return enumData.reduce((accumulator: any, current: any) => { + if (accumulator) return accumulator; + if (current[value] === callValue) return current; + if (current[children]) return findItemNested(current[children], callValue, value, children); + }, null); +} diff --git a/packages/assets/logo.png b/packages/assets/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/packages/assets/logo.png differ diff --git a/packages/components.d.ts b/packages/components.d.ts index 614f8c5..8a9fa8d 100644 --- a/packages/components.d.ts +++ b/packages/components.d.ts @@ -13,7 +13,10 @@ import TTimerBtn from './timer-btn/src/index.vue' import TModuleForm from './module-form/src/index.vue' import TAdaptivePage from './adaptive-page/src/index.vue' import TDatePicker from './date-picker/src/index.vue' - +import ProSearch from './proSearch/src/index.vue' +import ProTable from './proTable/index.vue' +import proLoading from './proLoading/index.vue' +import proLayout from './proLayout/index.vue' declare module 'vue' { export interface GlobalComponents { TLayoutPage: typeof TLayoutPage @@ -29,6 +32,10 @@ declare module 'vue' { TTimerBtn: typeof TTimerBtn TModuleForm: typeof TModuleForm TAdaptivePage: typeof TAdaptivePage - TDatePicker: typeof TDatePicker + TDatePicker: typeof TDatePicker, + ProSearch: typeof ProSearch + ProTable: typeof ProTable + ProLoading: typeof proLoading + proLayout: typeof proLayout } } \ No newline at end of file diff --git a/packages/grid/components/GridItem.vue b/packages/grid/components/GridItem.vue new file mode 100644 index 0000000..c506cce --- /dev/null +++ b/packages/grid/components/GridItem.vue @@ -0,0 +1,68 @@ + + diff --git a/packages/grid/index.vue b/packages/grid/index.vue new file mode 100644 index 0000000..38200f4 --- /dev/null +++ b/packages/grid/index.vue @@ -0,0 +1,167 @@ + + + diff --git a/packages/grid/interface/index.ts b/packages/grid/interface/index.ts new file mode 100644 index 0000000..a0beff2 --- /dev/null +++ b/packages/grid/interface/index.ts @@ -0,0 +1,6 @@ +export type BreakPoint = "xs" | "sm" | "md" | "lg" | "xl"; + +export type Responsive = { + span?: number; + offset?: number; +}; diff --git a/packages/hooks/os/index.ts b/packages/hooks/os/index.ts index 5e9808e..8742793 100644 --- a/packages/hooks/os/index.ts +++ b/packages/hooks/os/index.ts @@ -1,13 +1,13 @@ -const ua = navigator.userAgent; -const isAndroid = ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1; -const isIos = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); -const isFs = !!navigator.userAgent.toLocaleLowerCase().includes('lark'); +const ua = typeof navigator !== 'undefined'? navigator.userAgent : null; +const isAndroid = ua?ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1:false; +const isIos = ua? !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/):false; +const isFs = ua?!!navigator.userAgent.toLocaleLowerCase().includes('lark'):false; const isPc = (): boolean => { const Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod']; let flag = true; for (let v = 0; v < Agents.length; v++) { - if (ua.indexOf(Agents[v]) > 0) { + if (ua&&ua.indexOf(Agents[v]) > 0) { flag = false; break; } diff --git a/packages/hooks/useSelection/index.ts b/packages/hooks/useSelection/index.ts new file mode 100644 index 0000000..5cdce57 --- /dev/null +++ b/packages/hooks/useSelection/index.ts @@ -0,0 +1,34 @@ +import { ref, computed } from "vue"; + +/** + * @description 表格多选数据操作 + * @param {String} rowKey 当表格可以多选时,所指定的 id + * */ +export const useSelection = (rowKey: string = "id") => { + const isSelected = ref(false); + const selectedList = ref<{ [key: string]: any }[]>([]); + + // 当前选中的所有 ids 数组 + const selectedListIds = computed((): string[] => { + let ids: string[] = []; + selectedList.value.forEach(item => ids.push(item[rowKey])); + return ids; + }); + + /** + * @description 多选操作 + * @param {Array} rowArr 当前选择的所有数据 + * @return void + */ + const selectionChange = (rowArr: { [key: string]: any }[]) => { + rowArr.length ? (isSelected.value = true) : (isSelected.value = false); + selectedList.value = rowArr; + }; + + return { + isSelected, + selectedList, + selectedListIds, + selectionChange + }; +}; diff --git a/packages/hooks/useTable/index.ts b/packages/hooks/useTable/index.ts new file mode 100644 index 0000000..6fb3412 --- /dev/null +++ b/packages/hooks/useTable/index.ts @@ -0,0 +1,178 @@ +import { reactive, computed, toRefs } from "vue"; + +/** + * @description table 页面操作方法封装 + * @param {Function} api 获取表格数据 api 方法 (必传) + * @param {Object} initParam 获取数据初始化参数 (非必传,默认为{}) + * @param {Boolean} isPageable 是否有分页 (非必传,默认为true) + * @param {Function} dataCallBack 对后台返回的数据进行处理的方法 (非必传) + * */ + +export namespace Table { + export interface Pageable { + current: number; + size: number; + total: number; + } + export interface StateProps { + tableData: any[]; + pageable: Pageable; + searchParam: { + [key: string]: any; + }; + searchInitParam: { + [key: string]: any; + }; + totalParam: { + [key: string]: any; + }; + icon?: { + [key: string]: any; + }; + } + } + +export const useTable = ( + api?: (params: any) => Promise, + initParam: object = {}, + isPageable: boolean = true, + dataCallBack?: (data: any) => any, + requestError?: (error: any) => void +) => { + const state = reactive({ + // 表格数据 + tableData: [], + // 分页数据 + pageable: { + // 当前页数 + current: 1, + // 每页显示条数 + size: 10, + // 总条数 + total: 0 + }, + // 查询参数(只包括查询) + searchParam: {}, + // 初始化默认的查询参数 + searchInitParam: {}, + // 总参数(包含分页和查询参数) + totalParam: {} + }); + + /** + * @description 分页查询参数(只包括分页和表格字段排序,其他排序方式可自行配置) + * */ + const pageParam = computed({ + get: () => { + return { + current: state.pageable.current, + size: state.pageable.size + }; + }, + set: (newVal: any) => { + console.log("我是分页更新之后的值", newVal); + } + }); + + /** + * @description 获取表格数据 + * @return void + * */ + const getTableList = async () => { + if (!api) return; + try { + // 先把初始化参数和分页参数放到总参数里面 + Object.assign(state.totalParam, initParam, isPageable ? pageParam.value : {}); + let { data } = await api({ ...state.searchInitParam, ...state.totalParam }); + dataCallBack && (data = dataCallBack(data)); + state.tableData = isPageable ? data.records : data; + // 解构后台返回的分页数据 (如果有分页更新分页信息) + if (isPageable) { + const { current, size, total } = data; + updatePageable({ current, size, total }); + } + } catch (error) { + requestError && requestError(error); + } + }; + + /** + * @description 更新查询参数 + * @return void + * */ + const updatedTotalParam = () => { + state.totalParam = {}; + // 处理查询参数,可以给查询参数加自定义前缀操作 + let nowSearchParam: Table.StateProps["searchParam"] = {}; + // 防止手动清空输入框携带参数(这里可以自定义查询参数前缀) + for (let key in state.searchParam) { + // 某些情况下参数为 false/0 也应该携带参数 + if (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) { + nowSearchParam[key] = state.searchParam[key]; + } + } + Object.assign(state.totalParam, nowSearchParam, isPageable ? pageParam.value : {}); + }; + + /** + * @description 更新分页信息 + * @param {Object} pageable 后台返回的分页数据 + * @return void + * */ + const updatePageable = (pageable: Table.Pageable) => { + Object.assign(state.pageable, pageable); + }; + + /** + * @description 表格数据查询 + * @return void + * */ + const search = () => { + state.pageable.current = 1; + updatedTotalParam(); + getTableList(); + }; + + /** + * @description 表格数据重置 + * @return void + * */ + const reset = () => { + state.pageable.current = 1; + // 重置搜索表单的时,如果有默认搜索参数,则重置默认的搜索参数 + state.searchParam = { ...state.searchInitParam }; + updatedTotalParam(); + getTableList(); + }; + + /** + * @description 每页条数改变 + * @param {Number} val 当前条数 + * @return void + * */ + const handleSizeChange = (val: number) => { + state.pageable.current = 1; + state.pageable.size = val; + getTableList(); + }; + + /** + * @description 当前页改变 + * @param {Number} val 当前页 + * @return void + * */ + const handleCurrentChange = (val: number) => { + state.pageable.current = val; + getTableList(); + }; + + return { + ...toRefs(state), + getTableList, + search, + reset, + handleSizeChange, + handleCurrentChange, + updatedTotalParam + }; +}; diff --git a/packages/index.ts b/packages/index.ts index 7201ccc..2e6f6ef 100644 --- a/packages/index.ts +++ b/packages/index.ts @@ -16,8 +16,15 @@ import TTimerBtn from './timer-btn' import TModuleForm from './module-form' import TAdaptivePage from './adaptive-page' import TDatePicker from './date-picker' + +import ProSearch from "./proSearch" +import ProLayout from './proLayout' +import ProTable from './proTable' +import ProLoading from './proLoading' import rs from './hooks/rs/index' import os from './hooks/os/index' + + // 存储组件列表 const components: { [propName: string]: Component @@ -36,6 +43,11 @@ const components: { TModuleForm, TAdaptivePage, TDatePicker, + ProSearch, + ProLayout, + ProLoading, + ProTable + } // 插件声明:声明所有插件 // 插件注册:在 Vue 项目的入口文件中,通过 ( app.use(插件) ) 进行注册 @@ -75,9 +87,23 @@ export { TModuleForm, TAdaptivePage, TDatePicker, + ProSearch, + ProLayout, + ProLoading, + ProTable, rs, - os + os, } + +export type { ColumnProps, ProTableRefProps, EnumProps } from './proTable/interface'; +export type { + DateList, + LayoutType, + TriggerType, + SearchCandidateProperties, + Config, + ColFilterConfig +} from './proSearch/src/types'; export default { // 导出的对象必须具有 install,才能被 Vue.use() 方法安装 install, diff --git a/packages/proLayout/index.ts b/packages/proLayout/index.ts new file mode 100644 index 0000000..c862be3 --- /dev/null +++ b/packages/proLayout/index.ts @@ -0,0 +1,5 @@ +import proLayoutC from './index.vue' +import { withInstall } from '../withInstall' + +const proLayout = withInstall(proLayoutC) +export default proLayout diff --git a/packages/proLayout/index.vue b/packages/proLayout/index.vue new file mode 100644 index 0000000..d9ec848 --- /dev/null +++ b/packages/proLayout/index.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/packages/proLoading/index.ts b/packages/proLoading/index.ts new file mode 100644 index 0000000..e932896 --- /dev/null +++ b/packages/proLoading/index.ts @@ -0,0 +1,5 @@ +import proLoadingC from './index.vue' +import { withInstall } from '../withInstall' + +const proLoading = withInstall(proLoadingC) +export default proLoading diff --git a/packages/proLoading/index.vue b/packages/proLoading/index.vue new file mode 100644 index 0000000..1077e4b --- /dev/null +++ b/packages/proLoading/index.vue @@ -0,0 +1,29 @@ + + + + diff --git a/packages/proSearch/index.ts b/packages/proSearch/index.ts new file mode 100644 index 0000000..4c3e175 --- /dev/null +++ b/packages/proSearch/index.ts @@ -0,0 +1,5 @@ +import Index from './src/index.vue' +import { withInstall } from '../withInstall' + +const ProSearch = withInstall(Index) +export default ProSearch diff --git a/packages/proSearch/src/ActionCandidate/index.vue b/packages/proSearch/src/ActionCandidate/index.vue new file mode 100644 index 0000000..1b53227 --- /dev/null +++ b/packages/proSearch/src/ActionCandidate/index.vue @@ -0,0 +1,257 @@ + + + + + +../../types../types \ No newline at end of file diff --git a/packages/proSearch/src/Colfilter/index.vue b/packages/proSearch/src/Colfilter/index.vue new file mode 100644 index 0000000..f431b60 --- /dev/null +++ b/packages/proSearch/src/Colfilter/index.vue @@ -0,0 +1,121 @@ + + + + + \ No newline at end of file diff --git a/packages/proSearch/src/Crumbs/index.vue b/packages/proSearch/src/Crumbs/index.vue new file mode 100644 index 0000000..4091170 --- /dev/null +++ b/packages/proSearch/src/Crumbs/index.vue @@ -0,0 +1,107 @@ + + + + diff --git a/packages/proSearch/src/DatePicker/index.vue b/packages/proSearch/src/DatePicker/index.vue new file mode 100644 index 0000000..42585da --- /dev/null +++ b/packages/proSearch/src/DatePicker/index.vue @@ -0,0 +1,171 @@ + + + + + +../../types../types \ No newline at end of file diff --git a/packages/proSearch/src/InputSearch/index.vue b/packages/proSearch/src/InputSearch/index.vue new file mode 100644 index 0000000..48fcca1 --- /dev/null +++ b/packages/proSearch/src/InputSearch/index.vue @@ -0,0 +1,251 @@ + + + + + +../../types../types \ No newline at end of file diff --git a/packages/proSearch/src/TableActions/index.vue b/packages/proSearch/src/TableActions/index.vue new file mode 100644 index 0000000..44b6d61 --- /dev/null +++ b/packages/proSearch/src/TableActions/index.vue @@ -0,0 +1,124 @@ + + + + + +../../types../types \ No newline at end of file diff --git a/packages/proSearch/src/index.scss b/packages/proSearch/src/index.scss new file mode 100644 index 0000000..4c034fa --- /dev/null +++ b/packages/proSearch/src/index.scss @@ -0,0 +1,376 @@ +.s_page_search { + position: relative; + display: flex; + flex-direction: column; + justify-content: space-between; + padding: 0 20px 10px; + background: #ffffff; + border-bottom: 1px solid #c7c7c7; + .hoverBack { + :deep(.el-button.is-link) { + color: #008794 !important; + } + } + .s_page_search_con { + position: relative; + display: flex; + flex-direction: row; + justify-content: space-between; + height: 33px; + margin-top: 8px; + .crumbs { + .hoverColor { + &:hover { + color: #008794; + } + } + + display: flex; + .el-button.is-link { + margin: 0; + font-size: 18px; + } + } + .disabled { + font-size: 16px; + color: #8f8f8f; + .el-button.is-link { + color: #008794; + + // font-size: 20px; + } + } + .search_input { + display: flex; + align-items: center; + width: 47%; + .el-tooltip__trigger { + flex: 1; + } + } + } + .viewSwitcher { + height: 100%; + .hdzkIcon { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + font-size: 14px; + } + } + .hoverScale { + cursor: pointer; + transition: 0.5s; + &:hover { + background-color: #ebebeb; + } + } + .content { + position: absolute; + + // top: v-bind("subMenu.top"); + // left: v-bind("subMenu.left"); + z-index: 9; + min-width: 160px; + padding: 10px; + font-size: 14px; + cursor: pointer; + background: #ffffff; + border: 1px solid #dee2e6; + box-shadow: 0 1px 4px 0 rgb(219 219 219 / 55%); + .contentList:hover { + background: #eaecef; + } + .time-btn { + display: flex; + justify-content: flex-end; + margin-top: 5px; + } + } + .notShowShadow { + :deep(.el-input__wrapper) { + border-bottom: 1px solid #cccccc; + border-radius: 0; + box-shadow: none !important; + } + } + .searchItem { + border-bottom: 1px solid #cccccc; + } + .showBorder { + height: 32px; + padding-left: 5px; + border-bottom: 1px solid #cccccc; + } + .selectText { + width: 100%; + font-size: 14px; + line-height: 20px; + color: #666666; + } + .showTopBorder { + border-top: 1px solid #cccccc; + :deep(.el-space__item) { + padding-top: 5px; + } + } + .backEBEBEB { + background: #ebebeb; + } + .el-button { + border-radius: 0; + } + .action { + display: flex; + align-items: center; + margin-top: 10px; + .btnGroup { + display: flex; + align-items: center; + width: 15%; + height: 32px; + line-height: 32px; + .el-button { + height: 28px; + padding: 8px; + } + .el-button.is-text { + width: auto !important; + } + } + .table_actions { + box-sizing: border-box; + display: flex; + justify-content: flex-end; + width: 38%; + padding-right: 100px; + .config-header { + :deep(.el-space__item) { + width: 100%; + } + + display: flex; + align-items: center; + justify-content: space-between; + height: 32px; + background: #ffffff; + .tools-bar { + display: flex; + flex: 1; + align-items: center; + justify-content: flex-end; + + // padding-right: 30px; + color: #666666 !important; + :deep(.el-button.is-link) { + color: #666666; + &:hover { + color: #909399; + background: #ffffff !important; + .hdzkIcon { + color: #909399; + } + } + } + .dropdown-link { + color: #666666 !important; + cursor: pointer; + &:hover { + color: #909399 !important; + .hdzkIcon { + color: #909399; + } + } + } + } + } + :deep(.el-space__item) { + width: 100%; + margin-top: 4px !important; + margin-bottom: 4px !important; + } + :deep(.el-dropdown) { + display: flex; + align-items: center; + } + } + } + .el-input__wrapper { + border-bottom: 1px solid #cccccc; + border-left: none; + border-radius: 0; + box-shadow: none !important; + } + .searchOperation { + position: relative; + display: flex; + flex: 1; + height: 100%; + font-size: 14px; + .s_item { + position: relative; + box-sizing: border-box; + border: 1px solid transparent; + transition: 0.1s ease-in-out; + &:active { + box-sizing: border-box; + background-color: #ebebeb; + } + &:hover { + border: 1px solid #e6e5e5; + } + } + .groups { + cursor: pointer; + span { + font-size: 14px !important; + color: #666666; + } + .hdzkIcon { + margin-right: 3px; + font-size: 14px !important; + } + } + .collect { + cursor: pointer; + span { + font-size: 14px !important; + color: #666666; + } + .hdzkIcon { + margin-right: 3px; + font-size: 14px !important; + } + } + .filter { + .hdzkIcon { + margin-right: 3px; + font-size: 14px !important; + color: #666666; + } + span { + font-size: 14px !important; + color: #666666; + } + + position: relative; + margin-right: 10px; + .item { + cursor: pointer; + } + .allItem { + position: absolute; + z-index: 99; + min-width: 160px; + padding: 6px 0; + margin-top: 10px; + background: #ffffff; + border: 1px solid #dee2e6; + box-shadow: 0 1px 4px 0 rgb(219 219 219 / 55%); + .itemList { + &:hover { + background: #e9ecef; + } + + position: relative; + padding: 0 16px; + padding-top: 2px; + cursor: pointer; + } + .menu { + justify-content: space-between; + padding: 2px 0; + font-size: 14px; + .selectIcon { + margin-right: 4px; + color: #14a1b3 !important; + } + } + } + } + } + .hdzkIcon { + font-weight: normal; + color: #666666; + } + .cardView { + font-weight: normal; + } + .isSelect { + color: #1e8fa0; + } + .timeDate { + position: relative; + } + :deep(.date.el-date-editor) { + position: absolute; + top: 0; + left: 0; + opacity: 0; + } + .search-results { + display: flex; + flex-wrap: nowrap; + padding: 5px; + overflow: hidden; + font-weight: 500; + color: #1e8fa0; + cursor: pointer; + &:hover { + background-color: #eaecef; + border-radius: 5px; + } + } + .searchList { + display: flex; + cursor: pointer; + .searchItem { + display: flex; + align-items: center; + height: 20px; + overflow: hidden; + font-size: 14px; + font-weight: 400; + line-height: 20px; + color: #8f8f8f; + text-overflow: clip; + white-space: nowrap; + background: #f8f9fa; + border: 1px solid #8f8f8f; + .itemText { + padding: 0 3px; + } + .typeIcon { + padding: 0 2px; + color: #ffffff; + background: #1e8fa0; + .hdzkIcon { + font-size: 14px !important; + color: #ffffff; + } + } + } + } + .el-divider { + margin: 0; + } + .el-space { + width: 100%; + } + :deep(.dateTime) { + width: 170px; + margin-top: 5px; + } + .isSelected { + font-weight: 600; + color: #1e8fa0; + } + .serachVal { + margin-left: 5px; + } + :deep(.el-dropdown-menu__item:not(.is-disabled):focus) { + background-color: #c7c7c7 !important; + } +} diff --git a/packages/proSearch/src/index.vue b/packages/proSearch/src/index.vue new file mode 100644 index 0000000..78f38a2 --- /dev/null +++ b/packages/proSearch/src/index.vue @@ -0,0 +1,536 @@ + + + + + +../types./types \ No newline at end of file diff --git a/packages/proSearch/src/types.ts b/packages/proSearch/src/types.ts new file mode 100644 index 0000000..6ba1fc6 --- /dev/null +++ b/packages/proSearch/src/types.ts @@ -0,0 +1,100 @@ +export type DataStructure = 'tree' | 'flat' | ''; +/** + * 操作显示 + */ + +export type OptionsIsShow = { + add?: boolean; // 创建按钮 + filter?: boolean; // 筛选 + grouper?: boolean; // 分组 + gather?: boolean; // 收藏 + table?: boolean; // 列表展示 + card?: boolean; // 卡片展示 + progress?: boolean; // 流程展示 + input?: boolean; // 输入框展示 + gant?: boolean; // 甘特图 + print?: boolean; + all?: boolean; + actions?: boolean; + exporter?: boolean; + dater?: boolean; +}; + +/** + * @description 传参说明 + * @searchList 查询条件 + * @tableLength 已选择的列表个数 + * @isShow 展示类型 + * @mode 数据结构类型 + * @showSwitcher 是否显示切换 + */ +export interface SearchProps { + searchList?: any; + tableLength?: number; + isShow?: OptionsIsShow; + showActions?: OptionsIsShow; + mode?: DataStructure; + showSwitcher?: OptionsIsShow; + showOperations?: boolean; + currentIndex?: number; + searchCandidates?: SearchCandidateProperties[]; +} + +// 搜索候选项 +export interface SearchCandidateProperties { + label: string; + query?: string | string[]; + selected?: boolean; + type?: string; + genre?: string; + value?: string; + title?: string; + data?: string; + icon?: string; + children?: SearchCandidateProperties[]; +} + +export interface SearchCandidateDateList { + type: 'dateList'; + genre: string | [string, string]; + startTime: string; + endTime?: string; +} + +export type SearchCandidateType = SearchCandidateProperties | SearchCandidateDateList; + +export type Config = { + filter?: boolean; // 筛选 + grouper?: boolean; // 分组 + gather?: boolean; // 收藏 + resetter?: boolean; + exporterLoading?: boolean; + picker?: { + show?: boolean; + dateFormat?: string; + dateType?: DateType; + title?: string; + period?: number; + }; + exporter?: boolean; +}; +export type DateList = { + // 标题 + title?: string; + // 图标 + icon?: string; + // 数据 填空字符串即可 + data: string | [string, string]; + // 查询参数 即请求载荷参数 + genre: string | [string, string]; + dateFormat?: string; + dateType?: DateType; +}; +export type LayoutType = 'card' | 'gant' | 'table'; +export type TriggerType = 'filter' | 'grouper' | 'gather' | 'exporter' | 'trigger' | 'reset'; +export type DateType = 'date' | 'datetime' | 'datetimerange' | 'daterange' | 'week' | 'month' | 'monthrange' | 'year' | 'dates'; +export interface ColFilterConfig { + show?: boolean; + tableFilterColChange?: (val?: any) => void; + columns?: any[]; +} diff --git a/packages/proTable/components/ColSetting.vue b/packages/proTable/components/ColSetting.vue new file mode 100644 index 0000000..4d3d5ab --- /dev/null +++ b/packages/proTable/components/ColSetting.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/packages/proTable/components/Pagination.vue b/packages/proTable/components/Pagination.vue new file mode 100644 index 0000000..f127938 --- /dev/null +++ b/packages/proTable/components/Pagination.vue @@ -0,0 +1,74 @@ + + + + + \ No newline at end of file diff --git a/packages/proTable/components/TableColumn.vue b/packages/proTable/components/TableColumn.vue new file mode 100644 index 0000000..95250e6 --- /dev/null +++ b/packages/proTable/components/TableColumn.vue @@ -0,0 +1,56 @@ + + + diff --git a/packages/proTable/helper/table.ts b/packages/proTable/helper/table.ts new file mode 100644 index 0000000..b750481 --- /dev/null +++ b/packages/proTable/helper/table.ts @@ -0,0 +1,89 @@ +import { FieldNamesProps } from "@/proTable/interface"; + +/** + * @description: 是否为数组 + */ +export function isArray(val: any): val is Array { + return val && Array.isArray(val); +} + +/** + * @description 格式化表格单元格默认值 (el-table-column) + * @param {Number} row 行 + * @param {Number} col 列 + * @param {*} callValue 当前单元格值 + * @returns {String} + * */ +export function formatTableColumn(row: number, col: number, callValue: any) { + // 如果当前值为数组,使用 / 拼接(根据需求自定义) + if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--"; + return callValue ?? "--"; +} + +/** + * @description 处理 ProTable 值为数组 || 无数据 + * @param {*} callValue 需要处理的值 + * @returns {String} + * */ +export function formatValue(callValue: any) { + // 如果当前值为数组,使用 / 拼接(根据需求自定义) + if (isArray(callValue)) return callValue.length ? callValue.join(" / ") : "--"; + return callValue ?? "--"; +} + +/** + * @description 处理 prop 为多级嵌套的情况,返回的数据 (列如: prop: user.name) + * @param {Object} row 当前行数据 + * @param {String} prop 当前 prop + * @returns {*} + * */ +export function handleRowAccordingToProp(row: { [key: string]: any }, prop: string) { + if (!prop.includes(".")) return row[prop] ?? "--"; + prop.split(".").forEach(item => (row = row[item] ?? "--")); + return row; +} + +/** + * @description 处理 prop,当 prop 为多级嵌套时 ==> 返回最后一级 prop + * @param {String} prop 当前 prop + * @returns {String} + * */ +export function handleProp(prop: string) { + const propArr = prop.split("."); + if (propArr.length == 1) return prop; + return propArr[propArr.length - 1]; +} + +/** + * @description 根据枚举列表查询当需要的数据(如果指定了 label 和 value 的 key值,会自动识别格式化) + * @param {String} callValue 当前单元格值 + * @param {Array} enumData 字典列表 + * @param {Array} fieldNames label && value && children 的 key 值 + * @param {String} type 过滤类型(目前只有 tag) + * @returns {String} + * */ +export function filterEnum(callValue: any, enumData?: any, fieldNames?: FieldNamesProps, type?: "tag") { + const value = fieldNames?.value ?? "value"; + const label = fieldNames?.label ?? "label"; + const children = fieldNames?.children ?? "children"; + let filterData: { [key: string]: any } = {}; + // 判断 enumData 是否为数组 + if (Array.isArray(enumData)) filterData = findItemNested(enumData, callValue, value, children); + // 判断是否输出的结果为 tag 类型 + if (type == "tag") { + return filterData?.tagType ? filterData.tagType : ""; + } else { + return filterData ? filterData[label] : "--"; + } +} + +/** + * @description 递归查找 callValue 对应的 enum 值 + * */ +export function findItemNested(enumData: any, callValue: any, value: string, children: string) { + return enumData.reduce((accumulator: any, current: any) => { + if (accumulator) return accumulator; + if (current[value] === callValue) return current; + if (current[children]) return findItemNested(current[children], callValue, value, children); + }, null); +} diff --git a/packages/proTable/helper/useSelection.ts b/packages/proTable/helper/useSelection.ts new file mode 100644 index 0000000..5cdce57 --- /dev/null +++ b/packages/proTable/helper/useSelection.ts @@ -0,0 +1,34 @@ +import { ref, computed } from "vue"; + +/** + * @description 表格多选数据操作 + * @param {String} rowKey 当表格可以多选时,所指定的 id + * */ +export const useSelection = (rowKey: string = "id") => { + const isSelected = ref(false); + const selectedList = ref<{ [key: string]: any }[]>([]); + + // 当前选中的所有 ids 数组 + const selectedListIds = computed((): string[] => { + let ids: string[] = []; + selectedList.value.forEach(item => ids.push(item[rowKey])); + return ids; + }); + + /** + * @description 多选操作 + * @param {Array} rowArr 当前选择的所有数据 + * @return void + */ + const selectionChange = (rowArr: { [key: string]: any }[]) => { + rowArr.length ? (isSelected.value = true) : (isSelected.value = false); + selectedList.value = rowArr; + }; + + return { + isSelected, + selectedList, + selectedListIds, + selectionChange + }; +}; diff --git a/packages/proTable/helper/useTable.ts b/packages/proTable/helper/useTable.ts new file mode 100644 index 0000000..6fb3412 --- /dev/null +++ b/packages/proTable/helper/useTable.ts @@ -0,0 +1,178 @@ +import { reactive, computed, toRefs } from "vue"; + +/** + * @description table 页面操作方法封装 + * @param {Function} api 获取表格数据 api 方法 (必传) + * @param {Object} initParam 获取数据初始化参数 (非必传,默认为{}) + * @param {Boolean} isPageable 是否有分页 (非必传,默认为true) + * @param {Function} dataCallBack 对后台返回的数据进行处理的方法 (非必传) + * */ + +export namespace Table { + export interface Pageable { + current: number; + size: number; + total: number; + } + export interface StateProps { + tableData: any[]; + pageable: Pageable; + searchParam: { + [key: string]: any; + }; + searchInitParam: { + [key: string]: any; + }; + totalParam: { + [key: string]: any; + }; + icon?: { + [key: string]: any; + }; + } + } + +export const useTable = ( + api?: (params: any) => Promise, + initParam: object = {}, + isPageable: boolean = true, + dataCallBack?: (data: any) => any, + requestError?: (error: any) => void +) => { + const state = reactive({ + // 表格数据 + tableData: [], + // 分页数据 + pageable: { + // 当前页数 + current: 1, + // 每页显示条数 + size: 10, + // 总条数 + total: 0 + }, + // 查询参数(只包括查询) + searchParam: {}, + // 初始化默认的查询参数 + searchInitParam: {}, + // 总参数(包含分页和查询参数) + totalParam: {} + }); + + /** + * @description 分页查询参数(只包括分页和表格字段排序,其他排序方式可自行配置) + * */ + const pageParam = computed({ + get: () => { + return { + current: state.pageable.current, + size: state.pageable.size + }; + }, + set: (newVal: any) => { + console.log("我是分页更新之后的值", newVal); + } + }); + + /** + * @description 获取表格数据 + * @return void + * */ + const getTableList = async () => { + if (!api) return; + try { + // 先把初始化参数和分页参数放到总参数里面 + Object.assign(state.totalParam, initParam, isPageable ? pageParam.value : {}); + let { data } = await api({ ...state.searchInitParam, ...state.totalParam }); + dataCallBack && (data = dataCallBack(data)); + state.tableData = isPageable ? data.records : data; + // 解构后台返回的分页数据 (如果有分页更新分页信息) + if (isPageable) { + const { current, size, total } = data; + updatePageable({ current, size, total }); + } + } catch (error) { + requestError && requestError(error); + } + }; + + /** + * @description 更新查询参数 + * @return void + * */ + const updatedTotalParam = () => { + state.totalParam = {}; + // 处理查询参数,可以给查询参数加自定义前缀操作 + let nowSearchParam: Table.StateProps["searchParam"] = {}; + // 防止手动清空输入框携带参数(这里可以自定义查询参数前缀) + for (let key in state.searchParam) { + // 某些情况下参数为 false/0 也应该携带参数 + if (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) { + nowSearchParam[key] = state.searchParam[key]; + } + } + Object.assign(state.totalParam, nowSearchParam, isPageable ? pageParam.value : {}); + }; + + /** + * @description 更新分页信息 + * @param {Object} pageable 后台返回的分页数据 + * @return void + * */ + const updatePageable = (pageable: Table.Pageable) => { + Object.assign(state.pageable, pageable); + }; + + /** + * @description 表格数据查询 + * @return void + * */ + const search = () => { + state.pageable.current = 1; + updatedTotalParam(); + getTableList(); + }; + + /** + * @description 表格数据重置 + * @return void + * */ + const reset = () => { + state.pageable.current = 1; + // 重置搜索表单的时,如果有默认搜索参数,则重置默认的搜索参数 + state.searchParam = { ...state.searchInitParam }; + updatedTotalParam(); + getTableList(); + }; + + /** + * @description 每页条数改变 + * @param {Number} val 当前条数 + * @return void + * */ + const handleSizeChange = (val: number) => { + state.pageable.current = 1; + state.pageable.size = val; + getTableList(); + }; + + /** + * @description 当前页改变 + * @param {Number} val 当前页 + * @return void + * */ + const handleCurrentChange = (val: number) => { + state.pageable.current = val; + getTableList(); + }; + + return { + ...toRefs(state), + getTableList, + search, + reset, + handleSizeChange, + handleCurrentChange, + updatedTotalParam + }; +}; diff --git a/packages/proTable/index.ts b/packages/proTable/index.ts new file mode 100644 index 0000000..e3743f1 --- /dev/null +++ b/packages/proTable/index.ts @@ -0,0 +1,5 @@ +import Index from './index.vue' +import { withInstall } from '../withInstall' + +const ProTable = withInstall(Index) +export default ProTable diff --git a/packages/proTable/index.vue b/packages/proTable/index.vue new file mode 100644 index 0000000..cd77f1b --- /dev/null +++ b/packages/proTable/index.vue @@ -0,0 +1,477 @@ + + + + + diff --git a/packages/proTable/interface/index.ts b/packages/proTable/interface/index.ts new file mode 100644 index 0000000..f1bde87 --- /dev/null +++ b/packages/proTable/interface/index.ts @@ -0,0 +1,94 @@ +import { VNode, ComponentPublicInstance, Ref } from "vue"; +import { BreakPoint, Responsive } from "@/grid/interface"; +import { TableColumnCtx } from "element-plus/es/components/table/src/table-column/defaults"; +import { ProTableProps } from "@/proTable/index.vue"; +import ProTable from "@/proTable/index.vue"; +import { ElTable } from 'element-plus'; + +export interface EnumProps { + label?: string; // 选项框显示的文字 + value?: string | number | boolean | any[]; // 选项框值 + disabled?: boolean; // 是否禁用此选项 + tagType?: string; // 当 tag 为 true 时,此选择会指定 tag 显示类型 + children?: EnumProps[]; // 为树形选择时,可以通过 children 属性指定子选项 + [key: string]: any; +} +export interface ProTableRefProps { + getTableList?: (params?: { + manualParam?: Record; + manualApi?: (...params: [any, any] | (Record | undefined)[]) => Promise; + }) => void; + element?: InstanceType; + tableData?: any[]; +} + +export type TypeProps = "index" | "selection" | "radio" | "expand" | "sort"; + +export type SearchType = + | "input" + | "input-number" + | "select" + | "select-v2" + | "tree-select" + | "cascader" + | "date-picker" + | "time-picker" + | "time-select" + | "switch" + | "slider"; + +export type SearchRenderScope = { + searchParam: { [key: string]: any }; + placeholder: string; + clearable: boolean; + options: EnumProps[]; + data: EnumProps[]; +}; + +export type SearchProps = { + el?: SearchType; // 当前项搜索框的类型 + label?: string; // 当前项搜索框的 label + props?: any; // 搜索项参数,根据 element plus 官方文档来传递,该属性所有值会透传到组件 + key?: string; // 当搜索项 key 不为 prop 属性时,可通过 key 指定 + tooltip?: string; // 搜索提示 + order?: number; // 搜索项排序(从大到小) + span?: number; // 搜索项所占用的列数,默认为 1 列 + offset?: number; // 搜索字段左侧偏移列数 + defaultValue?: string | number | boolean | any[] | Ref; // 搜索项默认值 + render?: (scope: SearchRenderScope) => VNode; // 自定义搜索内容渲染(tsx语法) +} & Partial>; + +export type FieldNamesProps = { + label: string; + value: string; + children?: string; +}; + +export type RenderScope = { + row: T; + $index: number; + column: TableColumnCtx; + [key: string]: any; +}; + +export type HeaderRenderScope = { + $index: number; + column: TableColumnCtx; + [key: string]: any; +}; + +export interface ColumnProps + extends Partial, "type" | "children" | "renderCell" | "renderHeader">> { + type?: TypeProps; // 列类型 + tag?: boolean | Ref; // 是否是标签展示 + isShow?: boolean | Ref; // 是否显示在表格当中 + search?: SearchProps | undefined; // 搜索项配置 + enum?: EnumProps[] | Ref | ((params?: any) => Promise); // 枚举字典 + isFilterEnum?: boolean | Ref; // 当前单元格值是否根据 enum 格式化(示例:enum 只作为搜索项数据) + fieldNames?: FieldNamesProps; // 指定 label && value && children 的 key 值 + headerRender?: (scope: HeaderRenderScope) => VNode; // 自定义表头内容渲染(tsx语法) + render?: (scope: RenderScope) => VNode | string; // 自定义单元格内容渲染(tsx语法) + _children?: ColumnProps[]; // 多级表头 +} + +export type ProTableInstance = Omit, keyof ComponentPublicInstance | keyof ProTableProps>; diff --git a/typings/plugins.ts b/typings/plugins.ts new file mode 100644 index 0000000..8c883d6 --- /dev/null +++ b/typings/plugins.ts @@ -0,0 +1 @@ +declare module "vue3-print-nb"; \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 252698d..560c59f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -57,6 +57,7 @@ export default defineConfig({ alias: { // '@': resolve(__dirname, 'examples'), '@': resolve(__dirname, 'packages'), + "@packages": resolve(__dirname, "./packages"), }, // 类型: string[] 导入时想要省略的扩展名列表。 extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue', '.mjs'], @@ -66,7 +67,7 @@ export default defineConfig({ // cssCodeSplit: true, // 强制内联CSS rollupOptions: { // 请确保外部化那些你的库中不需要的依赖 - external: ['vue'], + external: ['vue',"element-plus","vue-hooks-plus"], output: { // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量 globals: { @@ -77,9 +78,9 @@ export default defineConfig({ lib: { // entry: resolve(__dirname, 'packages/index.ts'), entry: './packages/index.ts', - name: 'lamp-pro', + name: 'lighting-pro', // formats: ['es', 'cjs'], - fileName: 'lamp-pro', + fileName: 'lighting-pro', }, } }) diff --git a/yarn.lock b/yarn.lock index 4cf4234..82063e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -701,17 +701,17 @@ "@microsoft/tsdoc-config" "~0.16.1" "@rushstack/node-core-library" "3.61.0" -"@microsoft/api-extractor@^7.33.5": - version "7.38.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.38.0.tgz#e72546d6766b3866578a462b040f71b17779e1c5" - integrity sha512-e1LhZYnfw+JEebuY2bzhw0imDCl1nwjSThTrQqBXl40hrVo6xm3j/1EpUr89QyzgjqmAwek2ZkIVZbrhaR+cqg== +"@microsoft/api-extractor@^7.38.0": + version "7.38.2" + resolved "https://registry.npmmirror.com/@microsoft/api-extractor/-/api-extractor-7.38.2.tgz#fbc329fbec2b27a160507d08d02b78018fd142ac" + integrity sha512-JOARuhTwOcOMIU0O2czscoJy3ddVzIRhSA9/7T1ALuZSNphgWsPk+Bv4E7AnBDmTV4pP4lBNLtCxEHjjpWaytQ== dependencies: "@microsoft/api-extractor-model" "7.28.2" "@microsoft/tsdoc" "0.14.2" "@microsoft/tsdoc-config" "~0.16.1" "@rushstack/node-core-library" "3.61.0" "@rushstack/rig-package" "0.5.1" - "@rushstack/ts-command-line" "4.16.1" + "@rushstack/ts-command-line" "4.17.1" colors "~1.2.1" lodash "~4.17.15" resolve "~1.22.1" @@ -765,7 +765,7 @@ resolved "https://registry.yarnpkg.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671" integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ== -"@rollup/pluginutils@^5.0.2": +"@rollup/pluginutils@^5.0.2", "@rollup/pluginutils@^5.0.5": version "5.0.5" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== @@ -774,9 +774,9 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rushstack/node-core-library@3.61.0", "@rushstack/node-core-library@^3.53.2": +"@rushstack/node-core-library@3.61.0": version "3.61.0" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.61.0.tgz#7441a0d2ae5268b758a7a49588a78cd55af57e66" + resolved "https://registry.npmmirror.com/@rushstack/node-core-library/-/node-core-library-3.61.0.tgz#7441a0d2ae5268b758a7a49588a78cd55af57e66" integrity sha512-tdOjdErme+/YOu4gPed3sFS72GhtWCgNV9oDsHDnoLY5oDfwjKUc9Z+JOZZ37uAxcm/OCahDHfuu2ugqrfWAVQ== dependencies: colors "~1.2.1" @@ -795,26 +795,16 @@ resolve "~1.22.1" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.16.1": - version "4.16.1" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.16.1.tgz#3537bbc323f77c8646646465c579b992d39feb16" - integrity sha512-+OCsD553GYVLEmz12yiFjMOzuPeCiZ3f8wTiFHL30ZVXexTyPmgjwXEhg2K2P0a2lVf+8YBy7WtPoflB2Fp8/A== +"@rushstack/ts-command-line@4.17.1": + version "4.17.1" + resolved "https://registry.npmmirror.com/@rushstack/ts-command-line/-/ts-command-line-4.17.1.tgz#c78db928ce5b93f2e98fd9e14c24f3f3876e57f1" + integrity sha512-2jweO1O57BYP5qdBGl6apJLB+aRIn5ccIRTPDyULh0KMwVzFqWtw6IZWt1qtUoZD/pD2RNkIOosH6Cq45rIYeg== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" colors "~1.2.1" string-argv "~0.3.1" -"@ts-morph/common@~0.18.0": - version "0.18.1" - resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.18.1.tgz#ca40c3a62c3f9e17142e0af42633ad63efbae0ec" - integrity sha512-RVE+zSRICWRsfrkAw5qCAK+4ZH9kwEFv5h0+/YeHTLieWP7F4wWq4JsKFuNWG+fYh/KF+8rAtgdj5zb2mm+DVA== - dependencies: - fast-glob "^3.2.12" - minimatch "^5.1.0" - mkdirp "^1.0.4" - path-browserify "^1.0.1" - "@types/argparse@1.0.38": version "1.0.38" resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" @@ -1181,6 +1171,13 @@ dependencies: "@volar/source-map" "0.40.13" +"@volar/language-core@1.10.10", "@volar/language-core@~1.10.5": + version "1.10.10" + resolved "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.10.10.tgz#9c240a36dd4007b9c4f00739f6cecb81da54a49e" + integrity sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw== + dependencies: + "@volar/source-map" "1.10.10" + "@volar/source-map@0.40.13": version "0.40.13" resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.40.13.tgz#9acbc47614bbd8fa710d233d10fff1b18cb78a80" @@ -1188,6 +1185,13 @@ dependencies: "@vue/reactivity" "3.2.38" +"@volar/source-map@1.10.10", "@volar/source-map@~1.10.5": + version "1.10.10" + resolved "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.10.10.tgz#ec807fe60b8afe29e19bf6d1c90d2e76502df541" + integrity sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg== + dependencies: + muggle-string "^0.3.1" + "@volar/typescript-faster@0.40.13": version "0.40.13" resolved "https://registry.yarnpkg.com/@volar/typescript-faster/-/typescript-faster-0.40.13.tgz#5d9600333cc250ad53e8604ff6a2a32e4acfbc86" @@ -1195,6 +1199,14 @@ dependencies: semver "^7.3.7" +"@volar/typescript@~1.10.5": + version "1.10.10" + resolved "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.10.10.tgz#1f88202c63988ddfcee154a93050312041b83329" + integrity sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A== + dependencies: + "@volar/language-core" "1.10.10" + path-browserify "^1.0.1" + "@volar/vue-language-core@0.40.13": version "0.40.13" resolved "https://registry.yarnpkg.com/@volar/vue-language-core/-/vue-language-core-0.40.13.tgz#13a79c29ef63d66a40afd1b29166404703b240c4" @@ -1257,6 +1269,16 @@ estree-walker "^2.0.2" source-map-js "^1.0.2" +"@vue/compiler-core@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.3.8.tgz#301bb60d0245265a88ed5b30e200fbf223acb313" + integrity sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + "@vue/compiler-dom@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.44.tgz#0fac337a8a6b3cae586aa8cac62e418aa4c79a83" @@ -1273,6 +1295,14 @@ "@vue/compiler-core" "3.3.4" "@vue/shared" "3.3.4" +"@vue/compiler-dom@3.3.8", "@vue/compiler-dom@^3.3.0": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.3.8.tgz#09d832514b9b8d9415a3816b065d69dbefcc7e9b" + integrity sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ== + dependencies: + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/compiler-sfc@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.44.tgz#3cc87afdd39d1d9294b45bdd3402ef405d2b0938" @@ -1305,6 +1335,22 @@ postcss "^8.1.10" source-map-js "^1.0.2" +"@vue/compiler-sfc@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.3.8.tgz#40b18e48aa00260950964d1d72157668521be0e1" + integrity sha512-WMzbUrlTjfYF8joyT84HfwwXo+8WPALuPxhy+BZ6R4Aafls+jDBnSz8PDz60uFhuqFbl3HxRfxvDzrUf3THwpA== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-ssr" "3.3.8" + "@vue/reactivity-transform" "3.3.8" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + magic-string "^0.30.5" + postcss "^8.4.31" + source-map-js "^1.0.2" + "@vue/compiler-ssr@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.44.tgz#efba77f4df4ea1727752637764f9d10498daa7df" @@ -1321,11 +1367,33 @@ "@vue/compiler-dom" "3.3.4" "@vue/shared" "3.3.4" +"@vue/compiler-ssr@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.3.8.tgz#136eed54411e4694815d961048a237191063fbce" + integrity sha512-hXCqQL/15kMVDBuoBYpUnSYT8doDNwsjvm3jTefnXr+ytn294ySnT8NlsFHmTgKNjwpuFy7XVV8yTeLtNl/P6w== + dependencies: + "@vue/compiler-dom" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/devtools-api@^6.5.0": version "6.5.0" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07" integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q== +"@vue/language-core@1.8.22", "@vue/language-core@^1.8.20": + version "1.8.22" + resolved "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.22.tgz#1ef62645fb9b1f830c6c84a5586e49e74727b1e3" + integrity sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw== + dependencies: + "@volar/language-core" "~1.10.5" + "@volar/source-map" "~1.10.5" + "@vue/compiler-dom" "^3.3.0" + "@vue/shared" "^3.3.0" + computeds "^0.0.1" + minimatch "^9.0.3" + muggle-string "^0.3.1" + vue-template-compiler "^2.7.14" + "@vue/reactivity-transform@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.44.tgz#dab1175ee8ef1fa7e9d3d9ffe177ed03f70d4021" @@ -1348,6 +1416,17 @@ estree-walker "^2.0.2" magic-string "^0.30.0" +"@vue/reactivity-transform@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.3.8.tgz#6d07649013b0be5c670f0ab6cc7ddd3150ad03f2" + integrity sha512-49CvBzmZNtcHua0XJ7GdGifM8GOXoUMOX4dD40Y5DxI3R8OUhMlvf2nvgUAcPxaXiV5MQQ1Nwy09ADpnLQUqRw== + dependencies: + "@babel/parser" "^7.23.0" + "@vue/compiler-core" "3.3.8" + "@vue/shared" "3.3.8" + estree-walker "^2.0.2" + magic-string "^0.30.5" + "@vue/reactivity@3.2.38": version "3.2.38" resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.38.tgz#d576fdcea98eefb96a1f1ad456e289263e87292e" @@ -1369,6 +1448,13 @@ dependencies: "@vue/shared" "3.3.4" +"@vue/reactivity@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.3.8.tgz#cce8a03a3fd3539c3eeda53e277ba365d160dd4d" + integrity sha512-ctLWitmFBu6mtddPyOKpHg8+5ahouoTCRtmAHZAXmolDtuZXfjL2T3OJ6DL6ezBPQB1SmMnpzjiWjCiMYmpIuw== + dependencies: + "@vue/shared" "3.3.8" + "@vue/runtime-core@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.44.tgz#14abcb1c005873a2d506eaa0bd41726997a82ea1" @@ -1385,6 +1471,14 @@ "@vue/reactivity" "3.3.4" "@vue/shared" "3.3.4" +"@vue/runtime-core@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.3.8.tgz#fba5a632cbf2b5d29e171489570149cb6975dcdb" + integrity sha512-qurzOlb6q26KWQ/8IShHkMDOuJkQnQcTIp1sdP4I9MbCf9FJeGVRXJFr2mF+6bXh/3Zjr9TDgURXrsCr9bfjUw== + dependencies: + "@vue/reactivity" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/runtime-dom@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.44.tgz#0618b3bc99e220c25e1134d4c0da97028458e3af" @@ -1403,6 +1497,15 @@ "@vue/shared" "3.3.4" csstype "^3.1.1" +"@vue/runtime-dom@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.3.8.tgz#e2d7aa795cf50914dda9a951887765a594b38af4" + integrity sha512-Noy5yM5UIf9UeFoowBVgghyGGPIDPy1Qlqt0yVsUdAVbqI8eeMSsTqBtauaEoT2UFXUk5S64aWVNJN4MJ2vRdA== + dependencies: + "@vue/runtime-core" "3.3.8" + "@vue/shared" "3.3.8" + csstype "^3.1.2" + "@vue/server-renderer@3.2.44": version "3.2.44" resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.44.tgz#efeb4d99e2ff2f71b6ddb512009e6b31bedc8ed5" @@ -1419,6 +1522,14 @@ "@vue/compiler-ssr" "3.3.4" "@vue/shared" "3.3.4" +"@vue/server-renderer@3.3.8": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.3.8.tgz#9b1779010e75783edeed8fcfb97d9c95fc3ac5d2" + integrity sha512-zVCUw7RFskvPuNlPn/8xISbrf0zTWsTSdYTsUTN1ERGGZGVnRxM2QZ3x1OR32+vwkkCm0IW6HmJ49IsPm7ilLg== + dependencies: + "@vue/compiler-ssr" "3.3.8" + "@vue/shared" "3.3.8" + "@vue/shared@3.2.38": version "3.2.38" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.38.tgz#e823f0cb2e85b6bf43430c0d6811b1441c300f3c" @@ -1434,6 +1545,11 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.3.4.tgz#06e83c5027f464eef861c329be81454bc8b70780" integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ== +"@vue/shared@3.3.8", "@vue/shared@^3.3.0": + version "3.3.8" + resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.3.8.tgz#f044942142e1d3a395f24132e6203a784838542d" + integrity sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw== + "@vueuse/core@^10.1.0": version "10.5.0" resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.5.0.tgz#04d1e6d26592bb997bb755a4830ea7583c3e8612" @@ -1713,11 +1829,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -code-block-writer@^11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/code-block-writer/-/code-block-writer-11.0.3.tgz#9eec2993edfb79bfae845fbc093758c0a0b73b76" - integrity sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw== - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1764,6 +1875,11 @@ commander@^10.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== +computeds@^0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz#215b08a4ba3e08a11ff6eee5d6d8d7166a97ce2e" + integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1806,7 +1922,7 @@ csstype@^2.6.8: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.21.tgz#2efb85b7cc55c80017c66a5ad7cbd931fda3a90e" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== -csstype@^3.1.1: +csstype@^3.1.1, csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== @@ -1816,6 +1932,11 @@ dayjs@^1.11.3: 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" + resolved "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== + debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -2338,7 +2459,7 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -fs-extra@^10.0.0, fs-extra@^10.1.0: +fs-extra@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -2509,6 +2630,11 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +he@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + html-tags@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-3.3.1.tgz#a04026a18c882e4bba8a01a3d39cfe465d40b5ce" @@ -2708,7 +2834,7 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -kolorist@^1.6.0, kolorist@^1.8.0: +kolorist@^1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== @@ -2812,6 +2938,13 @@ magic-string@^0.30.0: dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" +magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + mark.js@8.11.1: version "8.11.1" resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" @@ -2890,10 +3023,10 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.1.0: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== +minimatch@^9.0.3: + version "9.0.3" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== dependencies: brace-expansion "^2.0.1" @@ -2902,11 +3035,6 @@ minisearch@^6.0.1: resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.1.0.tgz#6e74e743dbd0e88fa5ca52fef2391e0aa7055252" integrity sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg== -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - mlly@^1.1.0, mlly@^1.2.0, mlly@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" @@ -2927,6 +3055,11 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +muggle-string@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz#e524312eb1728c63dd0b2ac49e3282e6ed85963a" + integrity sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg== + nanoid@^3.3.6: version "3.3.6" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" @@ -3141,7 +3274,7 @@ postcss-selector-parser@^6.0.13: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss@^8.1.10, postcss@^8.4.18, postcss@^8.4.23, postcss@^8.4.27: +postcss@^8.1.10, postcss@^8.4.18, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.31: version "8.4.31" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== @@ -3513,14 +3646,6 @@ totalist@^3.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== -ts-morph@17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/ts-morph/-/ts-morph-17.0.1.tgz#d85df4fcf9a1fcda1b331d52c00655f381c932d1" - integrity sha512-10PkHyXmrtsTvZSL+cqtJLTgFXkU43Gd0JCc0Rw6GchWbqKe0Rwgt1v3ouobTZwQzF1mGhDeAlWYBMGRV7y+3g== - dependencies: - "@ts-morph/common" "~0.18.0" - code-block-writer "^11.0.3" - tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -3547,7 +3672,7 @@ type-fest@^0.20.2: typescript@^4.6.4: version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@~5.0.4: @@ -3684,19 +3809,17 @@ vite-plugin-compression@^0.5.1: debug "^4.3.3" fs-extra "^10.0.0" -vite-plugin-dts@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/vite-plugin-dts/-/vite-plugin-dts-1.7.3.tgz#cf0c243fff9ae3fc1f103987b97439b3bf813f15" - integrity sha512-u3t45p6fTbzUPMkwYe0ESwuUeiRMlwdPfD3dRyDKUwLe2WmEYcFyVp2o9/ke2EMrM51lQcmNWdV9eLcgjD1/ng== +vite-plugin-dts@3.6.3: + version "3.6.3" + resolved "https://registry.npmmirror.com/vite-plugin-dts/-/vite-plugin-dts-3.6.3.tgz#7d79f2fe9352841f3b76cc38e8c16be957c9cdcb" + integrity sha512-NyRvgobl15rYj65coi/gH7UAEH+CpSjh539DbGb40DfOTZSvDLNYTzc8CK4460W+LqXuMK7+U3JAxRB3ksrNPw== dependencies: - "@microsoft/api-extractor" "^7.33.5" - "@rollup/pluginutils" "^5.0.2" - "@rushstack/node-core-library" "^3.53.2" + "@microsoft/api-extractor" "^7.38.0" + "@rollup/pluginutils" "^5.0.5" + "@vue/language-core" "^1.8.20" debug "^4.3.4" - fast-glob "^3.2.12" - fs-extra "^10.1.0" - kolorist "^1.6.0" - ts-morph "17.0.1" + kolorist "^1.8.0" + vue-tsc "^1.8.20" vite-plugin-vue-setup-extend@^0.4.0: version "0.4.0" @@ -3787,6 +3910,11 @@ vue-hooks-plus@^1.8.5: query-string "^7.1.1" screenfull "^5.0.0" +vue-loading-overlay@^6.0.3: + version "6.0.3" + resolved "https://registry.npmmirror.com/vue-loading-overlay/-/vue-loading-overlay-6.0.3.tgz#37b2e45d5a5e207fda69c01dac0dba059cc05173" + integrity sha512-Ab0hqnVKasVS2mNUo8Wkm95mSbk5fXp/karZmMou5yP0hTUOox/kZuBLNwgzJ4kFP829wFJl7O7FN1Dr0kRaVQ== + vue-router@^4.1.5: version "4.2.5" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" @@ -3794,6 +3922,14 @@ vue-router@^4.1.5: dependencies: "@vue/devtools-api" "^6.5.0" +vue-template-compiler@^2.7.14: + version "2.7.15" + resolved "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz#ec88ba8ceafe0f17a528b89c57e01e02da92b0de" + integrity sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og== + dependencies: + de-indent "^1.0.2" + he "^1.2.0" + vue-tsc@^0.40.4: version "0.40.13" resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.40.13.tgz#0a193014f7cadb47459cf0809ce3953b74a1348c" @@ -3802,6 +3938,22 @@ vue-tsc@^0.40.4: "@volar/vue-language-core" "0.40.13" "@volar/vue-typescript" "0.40.13" +vue-tsc@^1.8.20: + version "1.8.22" + resolved "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.22.tgz#421e73c38b50802a6716ca32ed87b5970c867323" + integrity sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A== + dependencies: + "@volar/typescript" "~1.10.5" + "@vue/language-core" "1.8.22" + semver "^7.5.4" + +vue3-print-nb@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz#11ee3ef8857c34b403fb782da722e82ab7e20952" + integrity sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A== + dependencies: + vue "^3.0.5" + vue@3.2.44: version "3.2.44" resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.44.tgz#57581fcc753b8187aae9cf90254f9fa88f7b8ffd" @@ -3813,6 +3965,17 @@ vue@3.2.44: "@vue/server-renderer" "3.2.44" "@vue/shared" "3.2.44" +vue@^3.0.5: + version "3.3.8" + resolved "https://registry.npmmirror.com/vue/-/vue-3.3.8.tgz#532ff071af24f6a69e5ecc53a66858a9ee874ffc" + integrity sha512-5VSX/3DabBikOXMsxzlW8JyfeLKlG9mzqnWgLQLty88vdZL7ZJgrdgBOmrArwxiLtmS+lNNpPcBYqrhE6TQW5w== + dependencies: + "@vue/compiler-dom" "3.3.8" + "@vue/compiler-sfc" "3.3.8" + "@vue/runtime-dom" "3.3.8" + "@vue/server-renderer" "3.3.8" + "@vue/shared" "3.3.8" + vue@^3.2.47: version "3.3.4" resolved "https://registry.yarnpkg.com/vue/-/vue-3.3.4.tgz#8ed945d3873667df1d0fcf3b2463ada028f88bd6"